[Fix] Debug Modu Uçuran Syserr (GetMotionDuration - Invalid Motion Key)

Kaiser

Admin
Admin
Geliştirici
Yardımsever Üye
Mesaj
4.038
Çözümler
390
Beğeni
4.159
Puan
1.849
Ticaret Puanı
0
Merhaba, her fileste bu sorun var mı bilmiyorum ama bende uzun zamandır var olan bir sorundu ve az önce bir bakınayım dedim.
Bazı fileslerde bu syserri direkt yorum satırına çevirip kapatmışlar ama benim içime sinmedi.(bkz: overfall)


Sorunu özetlemek gerekirse; oyunu debug modda açtığınız zaman görüş açınıza bir pazar girdiği zaman debug ekranında yüzlerce kez peş peşe şu hatayı veriyor:

Kod:
Genişlet Daralt Kopyala
SYSERROR: CActorInstance::GetMotionDuration - Invalid Motion Key : 1, 1, 0
SYSERROR: CActorInstance::GetMotionDuration - Invalid Motion Key : 1, 1, 0
SYSERROR: CActorInstance::GetMotionDuration - Invalid Motion Key : 1, 1, 0
SYSERROR: CActorInstance::GetMotionDuration - Invalid Motion Key : 1, 1, 0
SYSERROR: CActorInstance::GetMotionDuration - Invalid Motion Key : 1, 1, 0
SYSERROR: CActorInstance::GetMotionDuration - Invalid Motion Key : 1, 1, 0
SYSERROR: CActorInstance::GetMotionDuration - Invalid Motion Key : 1, 1, 0
SYSERROR: CActorInstance::GetMotionDuration - Invalid Motion Key : 1, 1, 0
SYSERROR: CActorInstance::GetMotionDuration - Invalid Motion Key : 1, 1, 0
......
.....
..

Hata şuradan geliyor(GameLib/ActorInstanceMotion.cpp):

C++:
Genişlet Daralt Kopyala
if (0 == pMotion->GetMotionCount())
    {
#ifdef _DEBUG
        Tracenf("CActorInstance::GetMotionDuration - Invalid Motion Key : %d, %d, %d",
                GET_MOTION_MODE(dwMotionKey), GET_MOTION_INDEX(dwMotionKey), GET_MOTION_SUB_INDEX(dwMotionKey));
#endif
        return 0.0f;
    }

Önce C++ üzerinden bir fix sağlayıp bu hatayı çözdüm ama fixten sonra sorunun altta yatan gerçek nedeni ortaya çıktı.
Asıl sebebi, pazara ait 00.msa dosyasında tanımlı olan privateshopwait.gr2 dosyasının pack içinde hiç bir yerde olmaması.

Bu durumda sorunu kökten çözmek için:

Pack içinden /npc2/privateshop/ dizinine girin ve burada bulunan 00.msa dosyasını açıp privateshopwait.gr2 olan kısmı wait.gr2 olarak değiştirin.(aynı dizinde wait.gr2 var zaten)

Aynı işlemi npc2/privateshop2/ klasörü için de uygulayın.

-> Eğer kaşmir kullanıyorsanız kaşmire ait dosyalar üzerinde değişiklik yapmanıza gerek yok.
 
Teşekkürler, detaylar önemlidir.
 
O hata satırını yoruma çevirenler oluyor. Daha bunun gibi bir çok şeyi yorum satırına çevirerek çözdüğünü sananlar var.

Hatanın kaynağını bulup çözümü paylaştığınız için teşekkür ederim
 
bende üşenip sonraya atmıştım daha bir kaç hafta öncesine kadar :) emeğine sağlık teşekkürler
 
Bu yapılan işlem sonrasıda client cpu kullanımı sapıtıyor. 100 120 adet pazarın açık olduğu bir haritada karakteri açın clienti alta atın cpu kullanımına bakın görev yöneticisinden cpu kullanımı git gide artıyor sonrasında clienti açtığınızda siyah ekranda kalıyor.
 
Bu yapılan işlem sonrasıda client cpu kullanımı sapıtıyor. 100 120 adet pazarın açık olduğu bir haritada karakteri açın clienti alta atın cpu kullanımına bakın görev yöneticisinden cpu kullanımı git gide artıyor sonrasında clienti açtığınızda siyah ekranda kalıyor.
Bu düzenlemeyi yapmadan önce bir sorun yoksa eğer syserden başka zaten waiti kullanamıyordu demi sadece syser yazıyordu?
motlist.txt açın
GENERAL WAIT 00.msa 100 silin.
 
Geri
Üst