diff options
author | n0n4m3 <none@none> | 2010-04-11 11:06:51 +0400 |
---|---|---|
committer | n0n4m3 <none@none> | 2010-04-11 11:06:51 +0400 |
commit | 93f7e2796c62f8838764ed9f0a33b40f8c30433a (patch) | |
tree | 0421cc7acdddc5e929826ab2d6370eef42af07c2 /src/game/Guild.cpp | |
parent | 1dc4f7c745f9f061a545c11c0132a67e5f828702 (diff) |
Some fixes to guild/arenateam events. Big thx to TOM_RUS.
--HG--
branch : trunk
Diffstat (limited to 'src/game/Guild.cpp')
-rw-r--r-- | src/game/Guild.cpp | 55 |
1 files changed, 37 insertions, 18 deletions
diff --git a/src/game/Guild.cpp b/src/game/Guild.cpp index d58d5816277..b77bbf33864 100644 --- a/src/game/Guild.cpp +++ b/src/game/Guild.cpp @@ -475,21 +475,10 @@ void Guild::DelMember(uint64 guid, bool isDisbanding) // when leader non-exist (at guild load with deleted leader only) not send broadcasts if (oldLeader) { - WorldPacket data(SMSG_GUILD_EVENT, (1+1+(oldLeader->Name).size()+1+(best->Name).size()+1)); - data << (uint8)GE_LEADER_CHANGED; - data << (uint8)2; - data << oldLeader->Name; - data << best->Name; - BroadcastPacket(&data); - - data.Initialize(SMSG_GUILD_EVENT, (1+1+(oldLeader->Name).size()+1)); - data << (uint8)GE_LEFT; - data << (uint8)1; - data << oldLeader->Name; - BroadcastPacket(&data); - } + BroadcastEvent(GE_LEADER_CHANGED, 0, 2, oldLeader->Name, best->Name, ""); - sLog.outDebug("WORLD: Sent (SMSG_GUILD_EVENT)"); + BroadcastEvent(GE_LEFT, guid, 1, oldLeader->Name, "", ""); + } } members.erase(GUID_LOPART(guid)); @@ -689,9 +678,7 @@ int32 Guild::GetRank(uint32 LowGuid) void Guild::Disband() { - WorldPacket data(SMSG_GUILD_EVENT, 1); - data << (uint8)GE_DISBANDED; - BroadcastPacket(&data); + BroadcastEvent(GE_DISBANDED, 0, 0, "", "", ""); while (!members.empty()) { @@ -772,7 +759,7 @@ void Guild::Query(WorldSession *session) { WorldPacket data(SMSG_GUILD_QUERY_RESPONSE, (8*32+200));// we can only guess size - data << m_Id; + data << uint32(m_Id); data << m_Name; for (size_t i = 0 ; i < GUILD_RANKS_MAX_COUNT; ++i) // show always 10 ranks @@ -2294,6 +2281,38 @@ void Guild::MoveFromCharToBank(Player * pl, uint8 PlayerBag, uint8 PlayerSlot, u } } +void Guild::BroadcastEvent(GuildEvents event, uint64 guid, uint8 strCount, std::string str1, std::string str2, std::string str3) +{ + WorldPacket data(SMSG_GUILD_EVENT, 1+1+(guid ? 8 : 0)); + data << uint8(event); + data << uint8(strCount); + + switch(strCount) + { + 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; + } + + if(guid) + data << uint64(guid); + + BroadcastPacket(&data); + + sLog.outDebug("WORLD: Sent SMSG_GUILD_EVENT"); +} + bool GuildItemPosCount::isContainedIn(GuildItemPosCountVec const &vec) const { for (GuildItemPosCountVec::const_iterator itr = vec.begin(); itr != vec.end(); ++itr) |