aboutsummaryrefslogtreecommitdiff
path: root/src/game/Guild.cpp
diff options
context:
space:
mode:
authorn0n4m3 <none@none>2010-04-11 11:06:51 +0400
committern0n4m3 <none@none>2010-04-11 11:06:51 +0400
commit93f7e2796c62f8838764ed9f0a33b40f8c30433a (patch)
tree0421cc7acdddc5e929826ab2d6370eef42af07c2 /src/game/Guild.cpp
parent1dc4f7c745f9f061a545c11c0132a67e5f828702 (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.cpp55
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)