diff options
author | Kittnz <Kittnz@users.noreply.github.com> | 2018-09-16 13:17:03 +0200 |
---|---|---|
committer | jackpoz <giacomopoz@gmail.com> | 2018-09-16 13:17:03 +0200 |
commit | 9f945d2f426d66a7081b6b0efce6eece3a315181 (patch) | |
tree | 767ccfa7f72abf01ede9126db2a5115d5ccf2c4d | |
parent | 0d1eed5dabdc86e4a7ae2d5dfc8f5c17636f69a1 (diff) |
Core/Guild: Implement character gender and send in packet. (#22436)
Closes #22433
Credit xvwyh
-rw-r--r-- | src/server/database/Database/Implementation/CharacterDatabase.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Guilds/Guild.cpp | 19 | ||||
-rw-r--r-- | src/server/game/Guilds/Guild.h | 4 | ||||
-rw-r--r-- | src/server/game/Guilds/GuildMgr.cpp | 4 |
4 files changed, 18 insertions, 11 deletions
diff --git a/src/server/database/Database/Implementation/CharacterDatabase.cpp b/src/server/database/Database/Implementation/CharacterDatabase.cpp index 2c373f2b005..b83be67c109 100644 --- a/src/server/database/Database/Implementation/CharacterDatabase.cpp +++ b/src/server/database/Database/Implementation/CharacterDatabase.cpp @@ -223,7 +223,7 @@ void CharacterDatabaseConnection::DoPrepareStatements() PrepareStatement(CHAR_DEL_GUILD_MEMBER_WITHDRAW, "TRUNCATE guild_member_withdraw", CONNECTION_ASYNC); // 0: uint32, 1: uint32, 2: uint32 - PrepareStatement(CHAR_SEL_CHAR_DATA_FOR_GUILD, "SELECT name, level, class, zone, account FROM characters WHERE guid = ?", CONNECTION_SYNCH); + PrepareStatement(CHAR_SEL_CHAR_DATA_FOR_GUILD, "SELECT name, level, class, gender, zone, account FROM characters WHERE guid = ?", CONNECTION_SYNCH); // Chat channel handling PrepareStatement(CHAR_SEL_CHANNEL, "SELECT name, announce, ownership, password, bannedList FROM channels WHERE name = ? AND team = ?", CONNECTION_SYNCH); diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp index 80aad9478ea..d2ab24bea8f 100644 --- a/src/server/game/Guilds/Guild.cpp +++ b/src/server/game/Guilds/Guild.cpp @@ -614,6 +614,7 @@ Guild::Member::Member(ObjectGuid::LowType guildId, ObjectGuid guid, uint8 rankId m_zoneId(0), m_level(0), m_class(0), + m_gender(0), m_flags(GUILDMEMBER_STATUS_NONE), m_logoutTime(GameTime::GetGameTime()), m_accountId(0), @@ -627,15 +628,17 @@ void Guild::Member::SetStats(Player* player) m_name = player->GetName(); m_level = player->getLevel(); m_class = player->getClass(); + m_gender = player->getGender(); m_zoneId = player->GetZoneId(); m_accountId = player->GetSession()->GetAccountId(); } -void Guild::Member::SetStats(std::string const& name, uint8 level, uint8 _class, uint32 zoneId, uint32 accountId) +void Guild::Member::SetStats(std::string const& name, uint8 level, uint8 _class, uint8 gender, uint32 zoneId, uint32 accountId) { m_name = name; m_level = level; m_class = _class; + m_gender = gender; m_zoneId = zoneId; m_accountId = accountId; } @@ -710,9 +713,10 @@ bool Guild::Member::LoadFromDB(Field* fields) SetStats(fields[12].GetString(), fields[13].GetUInt8(), // characters.level fields[14].GetUInt8(), // characters.class - fields[15].GetUInt16(), // characters.zone - fields[16].GetUInt32()); // characters.account - m_logoutTime = fields[17].GetUInt32(); // characters.logout_time + fields[15].GetUInt8(), // characters.gender + fields[16].GetUInt16(), // characters.zone + fields[17].GetUInt32()); // characters.account + m_logoutTime = fields[18].GetUInt32(); // characters.logout_time if (!CheckStats()) return false; @@ -752,7 +756,7 @@ void Guild::Member::WritePacket(WorldPacket& data, bool sendOfficerNote) const << uint32(m_rankId) << uint8(m_level) << uint8(m_class) - << uint8(0) + << uint8(m_gender) << uint32(m_zoneId); if (!m_flags) @@ -2325,8 +2329,9 @@ bool Guild::AddMember(SQLTransaction& trans, ObjectGuid guid, uint8 rankId) name, fields[1].GetUInt8(), fields[2].GetUInt8(), - fields[3].GetUInt16(), - fields[4].GetUInt32()); + fields[3].GetUInt8(), + fields[4].GetUInt16(), + fields[5].GetUInt32()); ok = member->CheckStats(); } diff --git a/src/server/game/Guilds/Guild.h b/src/server/game/Guilds/Guild.h index de84771b411..1162dd7df78 100644 --- a/src/server/game/Guilds/Guild.h +++ b/src/server/game/Guilds/Guild.h @@ -278,7 +278,7 @@ class TC_GAME_API Guild Member(ObjectGuid::LowType guildId, ObjectGuid guid, uint8 rankId); void SetStats(Player* player); - void SetStats(std::string const& name, uint8 level, uint8 _class, uint32 zoneId, uint32 accountId); + void SetStats(std::string const& name, uint8 level, uint8 _class, uint8 gender, uint32 zoneId, uint32 accountId); bool CheckStats() const; void SetPublicNote(std::string const& publicNote); @@ -303,6 +303,7 @@ class TC_GAME_API Guild std::string GetOfficerNote() const { return m_officerNote; } uint8 GetClass() const { return m_class; } uint8 GetLevel() const { return m_level; } + uint8 GetGender() const { return m_gender; } uint8 GetFlags() const { return m_flags; } uint32 GetZoneId() const { return m_zoneId; } bool IsOnline() const { return (m_flags & GUILDMEMBER_STATUS_ONLINE); } @@ -329,6 +330,7 @@ class TC_GAME_API Guild uint32 m_zoneId; uint8 m_level; uint8 m_class; + uint8 m_gender; uint8 m_flags; uint64 m_logoutTime; uint32 m_accountId; diff --git a/src/server/game/Guilds/GuildMgr.cpp b/src/server/game/Guilds/GuildMgr.cpp index 87a324696ec..56c3691b19e 100644 --- a/src/server/game/Guilds/GuildMgr.cpp +++ b/src/server/game/Guilds/GuildMgr.cpp @@ -185,8 +185,8 @@ void GuildMgr::LoadGuilds() // 0 1 2 3 4 5 6 7 8 9 10 QueryResult result = CharacterDatabase.Query("SELECT guildid, gm.guid, `rank` , pnote, offnote, w.tab0, w.tab1, w.tab2, w.tab3, w.tab4, w.tab5, " - // 11 12 13 14 15 16 17 - "w.money, c.name, c.level, c.class, c.zone, c.account, c.logout_time " + // 11 12 13 14 15 16 17 18 + "w.money, c.name, c.level, c.class, c.gender, c.zone, c.account, c.logout_time " "FROM guild_member gm " "LEFT JOIN guild_member_withdraw w ON gm.guid = w.guid " "LEFT JOIN characters c ON c.guid = gm.guid ORDER BY guildid ASC"); |