Yardım Metinleri Bar Görünümü

Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

cosion

Üye
Üye
Mesaj
127
Çözümler
12
Beğeni
23
Puan
469
Ticaret Puanı
0
Selam arkadaşlar, fileste mob/metin canlarını yükselttim. Şu anda bu metine verdiğim hp değeri 250S (250.000.000.000.000.000)
1.png

Ama resimde gördüğünüz gibi metini spawnladığımda barı bu şekilde başlıyor, hasar vurunca tekrar doluyor. Canı azalmış gibi geliyor o yüzden slotlarıda spawnlıyor.
2.png

Bu sorun neyden kaynaklı olabilir ? Python tarafındandır diye düşünüyorum bakındım ama çözemedim. Bilgisi olan var ise yardımlarınızı bekliyorum. İyi forumlar
 
HP barının full gözükmemesi zor değildir de merak ettiğim, metin spawn'landığı anda mı yaratıkları çıkarıyor?
 
HP barının full gözükmemesi zor değildir de merak ettiğim, metin spawn'landığı anda mı yaratıkları çıkarıyor?
Evet, metin spawnlandığında çıkıyor. Bar azalmış gibi algıladığından olabilir diye düşünüyorum. Filesimde her halükarda metinlerden mob spawnlanmayacak o yüzden o tarafa çok takılmıyorum, henüz kaldırmadım onları. Şu bar fixlenirse sorun kalmaz diye umuyorum
 
Evet, metin spawnlandığında çıkıyor. Bar azalmış gibi algıladığından olabilir diye düşünüyorum. Filesimde her halükarda metinlerden mob spawnlanmayacak o yüzden o tarafa çok takılmıyorum, henüz kaldırmadım onları. Şu bar fixlenirse sorun kalmaz diye umuyorum
Çözmeye çalıştığım bir sorun var, birazdan dosyaları incelerim
 
Evet. Belirli bir cana kadar sorun yok, ama belirli bir değerden sonra böyle oluyor
Belirlediğin HP değeri, değişken tipinin max değerinden yüksek olduğu için derleyici bu sayıyı set'liyor olabilir.
long int deneyebilirsin -9223372036854775808 ~ 9223372036854775807
Python tarafı ile ilgili bir sorun olmasına ihtimal vermiyorum, Python kendisine gelen değeri (max) yazdırır sadece.
SetHP fonksiyonu min ve max parametrelerine sahip, onlara da client src'den gelen değerler veriliyor
 
Belirlediğin HP değeri, değişken tipinin max değerinden yüksek olduğu için derleyici bu sayıyı set'liyor olabilir.
long int deneyebilirsin -9223372036854775808 ~ 9223372036854775807
Python tarafı ile ilgili bir sorun olmasına ihtimal vermiyorum, Python kendisine gelen değeri (max) yazdırır sadece.
SetHP fonksiyonu min ve max parametrelerine sahip, onlara da client src'den gelen değerler veriliyor
Deniyorum
 
Belirlediğin HP değeri, değişken tipinin max değerinden yüksek olduğu için derleyici bu sayıyı set'liyor olabilir.
long int deneyebilirsin -9223372036854775808 ~ 9223372036854775807
Python tarafı ile ilgili bir sorun olmasına ihtimal vermiyorum, Python kendisine gelen değeri (max) yazdırır sadece.
SetHP fonksiyonu min ve max parametrelerine sahip, onlara da client src'den gelen değerler veriliyor
Bazı yerlerde long int kullandım ama sanırım yapamadım.

SetTarget içerisinde kullandım ve gauge ilk bakışta düzelmiş gibi görünüyor.

1.png


Fakat 1 kere vurunca tekrar eski haline dönüyor.
Bahsettiğin gibi sanırım hp yüzdesini ayarlarken 100 ile çarpıyor ve orada max değeri aşıyor sanırım, o yüzdende geri kalan kısımlar bozuluyor gibi duruyor. Bu arada kullandığım veri tipi int64_t , long int tam olarak nasıl tanımlayabilirim ? direkt long int yazınca long olarak görüyor
 
Hit/Attack fonksiyonlarına (char_battle.cpp) bakabilirsin, oradaki if kontrollerini gözden geçir. Hileye karşı vs bir önlem alınmış olup bazı koşullarda mob canı tekrar default değerine set'leniyor olabilir. ve tüm değişken tiplerinin birbiri ile uyumlu olduğundan emin ol.
 
