mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-31 22:27:34 +01:00
Core/Commands: implement .pvpstats command
Shows number of battleground victories in the last 7 days Closes #13460
This commit is contained in:
File diff suppressed because one or more lines are too long
7
sql/updates/auth/2014_11_10_00_auth.sql
Normal file
7
sql/updates/auth/2014_11_10_00_auth.sql
Normal file
@@ -0,0 +1,7 @@
|
||||
DELETE FROM rbac_permissions WHERE id = 797;
|
||||
INSERT INTO rbac_permissions (`id`, `name`) VALUES
|
||||
(797, 'Command: pvpstats');
|
||||
|
||||
DELETE FROM rbac_linked_permissions WHERE `linkedId` = 797;
|
||||
INSERT INTO rbac_linked_permissions (`id`, `linkedId`) VALUES
|
||||
(199, 797);
|
||||
8
sql/updates/world/2014_11_10_04_world.sql
Normal file
8
sql/updates/world/2014_11_10_04_world.sql
Normal file
@@ -0,0 +1,8 @@
|
||||
DELETE FROM `trinity_string` WHERE entry IN (80, 81);
|
||||
INSERT INTO `trinity_string` (`entry`, `content_default`) VALUES
|
||||
(80, 'BattleGround victories in the last 7 days\nAlliance: %d\nHorde: %d'),
|
||||
(81, 'BattleGround scores storing is disabled!');
|
||||
|
||||
DELETE FROM `command` WHERE `name`='pvpstats';
|
||||
INSERT INTO `command` (`name`, `permission`, `help`) VALUES
|
||||
('pvpstats', 797, 'Shows number of battleground victories in the last 7 days');
|
||||
@@ -110,16 +110,7 @@ enum RBACPermissions
|
||||
RBAC_PERM_COMMAND_RBAC_ACC_PERM_DENY = 204,
|
||||
RBAC_PERM_COMMAND_RBAC_ACC_PERM_REVOKE = 205,
|
||||
RBAC_PERM_COMMAND_RBAC_LIST = 206,
|
||||
// 207 - reuse
|
||||
// 208 - reuse
|
||||
// 209 - reuse
|
||||
// 210 - reuse
|
||||
// 211 - reuse
|
||||
// 212 - reuse
|
||||
// 213 - reuse
|
||||
// 214 - reuse
|
||||
// 215 - reuse
|
||||
// 216 - reuse
|
||||
// 207 - 216 do NOT use
|
||||
RBAC_PERM_COMMAND_ACCOUNT = 217,
|
||||
RBAC_PERM_COMMAND_ACCOUNT_ADDON = 218,
|
||||
RBAC_PERM_COMMAND_ACCOUNT_CREATE = 219,
|
||||
@@ -700,6 +691,7 @@ enum RBACPermissions
|
||||
RBAC_PERM_COMMAND_GUILD_INFO = 794,
|
||||
RBAC_PERM_COMMAND_INSTANCE_SET_BOSS_STATE = 795,
|
||||
RBAC_PERM_COMMAND_INSTANCE_GET_BOSS_STATE = 796,
|
||||
RBAC_PERM_COMMAND_PVPSTATS = 797,
|
||||
|
||||
// custom permissions 1000+
|
||||
RBAC_PERM_MAX
|
||||
|
||||
@@ -110,7 +110,9 @@ enum TrinityStrings
|
||||
LANG_RBAC_PERM_DENIED = 77,
|
||||
LANG_RBAC_PERM_REVOKED = 78,
|
||||
LANG_RBAC_PERM_REVOKED_NOT_IN_LIST = 79,
|
||||
// Free 80 - 95
|
||||
LANG_PVPSTATS = 80,
|
||||
LANG_PVPSTATS_DISABLED = 81,
|
||||
// Free 82 - 95
|
||||
|
||||
|
||||
LANG_GUILD_RENAME_ALREADY_EXISTS = 96,
|
||||
|
||||
@@ -79,6 +79,7 @@ public:
|
||||
{ "pinfo", rbac::RBAC_PERM_COMMAND_PINFO, true, &HandlePInfoCommand, "", NULL },
|
||||
{ "playall", rbac::RBAC_PERM_COMMAND_PLAYALL, false, &HandlePlayAllCommand, "", NULL },
|
||||
{ "possess", rbac::RBAC_PERM_COMMAND_POSSESS, false, &HandlePossessCommand, "", NULL },
|
||||
{ "pvpstats", rbac::RBAC_PERM_COMMAND_PVPSTATS, true, &HandlePvPstatsCommand, "", NULL },
|
||||
{ "recall", rbac::RBAC_PERM_COMMAND_RECALL, false, &HandleRecallCommand, "", NULL },
|
||||
{ "repairitems", rbac::RBAC_PERM_COMMAND_REPAIRITEMS, true, &HandleRepairitemsCommand, "", NULL },
|
||||
{ "respawn", rbac::RBAC_PERM_COMMAND_RESPAWN, false, &HandleRespawnCommand, "", NULL },
|
||||
@@ -101,6 +102,35 @@ public:
|
||||
return commandTable;
|
||||
}
|
||||
|
||||
static bool HandlePvPstatsCommand(ChatHandler * handler, char const* /*args*/)
|
||||
{
|
||||
if (sWorld->getBoolConfig(CONFIG_BATTLEGROUND_STORE_STATISTICS_ENABLE))
|
||||
{
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PVPSTATS_FACTIONS_OVERALL);
|
||||
PreparedQueryResult result = CharacterDatabase.Query(stmt);
|
||||
|
||||
if (result)
|
||||
{
|
||||
Field* fields = result->Fetch();
|
||||
uint32 horde_victories = fields[1].GetUInt32();
|
||||
|
||||
if (!(result->NextRow()))
|
||||
return false;
|
||||
|
||||
fields = result->Fetch();
|
||||
uint32 alliance_victories = fields[1].GetUInt32();
|
||||
|
||||
handler->PSendSysMessage(LANG_PVPSTATS, alliance_victories, horde_victories);
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
else
|
||||
handler->PSendSysMessage(LANG_PVPSTATS_DISABLED);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool HandleDevCommand(ChatHandler* handler, char const* args)
|
||||
{
|
||||
if (!*args)
|
||||
|
||||
@@ -601,6 +601,7 @@ void CharacterDatabaseConnection::DoPrepareStatements()
|
||||
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_PLAYER, "INSERT INTO pvpstats_players (battleground_id, character_guid, score_killing_blows, score_deaths, score_honorable_kills, score_bonus_honor, score_damage_done, score_healing_done, attr_1, attr_2, attr_3, attr_4, attr_5) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_SEL_PVPSTATS_FACTIONS_OVERALL, "SELECT winner_faction, COUNT(*) AS count FROM pvpstats_battlegrounds WHERE DATEDIFF(NOW(), date) < 7 GROUP BY winner_faction ORDER BY winner_faction ASC", CONNECTION_SYNCH);
|
||||
|
||||
// QuestTracker
|
||||
PrepareStatement(CHAR_INS_QUEST_TRACK, "INSERT INTO quest_tracker (id, character_guid, quest_accept_time, core_hash, core_revision) VALUES (?, ?, NOW(), ?, ?)", CONNECTION_ASYNC);
|
||||
|
||||
@@ -534,6 +534,7 @@ enum CharacterDatabaseStatements
|
||||
CHAR_SEL_PVPSTATS_MAXID,
|
||||
CHAR_INS_PVPSTATS_BATTLEGROUND,
|
||||
CHAR_INS_PVPSTATS_PLAYER,
|
||||
CHAR_SEL_PVPSTATS_FACTIONS_OVERALL,
|
||||
|
||||
CHAR_INS_QUEST_TRACK,
|
||||
CHAR_UPD_QUEST_TRACK_GM_COMPLETE,
|
||||
|
||||
Reference in New Issue
Block a user