[C++] [FIX] Grup Bonus Bug

dna321

DemirGraphic
Usta Üye
Editör
Mesaj
385
Çözümler
2
Beğeni
2.190
Puan
1.484
Bul:
    EVENTINFO(party_update_event_info)
{
    DWORD pid;
        party_update_event_info()
        : pid(0)
    {
    }
};

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

Bul:
    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:
info->pid = m_dwLeaderPID;

Kat ekle:
info->pParty = this;

Bul:
void CParty::Update()

Bu işlevi de değiştirin:
 if (!l)
        return;

İşte burda:
   if (!l)
    {
        RemoveBonuses();
        return;
    }

Dosyanın Sonuna Ekleyin:
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:
bool        IsPartyInDungeon(int mapIndex);

Sonra Ekle:
void        RemoveBonuses();
 
Bug için bir açıklama yapabilir misiniz? Tam olarak ne tür bir hatanın çözümü bu?
 
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:
Geri
Üst