Hikayeler

Reklam vermek için turkmmo@gmail.com

[C++] [FIX] Grup Bonus Bug

  • Konuyu başlatan DNA
  • Başlangıç tarihi
  • Cevaplar 1
  • Görüntüleme 1K

DNA

Dgraphic
TM Üye
Katılım
18 Eyl 2010
Konular
339
Mesajlar
1,022
Online süresi
2ay 27g
Reaksiyon Skoru
1,444
Altın Konu
4
Başarım Puanı
277
Yaş
39
TM Yaşı
15 Yıl 7 Ay 7 Gün
MmoLira
7,105
DevLira
588

Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. HEMEN TIKLA!

Arat:
C++:
  EVENTINFO(party_update_event_info)
{
    DWORD pid;
        party_update_event_info()
        : pid(0)
    {
    }
};

Değiştir:

C++:
    EVENTINFO(party_update_event_info)
{
    DWORD pid;
    CParty *pParty;
        party_update_event_info()
        : pid(0)
    {
    }
};

Arat:
C++:
    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 Arat:
C++:
info->pid = m_dwLeaderPID;

Kat Ekle:
C++:
info->pParty = this;

Arat:
C++:
void CParty::Update()

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

İşte Burda:
C++:
  if (!l)
    {
        RemoveBonuses();
        return;
    }

Dosyanın Sonuna Ekleyin:
C++:
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

Arat:
C++:
bool        IsPartyInDungeon(int mapIndex);

Sonra Ekle:
C++:
void        RemoveBonuses();
 
Son düzenleme:
Kardeşim kopyala yapıştır tam olmamış düzeltmen lazım kee 😀
 

Şu an konuyu görüntüleyenler (Toplam : 1, Üye: 0, Misafir: 1)

Geri
Üst