From af6a55bcb583f4846bbef50e0174e1674249583d Mon Sep 17 00:00:00 2001 From: hunuza Date: Sun, 30 Nov 2008 19:24:38 +0100 Subject: [PATCH] [6869] Avoid DB access in 2 arena team handlers. Signed-off-by: hunuza --- src/game/ArenaTeam.h | 8 +++++ src/game/ArenaTeamHandler.cpp | 60 +++++++++++++---------------------- src/shared/revision_nr.h | 2 +- 3 files changed, 31 insertions(+), 39 deletions(-) diff --git a/src/game/ArenaTeam.h b/src/game/ArenaTeam.h index b12b759a8..43adca888 100644 --- a/src/game/ArenaTeam.h +++ b/src/game/ArenaTeam.h @@ -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); diff --git a/src/game/ArenaTeamHandler.cpp b/src/game/ArenaTeamHandler.cpp index c6b9059e7..7cab8d085 100644 --- a/src/game/ArenaTeamHandler.cpp +++ b/src/game/ArenaTeamHandler.cpp @@ -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; diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 4828f0151..ffac4a159 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "6868" + #define REVISION_NR "6869" #endif // __REVISION_NR_H__