Core/Commands: Implement command for adding (completing) achievements

--HG--
branch : trunk
This commit is contained in:
Shocker
2010-09-21 03:51:14 +03:00
parent 7b3d573a16
commit 5ffaf0d84b
9 changed files with 50 additions and 6 deletions
+7
View File
@@ -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 },
+3
View File
@@ -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);
+28
View File
@@ -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)