aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKittnz <Kittnz@users.noreply.github.com>2018-09-16 13:17:03 +0200
committerjackpoz <giacomopoz@gmail.com>2018-09-16 13:17:03 +0200
commit9f945d2f426d66a7081b6b0efce6eece3a315181 (patch)
tree767ccfa7f72abf01ede9126db2a5115d5ccf2c4d
parent0d1eed5dabdc86e4a7ae2d5dfc8f5c17636f69a1 (diff)
Core/Guild: Implement character gender and send in packet. (#22436)
Closes #22433 Credit xvwyh
-rw-r--r--src/server/database/Database/Implementation/CharacterDatabase.cpp2
-rw-r--r--src/server/game/Guilds/Guild.cpp19
-rw-r--r--src/server/game/Guilds/Guild.h4
-rw-r--r--src/server/game/Guilds/GuildMgr.cpp4
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");