Çözüldü Karakter ölürken at 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ı.

Kaiser

⋞ 〈 ☪ 〉 ⋟
Site yetkilisi
Admin
Premium Üye
Geliştirici
Yardımsever Üye
Mesaj
3.745
Çözümler
354
Beğeni
3.643
Puan
1.849
Ticaret Puanı
0
Merhaba, karakter atın üzerindeyken öldüğü zaman attan iniyor ve öyle ölüyor. Özellikle bunun için herhangi bir düzenleme yapmadım, başka bir yerle bir şekilde bağlantısı var gibi. Gezdirmeli binek sistemi kullanıyorum ama onun da dosyalarını da inceledim pek bir şey bulamadım.(Ayrıca bineklerde böyle bir sorun yok)

Kısacası ben ölüyorsam at da nalları dikecek. Anca beraber kanca beraber.
Bir fikri olan var mı?


Herhangi bir syserr yok.

GIF 02.11.2021 13-48-30.gif


char_battle.cpp :: Dead fonksiyonu(ilgili kısmı):

C++:
void CHARACTER::Dead(LPCHARACTER pkKiller, bool bImmediateDead)
{
    if (IsDead())
        return;

    {
        if (IsHorseRiding())
        {
            StopRiding();
        }
        else if (GetMountVnum())
        {
            RemoveAffect(AFFECT_MOUNT);
            RemoveAffect(AFFECT_MOUNT_BONUS);
            m_dwMountVnum = 0;
            UnEquipSpecialRideUniqueItem();

            UpdatePacket();
        }
    }


char_horse.cpp ::StopRiding fonksiyonu:
C++:
bool CHARACTER::StopRiding()
{
    if (CHorseRider::StopRiding())
    {
        quest::CQuestManager::instance().Unmount(GetPlayerID());

        if (!IsDead() && !IsStun())
        {
            DWORD dwOldVnum = GetMountVnum();
            MountVnum(0);

            // [NOTE] ¸»¿¡¼ ³»¸± ¶© ÀڱⰡ ÅÀ´ø°É ¼ÒȯÇϵµ·Ï ¼öÁ¤
            HorseSummon(true, false, dwOldVnum);
        }
        else
        {
            m_dwMountVnum = 0;
            ComputePoints();
            UpdatePacket();
        }

        PointChange(POINT_ST, 0);
        PointChange(POINT_DX, 0);
        PointChange(POINT_HT, 0);
        PointChange(POINT_IQ, 0);

        return true;
    }

    return false;
}
 
Çözüm
Gittiğin yer doğru target character'i öldürüyor ve dead fonksiyonu içerisinde StopRiding fonksiyonu çalışıyor. StopRiding yerine atların süresi dolunca veya aç bırakınca mıydı tam hatırlamıyorum ama o ölme kısmını inceleyip StopRiding Yerine hangi fonksiyonsa eğer o detaylı incelemedim, o fonksiyonu tetikleyebilirsin.
1635854258009.png
Gittiğin yer doğru target character'i öldürüyor ve dead fonksiyonu içerisinde StopRiding fonksiyonu çalışıyor. StopRiding yerine atların süresi dolunca veya aç bırakınca mıydı tam hatırlamıyorum ama o ölme kısmını inceleyip StopRiding Yerine hangi fonksiyonsa eğer o detaylı incelemedim, o fonksiyonu tetikleyebilirsin.
1635854258009.png
 
Çözüm
Gittiğin yer doğru target character'i öldürüyor ve dead fonksiyonu içerisinde StopRiding fonksiyonu çalışıyor. StopRiding yerine atların süresi dolunca veya aç bırakınca mıydı tam hatırlamıyorum ama o ölme kısmını inceleyip StopRiding Yerine hangi fonksiyonsa eğer o detaylı incelemedim, o fonksiyonu tetikleyebilirsin.
8238 eklentisini görüntüle
Dediğin gibi /kill çektiğim için böyle oluyormuş. Moblara veya bir karakterle ws atarken ölünce bir problem yok. Bineklerde /kill çekince böyle bir şey olmayınca bir an kafam karışmış demek ki.

Ayrıca bu vesileyle; char_battle.cpp :: Dead içindeki

RemoveAffect(AFFECT_MOUNT);

Binek sistemine ait fix diye verilmiş bir koddu. Şimdi incelediğimde fix değil de tam aksine sorun yaratıyor ve ölünce binek görünmüyor.
Onu da kaldırınca şu an için bir problem kalmadı.
Binek sistemi kullananlar bu verdiğim satırı silsinler.
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst