aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDDuarte <dnpd.dd@gmail.com>2014-11-10 23:10:02 +0000
committerDDuarte <dnpd.dd@gmail.com>2014-11-10 23:10:02 +0000
commit9c55d9fdebb821ac102a2b7e7a2a1ef0b92ac26c (patch)
treef01891ad20342ad1509e21430f419359b70176dc /src
parenta74b7228b8c28f0cc6762816ea33be2ec8a2266e (diff)
Core/Commands: implement .pvpstats command
Shows number of battleground victories in the last 7 days Closes #13460 Conflicts: sql/base/auth_database.sql sql/updates/auth/2014_11_10_00_auth.sql src/server/game/Accounts/RBAC.h (cherry picked from commit fd0b96178174e624510a10f5bc27b60af406d901)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Accounts/RBAC.h1
-rw-r--r--src/server/game/Miscellaneous/Language.h4
-rw-r--r--src/server/scripts/Commands/cs_misc.cpp30
-rw-r--r--src/server/shared/Database/Implementation/CharacterDatabase.cpp1
-rw-r--r--src/server/shared/Database/Implementation/CharacterDatabase.h1
5 files changed, 36 insertions, 1 deletions
diff --git a/src/server/game/Accounts/RBAC.h b/src/server/game/Accounts/RBAC.h
index 17c34a9b42a..d398efaeef2 100644
--- a/src/server/game/Accounts/RBAC.h
+++ b/src/server/game/Accounts/RBAC.h
@@ -700,6 +700,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 a941dbd31ed..399d2229462 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 4c2b7d40a89..0ebf05f74ad 100644
--- a/src/server/scripts/Commands/cs_misc.cpp
+++ b/src/server/scripts/Commands/cs_misc.cpp
@@ -78,6 +78,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 },
@@ -100,6 +101,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 51b5bf1d30b..90b662cea5c 100644
--- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp
+++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
@@ -639,6 +639,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 329f2a5c23d..6cb239ed85b 100644
--- a/src/server/shared/Database/Implementation/CharacterDatabase.h
+++ b/src/server/shared/Database/Implementation/CharacterDatabase.h
@@ -560,6 +560,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,