Hit/Attack fonksiyonlarına (char_battle.cpp) bakabilirsin, oradaki if kontrollerini gözden geçir. Hileye karşı vs bir önlem alınmış olup bazı koşullarda mob canı tekrar default değerine set'leniyor olabilir. ve tüm değişken tiplerinin birbiri ile uyumlu olduğundan emin ol.
Hesapladım 250S 100 ile çarpınca int64_t değerini aşıyor. Onu aşmayacağı 90S değerine getirdiğimde sorun çözüldü. Bu değerlerin üstüne çıkabilmek için ne yapabilirim bu konuda bilgin var mı acaba ? gmp gibi bazı kütüphaneleri eklemem gerekiyor gibi bazı şeyler gördüm, tabi emin değilim.
 
Hesapladım 250S 100 ile çarpınca int64_t değerini aşıyor. Onu aşmayacağı 90S değerine getirdiğimde sorun çözüldü. Bu değerlerin üstüne çıkabilmek için ne yapabilirim bu konuda bilgin var mı acaba ? gmp gibi bazı kütüphaneleri eklemem gerekiyor gibi bazı şeyler gördüm, tabi emin değilim.
Bu yapmaya çalıştığın şey aklımdan geçiyordu ilerisi için düşünmüştüm, henüz hiç böyle büyük sayılarla çalışmadım.
Yani şu an verebileceğim bir örnek yok. Fakat ekstra bir lib kurmanı gerektireceğini sanmıyorum, built-in lib'ler yeterli olur.
Biraz bakınayım internette, örnek bulursam atarım buraya
 
boost lib'ine ihtiyacımız varmış, zaten Metin2 kaynak kodlarında ( Extern / boost ) hazırda var.
Bu lib desteği ile int128_t veri tipini kullanabiliyoruz.
#include <boost/multiprecision/cpp_int.hpp> include et
Güzel de bir örnek buldum;
Kod:
#include<iostream>
#include <boost/multiprecision/cpp_int.hpp>
using namespace boost::multiprecision;
using namespace std;
int128_t large_product(long long n1, long long n2) {
   int128_t ans = (int128_t) n1 * n2;
   return ans;
}
int main() {
   long long num1 = 98745636214564698;
   long long num2 = 7459874565236544789;
   cout << num1 << " * "<< num2 << " = " <<
   large_product(num1,num2);
}

Çıktı: 98745636214564698 * 7459874565236544789 = 736630060025131838840151335215258722
 
boost lib'ine ihtiyacımız varmış, zaten Metin2 kaynak kodlarında ( Extern / boost ) hazırda var.
Bu lib desteği ile int128_t veri tipini kullanabiliyoruz.
#include <boost/multiprecision/cpp_int.hpp> include et
Güzel de bir örnek buldum;
Kod:
#include<iostream>
#include <boost/multiprecision/cpp_int.hpp>
using namespace boost::multiprecision;
using namespace std;
int128_t large_product(long long n1, long long n2) {
   int128_t ans = (int128_t) n1 * n2;
   return ans;
}
int main() {
   long long num1 = 98745636214564698;
   long long num2 = 7459874565236544789;
   cout << num1 << " * "<< num2 << " = " <<
   large_product(num1,num2);
}

Çıktı: 98745636214564698 * 7459874565236544789 = 736630060025131838840151335215258722
Deneyip hemen döneceğim, teşekkürler
 
boost lib'ine ihtiyacımız varmış, zaten Metin2 kaynak kodlarında ( Extern / boost ) hazırda var.
Bu lib desteği ile int128_t veri tipini kullanabiliyoruz.
#include <boost/multiprecision/cpp_int.hpp> include et
Güzel de bir örnek buldum;
Kod:
#include<iostream>
#include <boost/multiprecision/cpp_int.hpp>
using namespace boost::multiprecision;
using namespace std;
int128_t large_product(long long n1, long long n2) {
   int128_t ans = (int128_t) n1 * n2;
   return ans;
}
int main() {
   long long num1 = 98745636214564698;
   long long num2 = 7459874565236544789;
   cout << num1 << " * "<< num2 << " = " <<
   large_product(num1,num2);
}

Çıktı: 98745636214564698 * 7459874565236544789 = 736630060025131838840151335215258722
Şimdi anca bakabildimde, kullandığım fileste boost içerisinde cpp_int.hpp bulunmuyor, bunu eklemek için boost güncellemem gerekecek sanırım
 
@cosion bunu deneyebilir misiniz
Bu yaptığın ile bar sorunu çözüldü, ama metin doğar doğmaz içindeki moblar spawn oluyor. Ben mobları kaldırıcam ama o sorun neden oluyor olabilir ?

İlk vuruşta yine ilk fotoğraftakiler gibi o hpye dönüyor sonra düzeltiyor, görsel bir karmaşa oluyor orda :D
 
Son düzenleme:
Geri
Üst