diff --git a/src/game/CharacterHandler.cpp b/src/game/CharacterHandler.cpp index bb0e6becb..458f97642 100644 --- a/src/game/CharacterHandler.cpp +++ b/src/game/CharacterHandler.cpp @@ -671,7 +671,7 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder *holder) guild->DisplayGuildBankTabsInfo(this); - guild->BroadcastEvent(GE_SIGNED_ON, pCurrChar->GetGUID(), 1, pCurrChar->GetName(), "", ""); + guild->BroadcastEvent(GE_SIGNED_ON, pCurrChar->GetObjectGuid(), pCurrChar->GetName()); } else { diff --git a/src/game/Guild.cpp b/src/game/Guild.cpp index 5578257c9..580f22f5a 100644 --- a/src/game/Guild.cpp +++ b/src/game/Guild.cpp @@ -490,9 +490,8 @@ void Guild::DelMember(uint64 guid, bool isDisbanding) // when leader non-exist (at guild load with deleted leader only) not send broadcasts if (oldLeader) { - BroadcastEvent(GE_LEADER_CHANGED, 0, 2, oldLeader->Name, best->Name, ""); - - BroadcastEvent(GE_LEFT, guid, 1, oldLeader->Name, "", ""); + BroadcastEvent(GE_LEADER_CHANGED, oldLeader->Name.c_str(), best->Name.c_str()); + BroadcastEvent(GE_LEFT, guid, oldLeader->Name.c_str()); } } @@ -697,7 +696,7 @@ int32 Guild::GetRank(uint32 LowGuid) void Guild::Disband() { - BroadcastEvent(GE_DISBANDED, 0, 0, "", "", ""); + BroadcastEvent(GE_DISBANDED); while (!members.empty()) { @@ -2350,32 +2349,30 @@ void Guild::MoveFromCharToBank( Player * pl, uint8 PlayerBag, uint8 PlayerSlot, } } -void Guild::BroadcastEvent(GuildEvents event, uint64 guid, uint8 strCount, std::string str1, std::string str2, std::string str3) +void Guild::BroadcastEvent(GuildEvents event, ObjectGuid guid, char const* str1 /*=NULL*/, char const* str2 /*=NULL*/, char const* str3 /*=NULL*/) { - WorldPacket data(SMSG_GUILD_EVENT, 1+1+(guid ? 8 : 0)); + uint8 strCount = !str1 ? 0 : (!str2 ? 1 : (!str3 ? 2 : 3)); + + WorldPacket data(SMSG_GUILD_EVENT, 1 + 1 + 1*strCount + (guid.IsEmpty() ? 0 : 8)); data << uint8(event); data << uint8(strCount); - switch(strCount) + if (str3) { - case 0: - break; - case 1: - data << str1; - break; - case 2: - data << str1 << str2; - break; - case 3: - data << str1 << str2 << str3; - break; - default: - sLog.outError("Guild::BroadcastEvent: incorrect strings count %u!", strCount); - break; + data << str1; + data << str2; + data << str3; } + else if (str2) + { + data << str1; + data << str2; + } + else if (str1) + data << str1; - if(guid) - data << uint64(guid); + if (!guid.IsEmpty()) + data << guid; BroadcastPacket(&data); diff --git a/src/game/Guild.h b/src/game/Guild.h index 6c9e673e7..cbc0cb003 100644 --- a/src/game/Guild.h +++ b/src/game/Guild.h @@ -340,7 +340,12 @@ class Guild void BroadcastToOfficers(WorldSession *session, const std::string& msg, uint32 language = LANG_UNIVERSAL); void BroadcastPacketToRank(WorldPacket *packet, uint32 rankId); void BroadcastPacket(WorldPacket *packet); - void BroadcastEvent(GuildEvents event, uint64 guid, uint8 strCount, std::string str1, std::string str2, std::string str3); + + void BroadcastEvent(GuildEvents event, ObjectGuid guid, char const* str1 = NULL, char const* str2 = NULL, char const* str3 = NULL); + void BroadcastEvent(GuildEvents event, char const* str1 = NULL, char const* str2 = NULL, char const* str3 = NULL) + { + BroadcastEvent(event, ObjectGuid(), str1, str2, str3); + } template void BroadcastWorker(Do& _do, Player* except = NULL) diff --git a/src/game/GuildHandler.cpp b/src/game/GuildHandler.cpp index bb47fcd15..8b943c06d 100644 --- a/src/game/GuildHandler.cpp +++ b/src/game/GuildHandler.cpp @@ -140,17 +140,17 @@ void WorldSession::HandleGuildRemoveOpcode(WorldPacket& recvPacket) std::string plName; recvPacket >> plName; - if(!normalizePlayerName(plName)) + if (!normalizePlayerName(plName)) return; Guild* guild = sObjectMgr.GetGuildById(GetPlayer()->GetGuildId()); - if(!guild) + if (!guild) { SendGuildCommandResult(GUILD_CREATE_S, "", ERR_GUILD_PLAYER_NOT_IN_GUILD); return; } - if(!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_REMOVE)) + if (!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_REMOVE)) { SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_PERMISSIONS); return; @@ -158,20 +158,20 @@ void WorldSession::HandleGuildRemoveOpcode(WorldPacket& recvPacket) uint64 plGuid; MemberSlot* slot = guild->GetMemberSlot(plName, plGuid); - if(!slot) + if (!slot) { SendGuildCommandResult(GUILD_INVITE_S, plName, ERR_GUILD_PLAYER_NOT_IN_GUILD_S); return; } - if(slot->RankId == GR_GUILDMASTER) + if (slot->RankId == GR_GUILDMASTER) { SendGuildCommandResult(GUILD_QUIT_S, "", ERR_GUILD_LEADER_LEAVE); return; } // do not allow to kick player with same or higher rights - if(GetPlayer()->GetRank() >= slot->RankId) + if (GetPlayer()->GetRank() >= slot->RankId) { SendGuildCommandResult(GUILD_QUIT_S, plName, ERR_GUILD_RANK_TOO_HIGH_S); return; @@ -181,7 +181,7 @@ void WorldSession::HandleGuildRemoveOpcode(WorldPacket& recvPacket) // Put record into guild log guild->LogGuildEvent(GUILD_EVENT_LOG_UNINVITE_PLAYER, GetPlayer()->GetGUIDLow(), GUID_LOPART(plGuid), 0); - guild->BroadcastEvent(GE_REMOVED, 0, 2, plName, _player->GetName(), ""); + guild->BroadcastEvent(GE_REMOVED, plName.c_str(), _player->GetName()); } void WorldSession::HandleGuildAcceptOpcode(WorldPacket& /*recvPacket*/) @@ -204,7 +204,7 @@ void WorldSession::HandleGuildAcceptOpcode(WorldPacket& /*recvPacket*/) // Put record into guild log guild->LogGuildEvent(GUILD_EVENT_LOG_JOIN_GUILD, GetPlayer()->GetGUIDLow(), 0, 0); - guild->BroadcastEvent(GE_JOINED, player->GetGUID(), 1, player->GetName(), "", ""); + guild->BroadcastEvent(GE_JOINED, player->GetObjectGuid(), player->GetName()); } void WorldSession::HandleGuildDeclineOpcode(WorldPacket& /*recvPacket*/) @@ -253,12 +253,12 @@ void WorldSession::HandleGuildPromoteOpcode(WorldPacket& recvPacket) return; Guild* guild = sObjectMgr.GetGuildById(GetPlayer()->GetGuildId()); - if(!guild) + if (!guild) { SendGuildCommandResult(GUILD_CREATE_S, "", ERR_GUILD_PLAYER_NOT_IN_GUILD); return; } - if(!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_PROMOTE)) + if (!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_PROMOTE)) { SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_PERMISSIONS); return; @@ -267,13 +267,13 @@ void WorldSession::HandleGuildPromoteOpcode(WorldPacket& recvPacket) uint64 plGuid; MemberSlot* slot = guild->GetMemberSlot(plName, plGuid); - if(!slot) + if (!slot) { SendGuildCommandResult(GUILD_INVITE_S, plName, ERR_GUILD_PLAYER_NOT_IN_GUILD_S); return; } - if(plGuid == GetPlayer()->GetGUID()) + if (plGuid == GetPlayer()->GetGUID()) { SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_NAME_INVALID); return; @@ -294,7 +294,7 @@ void WorldSession::HandleGuildPromoteOpcode(WorldPacket& recvPacket) // Put record into guild log guild->LogGuildEvent(GUILD_EVENT_LOG_PROMOTE_PLAYER, GetPlayer()->GetGUIDLow(), GUID_LOPART(plGuid), newRankId); - guild->BroadcastEvent(GE_PROMOTION, 0, 3, _player->GetName(), plName, guild->GetRankName(newRankId)); + guild->BroadcastEvent(GE_PROMOTION, _player->GetName(), plName.c_str(), guild->GetRankName(newRankId).c_str()); } void WorldSession::HandleGuildDemoteOpcode(WorldPacket& recvPacket) @@ -330,21 +330,21 @@ void WorldSession::HandleGuildDemoteOpcode(WorldPacket& recvPacket) return; } - if(plGuid == GetPlayer()->GetGUID()) + if (plGuid == GetPlayer()->GetGUID()) { SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_NAME_INVALID); return; } // do not allow to demote same or higher rank - if(GetPlayer()->GetRank() >= slot->RankId) + if (GetPlayer()->GetRank() >= slot->RankId) { SendGuildCommandResult(GUILD_INVITE_S, plName, ERR_GUILD_RANK_TOO_HIGH_S); return; } // do not allow to demote lowest rank - if(slot->RankId >= guild->GetLowestRank()) + if (slot->RankId >= guild->GetLowestRank()) { SendGuildCommandResult(GUILD_INVITE_S, plName, ERR_GUILD_RANK_TOO_LOW_S); return; @@ -356,7 +356,7 @@ void WorldSession::HandleGuildDemoteOpcode(WorldPacket& recvPacket) // Put record into guild log guild->LogGuildEvent(GUILD_EVENT_LOG_DEMOTE_PLAYER, GetPlayer()->GetGUIDLow(), GUID_LOPART(plGuid), newRankId); - guild->BroadcastEvent(GE_DEMOTION, 0, 3, _player->GetName(), plName, guild->GetRankName(slot->RankId)); + guild->BroadcastEvent(GE_DEMOTION, _player->GetName(), plName.c_str(), guild->GetRankName(slot->RankId).c_str()); } void WorldSession::HandleGuildLeaveOpcode(WorldPacket& /*recvPacket*/) @@ -386,7 +386,7 @@ void WorldSession::HandleGuildLeaveOpcode(WorldPacket& /*recvPacket*/) // Put record into guild log guild->LogGuildEvent(GUILD_EVENT_LOG_LEAVE_GUILD, _player->GetGUIDLow(), 0, 0); - guild->BroadcastEvent(GE_LEFT, _player->GetGUID(), 1, _player->GetName(), "", ""); + guild->BroadcastEvent(GE_LEFT, _player->GetGUID(), _player->GetName()); SendGuildCommandResult(GUILD_QUIT_S, guild->GetName(), ERR_PLAYER_NO_MORE_IN_GUILD); } @@ -451,7 +451,7 @@ void WorldSession::HandleGuildLeaderOpcode(WorldPacket& recvPacket) guild->SetLeader(newLeaderGUID); guild->ChangeRank(oldLeader->GetGUID(), GR_OFFICER); - guild->BroadcastEvent(GE_LEADER_CHANGED, 0, 2, oldLeader->GetName(), name, ""); + guild->BroadcastEvent(GE_LEADER_CHANGED, oldLeader->GetName(), name.c_str()); } void WorldSession::HandleGuildMOTDOpcode(WorldPacket& recvPacket) @@ -460,18 +460,18 @@ void WorldSession::HandleGuildMOTDOpcode(WorldPacket& recvPacket) std::string MOTD; - if(!recvPacket.empty()) + if (!recvPacket.empty()) recvPacket >> MOTD; else MOTD = ""; Guild *guild = sObjectMgr.GetGuildById(GetPlayer()->GetGuildId()); - if(!guild) + if (!guild) { SendGuildCommandResult(GUILD_CREATE_S, "", ERR_GUILD_PLAYER_NOT_IN_GUILD); return; } - if(!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_SETMOTD)) + if (!guild->HasRankRight(GetPlayer()->GetRank(), GR_RIGHT_SETMOTD)) { SendGuildCommandResult(GUILD_INVITE_S, "", ERR_GUILD_PERMISSIONS); return; @@ -479,7 +479,7 @@ void WorldSession::HandleGuildMOTDOpcode(WorldPacket& recvPacket) guild->SetMOTD(MOTD); - guild->BroadcastEvent(GE_MOTD, 0, 1, MOTD, "", ""); + guild->BroadcastEvent(GE_MOTD, MOTD.c_str()); } void WorldSession::HandleGuildSetPublicNoteOpcode(WorldPacket& recvPacket) diff --git a/src/game/WorldSession.cpp b/src/game/WorldSession.cpp index 7b9047e6b..282951557 100644 --- a/src/game/WorldSession.cpp +++ b/src/game/WorldSession.cpp @@ -385,7 +385,7 @@ void WorldSession::LogoutPlayer(bool Save) guild->SetMemberStats(_player->GetGUID()); guild->UpdateLogoutTime(_player->GetGUID()); - guild->BroadcastEvent(GE_SIGNED_OFF, _player->GetGUID(), 1, _player->GetName(), "", ""); + guild->BroadcastEvent(GE_SIGNED_OFF, _player->GetGUID(), _player->GetName()); } ///- Remove pet diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 536c83b7c..9fdc7fde0 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 "10376" + #define REVISION_NR "10377" #endif // __REVISION_NR_H__