Yardım Grup halinde zindan girildiğinde çıkan syserr?

  • Konuyu açan Konuyu açan texas1343
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 8
  • Gösterim Gösterim 112
Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

texas1343

MT Üye
MT Üye
Mesaj
577
Çözümler
25
Beğeni
352
Puan
799
Ticaret Puanı
0
Grup halinde zindan girildiğinde şu hataya alıyorum;


Kod:
Genişlet Daralt Kopyala
SYSERR: Jul 28 01:31:54 :: SetDungeon: test1 is trying to reassigning dungeon (current 0x36ca8b00, new party 0x36ca8b00)
SYSERR: Jul 28 01:31:54 :: SetDungeon: test2 is trying to reassigning dungeon (current 0x36ca8b00, new party 0x36ca8b00)


zindan doğru çalışıyor her şey işliyor ama grup halinde bu syserr atıyor nedir bu?
 
En son bir moderatör tarafından düzenlenmiş:
Gurup halinde zindan girildiğinde şu hataya alıyorum;


Kod:
Genişlet Daralt Kopyala
SYSERR: Jul 28 01:31:54 :: SetDungeon: test1 is trying to reassigning dungeon (current 0x36ca8b00, new party 0x36ca8b00)
SYSERR: Jul 28 01:31:54 :: SetDungeon: test2 is trying to reassigning dungeon (current 0x36ca8b00, new party 0x36ca8b00)


zindan doğru çalışıyor her şey işliyor ama gurup halinde bu syser atıyor nedir bu?
Questi paylaşır mısınız?
 
Dungeon oluşmuşken tekrar mı dungeon oluşturuyorsunuz questte
 
Character destroy'da m_pkDungeon null ediliyor mu kontrol edin (SetDungeon(nullptr), veya m_pkDungeon = nullptr). Başka bir ihtimal de dungeon'a girdiğinizde bir şekilde tekrar create etmeye çalışıyorsunuz.
 
Character destroy'da m_pkDungeon null ediliyor mu kontrol edin (SetDungeon(nullptr), veya m_pkDungeon = nullptr). Başka bir ihtimal de dungeon'a girdiğinizde bir şekilde tekrar create etmeye çalışıyorsunuz.
Şöyle bir çözüm uygulanabilir mi sizce ? :

if (ch->GetDungeon() != pDungeon)
ch->SetDungeon(pDungeon);
 
Character destroy'da m_pkDungeon null ediliyor mu kontrol edin (SetDungeon(nullptr), veya m_pkDungeon = nullptr). Başka bir ihtimal de dungeon'a girdiğinizde bir şekilde tekrar create etmeye çalışıyorsunuz.
char.cpp de SetDungeon gerekli yerler şöyle;


Kod:
Genişlet Daralt Kopyala
void CHARACTER::SetDungeon(LPDUNGEON pkDungeon)
{
    if (pkDungeon && m_pkDungeon)
        sys_err("%s is trying to reassigning dungeon (current %p, new party %p)", GetName(), get_pointer(m_pkDungeon), get_pointer(pkDungeon));

    if (m_pkDungeon == pkDungeon) {
        return;
    }

    if (m_pkDungeon)
    {
        if (IsPC())
        {
            if (GetParty())
                m_pkDungeon->DecPartyMember(GetParty(), this);
            else
                m_pkDungeon->DecMember(this);
        }
        else if (IsMonster() || IsStone())
        {
            m_pkDungeon->DecMonster();
        }
    }

    m_pkDungeon = pkDungeon;

    if (pkDungeon)
    {
        sys_log(0, "%s DUNGEON set to %p, PARTY is %p", GetName(), get_pointer(pkDungeon), get_pointer(m_pkParty));

        if (IsPC())
        {
            if (GetParty())
                m_pkDungeon->IncPartyMember(GetParty(), this);
            else
                m_pkDungeon->IncMember(this);
        }
        else if (IsMonster() || IsStone())
        {
            m_pkDungeon->IncMonster();
        }
    }
}

ve birde


Kod:
Genişlet Daralt Kopyala
    if (m_pkDungeon)
    {
        SetDungeon(NULL);
    }
 
Timer 2 kere işlemiş oluyor hocam questte dragonlair_grupgiris.timer içinde sadece liderin d.join_coords çalıştırması yeterli, ama senin kodunda timer tüm grup üyelerinde çalışıyor fonksiyonu şöyle düzeltirsen çözülebilir

Lua (Quest):
Genişlet Daralt Kopyala
when dragonlair_grupgiris.timer begin
    if not party.is_leader() then
        return
    end
    d.join_coords(208,8436,10669)
    dragonlair.Temizle()
    server_timer("dragonlair_timeup", 30*60, d.get_map_index())
    server_timer("dragonlair_25left", 5*60, d.get_map_index())
    d.setf("party_leader_pid",party.get_leader_pid())
    party.setf("dragonlair_mapindex",d.get_map_index())
    d.setf("dungeon_endtime",get_global_time()+30*60*1)
end
 
Geri
Üst