Çözüldü HP 32767 Aşma Fixi Sorunu

Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

enixyazilim

#ifdef Enix
MT Üye
Mesaj
162
Çözümler
5
Beğeni
111
Puan
789
Şimdi bir fix var
Tables.h içinde;

short hp;
short sp;

bunlar var bunların normalde böyle fakat int yapılması gerekiyor çünkü eğer oyundaki can 32767 HP geçerse hp sapıtıyor -1231235 felan oluyor kafasına göre
buraya kadar her şey güzel bunu

int hp;
int sp;

bu şekilde değiştirdim derledim oyuna açıp gireyim dedim ve sonuç ;
Screenshot_1.png
0413_033008.jpg


Gördüğünüz gibi normalde karakterde siyah çelik var ve oyuna girişte zırh ve adamın kafası yok girincede zırh gözükmekte fakat kafası yok.
 
player tablosundaki değerle örtüşmediğinden de olabilir. Şimdi standart dosyalara baktım orda int kullanılmış. Siz ayrıyetten mi short yaptınız?

+Eğer player tablosundaki veri tipi SMALLINT ise onu INT şeklinde çevirip dener misin?
 
player tablosundaki değerle örtüşmediğinden de olabilir. Şimdi standart dosyalara baktım orda int kullanılmış. Siz ayrıyetten mi short yaptınız?

+Eğer player tablosundaki veri tipi SMALLINT ise onu INT şeklinde çevirip dener misin?
Aynen navicat benimde aklıma geldi, o da bir etken olabilir.
Ayrıca char.cpp dosyasında bu işlemlerden sonra şu kodları;

C++:
SetHP(t->hp);
SetSP(t->sp);

Şu şekilde değiştirmeyi deneyin;
C++:
SetHP(GetMaxHP());
SetSP(GetMaxSP());

Ayrıca db yi de derlemeyi unutmayın.
 
player tablosundaki değerle örtüşmediğinden de olabilir. Şimdi standart dosyalara baktım orda int kullanılmış. Siz ayrıyetten mi short yaptınız?

+Eğer player tablosundaki veri tipi SMALLINT ise onu INT şeklinde çevirip dener misin?
INT denedim olmadı.

Aynen navicat benimde aklıma geldi, o da bir etken olabilir.
Ayrıca char.cpp dosyasında bu işlemlerden sonra şu kodları;

C++:
SetHP(t->hp);
SetSP(t->sp);

Şu şekilde değiştirmeyi deneyin;
C++:
SetHP(GetMaxHP());
SetSP(GetMaxSP());

Ayrıca db yi de derlemeyi unutmayın.
Game Db Sıfırdan Derledim Olmadı.

SetSP(GetMaxSP)

Bu bir fix değil ama denedim olmadı.
 
Aynı sorunu bende yaşadım ama sorun fixi ifdef ile eklediğimden kaynakdığını düşünmüştüm ve bu şekilde düzenledim ve sorun düzelmişti.

Ekran görüntüsü 2021-04-13 220316.jpg
 
Çözüm
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst