mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-02-06 12:27:48 +00:00
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_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_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_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
|
// 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_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
|
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_INS_GUILD_MEMBER,
|
||||||
CHAR_DEL_GUILD_MEMBER,
|
CHAR_DEL_GUILD_MEMBER,
|
||||||
CHAR_DEL_GUILD_MEMBERS,
|
CHAR_DEL_GUILD_MEMBERS,
|
||||||
|
CHAR_SEL_GUILD_MEMBER_EXTENDED,
|
||||||
CHAR_INS_GUILD_RANK,
|
CHAR_INS_GUILD_RANK,
|
||||||
CHAR_DEL_GUILD_RANKS,
|
CHAR_DEL_GUILD_RANKS,
|
||||||
CHAR_DEL_GUILD_LOWEST_RANK,
|
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_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_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);
|
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_DEL_DISABLES,
|
||||||
WORLD_UPD_CREATURE_ZONE_AREA_DATA,
|
WORLD_UPD_CREATURE_ZONE_AREA_DATA,
|
||||||
WORLD_UPD_GAMEOBJECT_ZONE_AREA_DATA,
|
WORLD_UPD_GAMEOBJECT_ZONE_AREA_DATA,
|
||||||
|
WORLD_SEL_REQ_XP,
|
||||||
|
|
||||||
MAX_WORLDDATABASE_STATEMENTS
|
MAX_WORLDDATABASE_STATEMENTS
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1755,6 +1755,7 @@ public:
|
|||||||
|
|
||||||
// Account data print variables
|
// Account data print variables
|
||||||
std::string userName = handler->GetTrinityString(LANG_ERROR);
|
std::string userName = handler->GetTrinityString(LANG_ERROR);
|
||||||
|
uint32 lowguid = GUID_LOPART(targetGuid);
|
||||||
uint32 accId = 0;
|
uint32 accId = 0;
|
||||||
std::string eMail = handler->GetTrinityString(LANG_ERROR);
|
std::string eMail = handler->GetTrinityString(LANG_ERROR);
|
||||||
std::string regMail = handler->GetTrinityString(LANG_ERROR);
|
std::string regMail = handler->GetTrinityString(LANG_ERROR);
|
||||||
@@ -1835,12 +1836,12 @@ public:
|
|||||||
// Query informations from the DB
|
// Query informations from the DB
|
||||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_PINFO);
|
stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_PINFO);
|
||||||
stmt->setUInt32(0, GUID_LOPART(targetGuid));
|
stmt->setUInt32(0, GUID_LOPART(targetGuid));
|
||||||
PreparedQueryResult result = CharacterDatabase.Query(stmt);
|
PreparedQueryResult charInfoResult = CharacterDatabase.Query(stmt);
|
||||||
|
|
||||||
if (!result)
|
if (!charInfoResult)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
Field* fields = result->Fetch();
|
Field* fields = charInfoResult->Fetch();
|
||||||
totalPlayerTime = fields[0].GetUInt32();
|
totalPlayerTime = fields[0].GetUInt32();
|
||||||
level = fields[1].GetUInt8();
|
level = fields[1].GetUInt8();
|
||||||
money = fields[2].GetUInt32();
|
money = fields[2].GetUInt32();
|
||||||
@@ -1863,11 +1864,11 @@ public:
|
|||||||
stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_PINFO);
|
stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_PINFO);
|
||||||
stmt->setInt32(0, int32(realmID));
|
stmt->setInt32(0, int32(realmID));
|
||||||
stmt->setUInt32(1, accId);
|
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();
|
userName = fields[0].GetString();
|
||||||
security = fields[1].GetUInt8();
|
security = fields[1].GetUInt8();
|
||||||
|
|
||||||
@@ -1923,25 +1924,64 @@ public:
|
|||||||
std::string nameLink = handler->playerLink(targetName);
|
std::string nameLink = handler->playerLink(targetName);
|
||||||
|
|
||||||
// Returns banType, banTime, bannedBy, banreason
|
// Returns banType, banTime, bannedBy, banreason
|
||||||
PreparedStatement* stmt2 = LoginDatabase.GetPreparedStatement(LOGIN_SEL_PINFO_BANS);
|
PreparedStatement* banQuery = LoginDatabase.GetPreparedStatement(LOGIN_SEL_PINFO_BANS);
|
||||||
stmt2->setUInt32(0, accId);
|
banQuery->setUInt32(0, accId);
|
||||||
PreparedQueryResult result2 = LoginDatabase.Query(stmt2);
|
PreparedQueryResult accBannedResult = LoginDatabase.Query(banQuery);
|
||||||
if (!result2)
|
if (!accBannedResult)
|
||||||
{
|
{
|
||||||
banType = handler->GetTrinityString(LANG_CHARACTER);
|
banType = handler->GetTrinityString(LANG_CHARACTER);
|
||||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PINFO_BANS);
|
stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PINFO_BANS);
|
||||||
stmt->setUInt32(0, GUID_LOPART(targetGuid));
|
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());
|
banTime = int64(fields[1].GetUInt64() ? 0 : fields[0].GetUInt32());
|
||||||
bannedBy = fields[2].GetString();
|
bannedBy = fields[2].GetString();
|
||||||
banReason = fields[3].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
|
// Initiate output
|
||||||
// Output I. LANG_PINFO_PLAYER
|
// Output I. LANG_PINFO_PLAYER
|
||||||
handler->PSendSysMessage(LANG_PINFO_PLAYER, target ? "" : handler->GetTrinityString(LANG_OFFLINE), nameLink.c_str(), GUID_LOPART(targetGuid));
|
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.
|
// 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` = ?"
|
// 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);
|
PreparedStatement* mailQuery = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PINFO_MAILS);
|
||||||
stmt4->setUInt32(0, GUID_LOPART(targetGuid));
|
mailQuery->setUInt32(0, GUID_LOPART(targetGuid));
|
||||||
PreparedQueryResult result6 = CharacterDatabase.Query(stmt4);
|
PreparedQueryResult mailInfoResult = CharacterDatabase.Query(mailQuery);
|
||||||
if (result6)
|
if (mailInfoResult)
|
||||||
{
|
{
|
||||||
Field* fields = result6->Fetch();
|
Field* fields = mailInfoResult->Fetch();
|
||||||
uint32 readmail = uint32(fields[0].GetDouble());
|
uint32 readmail = uint32(fields[0].GetDouble());
|
||||||
uint32 totalmail = uint32(fields[1].GetUInt64());
|
uint32 totalmail = uint32(fields[1].GetUInt64());
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user