mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-02-06 04:23:47 +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
|
||||||
@@ -547,7 +550,7 @@ void CharacterDatabaseConnection::DoPrepareStatements()
|
|||||||
PrepareStatement(CHAR_DEL_CHAR_PET_BY_ID, "DELETE FROM character_pet WHERE id = ?", CONNECTION_ASYNC);
|
PrepareStatement(CHAR_DEL_CHAR_PET_BY_ID, "DELETE FROM character_pet WHERE id = ?", CONNECTION_ASYNC);
|
||||||
PrepareStatement(CHAR_DEL_CHAR_PET_BY_SLOT, "DELETE FROM character_pet WHERE owner = ? AND (slot = ? OR slot > ?)", CONNECTION_ASYNC);
|
PrepareStatement(CHAR_DEL_CHAR_PET_BY_SLOT, "DELETE FROM character_pet WHERE owner = ? AND (slot = ? OR slot > ?)", CONNECTION_ASYNC);
|
||||||
PrepareStatement(CHAR_REP_CHAR_PET, "REPLACE INTO character_pet (id, entry, owner, modelid, CreatedBySpell, PetType, level, exp, Reactstate, name, renamed, slot, curhealth, curmana, curhappiness, savetime, abdata) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC);
|
PrepareStatement(CHAR_REP_CHAR_PET, "REPLACE INTO character_pet (id, entry, owner, modelid, CreatedBySpell, PetType, level, exp, Reactstate, name, renamed, slot, curhealth, curmana, curhappiness, savetime, abdata) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC);
|
||||||
|
|
||||||
// PvPstats
|
// PvPstats
|
||||||
PrepareStatement(CHAR_SEL_PVPSTATS_MAXID, "SELECT MAX(id) FROM pvpstats_battlegrounds", CONNECTION_SYNCH);
|
PrepareStatement(CHAR_SEL_PVPSTATS_MAXID, "SELECT MAX(id) FROM pvpstats_battlegrounds", CONNECTION_SYNCH);
|
||||||
PrepareStatement(CHAR_INS_PVPSTATS_BATTLEGROUND, "INSERT INTO pvpstats_battlegrounds (id, winner_faction, bracket_id, type, date) VALUES (?, ?, ?, ?, NOW())", CONNECTION_ASYNC);
|
PrepareStatement(CHAR_INS_PVPSTATS_BATTLEGROUND, "INSERT INTO pvpstats_battlegrounds (id, winner_faction, bracket_id, type, date) VALUES (?, ?, ?, ?, NOW())", CONNECTION_ASYNC);
|
||||||
|
|||||||
@@ -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,
|
||||||
@@ -486,9 +487,9 @@ enum CharacterDatabaseStatements
|
|||||||
CHAR_INS_ITEMCONTAINER_SINGLE_ITEM,
|
CHAR_INS_ITEMCONTAINER_SINGLE_ITEM,
|
||||||
CHAR_DEL_ITEMCONTAINER_CONTAINER,
|
CHAR_DEL_ITEMCONTAINER_CONTAINER,
|
||||||
|
|
||||||
CHAR_SEL_PVPSTATS_MAXID,
|
CHAR_SEL_PVPSTATS_MAXID,
|
||||||
CHAR_INS_PVPSTATS_BATTLEGROUND,
|
CHAR_INS_PVPSTATS_BATTLEGROUND,
|
||||||
CHAR_INS_PVPSTATS_PLAYER,
|
CHAR_INS_PVPSTATS_PLAYER,
|
||||||
CHAR_SEL_PVPSTATS_FACTIONS_OVERALL,
|
CHAR_SEL_PVPSTATS_FACTIONS_OVERALL,
|
||||||
|
|
||||||
CHAR_INS_DESERTER_TRACK,
|
CHAR_INS_DESERTER_TRACK,
|
||||||
|
|||||||
@@ -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
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1742,7 +1742,7 @@ public:
|
|||||||
uint64 targetGuid;
|
uint64 targetGuid;
|
||||||
std::string targetName;
|
std::string targetName;
|
||||||
PreparedStatement* stmt = nullptr;
|
PreparedStatement* stmt = nullptr;
|
||||||
|
|
||||||
uint32 parseGUID = MAKE_NEW_GUID(atol((char*)args), 0, HIGHGUID_PLAYER);
|
uint32 parseGUID = MAKE_NEW_GUID(atol((char*)args), 0, HIGHGUID_PLAYER);
|
||||||
|
|
||||||
if (sObjectMgr->GetPlayerNameByGUID(parseGUID, targetName))
|
if (sObjectMgr->GetPlayerNameByGUID(parseGUID, targetName))
|
||||||
@@ -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);
|
||||||
@@ -1788,14 +1789,14 @@ public:
|
|||||||
uint32 money = 0;
|
uint32 money = 0;
|
||||||
uint32 xp = 0;
|
uint32 xp = 0;
|
||||||
uint32 xptotal = 0;
|
uint32 xptotal = 0;
|
||||||
|
|
||||||
// Position data print
|
// Position data print
|
||||||
uint32 mapId;
|
uint32 mapId;
|
||||||
uint32 areaId;
|
uint32 areaId;
|
||||||
uint32 phase = 0;
|
uint32 phase = 0;
|
||||||
char const* areaName = nullptr;
|
char const* areaName = nullptr;
|
||||||
char const* zoneName = nullptr;
|
char const* zoneName = nullptr;
|
||||||
|
|
||||||
// Guild data print variables defined so that they exist, but are not necessarily used
|
// Guild data print variables defined so that they exist, but are not necessarily used
|
||||||
uint32 guildId = 0;
|
uint32 guildId = 0;
|
||||||
uint8 guildRankId = 0;
|
uint8 guildRankId = 0;
|
||||||
@@ -1803,7 +1804,7 @@ public:
|
|||||||
std::string guildRank;
|
std::string guildRank;
|
||||||
std::string note;
|
std::string note;
|
||||||
std::string officeNote;
|
std::string officeNote;
|
||||||
|
|
||||||
// get additional information from Player object
|
// get additional information from Player object
|
||||||
if (target)
|
if (target)
|
||||||
{
|
{
|
||||||
@@ -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();
|
||||||
@@ -1858,16 +1859,16 @@ public:
|
|||||||
else
|
else
|
||||||
alive = handler->GetTrinityString(LANG_YES);
|
alive = handler->GetTrinityString(LANG_YES);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Query the prepared statement for login data
|
// Query the prepared statement for login data
|
||||||
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();
|
||||||
|
|
||||||
@@ -1885,7 +1886,7 @@ public:
|
|||||||
lastIp.append(location->CountryName);
|
lastIp.append(location->CountryName);
|
||||||
lastIp.append(")");
|
lastIp.append(")");
|
||||||
} **/
|
} **/
|
||||||
|
|
||||||
uint32 ip = inet_addr(lastIp.c_str());
|
uint32 ip = inet_addr(lastIp.c_str());
|
||||||
#if TRINITY_ENDIAN == BIGENDIAN
|
#if TRINITY_ENDIAN == BIGENDIAN
|
||||||
EndianConvertReverse(ip);
|
EndianConvertReverse(ip);
|
||||||
@@ -1918,42 +1919,81 @@ public:
|
|||||||
locked = fields[10].GetUInt8();
|
locked = fields[10].GetUInt8();
|
||||||
OS = fields[11].GetString();
|
OS = fields[11].GetString();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Creates a chat link to the character. Returns nameLink
|
// Creates a chat link to the character. Returns nameLink
|
||||||
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));
|
||||||
|
|
||||||
// Output II. LANG_PINFO_GM_ACTIVE if character is gamemaster
|
// Output II. LANG_PINFO_GM_ACTIVE if character is gamemaster
|
||||||
if (target && target->IsGameMaster())
|
if (target && target->IsGameMaster())
|
||||||
handler->PSendSysMessage(LANG_PINFO_GM_ACTIVE);
|
handler->PSendSysMessage(LANG_PINFO_GM_ACTIVE);
|
||||||
|
|
||||||
// Output III. LANG_PINFO_BANNED if ban exists and is applied
|
// Output III. LANG_PINFO_BANNED if ban exists and is applied
|
||||||
if (banTime >= 0)
|
if (banTime >= 0)
|
||||||
handler->PSendSysMessage(LANG_PINFO_BANNED, banType.c_str(), banReason.c_str(), banTime > 0 ? secsToTimeString(banTime - time(nullptr), true).c_str() : handler->GetTrinityString(LANG_PERMANENTLY), bannedBy.c_str());
|
handler->PSendSysMessage(LANG_PINFO_BANNED, banType.c_str(), banReason.c_str(), banTime > 0 ? secsToTimeString(banTime - time(nullptr), true).c_str() : handler->GetTrinityString(LANG_PERMANENTLY), bannedBy.c_str());
|
||||||
|
|
||||||
// Output IV. LANG_PINFO_MUTED if mute is applied
|
// Output IV. LANG_PINFO_MUTED if mute is applied
|
||||||
if (muteTime > 0)
|
if (muteTime > 0)
|
||||||
handler->PSendSysMessage(LANG_PINFO_MUTED, muteReason.c_str(), secsToTimeString(muteTime - time(nullptr), true).c_str(), muteBy.c_str());
|
handler->PSendSysMessage(LANG_PINFO_MUTED, muteReason.c_str(), secsToTimeString(muteTime - time(nullptr), true).c_str(), muteBy.c_str());
|
||||||
@@ -2047,8 +2087,8 @@ public:
|
|||||||
classStr = "Druid";
|
classStr = "Druid";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
handler->PSendSysMessage(LANG_PINFO_CHR_RACE, (gender == 0 ? handler->GetTrinityString(LANG_CHARACTER_GENDER_MALE) : handler->GetTrinityString(LANG_CHARACTER_GENDER_FEMALE)), raceStr.c_str(), classStr.c_str());
|
handler->PSendSysMessage(LANG_PINFO_CHR_RACE, (gender == 0 ? handler->GetTrinityString(LANG_CHARACTER_GENDER_MALE) : handler->GetTrinityString(LANG_CHARACTER_GENDER_FEMALE)), raceStr.c_str(), classStr.c_str());
|
||||||
|
|
||||||
// Output XII. LANG_PINFO_CHR_ALIVE
|
// Output XII. LANG_PINFO_CHR_ALIVE
|
||||||
@@ -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());
|
||||||
|
|
||||||
@@ -3025,7 +3065,7 @@ public:
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
handler->SendSysMessage(LANG_COMMAND_FREEZE_WRONG);
|
handler->SendSysMessage(LANG_COMMAND_FREEZE_WRONG);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user