Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
cs_achievement.cpp
Go to the documentation of this file.
1
/*
2
* This file is part of Project SkyFire https://www.projectskyfire.org.
3
* See LICENSE.md file for Copyright information
4
*/
5
6
/* ScriptData
7
Name: achievement_commandscript
8
%Complete: 100
9
Comment: All achievement related commands
10
Category: commandscripts
11
EndScriptData */
12
13
#include "
AchievementMgr.h
"
14
#include "
Chat.h
"
15
#include "
Guild.h
"
16
#include "
Language.h
"
17
#include "
Player.h
"
18
#include "
ScriptMgr.h
"
19
20
class
achievement_commandscript
:
public
CommandScript
21
{
22
public
:
23
achievement_commandscript
() :
CommandScript
(
"achievement_commandscript"
) { }
24
25
std::vector<ChatCommand>
GetCommands
() const
OVERRIDE
26
{
27
static
std::vector<ChatCommand> achievementCommandTable =
28
{
29
{
"add"
,
rbac::RBAC_PERM_COMMAND_ACHIEVEMENT_ADD
,
false
, &
HandleAchievementAddCommand
,
""
, },
30
};
31
static
std::vector<ChatCommand> commandTable =
32
{
33
{
"achievement"
,
rbac::RBAC_PERM_COMMAND_ACHIEVEMENT
,
false
, NULL,
""
, achievementCommandTable },
34
};
35
return
commandTable;
36
}
37
38
static
bool
HandleAchievementAddCommand
(
ChatHandler
* handler,
char
const
* args)
39
{
40
if
(!*args)
41
return
false
;
42
43
uint32
achievementId = atoi((
char
*)args);
44
if
(!achievementId)
45
{
46
if
(
char
*
id
= handler->
extractKeyFromLink
((
char
*)args,
"Hachievement"
))
47
achievementId = atoi(
id
);
48
if
(!achievementId)
49
return
false
;
50
}
51
52
Player
* target = handler->
getSelectedPlayer
();
53
if
(!target)
54
{
55
handler->
SendSysMessage
(
LANG_NO_CHAR_SELECTED
);
56
handler->
SetSentErrorMessage
(
true
);
57
return
false
;
58
}
59
60
if
(
AchievementEntry
const
* achievementEntry =
sAchievementMgr
->GetAchievement(achievementId))
61
{
62
if
(achievementEntry->flags &
ACHIEVEMENT_FLAG_GUILD
)
63
{
64
if
(
Guild
* guild = target->
GetGuild
())
65
guild->GetAchievementMgr().CompletedAchievement(achievementEntry, target);
66
}
67
else
68
target->
CompletedAchievement
(achievementEntry);
69
}
70
71
return
true
;
72
}
73
};
74
75
void
AddSC_achievement_commandscript
()
76
{
77
new
achievement_commandscript
();
78
}
AchievementMgr.h
sAchievementMgr
#define sAchievementMgr
Definition
AchievementMgr.h:413
Chat.h
ACHIEVEMENT_FLAG_GUILD
@ ACHIEVEMENT_FLAG_GUILD
Definition
DBCEnums.h:67
uint32
std::uint32_t uint32
Definition
Define.h:77
OVERRIDE
#define OVERRIDE
Definition
Define.h:60
Guild.h
Language.h
LANG_NO_CHAR_SELECTED
@ LANG_NO_CHAR_SELECTED
Definition
Language.h:118
Player.h
ScriptMgr.h
ChatHandler
Definition
Chat.h:41
ChatHandler::getSelectedPlayer
Player * getSelectedPlayer()
Definition
Chat.cpp:829
ChatHandler::extractKeyFromLink
char * extractKeyFromLink(char *text, char const *linkType, char **something1=NULL)
Definition
Chat.cpp:873
ChatHandler::SetSentErrorMessage
void SetSentErrorMessage(bool val)
Definition
Chat.h:114
ChatHandler::SendSysMessage
virtual void SendSysMessage(const char *str)
Definition
Chat.cpp:153
CommandScript::CommandScript
CommandScript(const char *name)
Definition
ScriptMgr.cpp:1466
Guild
Definition
Guild.h:324
Player
Definition
Player.h:1289
Player::CompletedAchievement
void CompletedAchievement(AchievementEntry const *entry)
Definition
Player.cpp:21048
Player::GetGuild
Guild * GetGuild()
Definition
Player.cpp:22662
achievement_commandscript
Definition
cs_achievement.cpp:21
achievement_commandscript::GetCommands
std::vector< ChatCommand > GetCommands() const OVERRIDE
Definition
cs_achievement.cpp:25
achievement_commandscript::achievement_commandscript
achievement_commandscript()
Definition
cs_achievement.cpp:23
achievement_commandscript::HandleAchievementAddCommand
static bool HandleAchievementAddCommand(ChatHandler *handler, char const *args)
Definition
cs_achievement.cpp:38
AddSC_achievement_commandscript
void AddSC_achievement_commandscript()
Definition
cs_achievement.cpp:75
rbac::RBAC_PERM_COMMAND_ACHIEVEMENT
@ RBAC_PERM_COMMAND_ACHIEVEMENT
Definition
RBAC.h:124
rbac::RBAC_PERM_COMMAND_ACHIEVEMENT_ADD
@ RBAC_PERM_COMMAND_ACHIEVEMENT_ADD
Definition
RBAC.h:125
AchievementEntry
Definition
DBCStructure.h:30
src
server
scripts
Commands
cs_achievement.cpp
Generated on
for Project SkyFire Core by
1.17.0