AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
achievement_commandscript Class Reference
Inheritance diagram for achievement_commandscript:
CommandScript ScriptObject

Public Member Functions

 achievement_commandscript ()
 
ChatCommandTable GetCommands () const override
 
virtual std::vector< Acore::ChatCommands::ChatCommandBuilderGetCommands () const =0
 
- Public Member Functions inherited from ScriptObject
virtual bool IsDatabaseBound () const
 
virtual bool isAfterLoadScript () const
 
virtual void checkValidity ()
 
const std::string & GetName () const
 

Static Public Member Functions

static bool HandleAchievementAddCommand (ChatHandler *handler, AchievementEntry const *achievementEntry)
 
static bool HandleAchievementCheckAllCommand (ChatHandler *handler, Optional< PlayerIdentifier > player)
 

Additional Inherited Members

- Protected Member Functions inherited from CommandScript
 CommandScript (const char *name)
 
- Protected Member Functions inherited from ScriptObject
 ScriptObject (const char *name)
 
virtual ~ScriptObject ()=default
 

Detailed Description

Constructor & Destructor Documentation

◆ achievement_commandscript()

achievement_commandscript::achievement_commandscript ( )
inline
36: CommandScript("achievement_commandscript") { }
Definition: ScriptMgr.h:850

Member Function Documentation

◆ GetCommands()

ChatCommandTable achievement_commandscript::GetCommands ( ) const
inlineoverridevirtual

Implements CommandScript.

39 {
40 static ChatCommandTable achievementCommandTable =
41 {
42 { "add", HandleAchievementAddCommand, SEC_GAMEMASTER, Console::No },
43 { "checkall", HandleAchievementCheckAllCommand, SEC_ADMINISTRATOR, Console::Yes }
44 };
45 static ChatCommandTable commandTable =
46 {
47 { "achievement", achievementCommandTable }
48 };
49 return commandTable;
50 }
@ SEC_ADMINISTRATOR
Definition: Common.h:69
@ SEC_GAMEMASTER
Definition: Common.h:68
std::vector< ChatCommandBuilder > ChatCommandTable
Definition: ChatCommand.h:50
static bool HandleAchievementCheckAllCommand(ChatHandler *handler, Optional< PlayerIdentifier > player)
Definition: cs_achievement.cpp:66
static bool HandleAchievementAddCommand(ChatHandler *handler, AchievementEntry const *achievementEntry)
Definition: cs_achievement.cpp:52

References HandleAchievementAddCommand(), HandleAchievementCheckAllCommand(), SEC_ADMINISTRATOR, and SEC_GAMEMASTER.

◆ HandleAchievementAddCommand()

static bool achievement_commandscript::HandleAchievementAddCommand ( ChatHandler handler,
AchievementEntry const *  achievementEntry 
)
inlinestatic
53 {
54 Player* target = handler->getSelectedPlayer();
55 if (!target)
56 {
58 handler->SetSentErrorMessage(true);
59 return false;
60 }
61 target->CompletedAchievement(achievementEntry);
62
63 return true;
64 }
@ LANG_NO_CHAR_SELECTED
Definition: Language.h:148
void SetSentErrorMessage(bool val)
Definition: Chat.h:118
virtual void SendSysMessage(std::string_view str, bool escapeCharacters=false)
Definition: Chat.cpp:103
Player * getSelectedPlayer() const
Definition: Chat.cpp:301
Definition: Player.h:1046
void CompletedAchievement(AchievementEntry const *entry)
Definition: Player.cpp:13818

References Player::CompletedAchievement(), ChatHandler::getSelectedPlayer(), LANG_NO_CHAR_SELECTED, ChatHandler::SendSysMessage(), and ChatHandler::SetSentErrorMessage().

Referenced by GetCommands().

◆ HandleAchievementCheckAllCommand()

static bool achievement_commandscript::HandleAchievementCheckAllCommand ( ChatHandler handler,
Optional< PlayerIdentifier player 
)
inlinestatic
67 {
68 if (!player)
69 {
70 player = PlayerIdentifier::FromTarget(handler);
71 }
72
73 if (!player)
74 {
76 handler->SetSentErrorMessage(true);
77 return false;
78 }
79
80 if (player->IsConnected())
81 {
82 if (Player* target = player->GetConnectedPlayer())
83 target->CheckAllAchievementCriteria();
84 }
85 else
86 {
87 auto* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ADD_AT_LOGIN_FLAG);
88 stmt->SetData(0, uint16(AT_LOGIN_CHECK_ACHIEVS));
89 stmt->SetData(1, player->GetGUID().GetCounter());
90 CharacterDatabase.Execute(stmt);
91 }
92
93 return true;
94 }
std::uint16_t uint16
Definition: Define.h:109
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
Definition: DatabaseEnv.cpp:21
@ CHAR_UPD_ADD_AT_LOGIN_FLAG
Definition: CharacterDatabase.h:274
@ AT_LOGIN_CHECK_ACHIEVS
Definition: Player.h:611
@ LANG_PLAYER_NOT_FOUND
Definition: Language.h:522
static Optional< PlayerIdentifier > FromTarget(ChatHandler *handler)
Definition: ChatCommandTags.cpp:138

References AT_LOGIN_CHECK_ACHIEVS, CHAR_UPD_ADD_AT_LOGIN_FLAG, CharacterDatabase, Acore::ChatCommands::PlayerIdentifier::FromTarget(), LANG_PLAYER_NOT_FOUND, ChatHandler::SendSysMessage(), and ChatHandler::SetSentErrorMessage().

Referenced by GetCommands().