[6869] Avoid DB access in 2 arena team handlers.

Signed-off-by: hunuza <hunuza@gmail.com>
This commit is contained in:
hunuza 2008-11-30 19:24:38 +01:00
parent 818c378854
commit af6a55bcb5
3 changed files with 31 additions and 39 deletions

View file

@ -152,6 +152,14 @@ class ArenaTeam
return NULL;
}
ArenaTeamMember* GetMember(std::string& name)
{
for (MemberList::iterator itr = members.begin(); itr != members.end(); ++itr)
if(itr->name==name)
return &(*itr);
return NULL;
}
bool LoadArenaTeamFromDB(uint32 ArenaTeamId);
void LoadMembersFromDB(uint32 ArenaTeamId);

View file

@ -289,25 +289,8 @@ void WorldSession::HandleArenaTeamRemoveFromTeamOpcode(WorldPacket & recv_data)
recv_data >> name;
ArenaTeam *at = objmgr.GetArenaTeamById(ArenaTeamId);
if(!at)
{
// arena team not found
if(!at) // arena team not found
return;
}
uint64 guid = objmgr.GetPlayerGUIDByName(name);
if(!guid)
{
// player guid not found
return;
}
if(at->GetCaptain() == guid)
{
// unsure
SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S, "", "", ERR_ARENA_TEAM_PERMISSIONS);
return;
}
if(at->GetCaptain() != _player->GetGUID())
{
@ -315,13 +298,20 @@ void WorldSession::HandleArenaTeamRemoveFromTeamOpcode(WorldPacket & recv_data)
return;
}
if(at->GetCaptain() == guid)
if(!normalizePlayerName(name))
return;
ArenaTeamMember* member = at->GetMember(name);
if(!member) // member not found
return;
if(at->GetCaptain() == member->guid)
{
SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S, "", "", ERR_ARENA_TEAM_LEADER_LEAVE_S);
return;
}
at->DelMember(guid);
at->DelMember(member->guid);
// event
WorldPacket data;
@ -343,24 +333,8 @@ void WorldSession::HandleArenaTeamPromoteToCaptainOpcode(WorldPacket & recv_data
recv_data >> name;
ArenaTeam *at = objmgr.GetArenaTeamById(ArenaTeamId);
if(!at)
{
// arena team not found
if(!at) // arena team not found
return;
}
uint64 guid = objmgr.GetPlayerGUIDByName(name);
if(!guid)
{
// player guid not found
return;
}
if(at->GetCaptain() == guid)
{
// target player already captain
return;
}
if(at->GetCaptain() != _player->GetGUID())
{
@ -368,7 +342,17 @@ void WorldSession::HandleArenaTeamPromoteToCaptainOpcode(WorldPacket & recv_data
return;
}
at->SetCaptain(guid);
if(!normalizePlayerName(name))
return;
ArenaTeamMember* member = at->GetMember(name);
if(!member) // member not found
return;
if(at->GetCaptain() == member->guid) // target player already captain
return;
at->SetCaptain(member->guid);
// event
WorldPacket data;

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__
#define __REVISION_NR_H__
#define REVISION_NR "6868"
#define REVISION_NR "6869"
#endif // __REVISION_NR_H__