- Mesaj
- 385
- Çözümler
- 2
- Beğeni
- 2.247
- Puan
- 1.484
- Ticaret Puanı
- 0
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();