diff options
| author | ShinDarth <borzifrancesco@gmail.com> | 2014-11-10 22:29:08 +0000 |
|---|---|---|
| committer | DDuarte <dnpd.dd@gmail.com> | 2014-11-10 22:30:20 +0000 |
| commit | fd0b96178174e624510a10f5bc27b60af406d901 (patch) | |
| tree | c05a8f89978a55acc6f1fe442cfe16ff2dee0b4a /src | |
| parent | 280c532938e59cbf42723f3ae4aa522f49b7fb5d (diff) | |
Core/Commands: implement .pvpstats command
Shows number of battleground victories in the last 7 days
Closes #13460
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Accounts/RBAC.h | 12 | ||||
| -rw-r--r-- | src/server/game/Miscellaneous/Language.h | 4 | ||||
| -rw-r--r-- | src/server/scripts/Commands/cs_misc.cpp | 30 | ||||
| -rw-r--r-- | src/server/shared/Database/Implementation/CharacterDatabase.cpp | 1 | ||||
| -rw-r--r-- | src/server/shared/Database/Implementation/CharacterDatabase.h | 1 |
5 files changed, 37 insertions, 11 deletions
diff --git a/src/server/game/Accounts/RBAC.h b/src/server/game/Accounts/RBAC.h index efbbf61c2ff..f76898d6321 100644 --- a/src/server/game/Accounts/RBAC.h +++ b/src/server/game/Accounts/RBAC.h @@ -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 diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h index 33abd7ae288..746084e038c 100644 --- a/src/server/game/Miscellaneous/Language.h +++ b/src/server/game/Miscellaneous/Language.h @@ -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, diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index ac7bb5f8a28..a853a02bb11 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -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) diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.cpp b/src/server/shared/Database/Implementation/CharacterDatabase.cpp index ac9e17fb872..874e5eed1d9 100644 --- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp +++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp @@ -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); diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.h b/src/server/shared/Database/Implementation/CharacterDatabase.h index b04a484b248..989c02ab344 100644 --- a/src/server/shared/Database/Implementation/CharacterDatabase.h +++ b/src/server/shared/Database/Implementation/CharacterDatabase.h @@ -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, |
