diff options
author | Kandera <KanderaDev@gmail.com> | 2012-02-22 16:32:51 -0500 |
---|---|---|
committer | Kandera <KanderaDev@gmail.com> | 2012-08-20 13:36:09 -0400 |
commit | dd05f1dcd278a2a50880d10a5df1549b4afbcc55 (patch) | |
tree | 033e254028aed647cdfe58d05c07cdf4c367d5e0 /src | |
parent | 6318fd91ff3630923c0e2b088fe66c14f7c31101 (diff) |
fix crash with groups, added enum for battlfield leave reasons
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Battlefield/Battlefield.cpp | 14 | ||||
-rw-r--r-- | src/server/game/Battlefield/BattlefieldHandler.cpp | 11 | ||||
-rwxr-xr-x | src/server/game/Server/WorldSession.h | 10 |
3 files changed, 14 insertions, 21 deletions
diff --git a/src/server/game/Battlefield/Battlefield.cpp b/src/server/game/Battlefield/Battlefield.cpp index 6a5ca0b5c02..aa9cc34a115 100644 --- a/src/server/game/Battlefield/Battlefield.cpp +++ b/src/server/game/Battlefield/Battlefield.cpp @@ -103,17 +103,9 @@ void Battlefield::HandlePlayerLeaveZone(Player *plr, uint32 /*zone */ ) { m_PlayersInWar[plr->GetTeamId()].erase(plr->GetGUID()); plr->GetSession()->SendBfLeaveMessage(m_BattleId); - if (Group* group = GetGroupPlayer(plr->GetGUID(), plr->GetTeamId())) // remove from raid group if player is member - { - // I think that now is not a hack - if (!group->RemoveMember(plr->GetGUID())) // group was disbanded - { - m_Groups[plr->GetTeamId()].erase(group->GetGUID()); - group->SetBattlefieldGroup(NULL); - sGroupMgr->RemoveGroup(group); - delete group; - } - } + if (Group* group = plr->GetGroup()) // remove from raid group if player is member + group->RemoveMember(plr->GetGUID()); + OnPlayerLeaveWar(plr); //For scripting } } diff --git a/src/server/game/Battlefield/BattlefieldHandler.cpp b/src/server/game/Battlefield/BattlefieldHandler.cpp index d21b285984d..7785fd3bff5 100644 --- a/src/server/game/Battlefield/BattlefieldHandler.cpp +++ b/src/server/game/Battlefield/BattlefieldHandler.cpp @@ -26,15 +26,6 @@ #include "BattlefieldMgr.h" #include "Opcodes.h" -enum BFLeaveReason -{ - BF_LEAVE_REASON_CLOSE = 0x00000001, - //BF_LEAVE_REASON_UNK1 = 0x00000002, (not used) - //BF_LEAVE_REASON_UNK2 = 0x00000004, (not used) - BF_LEAVE_REASON_EXITED = 0x00000008, - BF_LEAVE_REASON_LOW_LEVEL = 0x00000010, -}; - //This send to player windows for invite player to join the war //Param1:(BattleId) the BattleId of Bf //Param2:(ZoneId) the zone where the battle is (4197 for wg) @@ -97,7 +88,7 @@ void WorldSession::SendBfLeaveMessage(uint32 BattleId, BFLeaveReason reason) { WorldPacket data(SMSG_BATTLEFIELD_MGR_EJECTED, 7); data << uint32(BattleId); - data << uint8(reason);//byte Reason (1=close invite,8="exited",10="to low level") + data << uint8(reason);//byte Reason data << uint8(2);//byte BattleStatus data << uint8(0);//bool Relocated SendPacket(&data); diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 6678ead6b7e..8bddd63170d 100755 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -125,6 +125,16 @@ enum PartyResult ERR_PARTY_LFG_TELEPORT_IN_COMBAT = 30 }; + +enum BFLeaveReason +{ + BF_LEAVE_REASON_CLOSE = 0x00000001, + //BF_LEAVE_REASON_UNK1 = 0x00000002, (not used) + //BF_LEAVE_REASON_UNK2 = 0x00000004, (not used) + BF_LEAVE_REASON_EXITED = 0x00000008, + BF_LEAVE_REASON_LOW_LEVEL = 0x00000010, +}; + enum ChatRestrictionType { ERR_CHAT_RESTRICTED = 0, |