diff options
| author | Shocker <none@none> | 2010-09-21 03:51:14 +0300 |
|---|---|---|
| committer | Shocker <none@none> | 2010-09-21 03:51:14 +0300 |
| commit | 5ffaf0d84bb5e2f73f60321c1754d879f5297f0f (patch) | |
| tree | a618492389348261d9c1f3c4579cc98ee8b183d0 /src/server/game/Chat | |
| parent | 7b3d573a16eec4010ffee1e40fc93ddd0cbd46ab (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.cpp | 7 | ||||
| -rw-r--r-- | src/server/game/Chat/Chat.h | 3 | ||||
| -rw-r--r-- | src/server/game/Chat/Commands/Level3.cpp | 28 |
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) |
