fix(CORE/Commands): .Pinfo - Show guild informations (#1775)
* fix(CORE/Commands): .Pinfo *Now you can see Guild Name, Guild Rank, Note, Officer Note And Xp - Total Xp * Renamed inappropriate variable names * Add Guild related informations
This commit is contained in:
committed by
Poszer
parent
3e071ea740
commit
e56c8e07ce
@@ -147,6 +147,9 @@ void CharacterDatabaseConnection::DoPrepareStatements()
|
||||
PrepareStatement(CHAR_INS_GUILD_MEMBER, "INSERT INTO guild_member (guildid, guid, rank, pnote, offnote) VALUES (?, ?, ?, ?, ?)", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_DEL_GUILD_MEMBER, "DELETE FROM guild_member WHERE guid = ?", CONNECTION_ASYNC); // 0: uint32
|
||||
PrepareStatement(CHAR_DEL_GUILD_MEMBERS, "DELETE FROM guild_member WHERE guildid = ?", CONNECTION_ASYNC); // 0: uint32
|
||||
PrepareStatement(CHAR_SEL_GUILD_MEMBER_EXTENDED, "SELECT g.guildid, g.name, gr.rname, gm.pnote, gm.offnote "
|
||||
"FROM guild g JOIN guild_member gm ON g.guildid = gm.guildid "
|
||||
"JOIN guild_rank gr ON g.guildid = gr.guildid AND gm.`rank` = gr.rid WHERE gm.guid = ?", CONNECTION_BOTH);
|
||||
// 0: uint32, 1: uint8, 3: string, 4: uint32, 5: uint32
|
||||
PrepareStatement(CHAR_INS_GUILD_RANK, "INSERT INTO guild_rank (guildid, rid, rname, rights, BankMoneyPerDay) VALUES (?, ?, ?, ?, ?)", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_DEL_GUILD_RANKS, "DELETE FROM guild_rank WHERE guildid = ?", CONNECTION_ASYNC); // 0: uint32
|
||||
|
||||
@@ -143,6 +143,7 @@ enum CharacterDatabaseStatements
|
||||
CHAR_INS_GUILD_MEMBER,
|
||||
CHAR_DEL_GUILD_MEMBER,
|
||||
CHAR_DEL_GUILD_MEMBERS,
|
||||
CHAR_SEL_GUILD_MEMBER_EXTENDED,
|
||||
CHAR_INS_GUILD_RANK,
|
||||
CHAR_DEL_GUILD_RANKS,
|
||||
CHAR_DEL_GUILD_LOWEST_RANK,
|
||||
|
||||
@@ -80,4 +80,6 @@ void WorldDatabaseConnection::DoPrepareStatements()
|
||||
PrepareStatement(WORLD_DEL_DISABLES, "DELETE FROM disables WHERE entry = ? AND sourceType = ?", CONNECTION_ASYNC);
|
||||
PrepareStatement(WORLD_UPD_CREATURE_ZONE_AREA_DATA, "UPDATE creature SET zoneId = ?, areaId = ? WHERE guid = ?", CONNECTION_ASYNC);
|
||||
PrepareStatement(WORLD_UPD_GAMEOBJECT_ZONE_AREA_DATA, "UPDATE gameobject SET zoneId = ?, areaId = ? WHERE guid = ?", CONNECTION_ASYNC);
|
||||
// 0: uint8
|
||||
PrepareStatement(WORLD_SEL_REQ_XP, "SELECT Experience FROM player_xp_for_level WHERE Level = ?", CONNECTION_SYNCH);
|
||||
}
|
||||
|
||||
@@ -101,6 +101,7 @@ enum WorldDatabaseStatements
|
||||
WORLD_DEL_DISABLES,
|
||||
WORLD_UPD_CREATURE_ZONE_AREA_DATA,
|
||||
WORLD_UPD_GAMEOBJECT_ZONE_AREA_DATA,
|
||||
WORLD_SEL_REQ_XP,
|
||||
|
||||
MAX_WORLDDATABASE_STATEMENTS
|
||||
};
|
||||
|
||||
@@ -1755,6 +1755,7 @@ public:
|
||||
|
||||
// Account data print variables
|
||||
std::string userName = handler->GetTrinityString(LANG_ERROR);
|
||||
uint32 lowguid = GUID_LOPART(targetGuid);
|
||||
uint32 accId = 0;
|
||||
std::string eMail = handler->GetTrinityString(LANG_ERROR);
|
||||
std::string regMail = handler->GetTrinityString(LANG_ERROR);
|
||||
@@ -1835,12 +1836,12 @@ public:
|
||||
// Query informations from the DB
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_PINFO);
|
||||
stmt->setUInt32(0, GUID_LOPART(targetGuid));
|
||||
PreparedQueryResult result = CharacterDatabase.Query(stmt);
|
||||
PreparedQueryResult charInfoResult = CharacterDatabase.Query(stmt);
|
||||
|
||||
if (!result)
|
||||
if (!charInfoResult)
|
||||
return false;
|
||||
|
||||
Field* fields = result->Fetch();
|
||||
Field* fields = charInfoResult->Fetch();
|
||||
totalPlayerTime = fields[0].GetUInt32();
|
||||
level = fields[1].GetUInt8();
|
||||
money = fields[2].GetUInt32();
|
||||
@@ -1863,11 +1864,11 @@ public:
|
||||
stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_PINFO);
|
||||
stmt->setInt32(0, int32(realmID));
|
||||
stmt->setUInt32(1, accId);
|
||||
PreparedQueryResult result = LoginDatabase.Query(stmt);
|
||||
PreparedQueryResult accInfoResult = LoginDatabase.Query(stmt);
|
||||
|
||||
if (result)
|
||||
if (accInfoResult)
|
||||
{
|
||||
Field* fields = result->Fetch();
|
||||
Field* fields = accInfoResult->Fetch();
|
||||
userName = fields[0].GetString();
|
||||
security = fields[1].GetUInt8();
|
||||
|
||||
@@ -1923,25 +1924,64 @@ public:
|
||||
std::string nameLink = handler->playerLink(targetName);
|
||||
|
||||
// Returns banType, banTime, bannedBy, banreason
|
||||
PreparedStatement* stmt2 = LoginDatabase.GetPreparedStatement(LOGIN_SEL_PINFO_BANS);
|
||||
stmt2->setUInt32(0, accId);
|
||||
PreparedQueryResult result2 = LoginDatabase.Query(stmt2);
|
||||
if (!result2)
|
||||
PreparedStatement* banQuery = LoginDatabase.GetPreparedStatement(LOGIN_SEL_PINFO_BANS);
|
||||
banQuery->setUInt32(0, accId);
|
||||
PreparedQueryResult accBannedResult = LoginDatabase.Query(banQuery);
|
||||
if (!accBannedResult)
|
||||
{
|
||||
banType = handler->GetTrinityString(LANG_CHARACTER);
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PINFO_BANS);
|
||||
stmt->setUInt32(0, GUID_LOPART(targetGuid));
|
||||
result2 = CharacterDatabase.Query(stmt);
|
||||
accBannedResult = CharacterDatabase.Query(stmt);
|
||||
}
|
||||
|
||||
if (result2)
|
||||
if (accBannedResult)
|
||||
{
|
||||
Field* fields = result2->Fetch();
|
||||
Field* fields = accBannedResult->Fetch();
|
||||
banTime = int64(fields[1].GetUInt64() ? 0 : fields[0].GetUInt32());
|
||||
bannedBy = fields[2].GetString();
|
||||
banReason = fields[3].GetString();
|
||||
}
|
||||
|
||||
// Can be used to query data from World database
|
||||
PreparedStatement* xpQuery = WorldDatabase.GetPreparedStatement(WORLD_SEL_REQ_XP);
|
||||
xpQuery->setUInt8(0, level);
|
||||
PreparedQueryResult xpResult = WorldDatabase.Query(xpQuery);
|
||||
|
||||
if (xpResult)
|
||||
{
|
||||
Field* fields = xpResult->Fetch();
|
||||
xptotal = fields[0].GetUInt32();
|
||||
}
|
||||
|
||||
// Can be used to query data from Characters database
|
||||
PreparedStatement* charXpQuery = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PINFO_XP);
|
||||
charXpQuery->setUInt32(0, lowguid);
|
||||
PreparedQueryResult charXpResult = CharacterDatabase.Query(charXpQuery);
|
||||
|
||||
if (charXpResult)
|
||||
{
|
||||
Field* fields = charXpResult->Fetch();
|
||||
xp = fields[0].GetUInt32();
|
||||
uint32 gguid = fields[1].GetUInt32();
|
||||
|
||||
if (gguid != 0)
|
||||
{
|
||||
PreparedStatement* guildQuery = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUILD_MEMBER_EXTENDED);
|
||||
guildQuery->setUInt32(0, lowguid);
|
||||
PreparedQueryResult guildInfoResult = CharacterDatabase.Query(guildQuery);
|
||||
if (guildInfoResult)
|
||||
{
|
||||
Field* fields = guildInfoResult->Fetch();
|
||||
guildId = fields[0].GetUInt32();
|
||||
guildName = fields[1].GetString();
|
||||
guildRank = fields[2].GetString();
|
||||
note = fields[3].GetString();
|
||||
officeNote = fields[4].GetString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Initiate output
|
||||
// Output I. LANG_PINFO_PLAYER
|
||||
handler->PSendSysMessage(LANG_PINFO_PLAYER, target ? "" : handler->GetTrinityString(LANG_OFFLINE), nameLink.c_str(), GUID_LOPART(targetGuid));
|
||||
@@ -2103,12 +2143,12 @@ public:
|
||||
|
||||
// Mail Data - an own query, because it may or may not be useful.
|
||||
// SQL: "SELECT SUM(CASE WHEN (checked & 1) THEN 1 ELSE 0 END) AS 'readmail', COUNT(*) AS 'totalmail' FROM mail WHERE `receiver` = ?"
|
||||
PreparedStatement* stmt4 = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PINFO_MAILS);
|
||||
stmt4->setUInt32(0, GUID_LOPART(targetGuid));
|
||||
PreparedQueryResult result6 = CharacterDatabase.Query(stmt4);
|
||||
if (result6)
|
||||
PreparedStatement* mailQuery = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PINFO_MAILS);
|
||||
mailQuery->setUInt32(0, GUID_LOPART(targetGuid));
|
||||
PreparedQueryResult mailInfoResult = CharacterDatabase.Query(mailQuery);
|
||||
if (mailInfoResult)
|
||||
{
|
||||
Field* fields = result6->Fetch();
|
||||
Field* fields = mailInfoResult->Fetch();
|
||||
uint32 readmail = uint32(fields[0].GetDouble());
|
||||
uint32 totalmail = uint32(fields[1].GetUInt64());
|
||||
|
||||
|
||||
Reference in New Issue
Block a user