Çözüldü Aliginment 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ı.

Serket

Üye
Üye
Mesaj
43
Çözümler
4
Beğeni
11
Puan
414
Ticaret Puanı
0
İyi akşamlar arkadaşlar bir sorunum var ilk önce şunu söyleyeyim dosyaları karşılaştırdım fakat sorun yok gibi duruyor
sorunum şu gm karakterle kendime kod ile align 1 yazsam bile 20k derece puanı veriyor yada 1 tane slot kessem bile 1 vermek yerine yine 20k derece puanı veriyor nerede ne yanlış yaptım bir fikrim yok lütfen bu konuda bana yardım ederseniz sevinirim

Ekran Alıntısı.PNG
 
Çözüm
sorunu kendim çözdüm herşey için teşekkür ederim başka bir sorunum olursa yazarım yine damage sınırını arttırırken küçük bir yerde hata yapmışım tekrar işlem yapınca düzeldi :)
CHARACTER::UpdateAlignment fonksiyonunda amount kaç geliyor bir bak bakalım
updatealigment:
void CHARACTER::UpdateAlignment(int iAmount)
{
    bool bShow = false;

    if (m_iAlignment == m_iRealAlignment)
        bShow = true;

    int i = m_iAlignment / 10;

    m_iRealAlignment = MINMAX(-200000, m_iRealAlignment + iAmount, 200000);

    if (bShow)
    {
        m_iAlignment = m_iRealAlignment;

        if (i != m_iAlignment / 10)
            UpdatePacket();
    }
}

Kod ile dereceyi 1 versem dahi 20k yapıyor
 
updatealigment:
void CHARACTER::UpdateAlignment(int iAmount)
{
    bool bShow = false;

    if (m_iAlignment == m_iRealAlignment)
        bShow = true;

    int i = m_iAlignment / 10;

    m_iRealAlignment = MINMAX(-200000, m_iRealAlignment + iAmount, 200000);

    if (bShow)
    {
        m_iAlignment = m_iRealAlignment;

        if (i != m_iAlignment / 10)
            UpdatePacket();
    }
}

Kod ile dereceyi 1 versem dahi 20k yapıyor
runtime de görmek lazım iAmount kaç geliyor. ya sys_err ekle yada oyun açıkken gdb ile debug girip breakpoint koy fonksiyona.

gelen veri truncate oluyor desem her kazanımda 20k gelmez. truncate olmuyor, iamount fazla geliyor desem dereceni /set isim align -50000 ile eksiye düşürebiliyor olman gerekir.
 
runtime de görmek lazım iAmount kaç geliyor. ya sys_err ekle yada oyun açıkken gdb ile debug girip breakpoint koy fonksiyona.

gelen veri truncate oluyor desem her kazanımda 20k gelmez. truncate olmuyor, iamount fazla geliyor desem dereceni /set isim align -50000 ile eksiye düşürebiliyor olman gerekir.
level düşürsem bile 20k oluyor başka bir filesle kontrol ettim herşey aynı sorun yok tüm fonksiyonlar eşleşiyor
 
level düşürsem bile 20k oluyor başka bir filesle kontrol ettim herşey aynı sorun yok tüm fonksiyonlar eşleşiyor
bir şey uyuşmuyor. alignment databaseye direkt yazılmaz, cache ye yazılır. cacheden packet ile oyuncuya gönderilir anlık olarak. serveri kapat, navicattan playerde ki alignment'i -15000 yap sonra serveri açıp gir oyuna ama mob kesme veya align yazma. bir bak bakalım değer - ye düşüyor mu. eğer düşmüyorsa fonksiyonlarda bozukluk vardır. iAmount değerini sys_err ile veya breakpoint koyarak kontrol etmen gerekli. 2 tür alignment var, biri real biri cached. real olan 20000 e kadar çıkıyor, cached olan 200000 e kadar. bu hesaplanırken / 10 yapılıyor.
 
bir şey uyuşmuyor. alignment databaseye direkt yazılmaz, cache ye yazılır. cacheden packet ile oyuncuya gönderilir anlık olarak. serveri kapat, navicattan playerde ki alignment'i -15000 yap sonra serveri açıp gir oyuna ama mob kesme veya align yazma. bir bak bakalım değer - ye düşüyor mu. eğer düşmüyorsa fonksiyonlarda bozukluk vardır. iAmount değerini sys_err ile veya breakpoint koyarak kontrol etmen gerekli. 2 tür alignment var, biri real biri cached. real olan 20000 e kadar çıkıyor, cached olan 200000 e kadar. bu hesaplanırken / 10 yapılıyor.
-15000 yaptım agresife düştü şuan peki tam olarak hata nerede onu hala anlayamadım şimdi ne yapmam gerekli?
 
sorunu kendim çözdüm herşey için teşekkür ederim başka bir sorunum olursa yazarım yine damage sınırını arttırırken küçük bir yerde hata yapmışım tekrar işlem yapınca düzeldi :)
 
Çözüm
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst