mirror of
https://github.com/mangosfour/server.git
synced 2025-12-16 13:37:00 +00:00
[6869] Avoid DB access in 2 arena team handlers.
Signed-off-by: hunuza <hunuza@gmail.com>
This commit is contained in:
parent
818c378854
commit
af6a55bcb5
3 changed files with 31 additions and 39 deletions
|
|
@ -152,6 +152,14 @@ class ArenaTeam
|
||||||
|
|
||||||
return NULL;
|
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);
|
bool LoadArenaTeamFromDB(uint32 ArenaTeamId);
|
||||||
void LoadMembersFromDB(uint32 ArenaTeamId);
|
void LoadMembersFromDB(uint32 ArenaTeamId);
|
||||||
|
|
|
||||||
|
|
@ -289,25 +289,8 @@ void WorldSession::HandleArenaTeamRemoveFromTeamOpcode(WorldPacket & recv_data)
|
||||||
recv_data >> name;
|
recv_data >> name;
|
||||||
|
|
||||||
ArenaTeam *at = objmgr.GetArenaTeamById(ArenaTeamId);
|
ArenaTeam *at = objmgr.GetArenaTeamById(ArenaTeamId);
|
||||||
if(!at)
|
if(!at) // arena team not found
|
||||||
{
|
|
||||||
// arena team not found
|
|
||||||
return;
|
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())
|
if(at->GetCaptain() != _player->GetGUID())
|
||||||
{
|
{
|
||||||
|
|
@ -315,13 +298,20 @@ void WorldSession::HandleArenaTeamRemoveFromTeamOpcode(WorldPacket & recv_data)
|
||||||
return;
|
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);
|
SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S, "", "", ERR_ARENA_TEAM_LEADER_LEAVE_S);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
at->DelMember(guid);
|
at->DelMember(member->guid);
|
||||||
|
|
||||||
// event
|
// event
|
||||||
WorldPacket data;
|
WorldPacket data;
|
||||||
|
|
@ -343,24 +333,8 @@ void WorldSession::HandleArenaTeamPromoteToCaptainOpcode(WorldPacket & recv_data
|
||||||
recv_data >> name;
|
recv_data >> name;
|
||||||
|
|
||||||
ArenaTeam *at = objmgr.GetArenaTeamById(ArenaTeamId);
|
ArenaTeam *at = objmgr.GetArenaTeamById(ArenaTeamId);
|
||||||
if(!at)
|
if(!at) // arena team not found
|
||||||
{
|
|
||||||
// arena team not found
|
|
||||||
return;
|
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())
|
if(at->GetCaptain() != _player->GetGUID())
|
||||||
{
|
{
|
||||||
|
|
@ -368,7 +342,17 @@ void WorldSession::HandleArenaTeamPromoteToCaptainOpcode(WorldPacket & recv_data
|
||||||
return;
|
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
|
// event
|
||||||
WorldPacket data;
|
WorldPacket data;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "6868"
|
#define REVISION_NR "6869"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue