aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Guilds/Guild.cpp
diff options
context:
space:
mode:
authorNay <dnpd.dd@gmail.com>2011-12-22 19:53:47 +0000
committerNay <dnpd.dd@gmail.com>2011-12-22 19:53:47 +0000
commit090bb5a45e4b7608b57577c525a16416986a0b3e (patch)
tree3ec450399aad187984b69897a8a9e667164c2cb7 /src/server/game/Guilds/Guild.cpp
parent07293b55fc1f56c6e2fae59f4a49aa0fff30d162 (diff)
Core/Guild: Fix and enable SMSG_GUILD_QUERY_RESPONSE
- Update GuildEvents for 4.x (by Spp)
Diffstat (limited to 'src/server/game/Guilds/Guild.cpp')
-rwxr-xr-xsrc/server/game/Guilds/Guild.cpp35
1 files changed, 31 insertions, 4 deletions
diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp
index e7374a273dc..3c040b91e38 100755
--- a/src/server/game/Guilds/Guild.cpp
+++ b/src/server/game/Guilds/Guild.cpp
@@ -1227,10 +1227,11 @@ void Guild::HandleQuery(WorldSession* session)
{
WorldPacket data(SMSG_GUILD_QUERY_RESPONSE, 8 * 32 + 200); // Guess size
- data << uint32(m_id);
+ data << uint64(GetGuid());
data << m_name;
- for (uint8 i = 0 ; i < GUILD_RANKS_MAX_COUNT; ++i) // Alwayse show 10 ranks
+ // Rank name
+ for (uint8 i = 0; i < GUILD_RANKS_MAX_COUNT; ++i) // Always show 10 ranks
{
if (i < _GetRanksSize())
data << m_ranks[i].GetName();
@@ -1238,8 +1239,34 @@ void Guild::HandleQuery(WorldSession* session)
data << uint8(0); // Empty string
}
+ // Rank order of creation
+ for (uint8 i = 0; i < GUILD_RANKS_MAX_COUNT; ++i)
+ {
+ if (i < _GetRanksSize())
+ data << uint32(i);
+ else
+ data << uint32(0);
+ }
+
+ // Rank order of "importance" (sorting by rights)
+ Ranks ranks = m_ranks;
+ std::sort(ranks.begin(), ranks.end());
+ Ranks::iterator it;
+
+ for (uint8 i = 0; i < GUILD_RANKS_MAX_COUNT; ++i)
+ {
+ if (i < _GetRanksSize())
+ {
+ it = std::find(ranks.begin(), ranks.end(), m_ranks[i]);
+ data << std::distance(ranks.begin(), it);
+ }
+ else
+ data << uint32(0);
+ }
+
m_emblemInfo.WritePacket(data);
- data << uint32(0); // Something new in WotLK
+
+ data << uint32(_GetRanksSize()); // Number of ranks used
session->SendPacket(&data);
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Sent (SMSG_GUILD_QUERY_RESPONSE)");
@@ -2083,7 +2110,7 @@ bool Guild::AddMember(uint64 guid, uint8 rankId)
uint32 lowguid = GUID_LOPART(guid);
- // If rank was not passed, assing lowest possible rank
+ // If rank was not passed, assign lowest possible rank
if (rankId == GUILD_RANK_NONE)
rankId = _GetLowestRankId();