aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Chat
diff options
context:
space:
mode:
authorShocker <none@none>2010-09-21 03:51:14 +0300
committerShocker <none@none>2010-09-21 03:51:14 +0300
commit5ffaf0d84bb5e2f73f60321c1754d879f5297f0f (patch)
treea618492389348261d9c1f3c4579cc98ee8b183d0 /src/server/game/Chat
parent7b3d573a16eec4010ffee1e40fc93ddd0cbd46ab (diff)
Core/Commands: Implement command for adding (completing) achievements
--HG-- branch : trunk
Diffstat (limited to 'src/server/game/Chat')
-rw-r--r--src/server/game/Chat/Chat.cpp7
-rw-r--r--src/server/game/Chat/Chat.h3
-rw-r--r--src/server/game/Chat/Commands/Level3.cpp28
3 files changed, 38 insertions, 0 deletions
diff --git a/src/server/game/Chat/Chat.cpp b/src/server/game/Chat/Chat.cpp
index 5714fbeb25f..63c20aa8a06 100644
--- a/src/server/game/Chat/Chat.cpp
+++ b/src/server/game/Chat/Chat.cpp
@@ -692,9 +692,16 @@ ChatCommand * ChatHandler::getCommandTable()
{ NULL, 0, false, NULL, "", NULL }
};
+ static ChatCommand achievementCommandTable[] =
+ {
+ { "add", SEC_ADMINISTRATOR, false, &ChatHandler::HandleAchievementAddCommand, "", NULL},
+ { NULL, 0, false, NULL, "", NULL }
+ };
+
static ChatCommand commandTable[] =
{
{ "account", SEC_PLAYER, true, NULL, "", accountCommandTable },
+ { "achievement", SEC_ADMINISTRATOR, false, NULL, "", achievementCommandTable},
{ "gm", SEC_MODERATOR, true, NULL, "", gmCommandTable },
{ "npc", SEC_MODERATOR, false, NULL, "", npcCommandTable },
{ "go", SEC_MODERATOR, false, NULL, "", goCommandTable },
diff --git a/src/server/game/Chat/Chat.h b/src/server/game/Chat/Chat.h
index f0478e3c890..75a28c1a2c0 100644
--- a/src/server/game/Chat/Chat.h
+++ b/src/server/game/Chat/Chat.h
@@ -568,6 +568,9 @@ class ChatHandler
bool HandleChangeWeather(const char* args);
bool HandleKickPlayerCommand(const char * args);
+ // Achievement commands
+ bool HandleAchievementAddCommand(const char* args);
+
// GM ticket command handlers
bool HandleGMTicketListCommand(const char* args);
bool HandleGMTicketListOnlineCommand(const char* args);
diff --git a/src/server/game/Chat/Commands/Level3.cpp b/src/server/game/Chat/Commands/Level3.cpp
index 8235ffc8fda..1e0c515635a 100644
--- a/src/server/game/Chat/Commands/Level3.cpp
+++ b/src/server/game/Chat/Commands/Level3.cpp
@@ -1408,6 +1408,34 @@ bool ChatHandler::HandleSetSkillCommand(const char *args)
return true;
}
+bool ChatHandler::HandleAchievementAddCommand(const char *args)
+{
+ if (!*args)
+ return false;
+
+ uint32 achievementId = atoi((char*)args);
+ if (!achievementId)
+ {
+ if (char* cId = extractKeyFromLink((char*)args, "Hachievement"))
+ achievementId = atoi(cId);
+ if (!achievementId)
+ return false;
+ }
+
+ Player* target = getSelectedPlayer();
+ if (!target)
+ {
+ SendSysMessage(LANG_NO_CHAR_SELECTED);
+ SetSentErrorMessage(true);
+ return false;
+ }
+
+ if (AchievementEntry const* pAE = GetAchievementStore()->LookupEntry(achievementId))
+ target->CompletedAchievement(pAE, true);
+
+ return true;
+}
+
bool ChatHandler::HandleUnLearnCommand(const char *args)
{
if (!*args)