aboutsummaryrefslogtreecommitdiff
path: root/src/game/ArenaTeam.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/ArenaTeam.cpp')
-rw-r--r--src/game/ArenaTeam.cpp43
1 files changed, 24 insertions, 19 deletions
diff --git a/src/game/ArenaTeam.cpp b/src/game/ArenaTeam.cpp
index e364f7a0e7e..8d89a841a2f 100644
--- a/src/game/ArenaTeam.cpp
+++ b/src/game/ArenaTeam.cpp
@@ -90,40 +90,45 @@ bool ArenaTeam::AddMember(uint64 PlayerGuid)
std::string plName;
uint8 plClass;
+ // arena team is full (can't have more than type * 2 players!)
if(GetMembersSize() >= GetType() * 2)
- {
- // arena team is full (can't have more than type * 2 players!)
- // return false
return false;
- }
-
- if(!objmgr.GetPlayerNameByGUID(PlayerGuid, plName)) // player doesnt exist
- return false;
- // player already in arenateam of that size
- if(Player::GetArenaTeamIdFromDB(PlayerGuid, GetType()) != 0)
- {
- sLog.outError("Arena::AddMember() : player already in this sized team");
- return false;
- }
-
- // remove all player signs from another petitions
- // this will be prevent attempt joining player to many arenateams and corrupt arena team data integrity
- Player::RemovePetitionsAndSigns(PlayerGuid, GetType());
Player *pl = objmgr.GetPlayer(PlayerGuid);
if(pl)
{
+ if(pl->GetArenaTeamId(GetType()))
+ {
+ sLog.outError("Arena::AddMember() : player already in this sized team");
+ return false;
+ }
+
plClass = (uint8)pl->getClass();
+ plName = pl->GetName();
}
else
{
- QueryResult *result = CharacterDatabase.PQuery("SELECT class FROM characters WHERE guid='%u'", GUID_LOPART(PlayerGuid));
+ // 0 1
+ QueryResult *result = CharacterDatabase.PQuery("SELECT name, class FROM characters WHERE guid='%u'", GUID_LOPART(PlayerGuid));
if(!result)
return false;
- plClass = (*result)[0].GetUInt8();
+
+ plName = (*result)[0].GetCppString();
+ plClass = (*result)[1].GetUInt8();
delete result;
+
+ // check if player already in arenateam of that size
+ if(Player::GetArenaTeamIdFromDB(PlayerGuid, GetType()) != 0)
+ {
+ sLog.outError("Arena::AddMember() : player already in this sized team");
+ return false;
+ }
}
+ // remove all player signs from another petitions
+ // this will be prevent attempt joining player to many arenateams and corrupt arena team data integrity
+ Player::RemovePetitionsAndSigns(PlayerGuid, GetType());
+
ArenaTeamMember newmember;
newmember.name = plName;
newmember.guid = PlayerGuid;