[C++] [FIX] Grup Bonus Bug

  • Konuyu açan Konuyu açan dna321
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 3
  • Gösterim Gösterim 1K

dna321

DemirGraphic
Usta Üye
Editör
Mesaj
399
Çözümler
2
Beğeni
3.148
Puan
1.484
Ticaret Puanı
0
Bul:
Genişlet Daralt Kopyala
    EVENTINFO(party_update_event_info)
{
    DWORD pid;
        party_update_event_info()
        : pid(0)
    {
    }
};

Değiştir:
Genişlet Daralt Kopyala
    EVENTINFO(party_update_event_info)
{
    DWORD pid;
    CParty *pParty;
        party_update_event_info()
        : pid(0)
    {
    }
};

Bul:
Genişlet Daralt Kopyala
    void CParty::Link(LPCHARACTER pkChr)
{
    TMemberMap::iterator it;
        if (pkChr->IsPC())
        it = m_memberMap.find(pkChr->GetPlayerID());
    else
        it = m_memberMap.find(pkChr->GetVID());
        if (it == m_memberMap.end())
    {
        sys_err("%s is not member of this party", pkChr->GetName());
        return;
    }
        if (m_bPCParty && !m_eventUpdate)
    {
        party_update_event_info* info = AllocEventInfo<party_update_event_info>();
        info->pid = m_dwLeaderPID;
        m_eventUpdate = event_create(party_update_event, info, PASSES_PER_SEC(3));
    }
        if (it->second.bRole == PARTY_ROLE_LEADER)
        m_pkChrLeader = pkChr;
        sys_log(2, "PARTY[%d] %s linked to party", GetLeaderPID(), pkChr->GetName());
        it->second.pCharacter = pkChr;
    pkChr->SetParty(this);
        if (pkChr->IsPC())
    {
        if (it->second.strName.empty())
        {
            it->second.strName = pkChr->GetName();
        }
            SendPartyJoinOneToAll(pkChr->GetPlayerID());
            SendPartyJoinAllToOne(pkChr);
        SendPartyLinkOneToAll(pkChr);
        SendPartyLinkAllToOne(pkChr);
        SendPartyInfoAllToOne(pkChr);
        SendPartyInfoOneToAll(pkChr);
            SendParameter(pkChr);
            //sys_log(0, "PARTY-DUNGEON connect %p %p", this, GetDungeon());
        if (GetDungeon() && GetDungeon()->GetMapIndex() == pkChr->GetMapIndex())
        {
            pkChr->SetDungeon(GetDungeon());
        }
            RequestSetMemberLevel(pkChr->GetPlayerID(), pkChr->GetLevel());
    }
}

Bu fonksiyonuda bul:
Genişlet Daralt Kopyala
info->pid = m_dwLeaderPID;

Kat ekle:
Genişlet Daralt Kopyala
info->pParty = this;

Bul:
Genişlet Daralt Kopyala
void CParty::Update()

Bu işlevi de değiştirin:
Genişlet Daralt Kopyala
 if (!l)
        return;

İşte burda:
Genişlet Daralt Kopyala
   if (!l)
    {
        RemoveBonuses();
        return;
    }

Dosyanın Sonuna Ekleyin:
Genişlet Daralt Kopyala
void CParty::RemoveBonuses()
{
    bool bResendAll = false;
    int iNewExpBonus = ComputePartyBonusExpPercent();
        if (m_iExpBonus != iNewExpBonus)
    {
        bResendAll = true;
        m_iExpBonus = iNewExpBonus;
    }
        if (bResendAll)
    {
        for (TMemberMap::iterator it = m_memberMap.begin(); it != m_memberMap.end(); ++it)
        {
            if (it->second.pCharacter)
            {
                ComputeRolePoint(it->second.pCharacter, 0, false);
                SendPartyInfoOneToAll(it->second.pCharacter);
            }
        }
    }
}

Oyuna gidin / Party.h

Bul:
Genişlet Daralt Kopyala
bool        IsPartyInDungeon(int mapIndex);

Sonra Ekle:
Genişlet Daralt Kopyala
void        RemoveBonuses();
 
Bug için bir açıklama yapabilir misiniz? Tam olarak ne tür bir hatanın çözümü bu?
 
grup
Bug için bir açıklama yapabilir misiniz? Tam olarak ne tür bir hatanın çözümü bu?
grup bonusları kardeşim gruptan verilen özelliklerin bug fix gruptan çıksada verilen özellik gitmiyor du daha ve vb. bazı fixler
 
grup

grup bonusları kardeşim gruptan verilen özelliklerin bug fix gruptan çıksada verilen özellik gitmiyor du daha ve vb. bazı fixler
Oyunun her yeri bataklık yeminle. :)
Düzeltme: Şimdi denedim de böyle bir sorun zaten yok oyunda. Grup kurdum ekstra özelliği verdim grubu dağıttım özellik gitti. Sanırım başka şeylerden kaynaklı ortaya çıkan sorunlardan ötürü böyle bir fix yapılmış.
 
Son düzenleme:
Uyarı: Bu konu açıldığından bu yana baya zaman geçmiş.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.
Geri
Üst