mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-15 10:00:28 +00:00
refactor(Scripts/Commands): convert cs_learn & cs_player to new system (#9050)
This commit is contained in:
committed by
GitHub
parent
b1f038336d
commit
4a69d1fc07
@@ -16,13 +16,8 @@
|
||||
*/
|
||||
|
||||
#include "ScriptMgr.h"
|
||||
#include "Language.h"
|
||||
#include "PlayerCommand.h"
|
||||
|
||||
#if AC_COMPILER == AC_COMPILER_GNU
|
||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||
#endif
|
||||
|
||||
using namespace Acore::ChatCommands;
|
||||
|
||||
class player_commandscript : public CommandScript
|
||||
@@ -34,84 +29,37 @@ public:
|
||||
{
|
||||
static ChatCommandTable playerCommandTable =
|
||||
{
|
||||
{ "learn", SEC_GAMEMASTER, true, &HandlePlayerLearnCommand, "" },
|
||||
{ "unlearn", SEC_GAMEMASTER, true, &HandlePlayerUnLearnCommand, "" }
|
||||
{ "learn", HandlePlayerLearnCommand, SEC_GAMEMASTER, Console::Yes },
|
||||
{ "unlearn", HandlePlayerUnLearnCommand, SEC_GAMEMASTER, Console::Yes }
|
||||
};
|
||||
|
||||
static ChatCommandTable commandTable =
|
||||
{
|
||||
{ "player", SEC_GAMEMASTER, true, nullptr, "", playerCommandTable }
|
||||
{ "player", playerCommandTable }
|
||||
};
|
||||
return commandTable;
|
||||
}
|
||||
|
||||
static bool HandlePlayerLearnCommand(ChatHandler* handler, char const* args)
|
||||
static bool HandlePlayerLearnCommand(ChatHandler* handler, Optional<PlayerIdentifier> player, SpellInfo const* spell, Optional<EXACT_SEQUENCE("all")> allRanks)
|
||||
{
|
||||
if (!*args)
|
||||
if (!player)
|
||||
player = PlayerIdentifier::FromTargetOrSelf(handler);
|
||||
if (!player || !player->IsConnected())
|
||||
return false;
|
||||
|
||||
char* playerName = strtok((char*)args, " ");
|
||||
char* spellId = strtok(nullptr, " ");
|
||||
char const* all = strtok(nullptr, " ");
|
||||
Player* targetPlayer = FindPlayer(handler, playerName);
|
||||
if (!spellId || !targetPlayer)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
uint32 spell = handler->extractSpellIdFromLink(spellId);
|
||||
|
||||
if (!spell)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return Acore::PlayerCommand::HandleLearnSpellCommand(handler, targetPlayer, spell, all);
|
||||
Player* targetPlayer = player->GetConnectedPlayer();
|
||||
return Acore::PlayerCommand::HandleLearnSpellCommand(handler, targetPlayer, spell, allRanks);
|
||||
}
|
||||
|
||||
static bool HandlePlayerUnLearnCommand(ChatHandler* handler, char const* args)
|
||||
static bool HandlePlayerUnLearnCommand(ChatHandler* handler, Optional<PlayerIdentifier> player, SpellInfo const* spell, Optional<EXACT_SEQUENCE("all")> allRanks)
|
||||
{
|
||||
if (!*args)
|
||||
if (!player)
|
||||
player = PlayerIdentifier::FromTargetOrSelf(handler);
|
||||
if (!player || !player->IsConnected())
|
||||
return false;
|
||||
|
||||
char* playerName = strtok((char*)args, " ");
|
||||
char* spellId = strtok(nullptr, " ");
|
||||
char const* all = strtok(nullptr, " ");
|
||||
Player* targetPlayer = FindPlayer(handler, playerName);
|
||||
|
||||
if (!spellId || !targetPlayer)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
uint32 spell = handler->extractSpellIdFromLink(spellId);
|
||||
|
||||
if (!spell)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return Acore::PlayerCommand::HandleUnlearnSpellCommand(handler, targetPlayer, spell, all);
|
||||
}
|
||||
|
||||
private:
|
||||
static Player* FindPlayer(ChatHandler* handler, char* playerName)
|
||||
{
|
||||
if (!playerName)
|
||||
return nullptr;
|
||||
|
||||
Player* targetPlayer;
|
||||
if (!handler->extractPlayerTarget(playerName, &targetPlayer))
|
||||
return nullptr;
|
||||
|
||||
if (!targetPlayer)
|
||||
{
|
||||
handler->SendSysMessage(LANG_PLAYER_NOT_FOUND);
|
||||
handler->SetSentErrorMessage(true);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return targetPlayer;
|
||||
Player* targetPlayer = player->GetConnectedPlayer();
|
||||
return Acore::PlayerCommand::HandleUnlearnSpellCommand(handler, targetPlayer, spell, allRanks);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user