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

Public Member Functions

 misc_commandscript ()
 
ChatCommandTable GetCommands () const override
 
- Public Member Functions inherited from ScriptObject
virtual bool IsDatabaseBound () const
 
virtual bool isAfterLoadScript () const
 
virtual void checkValidity ()
 
const std::string & GetName () const
 
uint16 GetTotalAvailableHooks ()
 

Static Public Member Functions

static bool HandleSkirmishCommand (ChatHandler *handler, std::vector< std::string_view > args)
 
static bool HandleCommentatorCommand (ChatHandler *handler, Optional< bool > enableArg)
 
static bool HandleDevCommand (ChatHandler *handler, Optional< bool > enableArg)
 
static bool HandleGPSCommand (ChatHandler *handler, Optional< PlayerIdentifier > target)
 
static bool HandleAuraCommand (ChatHandler *handler, SpellInfo const *spell)
 
static bool HandleAuraStacksCommand (ChatHandler *handler, SpellInfo const *spell, int16 stacks)
 
static bool HandleUnAuraCommand (ChatHandler *handler, Variant< SpellInfo const *, std::string_view > spells)
 
static bool HandleAppearCommand (ChatHandler *handler, Optional< PlayerIdentifier > target)
 
static bool HandleSummonCommand (ChatHandler *handler, Optional< PlayerIdentifier > target)
 
static bool HandleGroupSummonCommand (ChatHandler *handler, Optional< PlayerIdentifier > target)
 
static bool HandleCommandsCommand (ChatHandler *handler)
 
static bool HandleDieCommand (ChatHandler *handler)
 
static bool HandleReviveCommand (ChatHandler *handler, Optional< PlayerIdentifier > target)
 
static bool HandleDismountCommand (ChatHandler *handler)
 
static bool HandleGUIDCommand (ChatHandler *handler)
 
static bool HandleHelpCommand (ChatHandler *handler, Tail cmd)
 
static bool HandleCooldownCommand (ChatHandler *handler, Optional< SpellInfo const * > spell)
 
static bool HandleGetDistanceCommand (ChatHandler *handler, Optional< PlayerIdentifier > target)
 
static bool HandleRecallCommand (ChatHandler *handler, Optional< PlayerIdentifier > target)
 
static bool HandleSaveCommand (ChatHandler *handler)
 
static bool HandleSaveAllCommand (ChatHandler *handler)
 
static bool HandleKickPlayerCommand (ChatHandler *handler, Optional< PlayerIdentifier > target, Optional< std::string_view > reason)
 
static bool HandleUnstuckCommand (ChatHandler *handler, Optional< PlayerIdentifier > target, Optional< std::string_view > location)
 
static bool HandleLinkGraveCommand (ChatHandler *handler, uint32 graveyardId, Optional< std::string_view > team)
 
static bool HandleNearGraveCommand (ChatHandler *handler, Optional< std::string_view > team)
 
static bool HandleShowAreaCommand (ChatHandler *handler, uint32 areaID)
 
static bool HandleHideAreaCommand (ChatHandler *handler, uint32 areaID)
 
static bool HandleAddItemCommand (ChatHandler *handler, Optional< PlayerIdentifier > player, ItemTemplate const *itemTemplate, Optional< int32 > _count)
 
static bool HandleAddItemSetCommand (ChatHandler *handler, Variant< Hyperlink< itemset >, uint32 > itemSetId)
 
static bool HandleChangeWeather (ChatHandler *handler, uint32 type, float grade)
 
static bool HandleMaxSkillCommand (ChatHandler *handler)
 
static bool HandleSetSkillCommand (ChatHandler *handler, Variant< Hyperlink< skill >, uint32 > skillId, int32 level, Optional< uint16 > maxPureSkill)
 
static bool HandlePInfoCommand (ChatHandler *handler, Optional< PlayerIdentifier > target)
 
static bool HandleRespawnCommand (ChatHandler *handler)
 
static bool HandleRespawnAllCommand (ChatHandler *handler)
 
static bool HandleMuteCommand (ChatHandler *handler, Optional< PlayerIdentifier > player, std::string notSpeakTime, Tail muteReason)
 
static bool HandleUnmuteCommand (ChatHandler *handler, Optional< PlayerIdentifier > target)
 
static bool HandleMuteInfoCommand (ChatHandler *handler, std::string accountName)
 
static bool HandleMuteInfoHelper (ChatHandler *handler, uint32 accountId, char const *accountName)
 
static bool HandleMovegensCommand (ChatHandler *handler)
 
static bool HandleComeToMeCommand (ChatHandler *handler)
 
static bool HandleDamageCommand (ChatHandler *handler, uint32 damage, Optional< std::string > percent)
 
static bool HandleCombatStopCommand (ChatHandler *handler, Optional< PlayerIdentifier > target)
 
static bool HandleFlushArenaPointsCommand (ChatHandler *)
 
static bool HandleFreezeCommand (ChatHandler *handler, Optional< PlayerIdentifier > target)
 
static bool HandleUnFreezeCommand (ChatHandler *handler, Optional< PlayerIdentifier > target)
 
static bool HandlePlayAllCommand (ChatHandler *handler, uint32 soundId)
 
static bool HandlePossessCommand (ChatHandler *handler)
 
static bool HandleUnPossessCommand (ChatHandler *handler)
 
static bool HandleBindSightCommand (ChatHandler *handler)
 
static bool HandleUnbindSightCommand (ChatHandler *handler)
 
static bool HandleMailBoxCommand (ChatHandler *handler)
 
static bool HandleStringCommand (ChatHandler *handler, uint32 id, Optional< uint8 > locale)
 
static bool HandleOpenDoorCommand (ChatHandler *handler, Optional< float > range)
 
static bool HandleBMCommand (ChatHandler *handler, Optional< bool > enableArg)
 
static bool HandlePacketLog (ChatHandler *handler, Optional< PlayerIdentifier > target, Optional< bool > enableArg)
 

Additional Inherited Members

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

Detailed Description

Constructor & Destructor Documentation

◆ misc_commandscript()

misc_commandscript::misc_commandscript ( )
inline
135: CommandScript("misc_commandscript") { }
Definition CommandScript.h:25

Member Function Documentation

◆ GetCommands()

ChatCommandTable misc_commandscript::GetCommands ( ) const
inlineoverridevirtual

Implements CommandScript.

138 {
139 static ChatCommandTable auraCommandTable =
140 {
143 };
144
145 static ChatCommandTable commandTable =
146 {
147 { "commentator", HandleCommentatorCommand, rbac::RBAC_PERM_COMMAND_COMMENTATOR, Console::No },
148 { "dev", HandleDevCommand, rbac::RBAC_PERM_COMMAND_DEV, Console::No },
149 { "gps", HandleGPSCommand, rbac::RBAC_PERM_COMMAND_GPS, Console::No },
150 { "aura", auraCommandTable },
151 { "unaura", HandleUnAuraCommand, rbac::RBAC_PERM_COMMAND_UNAURA, Console::No },
152 { "appear", HandleAppearCommand, rbac::RBAC_PERM_COMMAND_APPEAR, Console::No },
153 { "summon", HandleSummonCommand, rbac::RBAC_PERM_COMMAND_SUMMON, Console::No },
154 { "groupsummon", HandleGroupSummonCommand, rbac::RBAC_PERM_COMMAND_GROUP_SUMMON, Console::No },
155 { "commands", HandleCommandsCommand, rbac::RBAC_PERM_COMMAND_COMMANDS, Console::Yes },
156 { "die", HandleDieCommand, rbac::RBAC_PERM_COMMAND_DIE, Console::No },
157 { "revive", HandleReviveCommand, rbac::RBAC_PERM_COMMAND_REVIVE, Console::Yes },
158 { "dismount", HandleDismountCommand, rbac::RBAC_PERM_COMMAND_DISMOUNT, Console::No },
159 { "guid", HandleGUIDCommand, rbac::RBAC_PERM_COMMAND_GUID, Console::No },
160 { "help", HandleHelpCommand, rbac::RBAC_PERM_COMMAND_HELP, Console::Yes },
161 { "cooldown", HandleCooldownCommand, rbac::RBAC_PERM_COMMAND_COOLDOWN, Console::No },
163 { "recall", HandleRecallCommand, rbac::RBAC_PERM_COMMAND_RECALL, Console::No },
164 { "save", HandleSaveCommand, rbac::RBAC_PERM_COMMAND_SAVE, Console::No },
165 { "saveall", HandleSaveAllCommand, rbac::RBAC_PERM_COMMAND_SAVEALL, Console::Yes },
166 { "kick", HandleKickPlayerCommand, rbac::RBAC_PERM_COMMAND_KICK, Console::Yes },
167 { "unstuck", HandleUnstuckCommand, rbac::RBAC_PERM_COMMAND_UNSTUCK, Console::Yes },
168 { "linkgrave", HandleLinkGraveCommand, rbac::RBAC_PERM_COMMAND_LINKGRAVE, Console::No },
169 { "neargrave", HandleNearGraveCommand, rbac::RBAC_PERM_COMMAND_NEARGRAVE, Console::No },
170 { "showarea", HandleShowAreaCommand, rbac::RBAC_PERM_COMMAND_SHOWAREA, Console::No },
171 { "hidearea", HandleHideAreaCommand, rbac::RBAC_PERM_COMMAND_HIDEAREA, Console::No },
172 { "additem", HandleAddItemCommand, rbac::RBAC_PERM_COMMAND_ADDITEM, Console::Yes },
173 { "additem set", HandleAddItemSetCommand, rbac::RBAC_PERM_COMMAND_ADDITEMSET, Console::No },
174 { "wchange", HandleChangeWeather, rbac::RBAC_PERM_COMMAND_WCHANGE, Console::No },
175 { "maxskill", HandleMaxSkillCommand, rbac::RBAC_PERM_COMMAND_MAXSKILL, Console::No },
176 { "setskill", HandleSetSkillCommand, rbac::RBAC_PERM_COMMAND_SETSKILL, Console::No },
177 { "pinfo", HandlePInfoCommand, rbac::RBAC_PERM_COMMAND_PINFO, Console::Yes },
178 { "respawn", HandleRespawnCommand, rbac::RBAC_PERM_COMMAND_RESPAWN, Console::No },
179 { "respawn all", HandleRespawnAllCommand, rbac::RBAC_PERM_COMMAND_RESPAWN_ALL, Console::No },
180 { "mute", HandleMuteCommand, rbac::RBAC_PERM_COMMAND_MUTE, Console::Yes },
181 { "mutehistory", HandleMuteInfoCommand, rbac::RBAC_PERM_COMMAND_MUTEHISTORY, Console::Yes },
182 { "unmute", HandleUnmuteCommand, rbac::RBAC_PERM_COMMAND_UNMUTE, Console::Yes },
183 { "movegens", HandleMovegensCommand, rbac::RBAC_PERM_COMMAND_MOVEGENS, Console::No },
184 { "cometome", HandleComeToMeCommand, rbac::RBAC_PERM_COMMAND_COMETOME, Console::No },
185 { "damage", HandleDamageCommand, rbac::RBAC_PERM_COMMAND_DAMAGE, Console::No },
186 { "combatstop", HandleCombatStopCommand, rbac::RBAC_PERM_COMMAND_COMBATSTOP, Console::Yes },
187 { "flusharenapoints", HandleFlushArenaPointsCommand, rbac::RBAC_PERM_COMMAND_FLUSHARENAPOINTS, Console::Yes },
188 { "freeze", HandleFreezeCommand, rbac::RBAC_PERM_COMMAND_FREEZE, Console::No },
189 { "unfreeze", HandleUnFreezeCommand, rbac::RBAC_PERM_COMMAND_UNFREEZE, Console::No },
190 { "possess", HandlePossessCommand, rbac::RBAC_PERM_COMMAND_POSSESS, Console::No },
191 { "unpossess", HandleUnPossessCommand, rbac::RBAC_PERM_COMMAND_UNPOSSESS, Console::No },
192 { "bindsight", HandleBindSightCommand, rbac::RBAC_PERM_COMMAND_BINDSIGHT, Console::No },
193 { "unbindsight", HandleUnbindSightCommand, rbac::RBAC_PERM_COMMAND_UNBINDSIGHT, Console::No },
194 { "playall", HandlePlayAllCommand, rbac::RBAC_PERM_COMMAND_PLAYALL, Console::No },
195 { "skirmish", HandleSkirmishCommand, rbac::RBAC_PERM_COMMAND_SKIRMISH, Console::No },
196 { "mailbox", HandleMailBoxCommand, rbac::RBAC_PERM_COMMAND_MAILBOX, Console::No },
197 { "string", HandleStringCommand, rbac::RBAC_PERM_COMMAND_STRING, Console::No },
198 { "opendoor", HandleOpenDoorCommand, rbac::RBAC_PERM_COMMAND_OPENDOOR, Console::No },
200 { "packetlog", HandlePacketLog, rbac::RBAC_PERM_COMMAND_PACKETLOG, Console::Yes }
201 };
202
203 return commandTable;
204 }
static bool HandleCommentatorCommand(ChatHandler *handler, Optional< bool > enableArg)
Definition cs_misc.cpp:505
static bool HandleDevCommand(ChatHandler *handler, Optional< bool > enableArg)
Definition cs_misc.cpp:547
static bool HandleDamageCommand(ChatHandler *handler, uint32 damage, Optional< std::string > percent)
Definition cs_misc.cpp:2903
static bool HandleSaveCommand(ChatHandler *handler)
Definition cs_misc.cpp:1396
static bool HandleAuraStacksCommand(ChatHandler *handler, SpellInfo const *spell, int16 stacks)
Definition cs_misc.cpp:702
static bool HandleLinkGraveCommand(ChatHandler *handler, uint32 graveyardId, Optional< std::string_view > team)
Definition cs_misc.cpp:1559
static bool HandlePlayAllCommand(ChatHandler *handler, uint32 soundId)
Definition cs_misc.cpp:3052
static bool HandleAddItemCommand(ChatHandler *handler, Optional< PlayerIdentifier > player, ItemTemplate const *itemTemplate, Optional< int32 > _count)
Definition cs_misc.cpp:1749
static bool HandleAuraCommand(ChatHandler *handler, SpellInfo const *spell)
Definition cs_misc.cpp:676
static bool HandleUnstuckCommand(ChatHandler *handler, Optional< PlayerIdentifier > target, Optional< std::string_view > location)
Definition cs_misc.cpp:1481
static bool HandleRespawnAllCommand(ChatHandler *handler)
Definition cs_misc.cpp:2475
static bool HandleSkirmishCommand(ChatHandler *handler, std::vector< std::string_view > args)
Definition cs_misc.cpp:206
static bool HandleUnbindSightCommand(ChatHandler *handler)
Definition cs_misc.cpp:3102
static bool HandleShowAreaCommand(ChatHandler *handler, uint32 areaID)
Definition cs_misc.cpp:1687
static bool HandleStringCommand(ChatHandler *handler, uint32 id, Optional< uint8 > locale)
Definition cs_misc.cpp:3122
static bool HandleChangeWeather(ChatHandler *handler, uint32 type, float grade)
Definition cs_misc.cpp:1912
static bool HandlePInfoCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:1994
static bool HandleBMCommand(ChatHandler *handler, Optional< bool > enableArg)
Definition cs_misc.cpp:3148
static bool HandleSummonCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:956
static bool HandleCooldownCommand(ChatHandler *handler, Optional< SpellInfo const * > spell)
Definition cs_misc.cpp:1301
static bool HandleReviveCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:1226
static bool HandleOpenDoorCommand(ChatHandler *handler, Optional< float > range)
Definition cs_misc.cpp:3135
static bool HandleCommandsCommand(ChatHandler *handler)
Definition cs_misc.cpp:1183
static bool HandleMailBoxCommand(ChatHandler *handler)
Definition cs_misc.cpp:3115
static bool HandleDieCommand(ChatHandler *handler)
Definition cs_misc.cpp:1189
static bool HandleAppearCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:781
static bool HandleHelpCommand(ChatHandler *handler, Tail cmd)
Definition cs_misc.cpp:1289
static bool HandleRespawnCommand(ChatHandler *handler)
Definition cs_misc.cpp:2451
static bool HandleNearGraveCommand(ChatHandler *handler, Optional< std::string_view > team)
Definition cs_misc.cpp:1610
static bool HandleMovegensCommand(ChatHandler *handler)
Definition cs_misc.cpp:2753
static bool HandleGUIDCommand(ChatHandler *handler)
Definition cs_misc.cpp:1275
static bool HandleAddItemSetCommand(ChatHandler *handler, Variant< Hyperlink< itemset >, uint32 > itemSetId)
Definition cs_misc.cpp:1851
static bool HandleSaveAllCommand(ChatHandler *handler)
Definition cs_misc.cpp:1427
static bool HandleGPSCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:590
static bool HandleKickPlayerCommand(ChatHandler *handler, Optional< PlayerIdentifier > target, Optional< std::string_view > reason)
Definition cs_misc.cpp:1435
static bool HandleHideAreaCommand(ChatHandler *handler, uint32 areaID)
Definition cs_misc.cpp:1718
static bool HandleSetSkillCommand(ChatHandler *handler, Variant< Hyperlink< skill >, uint32 > skillId, int32 level, Optional< uint16 > maxPureSkill)
Definition cs_misc.cpp:1950
static bool HandlePacketLog(ChatHandler *handler, Optional< PlayerIdentifier > target, Optional< bool > enableArg)
Definition cs_misc.cpp:3189
static bool HandleUnmuteCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:2653
static bool HandleRecallCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:1359
static bool HandleBindSightCommand(ChatHandler *handler)
Definition cs_misc.cpp:3090
static bool HandleComeToMeCommand(ChatHandler *handler)
Definition cs_misc.cpp:2887
static bool HandleUnPossessCommand(ChatHandler *handler)
Definition cs_misc.cpp:3078
static bool HandleDismountCommand(ChatHandler *handler)
Definition cs_misc.cpp:1251
static bool HandleGroupSummonCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:1078
static bool HandleCombatStopCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:2935
static bool HandleUnAuraCommand(ChatHandler *handler, Variant< SpellInfo const *, std::string_view > spells)
Definition cs_misc.cpp:747
static bool HandleGetDistanceCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:1331
static bool HandleMaxSkillCommand(ChatHandler *handler)
Definition cs_misc.cpp:1936
static bool HandleFlushArenaPointsCommand(ChatHandler *)
Definition cs_misc.cpp:2961
static bool HandleFreezeCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:2967
static bool HandleMuteInfoCommand(ChatHandler *handler, std::string accountName)
Definition cs_misc.cpp:2712
static bool HandleUnFreezeCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:3010
static bool HandleMuteCommand(ChatHandler *handler, Optional< PlayerIdentifier > player, std::string notSpeakTime, Tail muteReason)
Definition cs_misc.cpp:2529
static bool HandlePossessCommand(ChatHandler *handler)
Definition cs_misc.cpp:3066
std::vector< ChatCommandBuilder > ChatCommandTable
Definition ChatCommand.h:46
@ RBAC_PERM_COMMAND_COMMANDS
Definition RBAC.h:327
@ RBAC_PERM_COMMAND_DISMOUNT
Definition RBAC.h:332
@ RBAC_PERM_COMMAND_STRING
Definition RBAC.h:655
@ RBAC_PERM_COMMAND_GROUP_SUMMON
Definition RBAC.h:309
@ RBAC_PERM_COMMAND_AURA_STACK
Definition RBAC.h:659
@ RBAC_PERM_COMMAND_FLUSHARENAPOINTS
Definition RBAC.h:334
@ RBAC_PERM_COMMAND_POSSESS
Definition RBAC.h:350
@ RBAC_PERM_COMMAND_NEARGRAVE
Definition RBAC.h:347
@ RBAC_PERM_COMMAND_PLAYALL
Definition RBAC.h:349
@ RBAC_PERM_COMMAND_UNFREEZE
Definition RBAC.h:362
@ RBAC_PERM_COMMAND_MUTE
Definition RBAC.h:346
@ RBAC_PERM_COMMAND_HIDEAREA
Definition RBAC.h:339
@ RBAC_PERM_COMMAND_SHOWAREA
Definition RBAC.h:358
@ RBAC_PERM_COMMAND_BINDSIGHT
Definition RBAC.h:324
@ RBAC_PERM_COMMAND_SKIRMISH
Definition RBAC.h:654
@ RBAC_PERM_COMMAND_ADDITEM
Definition RBAC.h:319
@ RBAC_PERM_COMMAND_DEV
Definition RBAC.h:330
@ RBAC_PERM_COMMAND_RESPAWN
Definition RBAC.h:353
@ RBAC_PERM_COMMAND_COMMENTATOR
Definition RBAC.h:653
@ RBAC_PERM_COMMAND_UNMUTE
Definition RBAC.h:363
@ RBAC_PERM_COMMAND_HELP
Definition RBAC.h:338
@ RBAC_PERM_COMMAND_COOLDOWN
Definition RBAC.h:328
@ RBAC_PERM_COMMAND_COMETOME
Definition RBAC.h:326
@ RBAC_PERM_COMMAND_COMBATSTOP
Definition RBAC.h:325
@ RBAC_PERM_COMMAND_SETSKILL
Definition RBAC.h:357
@ RBAC_PERM_COMMAND_ADDITEMSET
Definition RBAC.h:320
@ RBAC_PERM_COMMAND_AURA
Definition RBAC.h:322
@ RBAC_PERM_COMMAND_MOVEGENS
Definition RBAC.h:345
@ RBAC_PERM_COMMAND_UNSTUCK
Definition RBAC.h:365
@ RBAC_PERM_COMMAND_REVIVE
Definition RBAC.h:354
@ RBAC_PERM_COMMAND_APPEAR
Definition RBAC.h:321
@ RBAC_PERM_COMMAND_FREEZE
Definition RBAC.h:335
@ RBAC_PERM_COMMAND_GPS
Definition RBAC.h:336
@ RBAC_PERM_COMMAND_UNPOSSESS
Definition RBAC.h:364
@ RBAC_PERM_COMMAND_MAXSKILL
Definition RBAC.h:344
@ RBAC_PERM_COMMAND_SUMMON
Definition RBAC.h:359
@ RBAC_PERM_COMMAND_RECALL
Definition RBAC.h:351
@ RBAC_PERM_COMMAND_PACKETLOG
Definition RBAC.h:658
@ RBAC_PERM_COMMAND_DIE
Definition RBAC.h:331
@ RBAC_PERM_COMMAND_MAILBOX
Definition RBAC.h:600
@ RBAC_PERM_COMMAND_RESPAWN_ALL
Definition RBAC.h:660
@ RBAC_PERM_COMMAND_SAVE
Definition RBAC.h:356
@ RBAC_PERM_COMMAND_UNBINDSIGHT
Definition RBAC.h:361
@ RBAC_PERM_COMMAND_DAMAGE
Definition RBAC.h:329
@ RBAC_PERM_COMMAND_BEASTMASTER
Definition RBAC.h:657
@ RBAC_PERM_COMMAND_UNAURA
Definition RBAC.h:360
@ RBAC_PERM_COMMAND_OPENDOOR
Definition RBAC.h:656
@ RBAC_PERM_COMMAND_KICK
Definition RBAC.h:341
@ RBAC_PERM_COMMAND_WCHANGE
Definition RBAC.h:366
@ RBAC_PERM_COMMAND_LINKGRAVE
Definition RBAC.h:342
@ RBAC_PERM_COMMAND_SAVEALL
Definition RBAC.h:355
@ RBAC_PERM_COMMAND_PINFO
Definition RBAC.h:348
@ RBAC_PERM_COMMAND_MUTEHISTORY
Definition RBAC.h:461
@ RBAC_PERM_COMMAND_GUID
Definition RBAC.h:337
@ RBAC_PERM_COMMAND_DISTANCE
Definition RBAC.h:333

References HandleAddItemCommand(), HandleAddItemSetCommand(), HandleAppearCommand(), HandleAuraCommand(), HandleAuraStacksCommand(), HandleBindSightCommand(), HandleBMCommand(), HandleChangeWeather(), HandleCombatStopCommand(), HandleComeToMeCommand(), HandleCommandsCommand(), HandleCommentatorCommand(), HandleCooldownCommand(), HandleDamageCommand(), HandleDevCommand(), HandleDieCommand(), HandleDismountCommand(), HandleFlushArenaPointsCommand(), HandleFreezeCommand(), HandleGetDistanceCommand(), HandleGPSCommand(), HandleGroupSummonCommand(), HandleGUIDCommand(), HandleHelpCommand(), HandleHideAreaCommand(), HandleKickPlayerCommand(), HandleLinkGraveCommand(), HandleMailBoxCommand(), HandleMaxSkillCommand(), HandleMovegensCommand(), HandleMuteCommand(), HandleMuteInfoCommand(), HandleNearGraveCommand(), HandleOpenDoorCommand(), HandlePacketLog(), HandlePInfoCommand(), HandlePlayAllCommand(), HandlePossessCommand(), HandleRecallCommand(), HandleRespawnAllCommand(), HandleRespawnCommand(), HandleReviveCommand(), HandleSaveAllCommand(), HandleSaveCommand(), HandleSetSkillCommand(), HandleShowAreaCommand(), HandleSkirmishCommand(), HandleStringCommand(), HandleSummonCommand(), HandleUnAuraCommand(), HandleUnbindSightCommand(), HandleUnFreezeCommand(), HandleUnmuteCommand(), HandleUnPossessCommand(), HandleUnstuckCommand(), rbac::RBAC_PERM_COMMAND_ADDITEM, rbac::RBAC_PERM_COMMAND_ADDITEMSET, rbac::RBAC_PERM_COMMAND_APPEAR, rbac::RBAC_PERM_COMMAND_AURA, rbac::RBAC_PERM_COMMAND_AURA_STACK, rbac::RBAC_PERM_COMMAND_BEASTMASTER, rbac::RBAC_PERM_COMMAND_BINDSIGHT, rbac::RBAC_PERM_COMMAND_COMBATSTOP, rbac::RBAC_PERM_COMMAND_COMETOME, rbac::RBAC_PERM_COMMAND_COMMANDS, rbac::RBAC_PERM_COMMAND_COMMENTATOR, rbac::RBAC_PERM_COMMAND_COOLDOWN, rbac::RBAC_PERM_COMMAND_DAMAGE, rbac::RBAC_PERM_COMMAND_DEV, rbac::RBAC_PERM_COMMAND_DIE, rbac::RBAC_PERM_COMMAND_DISMOUNT, rbac::RBAC_PERM_COMMAND_DISTANCE, rbac::RBAC_PERM_COMMAND_FLUSHARENAPOINTS, rbac::RBAC_PERM_COMMAND_FREEZE, rbac::RBAC_PERM_COMMAND_GPS, rbac::RBAC_PERM_COMMAND_GROUP_SUMMON, rbac::RBAC_PERM_COMMAND_GUID, rbac::RBAC_PERM_COMMAND_HELP, rbac::RBAC_PERM_COMMAND_HIDEAREA, rbac::RBAC_PERM_COMMAND_KICK, rbac::RBAC_PERM_COMMAND_LINKGRAVE, rbac::RBAC_PERM_COMMAND_MAILBOX, rbac::RBAC_PERM_COMMAND_MAXSKILL, rbac::RBAC_PERM_COMMAND_MOVEGENS, rbac::RBAC_PERM_COMMAND_MUTE, rbac::RBAC_PERM_COMMAND_MUTEHISTORY, rbac::RBAC_PERM_COMMAND_NEARGRAVE, rbac::RBAC_PERM_COMMAND_OPENDOOR, rbac::RBAC_PERM_COMMAND_PACKETLOG, rbac::RBAC_PERM_COMMAND_PINFO, rbac::RBAC_PERM_COMMAND_PLAYALL, rbac::RBAC_PERM_COMMAND_POSSESS, rbac::RBAC_PERM_COMMAND_RECALL, rbac::RBAC_PERM_COMMAND_RESPAWN, rbac::RBAC_PERM_COMMAND_RESPAWN_ALL, rbac::RBAC_PERM_COMMAND_REVIVE, rbac::RBAC_PERM_COMMAND_SAVE, rbac::RBAC_PERM_COMMAND_SAVEALL, rbac::RBAC_PERM_COMMAND_SETSKILL, rbac::RBAC_PERM_COMMAND_SHOWAREA, rbac::RBAC_PERM_COMMAND_SKIRMISH, rbac::RBAC_PERM_COMMAND_STRING, rbac::RBAC_PERM_COMMAND_SUMMON, rbac::RBAC_PERM_COMMAND_UNAURA, rbac::RBAC_PERM_COMMAND_UNBINDSIGHT, rbac::RBAC_PERM_COMMAND_UNFREEZE, rbac::RBAC_PERM_COMMAND_UNMUTE, rbac::RBAC_PERM_COMMAND_UNPOSSESS, rbac::RBAC_PERM_COMMAND_UNSTUCK, and rbac::RBAC_PERM_COMMAND_WCHANGE.

◆ HandleAddItemCommand()

static bool misc_commandscript::HandleAddItemCommand ( ChatHandler handler,
Optional< PlayerIdentifier player,
ItemTemplate const *  itemTemplate,
Optional< int32 _count 
)
inlinestatic
1750 {
1751 if (!sObjectMgr->GetItemTemplate(itemTemplate->ItemId))
1752 {
1753 handler->SendErrorMessage(LANG_COMMAND_ITEMIDINVALID, itemTemplate->ItemId);
1754 return false;
1755 }
1756
1757 uint32 itemId = itemTemplate->ItemId;
1758 int32 count = 1;
1759
1760 if (_count)
1761 count = *_count;
1762
1763 if (!count)
1764 count = 1;
1765
1766 if (!player)
1767 player = PlayerIdentifier::FromTargetOrSelf(handler);
1768
1769 if (!player)
1770 return false;
1771
1772 Player* playerTarget = player->GetConnectedPlayer();
1773
1774 if (!playerTarget)
1775 return false;
1776
1777 // Subtract
1778 if (count < 0)
1779 {
1780 // Only have scam check on player accounts
1781 if (playerTarget->GetSession()->GetSecurity() == SEC_PLAYER)
1782 {
1783 if (!playerTarget->HasItemCount(itemId, 0))
1784 {
1785 // output that player don't have any items to destroy
1786 handler->SendErrorMessage(LANG_REMOVEITEM_FAILURE, handler->GetNameLink(playerTarget), itemId);
1787 return false;
1788 }
1789
1790 if (!playerTarget->HasItemCount(itemId, -count))
1791 {
1792 // output that player don't have as many items that you want to destroy
1793 handler->SendErrorMessage(LANG_REMOVEITEM_ERROR, handler->GetNameLink(playerTarget), itemId);
1794 return false;
1795 }
1796 }
1797
1798 // output successful amount of destroyed items
1799 playerTarget->DestroyItemCount(itemId, -count, true, false);
1800 handler->PSendSysMessage(LANG_REMOVEITEM, itemId, -count, handler->GetNameLink(playerTarget));
1801 return true;
1802 }
1803
1804 // Adding items
1805 uint32 noSpaceForCount = 0;
1806
1807 // check space and find places
1808 ItemPosCountVec dest;
1809 InventoryResult msg = playerTarget->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, itemId, count, &noSpaceForCount);
1810
1811 if (msg != EQUIP_ERR_OK) // convert to possible store amount
1812 count -= noSpaceForCount;
1813
1814 if (!count || dest.empty()) // can't add any
1815 {
1816 handler->SendErrorMessage(LANG_ITEM_CANNOT_CREATE, itemId, noSpaceForCount);
1817 return false;
1818 }
1819
1820 Item* item = playerTarget->StoreNewItem(dest, itemId, true);
1821
1822 Player* p = handler->GetSession() ? handler->GetSession()->GetPlayer() : nullptr;
1823 // remove binding (let GM give it to another player later)
1824 if (p && p == playerTarget)
1825 {
1826 for (auto const& itemPos : dest)
1827 {
1828 if (Item* item1 = p->GetItemByPos(itemPos.pos))
1829 {
1830 item1->SetBinding(false);
1831 }
1832 }
1833 }
1834
1835 if (p && count && item)
1836 {
1837 p->SendNewItem(item, count, false, true);
1838
1839 if (p != playerTarget)
1840 {
1841 playerTarget->SendNewItem(item, count, true, false);
1842 }
1843 }
1844
1845 if (noSpaceForCount)
1846 handler->PSendSysMessage(LANG_ITEM_CANNOT_CREATE, itemId, noSpaceForCount);
1847
1848 return true;
1849 }
@ SEC_PLAYER
Definition Common.h:57
std::int32_t int32
Definition Define.h:103
std::uint32_t uint32
Definition Define.h:107
InventoryResult
Definition Item.h:46
@ EQUIP_ERR_OK
Definition Item.h:47
@ NULL_BAG
Definition Item.h:40
@ NULL_SLOT
Definition Item.h:41
@ LANG_ITEM_CANNOT_CREATE
Definition Language.h:546
@ LANG_REMOVEITEM_FAILURE
Definition Language.h:1407
@ LANG_REMOVEITEM_ERROR
Definition Language.h:1408
@ LANG_REMOVEITEM
Definition Language.h:545
@ LANG_COMMAND_ITEMIDINVALID
Definition Language.h:476
#define sObjectMgr
Definition ObjectMgr.h:1723
std::vector< ItemPosCount > ItemPosCountVec
Definition Player.h:757
virtual std::string GetNameLink() const
Definition Chat.h:198
void PSendSysMessage(std::string_view str, bool escapeCharacters=false)
Definition Chat.cpp:219
WorldSession * GetSession()
Definition Chat.h:242
void SendErrorMessage(uint32 entry)
Definition Chat.cpp:224
Definition Item.h:220
Definition Player.h:1084
bool HasItemCount(uint32 item, uint32 count=1, bool inBankAlso=false) const
Definition PlayerStorage.cpp:658
WorldSession * GetSession() const
Definition Player.h:2020
Item * GetItemByPos(uint16 pos) const
Definition PlayerStorage.cpp:444
void SendNewItem(Item *item, uint32 count, bool received, bool created, bool broadcast=false, bool sendChatMessage=true)
Definition PlayerStorage.cpp:4813
void DestroyItemCount(uint32 item, uint32 count, bool update, bool unequip_check=false)
Definition PlayerStorage.cpp:3183
Item * StoreNewItem(ItemPosCountVec const &pos, uint32 item, bool update, int32 randomPropertyId=0, bool refund=false)
Definition PlayerStorage.cpp:2597
InventoryResult CanStoreNewItem(uint8 bag, uint8 slot, ItemPosCountVec &dest, uint32 item, uint32 count, uint32 *no_space_count=nullptr) const
Definition Player.h:1298
AccountTypes GetSecurity() const
Definition WorldSession.h:441
Player * GetPlayer() const
Definition WorldSession.h:454
static Optional< PlayerIdentifier > FromTargetOrSelf(ChatHandler *handler)
Definition ChatCommandTags.h:189

References Player::CanStoreNewItem(), Player::DestroyItemCount(), EQUIP_ERR_OK, Acore::ChatCommands::PlayerIdentifier::FromTargetOrSelf(), Player::GetItemByPos(), ChatHandler::GetNameLink(), WorldSession::GetPlayer(), WorldSession::GetSecurity(), ChatHandler::GetSession(), Player::GetSession(), Player::HasItemCount(), ItemTemplate::ItemId, LANG_COMMAND_ITEMIDINVALID, LANG_ITEM_CANNOT_CREATE, LANG_REMOVEITEM, LANG_REMOVEITEM_ERROR, LANG_REMOVEITEM_FAILURE, NULL_BAG, NULL_SLOT, ChatHandler::PSendSysMessage(), SEC_PLAYER, ChatHandler::SendErrorMessage(), Player::SendNewItem(), sObjectMgr, and Player::StoreNewItem().

Referenced by GetCommands().

◆ HandleAddItemSetCommand()

static bool misc_commandscript::HandleAddItemSetCommand ( ChatHandler handler,
Variant< Hyperlink< itemset >, uint32 itemSetId 
)
inlinestatic
1852 {
1853 // prevent generation all items with itemset field value '0'
1854 if (!*itemSetId)
1855 {
1857 return false;
1858 }
1859
1860 Player* player = handler->GetSession()->GetPlayer();
1861 Player* playerTarget = handler->getSelectedPlayer();
1862
1863 if (!playerTarget)
1864 {
1865 playerTarget = player;
1866 }
1867
1868 bool found = false;
1869
1870 for (auto const& [itemid, itemTemplate] : *sObjectMgr->GetItemTemplateStore())
1871 {
1872 if (itemTemplate.ItemSet == uint32(itemSetId))
1873 {
1874 found = true;
1875 ItemPosCountVec dest;
1876 InventoryResult msg = playerTarget->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, itemTemplate.ItemId, 1);
1877
1878 if (msg == EQUIP_ERR_OK)
1879 {
1880 Item* item = playerTarget->StoreNewItem(dest, itemTemplate.ItemId, true);
1881
1882 // remove binding (let GM give it to another player later)
1883 if (player == playerTarget)
1884 {
1885 item->SetBinding(false);
1886 }
1887
1888 player->SendNewItem(item, 1, false, true);
1889
1890 if (player != playerTarget)
1891 {
1892 playerTarget->SendNewItem(item, 1, true, false);
1893 }
1894 }
1895 else
1896 {
1897 player->SendEquipError(msg, nullptr, nullptr, itemTemplate.ItemId);
1898 handler->PSendSysMessage(LANG_ITEM_CANNOT_CREATE, itemTemplate.ItemId, 1);
1899 }
1900 }
1901 }
1902
1903 if (!found)
1904 {
1906 return false;
1907 }
1908
1909 return true;
1910 }
@ LANG_NO_ITEMS_FROM_ITEMSET_FOUND
Definition Language.h:551
Player * getSelectedPlayer() const
Definition Chat.cpp:382
void SetBinding(bool val)
Definition Item.h:235
void SendEquipError(InventoryResult msg, Item *pItem, Item *pItem2=nullptr, uint32 itemid=0)
Definition PlayerStorage.cpp:4089

References Player::CanStoreNewItem(), EQUIP_ERR_OK, WorldSession::GetPlayer(), ChatHandler::getSelectedPlayer(), ChatHandler::GetSession(), LANG_ITEM_CANNOT_CREATE, LANG_NO_ITEMS_FROM_ITEMSET_FOUND, NULL_BAG, NULL_SLOT, ChatHandler::PSendSysMessage(), Player::SendEquipError(), ChatHandler::SendErrorMessage(), Player::SendNewItem(), Item::SetBinding(), sObjectMgr, and Player::StoreNewItem().

Referenced by GetCommands().

◆ HandleAppearCommand()

static bool misc_commandscript::HandleAppearCommand ( ChatHandler handler,
Optional< PlayerIdentifier target 
)
inlinestatic
782 {
783 if (!target)
784 {
785 target = PlayerIdentifier::FromTarget(handler);
786 }
787
788 if (!target)
789 {
790 return false;
791 }
792
793 Player* _player = handler->GetSession()->GetPlayer();
794 if (target->GetGUID() == _player->GetGUID())
795 {
797 return false;
798 }
799
800 std::string nameLink = handler->playerLink(target->GetName());
801
802 if (target->IsConnected())
803 {
804 auto targetPlayer = target->GetConnectedPlayer();
805
806 // check online security
807 if (handler->HasLowerSecurity(targetPlayer))
808 {
809 return false;
810 }
811
812 Map* map = targetPlayer->GetMap();
813 if (map->IsBattlegroundOrArena())
814 {
815 // only allow if gm mode is on
816 if (!_player->IsGameMaster())
817 {
818 handler->SendErrorMessage(LANG_CANNOT_GO_TO_BG_GM, nameLink);
819 return false;
820 }
821
822 if (!_player->GetMap()->IsBattlegroundOrArena())
823 {
824 _player->SetEntryPoint();
825 }
826
827 _player->SetBattlegroundId(targetPlayer->GetBattlegroundId(), targetPlayer->GetBattlegroundTypeId(), PLAYER_MAX_BATTLEGROUND_QUEUES, false, false, TEAM_NEUTRAL);
828 }
829 else if (map->IsDungeon())
830 {
831 // we have to go to instance, and can go to player only if:
832 // 1) we are in his group (either as leader or as member)
833 // 2) we are not bound to any group and have GM mode on
834 if (_player->GetGroup())
835 {
836 // we are in group, we can go only if we are in the player group
837 if (_player->GetGroup() != targetPlayer->GetGroup())
838 {
840 return false;
841 }
842 }
843 else
844 {
845 // we are not in group, let's verify our GM mode
846 if (!_player->IsGameMaster())
847 {
849 return false;
850 }
851 }
852
853 // if the GM is bound to another instance, he will not be bound to another one
854 InstancePlayerBind* bind = sInstanceSaveMgr->PlayerGetBoundInstance(_player->GetGUID(), targetPlayer->GetMapId(), targetPlayer->GetDifficulty(map->IsRaid()));
855 if (!bind)
856 {
857 if (InstanceSave* save = sInstanceSaveMgr->GetInstanceSave(target->GetConnectedPlayer()->GetInstanceId()))
858 {
859 sInstanceSaveMgr->PlayerBindToInstance(_player->GetGUID(), save, !save->CanReset(), _player);
860 }
861 }
862
863 if (map->IsRaid())
864 {
865 _player->SetRaidDifficulty(targetPlayer->GetRaidDifficulty());
866 }
867 else
868 {
869 _player->SetDungeonDifficulty(targetPlayer->GetDungeonDifficulty());
870 }
871 }
872
873 handler->PSendSysMessage(LANG_APPEARING_AT, nameLink);
874
875 // stop flight if need
876 if (_player->IsInFlight())
877 {
878 _player->GetMotionMaster()->MovementExpired();
879 _player->CleanupAfterTaxiFlight();
880 }
881 else // save only in non-flight case
882 _player->SaveRecallPosition();
883
884 if (Transport* transport = targetPlayer->GetTransport())
885 {
886 if (Transport* oldTransport = _player->GetTransport())
887 oldTransport->RemovePassenger(_player, true);
888
889 float x;
890 float y;
891 float z;
892 float o;
893 targetPlayer->m_movementInfo.transport.pos.GetPosition(x, y, z, o);
894
895 _player->SetTransport(transport);
896 _player->m_movementInfo.transport.guid = transport->GetGUID();
897 _player->m_movementInfo.transport.pos.Relocate(x, y, z, o);
899
900 float worldX = x;
901 float worldY = y;
902 float worldZ = z;
903 float worldO = o;
904 transport->CalculatePassengerPosition(worldX, worldY, worldZ, &worldO);
905
906 transport->AddPassenger(_player, false);
907
908 if (_player->TeleportTo(transport->GetMapId(), worldX, worldY, worldZ + 0.25f, worldO, TELE_TO_NOT_LEAVE_TRANSPORT | TELE_TO_GM_MODE, targetPlayer))
909 _player->SetPhaseMask(targetPlayer->GetPhaseMask() | 1, false);
910 }
911 else
912 {
913 if (_player->TeleportTo(targetPlayer->GetMapId(), targetPlayer->GetPositionX(), targetPlayer->GetPositionY(), targetPlayer->GetPositionZ() + 0.25f, _player->GetOrientation(), TELE_TO_GM_MODE, targetPlayer))
914 _player->SetPhaseMask(targetPlayer->GetPhaseMask() | 1, false);
915 }
916 }
917 else
918 {
919 // check offline security
920 if (handler->HasLowerSecurity(nullptr, target->GetGUID()))
921 {
922 return false;
923 }
924
925 handler->PSendSysMessage(LANG_APPEARING_AT, nameLink);
926
927 // to point where player stay (if loaded)
928 float x, y, z, o;
929 uint32 map;
930 bool in_flight;
931
932 if (!Player::LoadPositionFromDB(map, x, y, z, o, in_flight, target->GetGUID().GetCounter()))
933 {
934 return false;
935 }
936
937 // stop flight if need
938 if (_player->IsInFlight())
939 {
940 _player->GetMotionMaster()->MovementExpired();
941 _player->CleanupAfterTaxiFlight();
942 }
943 // save only in non-flight case
944 else
945 {
946 _player->SaveRecallPosition();
947 }
948
949 _player->TeleportTo(map, x, y, z, _player->GetOrientation());
950 }
951
952 return true;
953 }
#define sInstanceSaveMgr
Definition InstanceSaveMgr.h:202
@ LANG_CANNOT_GO_TO_INST_PARTY
Definition Language.h:140
@ LANG_CANT_TELEPORT_SELF
Definition Language.h:215
@ LANG_APPEARING_AT
Definition Language.h:149
@ LANG_CANNOT_GO_TO_INST_GM
Definition Language.h:141
@ LANG_CANNOT_GO_TO_BG_GM
Definition Language.h:717
@ TELE_TO_GM_MODE
Definition Player.h:814
@ TELE_TO_NOT_LEAVE_TRANSPORT
Definition Player.h:815
@ TEAM_NEUTRAL
Definition SharedDefines.h:750
#define PLAYER_MAX_BATTLEGROUND_QUEUES
Definition SharedDefines.h:153
@ MOVEMENTFLAG_ONTRANSPORT
Definition UnitDefines.h:381
std::string playerLink(std::string const &name) const
Definition Chat.h:231
bool HasLowerSecurity(Player *target, ObjectGuid guid=ObjectGuid::Empty, bool strong=false)
Definition Chat.cpp:65
Definition InstanceSaveMgr.h:56
Definition Map.h:166
bool IsDungeon() const
Definition Map.h:297
bool IsBattlegroundOrArena() const
Definition Map.h:305
bool IsRaid() const
Definition Map.h:299
void MovementExpired(bool reset=true)
Definition MotionMaster.h:206
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:114
void SetDungeonDifficulty(Difficulty dungeon_difficulty)
Definition Player.h:1941
void SetEntryPoint()
Definition Player.cpp:11232
void SetRaidDifficulty(Difficulty raid_difficulty)
Definition Player.h:1942
void SetBattlegroundId(uint32 id, BattlegroundTypeId bgTypeId, uint32 queueSlot, bool invited, bool isRandom, TeamId teamId)
Definition Player.cpp:12297
void SaveRecallPosition()
Definition Player.cpp:5660
Group * GetGroup()
Definition Player.h:2505
bool IsGameMaster() const
Definition Player.h:1174
bool TeleportTo(uint32 mapid, float x, float y, float z, float orientation, uint32 options=0, Unit *target=nullptr, bool newInstance=false)
Definition Player.cpp:1353
static bool LoadPositionFromDB(uint32 &mapid, float &x, float &y, float &z, float &o, bool &in_flight, ObjectGuid::LowType guid)
Definition PlayerStorage.cpp:4938
void CleanupAfterTaxiFlight()
Definition Player.cpp:10375
Definition Transport.h:30
MotionMaster * GetMotionMaster()
Definition Unit.h:1759
bool IsInFlight() const
Definition Unit.h:1706
void AddUnitMovementFlag(uint32 f)
Definition Unit.h:772
void SetPhaseMask(uint32 newPhaseMask, bool update) override
Definition Unit.cpp:15303
Map * GetMap() const
Definition Object.h:625
void SetTransport(Transport *t)
Definition Object.h:696
Transport * GetTransport() const
Definition Object.h:688
MovementInfo m_movementInfo
Definition Object.h:698
static Optional< PlayerIdentifier > FromTarget(ChatHandler *handler)
Definition ChatCommandTags.cpp:138
Definition InstanceSaveMgr.h:39
ObjectGuid guid
Definition Object.h:308
Position pos
Definition Object.h:309
struct MovementInfo::TransportInfo transport
float GetOrientation() const
Definition Position.h:124
void Relocate(float x, float y)
Definition Position.h:77

References Unit::AddUnitMovementFlag(), Player::CleanupAfterTaxiFlight(), Acore::ChatCommands::PlayerIdentifier::FromTarget(), Player::GetGroup(), Object::GetGUID(), WorldObject::GetMap(), Unit::GetMotionMaster(), Position::GetOrientation(), WorldSession::GetPlayer(), ChatHandler::GetSession(), WorldObject::GetTransport(), MovementInfo::TransportInfo::guid, ChatHandler::HasLowerSecurity(), Map::IsBattlegroundOrArena(), Map::IsDungeon(), Player::IsGameMaster(), Unit::IsInFlight(), Map::IsRaid(), LANG_APPEARING_AT, LANG_CANNOT_GO_TO_BG_GM, LANG_CANNOT_GO_TO_INST_GM, LANG_CANNOT_GO_TO_INST_PARTY, LANG_CANT_TELEPORT_SELF, Player::LoadPositionFromDB(), WorldObject::m_movementInfo, MotionMaster::MovementExpired(), MOVEMENTFLAG_ONTRANSPORT, PLAYER_MAX_BATTLEGROUND_QUEUES, ChatHandler::playerLink(), MovementInfo::TransportInfo::pos, ChatHandler::PSendSysMessage(), Position::Relocate(), Player::SaveRecallPosition(), ChatHandler::SendErrorMessage(), Player::SetBattlegroundId(), Player::SetDungeonDifficulty(), Player::SetEntryPoint(), Unit::SetPhaseMask(), Player::SetRaidDifficulty(), WorldObject::SetTransport(), sInstanceSaveMgr, TEAM_NEUTRAL, TELE_TO_GM_MODE, TELE_TO_NOT_LEAVE_TRANSPORT, Player::TeleportTo(), and MovementInfo::transport.

Referenced by GetCommands().

◆ HandleAuraCommand()

static bool misc_commandscript::HandleAuraCommand ( ChatHandler handler,
SpellInfo const *  spell 
)
inlinestatic
677 {
678 if (!spell)
679 {
681 return false;
682 }
683
684 if (!SpellMgr::IsSpellValid(spell))
685 {
686 handler->SendErrorMessage(LANG_COMMAND_SPELL_BROKEN, spell->Id);
687 return false;
688 }
689
690 Unit* target = handler->getSelectedUnit();
691 if (!target)
692 {
694 return false;
695 }
696
697 Aura::TryRefreshStackOrCreate(spell, MAX_EFFECT_MASK, target, target);
698
699 return true;
700 }
#define MAX_EFFECT_MASK
Definition DBCStructure.h:1638
@ LANG_COMMAND_NOSPELLFOUND
Definition Language.h:486
@ LANG_SELECT_CHAR_OR_CREATURE
Definition Language.h:31
@ LANG_COMMAND_SPELL_BROKEN
Definition Language.h:529
static Aura * TryRefreshStackOrCreate(SpellInfo const *spellproto, uint8 tryEffMask, WorldObject *owner, Unit *caster, int32 *baseAmount=nullptr, Item *castItem=nullptr, ObjectGuid casterGUID=ObjectGuid::Empty, bool *refresh=nullptr, bool periodicReset=false)
Definition SpellAuras.cpp:265
Unit * getSelectedUnit() const
Definition Chat.cpp:394
static bool IsSpellValid(SpellInfo const *spellInfo)
Definition SpellMgr.cpp:488
Definition Unit.h:664

References ChatHandler::getSelectedUnit(), SpellInfo::Id, SpellMgr::IsSpellValid(), LANG_COMMAND_NOSPELLFOUND, LANG_COMMAND_SPELL_BROKEN, LANG_SELECT_CHAR_OR_CREATURE, MAX_EFFECT_MASK, ChatHandler::SendErrorMessage(), and Aura::TryRefreshStackOrCreate().

Referenced by GetCommands().

◆ HandleAuraStacksCommand()

static bool misc_commandscript::HandleAuraStacksCommand ( ChatHandler handler,
SpellInfo const *  spell,
int16  stacks 
)
inlinestatic
703 {
704 if (!spell)
705 {
707 return false;
708 }
709
710 if (!SpellMgr::IsSpellValid(spell))
711 {
712 handler->SendErrorMessage(LANG_COMMAND_SPELL_BROKEN, spell->Id);
713 return false;
714 }
715
716 if (!stacks)
717 {
719 return false;
720 }
721
722 Unit* target = handler->getSelectedUnit();
723 if (!target)
724 {
726 return false;
727 }
728
729 Aura* aur = target->GetAura(spell->Id);
730 if (!aur)
731 {
733 return false;
734 }
735
736 if (!spell->StackAmount)
737 {
739 return false;
740 }
741
742 aur->ModStackAmount(stacks);
743
744 return true;
745 }
@ LANG_COMMAND_AURASTACK_CANT_STACK
Definition Language.h:430
@ LANG_COMMAND_AURASTACK_NO_STACK
Definition Language.h:429
@ LANG_COMMAND_AURASTACK_NO_AURA
Definition Language.h:428
Definition SpellAuras.h:87
bool ModStackAmount(int32 num, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT, bool periodicReset=false)
Definition SpellAuras.cpp:963
Aura * GetAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint8 reqEffMask=0) const
Definition Unit.cpp:5859

References Unit::GetAura(), ChatHandler::getSelectedUnit(), SpellInfo::Id, SpellMgr::IsSpellValid(), LANG_COMMAND_AURASTACK_CANT_STACK, LANG_COMMAND_AURASTACK_NO_AURA, LANG_COMMAND_AURASTACK_NO_STACK, LANG_COMMAND_NOSPELLFOUND, LANG_COMMAND_SPELL_BROKEN, LANG_SELECT_CHAR_OR_CREATURE, Aura::ModStackAmount(), ChatHandler::SendErrorMessage(), and SpellInfo::StackAmount.

Referenced by GetCommands().

◆ HandleBindSightCommand()

static bool misc_commandscript::HandleBindSightCommand ( ChatHandler handler)
inlinestatic
3091 {
3092 Unit* unit = handler->getSelectedUnit();
3093 if (!unit)
3094 {
3095 return false;
3096 }
3097
3098 handler->GetSession()->GetPlayer()->CastSpell(unit, 6277, true);
3099 return true;
3100 }
SpellCastResult CastSpell(SpellCastTargets const &targets, SpellInfo const *spellInfo, CustomSpellValues const *value, TriggerCastFlags triggerFlags=TRIGGERED_NONE, Item *castItem=nullptr, AuraEffect const *triggeredByAura=nullptr, ObjectGuid originalCaster=ObjectGuid::Empty)
Definition Unit.cpp:1375

References Unit::CastSpell(), WorldSession::GetPlayer(), ChatHandler::getSelectedUnit(), and ChatHandler::GetSession().

Referenced by GetCommands().

◆ HandleBMCommand()

static bool misc_commandscript::HandleBMCommand ( ChatHandler handler,
Optional< bool >  enableArg 
)
inlinestatic
3149 {
3150 WorldSession* session = handler->GetSession();
3151
3152 if (!session)
3153 return false;
3154
3155 auto SetBMMod = [&](bool enable)
3156 {
3157 char const* enabled = "ON";
3158 char const* disabled = "OFF";
3159 handler->SendNotification(LANG_COMMAND_BEASTMASTER_MODE, enable ? enabled : disabled);
3160
3161 session->GetPlayer()->SetBeastMaster(enable);
3162 };
3163
3164 if (!enableArg)
3165 {
3166 if (!AccountMgr::IsPlayerAccount(session->GetSecurity()) && session->GetPlayer()->IsDeveloper())
3167 SetBMMod(true);
3168 else
3169 SetBMMod(false);
3170
3171 return true;
3172 }
3173
3174 if (*enableArg)
3175 {
3176 SetBMMod(true);
3177 return true;
3178 }
3179 else
3180 {
3181 SetBMMod(false);
3182 return true;
3183 }
3184
3186 return false;
3187 }
@ LANG_USE_BOL
Definition Language.h:311
@ LANG_COMMAND_BEASTMASTER_MODE
Definition Language.h:987
static bool IsPlayerAccount(uint32 gmlevel)
Definition AccountMgr.cpp:324
void SendNotification(std::string_view str)
Definition Chat.cpp:113
void SetBeastMaster(bool on)
Definition Player.h:1171
bool IsDeveloper() const
Definition Player.h:1169
Player session in the World.
Definition WorldSession.h:384

References WorldSession::GetPlayer(), WorldSession::GetSecurity(), ChatHandler::GetSession(), Player::IsDeveloper(), AccountMgr::IsPlayerAccount(), LANG_COMMAND_BEASTMASTER_MODE, LANG_USE_BOL, ChatHandler::SendErrorMessage(), ChatHandler::SendNotification(), and Player::SetBeastMaster().

Referenced by GetCommands().

◆ HandleChangeWeather()

static bool misc_commandscript::HandleChangeWeather ( ChatHandler handler,
uint32  type,
float  grade 
)
inlinestatic
1913 {
1914 // Weather is OFF
1915 if (!sWorld->getBoolConfig(CONFIG_WEATHER))
1916 {
1918 return false;
1919 }
1920
1921 Player* player = handler->GetSession()->GetPlayer();
1922 uint32 zoneid = player->GetZoneId();
1923
1924 Weather* weather = player->GetMap()->GetOrGenerateZoneDefaultWeather(zoneid);
1925 if (!weather)
1926 {
1928 return false;
1929 }
1930
1931 weather->SetWeather(WeatherType(type), grade);
1932
1933 return true;
1934 }
@ LANG_NO_WEATHER
Definition Language.h:441
@ LANG_WEATHER_DISABLED
Definition Language.h:442
WeatherType
Definition SharedDefines.h:3370
@ CONFIG_WEATHER
Definition WorldConfig.h:49
Weather * GetOrGenerateZoneDefaultWeather(uint32 zoneId)
Definition Map.cpp:3191
Weather for one zone.
Definition Weather.h:65
uint32 GetZoneId() const
Definition Object.cpp:3111
#define sWorld
Definition World.h:317
void SetWeather(WeatherType type, float grade)
Set the weather.
Definition Weather.cpp:268

References CONFIG_WEATHER, WorldObject::GetMap(), Map::GetOrGenerateZoneDefaultWeather(), WorldSession::GetPlayer(), ChatHandler::GetSession(), WorldObject::GetZoneId(), LANG_NO_WEATHER, LANG_WEATHER_DISABLED, ChatHandler::SendErrorMessage(), Weather::SetWeather(), and sWorld.

Referenced by GetCommands().

◆ HandleCombatStopCommand()

static bool misc_commandscript::HandleCombatStopCommand ( ChatHandler handler,
Optional< PlayerIdentifier target 
)
inlinestatic
2936 {
2937 if (!target)
2938 {
2939 target = PlayerIdentifier::FromTargetOrSelf(handler);
2940 }
2941
2942 if (!target || !target->IsConnected())
2943 {
2945 return false;
2946 }
2947
2948 Player* playerTarget = target->GetConnectedPlayer();
2949
2950 // check online security
2951 if (handler->HasLowerSecurity(playerTarget))
2952 {
2953 return false;
2954 }
2955
2956 playerTarget->CombatStop();
2957 playerTarget->GetThreatMgr().RemoveMeFromThreatLists();
2958 return true;
2959 }
@ LANG_PLAYER_NOT_FOUND
Definition Language.h:548
void RemoveMeFromThreatLists()
Definition ThreatManager.cpp:789
ThreatManager & GetThreatMgr()
Definition Unit.h:951
void CombatStop(bool includingCast=false, bool mutualPvP=true)
Definition Unit.cpp:7486

References Unit::CombatStop(), Acore::ChatCommands::PlayerIdentifier::FromTargetOrSelf(), Unit::GetThreatMgr(), ChatHandler::HasLowerSecurity(), LANG_PLAYER_NOT_FOUND, ThreatManager::RemoveMeFromThreatLists(), and ChatHandler::SendErrorMessage().

Referenced by GetCommands().

◆ HandleComeToMeCommand()

static bool misc_commandscript::HandleComeToMeCommand ( ChatHandler handler)
inlinestatic
2888 {
2889 Creature* caster = handler->getSelectedCreature();
2890 if (!caster)
2891 {
2893 return false;
2894 }
2895
2896 Player* player = handler->GetSession()->GetPlayer();
2897
2898 caster->GetMotionMaster()->MovePoint(0, player->GetPositionX(), player->GetPositionY(), player->GetPositionZ());
2899
2900 return true;
2901 }
@ LANG_SELECT_CREATURE
Definition Language.h:32
Creature * getSelectedCreature() const
Definition Chat.cpp:418
Definition Creature.h:47
void MovePoint(uint32 id, const Position &pos, ForcedMovement forcedMovement=FORCED_MOVEMENT_NONE, float speed=0.f, bool generatePath=true, bool forceDestination=true, std::optional< AnimTier > animTier=std::nullopt)
Definition MotionMaster.h:240
float GetPositionZ() const
Definition Position.h:123
float GetPositionX() const
Definition Position.h:121
float GetPositionY() const
Definition Position.h:122

References Unit::GetMotionMaster(), WorldSession::GetPlayer(), Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), ChatHandler::getSelectedCreature(), ChatHandler::GetSession(), LANG_SELECT_CREATURE, MotionMaster::MovePoint(), and ChatHandler::SendErrorMessage().

Referenced by GetCommands().

◆ HandleCommandsCommand()

static bool misc_commandscript::HandleCommandsCommand ( ChatHandler handler)
inlinestatic
1184 {
1185 SendCommandHelpFor(*handler, "");
1186 return true;
1187 }
AC_GAME_API void SendCommandHelpFor(ChatHandler &handler, std::string_view cmd)
Definition ChatCommand.cpp:538

References Acore::ChatCommands::SendCommandHelpFor().

Referenced by GetCommands().

◆ HandleCommentatorCommand()

static bool misc_commandscript::HandleCommentatorCommand ( ChatHandler handler,
Optional< bool >  enableArg 
)
inlinestatic
506 {
507 WorldSession* session = handler->GetSession();
508
509 if (!session)
510 {
512 return false;
513 }
514
515 auto SetCommentatorMod = [&](bool enable)
516 {
517 handler->SendNotification(enable ? "Commentator mode on" : "Commentator mode off");
518 session->GetPlayer()->SetCommentator(enable);
519 };
520
521 if (!enableArg)
522 {
523 if (!AccountMgr::IsPlayerAccount(session->GetSecurity()) && session->GetPlayer()->IsCommentator())
524 {
525 SetCommentatorMod(true);
526 }
527 else
528 {
529 SetCommentatorMod(false);
530 }
531
532 return true;
533 }
534
535 if (*enableArg)
536 {
537 SetCommentatorMod(true);
538 return true;
539 }
540 else
541 {
542 SetCommentatorMod(false);
543 return true;
544 }
545 }
bool IsCommentator() const
Definition Player.h:1167
void SetCommentator(bool on)
Definition Player.h:1168

References WorldSession::GetPlayer(), WorldSession::GetSecurity(), ChatHandler::GetSession(), Player::IsCommentator(), AccountMgr::IsPlayerAccount(), LANG_USE_BOL, ChatHandler::SendErrorMessage(), ChatHandler::SendNotification(), and Player::SetCommentator().

Referenced by GetCommands().

◆ HandleCooldownCommand()

static bool misc_commandscript::HandleCooldownCommand ( ChatHandler handler,
Optional< SpellInfo const * >  spell 
)
inlinestatic
1302 {
1303 Player* target = handler->getSelectedPlayer();
1304 if (!target)
1305 {
1307 return false;
1308 }
1309
1310 std::string nameLink = handler->GetNameLink(target);
1311
1312 if (!spell)
1313 {
1314 target->RemoveAllSpellCooldown();
1315 handler->PSendSysMessage(LANG_REMOVEALL_COOLDOWN, nameLink);
1316 }
1317 else
1318 {
1319 if (!SpellMgr::IsSpellValid(*spell))
1320 {
1321 handler->SendErrorMessage(LANG_COMMAND_SPELL_BROKEN, spell.value()->Id);
1322 return false;
1323 }
1324
1325 target->RemoveSpellCooldown(spell.value()->Id, true);
1326 handler->PSendSysMessage(LANG_REMOVE_COOLDOWN, spell.value()->Id, target == handler->GetSession()->GetPlayer() ? handler->GetAcoreString(LANG_YOU) : nameLink);
1327 }
1328 return true;
1329 }
@ LANG_YOU
Definition Language.h:76
@ LANG_REMOVE_COOLDOWN
Definition Language.h:541
@ LANG_REMOVEALL_COOLDOWN
Definition Language.h:540
virtual std::string GetAcoreString(uint32 entry) const
Definition Chat.cpp:42
void RemoveAllSpellCooldown()
Definition Player.cpp:3576
void RemoveSpellCooldown(uint32 spell_id, bool update=false)
Definition Player.cpp:3525

References ChatHandler::GetAcoreString(), ChatHandler::GetNameLink(), WorldSession::GetPlayer(), ChatHandler::getSelectedPlayer(), ChatHandler::GetSession(), SpellMgr::IsSpellValid(), LANG_COMMAND_SPELL_BROKEN, LANG_PLAYER_NOT_FOUND, LANG_REMOVE_COOLDOWN, LANG_REMOVEALL_COOLDOWN, LANG_YOU, ChatHandler::PSendSysMessage(), Player::RemoveAllSpellCooldown(), Player::RemoveSpellCooldown(), and ChatHandler::SendErrorMessage().

Referenced by GetCommands().

◆ HandleDamageCommand()

static bool misc_commandscript::HandleDamageCommand ( ChatHandler handler,
uint32  damage,
Optional< std::string >  percent 
)
inlinestatic
2904 {
2905 Unit* target = handler->getSelectedUnit();
2906 if (!target || !handler->GetSession()->GetPlayer()->GetTarget())
2907 {
2909 return false;
2910 }
2911
2912 if (target->IsPlayer())
2913 if (handler->HasLowerSecurity(target->ToPlayer()))
2914 return false;
2915
2916 if (!target->IsAlive() || !damage)
2917 return true;
2918
2919 if (target->IsCreature() && handler->GetSession()->GetSecurity() == SEC_CONSOLE) // pussywizard
2920 target->ToCreature()->LowerPlayerDamageReq(target->GetMaxHealth());
2921
2922 if (percent)
2923 if (StringStartsWith("pct", *percent))
2924 if (damage <= 100)
2925 damage = target->CountPctFromMaxHealth(damage);
2926
2927 Unit::DealDamage(handler->GetSession()->GetPlayer(), target, damage, nullptr, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, nullptr, false, true);
2928
2929 if (target != handler->GetSession()->GetPlayer())
2931
2932 return true;
2933 }
@ SEC_CONSOLE
Definition Common.h:61
@ SPELL_SCHOOL_MASK_NORMAL
Definition SharedDefines.h:285
@ VICTIMSTATE_HIT
Definition Unit.h:85
@ HITINFO_AFFECTS_VICTIM
Definition Unit.h:99
@ DIRECT_DAMAGE
Definition Unit.h:254
bool StringStartsWith(std::string_view haystack, std::string_view needle)
Definition Util.h:392
void LowerPlayerDamageReq(uint32 unDamage, bool damagedByPlayer=true)
Definition Creature.cpp:3837
bool IsPlayer() const
Definition Object.h:201
Player * ToPlayer()
Definition Object.h:202
bool IsCreature() const
Definition Object.h:205
Creature * ToCreature()
Definition Object.h:206
void SendAttackStateUpdate(CalcDamageInfo *damageInfo)
Definition Unit.cpp:6887
uint32 GetMaxHealth() const
Definition Unit.h:1109
bool IsAlive() const
Definition Unit.h:1794
uint32 CountPctFromMaxHealth(int32 pct) const
Definition Unit.h:1121
ObjectGuid GetTarget() const
Definition Unit.h:861
static uint32 DealDamage(Unit *attacker, Unit *victim, uint32 damage, CleanDamage const *cleanDamage=nullptr, DamageEffectType damagetype=DIRECT_DAMAGE, SpellSchoolMask damageSchoolMask=SPELL_SCHOOL_MASK_NORMAL, SpellInfo const *spellProto=nullptr, bool durabilityLoss=true, bool allowGM=false, Spell const *spell=nullptr)
Definition Unit.cpp:1007

References Unit::CountPctFromMaxHealth(), Unit::DealDamage(), DIRECT_DAMAGE, Unit::GetMaxHealth(), WorldSession::GetPlayer(), WorldSession::GetSecurity(), ChatHandler::getSelectedUnit(), ChatHandler::GetSession(), Unit::GetTarget(), ChatHandler::HasLowerSecurity(), HITINFO_AFFECTS_VICTIM, Unit::IsAlive(), Object::IsCreature(), Object::IsPlayer(), LANG_SELECT_CHAR_OR_CREATURE, Creature::LowerPlayerDamageReq(), SEC_CONSOLE, Unit::SendAttackStateUpdate(), ChatHandler::SendErrorMessage(), SPELL_SCHOOL_MASK_NORMAL, StringStartsWith(), Object::ToCreature(), Object::ToPlayer(), and VICTIMSTATE_HIT.

Referenced by GetCommands().

◆ HandleDevCommand()

static bool misc_commandscript::HandleDevCommand ( ChatHandler handler,
Optional< bool >  enableArg 
)
inlinestatic
548 {
549 WorldSession* session = handler->GetSession();
550
551 if (!session)
552 {
554 return false;
555 }
556
557 auto SetDevMod = [&](bool enable)
558 {
559 handler->SendNotification(enable ? LANG_DEV_ON : LANG_DEV_OFF);
560 session->GetPlayer()->SetDeveloper(enable);
561 sScriptMgr->OnHandleDevCommand(handler->GetSession()->GetPlayer(), enable);
562 };
563
564 if (!enableArg)
565 {
566 if (!AccountMgr::IsPlayerAccount(session->GetSecurity()) && session->GetPlayer()->IsDeveloper())
567 {
568 SetDevMod(true);
569 }
570 else
571 {
572 SetDevMod(false);
573 }
574
575 return true;
576 }
577
578 if (*enableArg)
579 {
580 SetDevMod(true);
581 return true;
582 }
583 else
584 {
585 SetDevMod(false);
586 return true;
587 }
588 }
@ LANG_DEV_ON
Definition Language.h:938
@ LANG_DEV_OFF
Definition Language.h:939
#define sScriptMgr
Definition ScriptMgr.h:737
void SetDeveloper(bool on)
Definition Player.h:1170

References WorldSession::GetPlayer(), WorldSession::GetSecurity(), ChatHandler::GetSession(), Player::IsDeveloper(), AccountMgr::IsPlayerAccount(), LANG_DEV_OFF, LANG_DEV_ON, LANG_USE_BOL, ChatHandler::SendErrorMessage(), ChatHandler::SendNotification(), Player::SetDeveloper(), and sScriptMgr.

Referenced by GetCommands().

◆ HandleDieCommand()

static bool misc_commandscript::HandleDieCommand ( ChatHandler handler)
inlinestatic
1190 {
1191 Unit* target = handler->getSelectedUnit();
1192
1193 if (!target || !handler->GetSession()->GetPlayer()->GetTarget())
1194 {
1196 return false;
1197 }
1198
1199 if (target->IsPlayer())
1200 {
1201 if (handler->HasLowerSecurity(target->ToPlayer()))
1202 {
1203 return false;
1204 }
1205 }
1206
1207 if (target->IsAlive())
1208 {
1209 if (sWorld->getBoolConfig(CONFIG_DIE_COMMAND_MODE))
1210 {
1211 if (target->IsCreature() && handler->GetSession()->GetSecurity() == SEC_CONSOLE) // pussywizard
1212 {
1213 target->ToCreature()->LowerPlayerDamageReq(target->GetMaxHealth());
1214 }
1215 Unit::Kill(handler->GetSession()->GetPlayer(), target);
1216 }
1217 else
1218 {
1219 Unit::DealDamage(handler->GetSession()->GetPlayer(), target, target->GetHealth(), nullptr, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, nullptr, false, true);
1220 }
1221 }
1222
1223 return true;
1224 }
@ CONFIG_DIE_COMMAND_MODE
Definition WorldConfig.h:62
static void Kill(Unit *killer, Unit *victim, bool durabilityLoss=true, WeaponAttackType attackType=BASE_ATTACK, SpellInfo const *spellProto=nullptr, Spell const *spell=nullptr)
Definition Unit.cpp:13964
uint32 GetHealth() const
Definition Unit.h:1108

References CONFIG_DIE_COMMAND_MODE, Unit::DealDamage(), DIRECT_DAMAGE, Unit::GetHealth(), Unit::GetMaxHealth(), WorldSession::GetPlayer(), WorldSession::GetSecurity(), ChatHandler::getSelectedUnit(), ChatHandler::GetSession(), Unit::GetTarget(), ChatHandler::HasLowerSecurity(), Unit::IsAlive(), Object::IsCreature(), Object::IsPlayer(), Unit::Kill(), LANG_SELECT_CHAR_OR_CREATURE, Creature::LowerPlayerDamageReq(), SEC_CONSOLE, ChatHandler::SendErrorMessage(), SPELL_SCHOOL_MASK_NORMAL, sWorld, Object::ToCreature(), and Object::ToPlayer().

Referenced by GetCommands().

◆ HandleDismountCommand()

static bool misc_commandscript::HandleDismountCommand ( ChatHandler handler)
inlinestatic
1252 {
1253 Player* player = handler->GetSession()->GetPlayer();
1254
1255 // If player is not mounted, so go out :)
1256 if (!player->IsMounted())
1257 {
1259 return false;
1260 }
1261
1262 if (player->IsInFlight())
1263 {
1265 return false;
1266 }
1267
1268 player->Dismount();
1270 player->SetSpeed(MOVE_RUN, 1, true);
1271 player->SetSpeed(MOVE_FLIGHT, 1, true);
1272 return true;
1273 }
@ LANG_CHAR_NON_MOUNTED
Definition Language.h:54
@ LANG_YOU_IN_FLIGHT
Definition Language.h:50
@ SPELL_AURA_MOUNTED
Definition SpellAuraDefines.h:141
@ MOVE_FLIGHT
Definition UnitDefines.h:362
@ MOVE_RUN
Definition UnitDefines.h:357
void Dismount()
Definition Unit.cpp:10565
bool IsMounted() const
Definition Unit.h:1887
void SetSpeed(UnitMoveType mtype, float rate, bool forced=false)
Definition Unit.cpp:11296
void RemoveAurasByType(AuraType auraType, ObjectGuid casterGUID=ObjectGuid::Empty, Aura *except=nullptr, bool negative=true, bool positive=true)
Definition Unit.cpp:5379

References Unit::Dismount(), WorldSession::GetPlayer(), ChatHandler::GetSession(), Unit::IsInFlight(), Unit::IsMounted(), LANG_CHAR_NON_MOUNTED, LANG_YOU_IN_FLIGHT, MOVE_FLIGHT, MOVE_RUN, Unit::RemoveAurasByType(), ChatHandler::SendErrorMessage(), Unit::SetSpeed(), and SPELL_AURA_MOUNTED.

Referenced by GetCommands().

◆ HandleFlushArenaPointsCommand()

static bool misc_commandscript::HandleFlushArenaPointsCommand ( ChatHandler )
inlinestatic
2962 {
2963 sArenaTeamMgr->DistributeArenaPoints();
2964 return true;
2965 }
#define sArenaTeamMgr
Definition ArenaTeamMgr.h:69

References sArenaTeamMgr.

Referenced by GetCommands().

◆ HandleFreezeCommand()

static bool misc_commandscript::HandleFreezeCommand ( ChatHandler handler,
Optional< PlayerIdentifier target 
)
inlinestatic
2968 {
2969 Creature* creatureTarget = handler->getSelectedCreature();
2970
2971 if (!target && !creatureTarget)
2972 {
2973 target = PlayerIdentifier::FromTargetOrSelf(handler);
2974 }
2975
2976 if (!target && !creatureTarget)
2977 {
2979 return false;
2980 }
2981
2982 Player* playerTarget = target->GetConnectedPlayer();
2983 if (playerTarget && !creatureTarget)
2984 {
2985 handler->PSendSysMessage(LANG_COMMAND_FREEZE, target->GetName());
2986
2987 if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(SPELL_FREEZE))
2988 {
2989 Aura::TryRefreshStackOrCreate(spellInfo, MAX_EFFECT_MASK, playerTarget, playerTarget);
2990 }
2991
2992 return true;
2993 }
2994 else if (creatureTarget && creatureTarget->IsAlive())
2995 {
2997
2998 if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(SPELL_FREEZE))
2999 {
3000 Aura::TryRefreshStackOrCreate(spellInfo, MAX_EFFECT_MASK, creatureTarget, creatureTarget);
3001 }
3002
3003 return true;
3004 }
3005
3007 return false;
3008 }
@ LANG_COMMAND_FREEZE
Definition Language.h:1061
#define sSpellMgr
Definition SpellMgr.h:836
virtual LocaleConstant GetSessionDbcLocale() const
Definition Chat.cpp:878
Definition SpellInfo.h:340
constexpr auto SPELL_FREEZE
Definition cs_misc.cpp:61
std::string const GetLocalizeCreatureName(Creature *creature, LocaleConstant locale)
Definition cs_misc.cpp:106

References Acore::ChatCommands::PlayerIdentifier::FromTargetOrSelf(), GetLocalizeCreatureName(), ChatHandler::getSelectedCreature(), ChatHandler::GetSessionDbcLocale(), Unit::IsAlive(), LANG_COMMAND_FREEZE, LANG_SELECT_CHAR_OR_CREATURE, MAX_EFFECT_MASK, ChatHandler::PSendSysMessage(), ChatHandler::SendErrorMessage(), SPELL_FREEZE, sSpellMgr, and Aura::TryRefreshStackOrCreate().

Referenced by GetCommands().

◆ HandleGetDistanceCommand()

static bool misc_commandscript::HandleGetDistanceCommand ( ChatHandler handler,
Optional< PlayerIdentifier target 
)
inlinestatic
1332 {
1333 if (!target)
1334 {
1335 target = PlayerIdentifier::FromTargetOrSelf(handler);
1336 }
1337
1338 WorldObject* object = handler->getSelectedUnit();
1339
1340 if (!object && !target)
1341 {
1342 return false;
1343 }
1344
1345 if (!object && target && target->IsConnected())
1346 {
1347 object = target->GetConnectedPlayer();
1348 }
1349
1350 if (!object)
1351 {
1352 return false;
1353 }
1354
1355 handler->PSendSysMessage(LANG_DISTANCE, handler->GetSession()->GetPlayer()->GetDistance(object), handler->GetSession()->GetPlayer()->GetDistance2d(object), handler->GetSession()->GetPlayer()->GetExactDist(object), handler->GetSession()->GetPlayer()->GetExactDist2d(object));
1356 return true;
1357 }
@ LANG_DISTANCE
Definition Language.h:553
Definition Object.h:475
float GetDistance2d(WorldObject const *obj) const
Definition Object.cpp:1313
float GetDistance(WorldObject const *obj) const
Definition Object.cpp:1295
float GetExactDist2d(const float x, const float y) const
Definition Position.h:170
float GetExactDist(float x, float y, float z) const
Definition Position.h:182

References Acore::ChatCommands::PlayerIdentifier::FromTargetOrSelf(), WorldObject::GetDistance(), WorldObject::GetDistance2d(), Position::GetExactDist(), Position::GetExactDist2d(), WorldSession::GetPlayer(), ChatHandler::getSelectedUnit(), ChatHandler::GetSession(), LANG_DISTANCE, and ChatHandler::PSendSysMessage().

Referenced by GetCommands().

◆ HandleGPSCommand()

static bool misc_commandscript::HandleGPSCommand ( ChatHandler handler,
Optional< PlayerIdentifier target 
)
inlinestatic
591 {
592 if (!target)
593 {
594 target = PlayerIdentifier::FromTargetOrSelf(handler);
595 }
596
597 WorldObject* object = handler->getSelectedUnit();
598
599 if (!object && !target)
600 {
601 return false;
602 }
603
604 if (!object && target && target->IsConnected())
605 {
606 object = target->GetConnectedPlayer();
607 }
608
609 if (!object)
610 {
611 return false;
612 }
613
614 CellCoord const cellCoord = Acore::ComputeCellCoord(object->GetPositionX(), object->GetPositionY());
615 Cell cell(cellCoord);
616
617 uint32 zoneId, areaId;
618 object->GetZoneAndAreaId(zoneId, areaId);
619
620 MapEntry const* mapEntry = sMapStore.LookupEntry(object->GetMapId());
621 AreaTableEntry const* zoneEntry = sAreaTableStore.LookupEntry(zoneId);
622 AreaTableEntry const* areaEntry = sAreaTableStore.LookupEntry(areaId);
623
624 float zoneX = object->GetPositionX();
625 float zoneY = object->GetPositionY();
626
627 Map2ZoneCoordinates(zoneX, zoneY, zoneId);
628
629 float groundZ = object->GetMapHeight(object->GetPositionX(), object->GetPositionY(), MAX_HEIGHT);
630 float floorZ = object->GetMapHeight(object->GetPositionX(), object->GetPositionY(), object->GetPositionZ());
631
632 uint32 haveMap = GridTerrainLoader::ExistMap(object->GetMapId(), cell.GridX(), cell.GridY()) ? 1 : 0;
633 uint32 haveVMap = GridTerrainLoader::ExistVMap(object->GetMapId(), cell.GridX(), cell.GridY()) ? 1 : 0;
634 uint32 haveMMAP = handler->GetSession()->GetPlayer()->GetMap()->GetMapCollisionData().GetMMapData().GetNavMesh() ? 1 : 0;
635
636 if (haveVMap)
637 {
638 if (object->IsOutdoors())
639 {
640 handler->PSendSysMessage("You are outdoors");
641 }
642 else
643 {
644 handler->PSendSysMessage("You are indoors");
645 }
646 }
647 else
648 {
649 handler->PSendSysMessage("no VMAP available for area info");
650 }
651
653 object->GetMapId(), (mapEntry ? mapEntry->name[handler->GetSessionDbcLocale()] : "<unknown>"),
654 zoneId, (zoneEntry ? zoneEntry->area_name[handler->GetSessionDbcLocale()] : "<unknown>"),
655 areaId, (areaEntry ? areaEntry->area_name[handler->GetSessionDbcLocale()] : "<unknown>"),
656 object->GetPhaseMask(),
657 object->GetPositionX(), object->GetPositionY(), object->GetPositionZ(), object->GetOrientation(),
658 cell.GridX(), cell.GridY(), cell.CellX(), cell.CellY(), object->GetInstanceId(),
659 zoneX, zoneY, groundZ, floorZ, haveMap, haveVMap, haveMMAP);
660
661 LiquidData const& liquidData = object->GetLiquidData();
662
663 if (liquidData.Status)
664 {
665 handler->PSendSysMessage(LANG_LIQUID_STATUS, liquidData.Level, liquidData.DepthLevel, liquidData.Entry, liquidData.Flags, liquidData.Status);
666 }
667
668 if (object->GetTransport())
669 {
670 handler->PSendSysMessage("Transport offset: {:0.2f}, {:0.2f}, {:0.2f}, {:0.2f}", object->m_movementInfo.transport.pos.GetPositionX(), object->m_movementInfo.transport.pos.GetPositionY(), object->m_movementInfo.transport.pos.GetPositionZ(), object->m_movementInfo.transport.pos.GetOrientation());
671 }
672
673 return true;
674 }
void Map2ZoneCoordinates(float &x, float &y, uint32 zone)
Definition DBCStores.cpp:748
DBCStorage< MapEntry > sMapStore(MapEntryfmt)
DBCStorage< AreaTableEntry > sAreaTableStore(AreaTableEntryfmt)
#define MAX_HEIGHT
Definition GridTerrainData.h:26
@ LANG_LIQUID_STATUS
Definition Language.h:219
@ LANG_MAP_POSITION
Definition Language.h:137
static bool ExistVMap(uint32 mapid, int gx, int gy)
Definition GridTerrainLoader.cpp:121
static bool ExistMap(uint32 mapid, int gx, int gy)
Definition GridTerrainLoader.cpp:94
dtNavMesh const * GetNavMesh() const
Definition MapCollisionData.h:62
MMapData & GetMMapData()
Definition MapCollisionData.h:86
MapCollisionData & GetMapCollisionData()
Definition Map.h:564
uint32 GetMapId() const
Definition Position.h:281
bool IsOutdoors() const
Definition Object.cpp:3136
CellCoord ComputeCellCoord(float x, float y)
Definition GridDefines.h:197
Definition DBCStructure.h:519
Definition Cell.h:45
Definition GridTerrainData.h:199
float Level
Definition GridTerrainData.h:204
uint32 Flags
Definition GridTerrainData.h:203
uint32 Entry
Definition GridTerrainData.h:202
LiquidStatus Status
Definition GridTerrainData.h:206
float DepthLevel
Definition GridTerrainData.h:205
Definition DBCStructure.h:1325
char const * name[16]
Definition DBCStructure.h:1331

References AreaTableEntry::area_name, Cell::CellX(), Cell::CellY(), Acore::ComputeCellCoord(), LiquidData::DepthLevel, LiquidData::Entry, GridTerrainLoader::ExistMap(), GridTerrainLoader::ExistVMap(), LiquidData::Flags, Acore::ChatCommands::PlayerIdentifier::FromTargetOrSelf(), WorldObject::GetMap(), Map::GetMapCollisionData(), WorldLocation::GetMapId(), MapCollisionData::GetMMapData(), MMapData::GetNavMesh(), WorldObject::GetPhaseMask(), WorldSession::GetPlayer(), Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), ChatHandler::getSelectedUnit(), ChatHandler::GetSession(), ChatHandler::GetSessionDbcLocale(), WorldObject::GetTransport(), Cell::GridX(), Cell::GridY(), WorldObject::IsOutdoors(), LANG_LIQUID_STATUS, LANG_MAP_POSITION, LiquidData::Level, WorldObject::m_movementInfo, Map2ZoneCoordinates(), MAX_HEIGHT, MapEntry::name, MovementInfo::TransportInfo::pos, ChatHandler::PSendSysMessage(), sAreaTableStore, sMapStore, LiquidData::Status, and MovementInfo::transport.

Referenced by GetCommands().

◆ HandleGroupSummonCommand()

static bool misc_commandscript::HandleGroupSummonCommand ( ChatHandler handler,
Optional< PlayerIdentifier target 
)
inlinestatic
1079 {
1080 if (!target)
1081 {
1082 target = PlayerIdentifier::FromTargetOrSelf(handler);
1083 }
1084
1085 if (!target || !target->IsConnected())
1086 {
1087 return false;
1088 }
1089
1090 // check online security
1091 if (handler->HasLowerSecurity(target->GetConnectedPlayer()))
1092 {
1093 return false;
1094 }
1095
1096 auto targetPlayer = target->GetConnectedPlayer();
1097
1098 Group* group = targetPlayer->GetGroup();
1099
1100 std::string nameLink = handler->playerLink(target->GetName());
1101
1102 if (!group)
1103 {
1104 handler->SendErrorMessage(LANG_NOT_IN_GROUP, nameLink);
1105 return false;
1106 }
1107
1108 Map* gmMap = handler->GetSession()->GetPlayer()->GetMap();
1109 bool toInstance = gmMap->Instanceable();
1110
1111 // we are in instance, and can summon only player in our group with us as lead
1112 if (toInstance && (
1113 !handler->GetSession()->GetPlayer()->GetGroup() || (group->GetLeaderGUID() != handler->GetSession()->GetPlayer()->GetGUID()) ||
1114 (handler->GetSession()->GetPlayer()->GetGroup()->GetLeaderGUID() != handler->GetSession()->GetPlayer()->GetGUID())))
1115 // the last check is a bit excessive, but let it be, just in case
1116 {
1118 return false;
1119 }
1120
1121 for (GroupReference* itr = group->GetFirstMember(); itr != nullptr; itr = itr->next())
1122 {
1123 Player* player = itr->GetSource();
1124
1125 if (!player || player == handler->GetSession()->GetPlayer() || !player->GetSession())
1126 {
1127 continue;
1128 }
1129
1130 // check online security
1131 if (handler->HasLowerSecurity(player))
1132 {
1133 return false;
1134 }
1135
1136 std::string plNameLink = handler->GetNameLink(player);
1137
1138 if (player->IsBeingTeleported())
1139 {
1140 handler->SendErrorMessage(LANG_IS_TELEPORTED, plNameLink);
1141 return false;
1142 }
1143
1144 if (toInstance)
1145 {
1146 Map* playerMap = player->GetMap();
1147
1148 if (playerMap->Instanceable() && playerMap->GetInstanceId() != gmMap->GetInstanceId())
1149 {
1150 // cannot summon from instance to instance
1151 handler->SendErrorMessage(LANG_CANNOT_SUMMON_TO_INST, plNameLink);
1152 return false;
1153 }
1154 }
1155
1156 handler->PSendSysMessage(LANG_SUMMONING, plNameLink, "");
1157 if (handler->needReportToTarget(player))
1158 {
1160 }
1161
1162 // stop flight if need
1163 if (player->IsInFlight())
1164 {
1165 player->GetMotionMaster()->MovementExpired();
1166 player->CleanupAfterTaxiFlight();
1167 }
1168 // save only in non-flight case
1169 else
1170 {
1171 player->SaveRecallPosition();
1172 }
1173
1174 // before GM
1175 float x, y, z;
1176 handler->GetSession()->GetPlayer()->GetClosePoint(x, y, z, player->GetObjectSize());
1177 player->TeleportTo(handler->GetSession()->GetPlayer()->GetMapId(), x, y, z, player->GetOrientation(), 0, handler->GetSession()->GetPlayer());
1178 }
1179
1180 return true;
1181 }
@ LANG_SUMMONING
Definition Language.h:144
@ LANG_NOT_IN_GROUP
Definition Language.h:153
@ LANG_IS_TELEPORTED
Definition Language.h:138
@ LANG_CANNOT_SUMMON_TO_INST
Definition Language.h:139
@ LANG_SUMMONED_BY
Definition Language.h:145
Definition Chat.h:37
virtual bool needReportToTarget(Player *chr) const
Definition Chat.cpp:872
Definition GroupReference.h:27
Definition Group.h:169
GroupReference * GetFirstMember()
Definition Group.h:243
ObjectGuid GetLeaderGUID() const
Definition Group.cpp:2309
bool Instanceable() const
Definition Map.h:296
uint32 GetInstanceId() const
Definition Map.h:268
bool IsBeingTeleported() const
Definition Player.h:2110
bool GetClosePoint(float &x, float &y, float &z, float size, float distance2d=0, float angle=0, WorldObject const *forWho=nullptr, bool force=false) const
Definition Object.cpp:2765
float GetObjectSize() const
Definition Object.cpp:2837

References Player::CleanupAfterTaxiFlight(), Acore::ChatCommands::PlayerIdentifier::FromTargetOrSelf(), WorldObject::GetClosePoint(), Group::GetFirstMember(), Player::GetGroup(), Object::GetGUID(), Map::GetInstanceId(), Group::GetLeaderGUID(), WorldObject::GetMap(), WorldLocation::GetMapId(), Unit::GetMotionMaster(), ChatHandler::GetNameLink(), WorldObject::GetObjectSize(), Position::GetOrientation(), WorldSession::GetPlayer(), ChatHandler::GetSession(), Player::GetSession(), ChatHandler::HasLowerSecurity(), Map::Instanceable(), Player::IsBeingTeleported(), Unit::IsInFlight(), LANG_CANNOT_SUMMON_TO_INST, LANG_IS_TELEPORTED, LANG_NOT_IN_GROUP, LANG_SUMMONED_BY, LANG_SUMMONING, MotionMaster::MovementExpired(), ChatHandler::needReportToTarget(), ChatHandler::playerLink(), ChatHandler::PSendSysMessage(), Player::SaveRecallPosition(), ChatHandler::SendErrorMessage(), and Player::TeleportTo().

Referenced by GetCommands().

◆ HandleGUIDCommand()

static bool misc_commandscript::HandleGUIDCommand ( ChatHandler handler)
inlinestatic
1276 {
1277 ObjectGuid guid = handler->GetSession()->GetPlayer()->GetTarget();
1278
1279 if (!guid)
1280 {
1282 return false;
1283 }
1284
1285 handler->PSendSysMessage(LANG_OBJECT_GUID, guid.ToString());
1286 return true;
1287 }
@ LANG_OBJECT_GUID
Definition Language.h:246
@ LANG_NO_SELECTION
Definition Language.h:245
Definition ObjectGuid.h:118
std::string ToString() const
Definition ObjectGuid.cpp:47

References WorldSession::GetPlayer(), ChatHandler::GetSession(), Unit::GetTarget(), LANG_NO_SELECTION, LANG_OBJECT_GUID, ChatHandler::PSendSysMessage(), ChatHandler::SendErrorMessage(), and ObjectGuid::ToString().

Referenced by GetCommands().

◆ HandleHelpCommand()

static bool misc_commandscript::HandleHelpCommand ( ChatHandler handler,
Tail  cmd 
)
inlinestatic
1290 {
1292
1293 if (cmd.empty())
1294 {
1296 }
1297
1298 return true;
1299 }

References Acore::ChatCommands::SendCommandHelpFor().

Referenced by GetCommands().

◆ HandleHideAreaCommand()

static bool misc_commandscript::HandleHideAreaCommand ( ChatHandler handler,
uint32  areaID 
)
inlinestatic
1719 {
1720 Player* playerTarget = handler->getSelectedPlayer();
1721 if (!playerTarget)
1722 {
1724 return false;
1725 }
1726
1727 AreaTableEntry const* area = sAreaTableStore.LookupEntry(areaID);
1728 if (!area)
1729 {
1731 return false;
1732 }
1733
1734 int32 offset = area->exploreFlag / 32;
1735 if (offset >= PLAYER_EXPLORED_ZONES_SIZE)
1736 {
1738 return false;
1739 }
1740
1741 uint32 val = uint32((1 << (area->exploreFlag % 32)));
1742 uint32 currFields = playerTarget->GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset);
1743 playerTarget->SetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset, uint32((currFields ^ val)));
1744
1746 return true;
1747 }
@ LANG_UNEXPLORE_AREA
Definition Language.h:626
@ LANG_NO_CHAR_SELECTED
Definition Language.h:152
@ LANG_BAD_VALUE
Definition Language.h:151
#define PLAYER_EXPLORED_ZONES_SIZE
Definition Player.h:73
@ PLAYER_EXPLORED_ZONES_1
Definition UpdateFields.h:357
virtual void SendSysMessage(std::string_view str, bool escapeCharacters=false)
Definition Chat.cpp:168
uint32 GetUInt32Value(uint16 index) const
Definition Object.cpp:294
void SetUInt32Value(uint16 index, uint32 value)
Definition Unit.cpp:17358
uint32 exploreFlag
Definition DBCStructure.h:523

References AreaTableEntry::exploreFlag, ChatHandler::getSelectedPlayer(), Object::GetUInt32Value(), LANG_BAD_VALUE, LANG_NO_CHAR_SELECTED, LANG_UNEXPLORE_AREA, PLAYER_EXPLORED_ZONES_1, PLAYER_EXPLORED_ZONES_SIZE, sAreaTableStore, ChatHandler::SendErrorMessage(), ChatHandler::SendSysMessage(), and Unit::SetUInt32Value().

Referenced by GetCommands().

◆ HandleKickPlayerCommand()

static bool misc_commandscript::HandleKickPlayerCommand ( ChatHandler handler,
Optional< PlayerIdentifier target,
Optional< std::string_view >  reason 
)
inlinestatic
1436 {
1437 if (!target)
1438 {
1439 target = PlayerIdentifier::FromTargetOrSelf(handler);
1440 }
1441
1442 if (!target || !target->IsConnected())
1443 {
1444 return false;
1445 }
1446
1447 auto targetPlayer = target->GetConnectedPlayer();
1448
1449 if (handler->GetSession() && target->GetGUID() == handler->GetSession()->GetPlayer()->GetGUID())
1450 {
1452 return false;
1453 }
1454
1455 // check online security
1456 if (handler->HasLowerSecurity(targetPlayer))
1457 {
1458 return false;
1459 }
1460
1461 std::string kickReasonStr = handler->GetAcoreString(LANG_NO_REASON);
1462 if (reason && !reason->empty())
1463 {
1464 kickReasonStr = std::string{ *reason };
1465 }
1466
1467 if (sWorld->getBoolConfig(CONFIG_SHOW_KICK_IN_WORLD))
1468 {
1469 handler->SendWorldText(LANG_COMMAND_KICKMESSAGE_WORLD, (handler->GetSession() ? handler->GetSession()->GetPlayerName() : "Server"), target->GetName(), kickReasonStr);
1470 }
1471 else
1472 {
1473 handler->PSendSysMessage(LANG_COMMAND_KICKMESSAGE, target->GetName());
1474 }
1475
1476 targetPlayer->GetSession()->KickPlayer("HandleKickPlayerCommand");
1477
1478 return true;
1479 }
@ LANG_COMMAND_KICKSELF
Definition Language.h:334
@ LANG_COMMAND_KICKMESSAGE_WORLD
Definition Language.h:1370
@ LANG_NO_REASON
Definition Language.h:818
@ LANG_COMMAND_KICKMESSAGE
Definition Language.h:335
@ CONFIG_SHOW_KICK_IN_WORLD
Definition WorldConfig.h:88
void SendWorldText(std::string_view str)
Definition Chat.cpp:139
const std::string & GetName() const
Definition ScriptObject.h:53
std::string const & GetPlayerName() const
Definition WorldSession.cpp:246

References CONFIG_SHOW_KICK_IN_WORLD, Acore::ChatCommands::PlayerIdentifier::FromTargetOrSelf(), ChatHandler::GetAcoreString(), Object::GetGUID(), WorldSession::GetPlayer(), WorldSession::GetPlayerName(), ChatHandler::GetSession(), ChatHandler::HasLowerSecurity(), LANG_COMMAND_KICKMESSAGE, LANG_COMMAND_KICKMESSAGE_WORLD, LANG_COMMAND_KICKSELF, LANG_NO_REASON, ChatHandler::PSendSysMessage(), ChatHandler::SendErrorMessage(), ChatHandler::SendWorldText(), and sWorld.

Referenced by GetCommands().

◆ HandleLinkGraveCommand()

static bool misc_commandscript::HandleLinkGraveCommand ( ChatHandler handler,
uint32  graveyardId,
Optional< std::string_view >  team 
)
inlinestatic
1560 {
1561 TeamId teamId;
1562
1563 if (!team)
1564 {
1565 teamId = TEAM_NEUTRAL;
1566 }
1567 else if (StringEqualI(team->substr(0, 6), "horde"))
1568 {
1569 teamId = TEAM_HORDE;
1570 }
1571 else if (StringEqualI(team->substr(0, 9), "alliance"))
1572 {
1573 teamId = TEAM_ALLIANCE;
1574 }
1575 else
1576 {
1577 return false;
1578 }
1579
1580 GraveyardStruct const* graveyard = sGraveyard->GetGraveyard(graveyardId);
1581
1582 if (!graveyard)
1583 {
1584 handler->SendErrorMessage(LANG_COMMAND_GRAVEYARDNOEXIST, graveyardId);
1585 return false;
1586 }
1587
1588 Player* player = handler->GetSession()->GetPlayer();
1589 uint32 zoneId = player->GetZoneId();
1590
1591 AreaTableEntry const* areaEntry = sAreaTableStore.LookupEntry(zoneId);
1592 if (!areaEntry || areaEntry->zone != 0)
1593 {
1594 handler->SendErrorMessage(LANG_COMMAND_GRAVEYARDWRONGZONE, graveyardId, zoneId);
1595 return false;
1596 }
1597
1598 if (sGraveyard->AddGraveyardLink(graveyardId, zoneId, teamId))
1599 {
1600 handler->PSendSysMessage(LANG_COMMAND_GRAVEYARDLINKED, graveyardId, zoneId);
1601 }
1602 else
1603 {
1604 handler->PSendSysMessage(LANG_COMMAND_GRAVEYARDALRLINKED, graveyardId, zoneId);
1605 }
1606
1607 return true;
1608 }
#define sGraveyard
Definition GameGraveyard.h:74
@ LANG_COMMAND_GRAVEYARDALRLINKED
Definition Language.h:491
@ LANG_COMMAND_GRAVEYARDNOEXIST
Definition Language.h:490
@ LANG_COMMAND_GRAVEYARDWRONGZONE
Definition Language.h:493
@ LANG_COMMAND_GRAVEYARDLINKED
Definition Language.h:492
TeamId
Definition SharedDefines.h:747
@ TEAM_ALLIANCE
Definition SharedDefines.h:748
@ TEAM_HORDE
Definition SharedDefines.h:749
bool StringEqualI(std::string_view a, std::string_view b)
Definition Util.cpp:592
uint32 zone
Definition DBCStructure.h:522
Definition GameGraveyard.h:27

References WorldSession::GetPlayer(), ChatHandler::GetSession(), WorldObject::GetZoneId(), LANG_COMMAND_GRAVEYARDALRLINKED, LANG_COMMAND_GRAVEYARDLINKED, LANG_COMMAND_GRAVEYARDNOEXIST, LANG_COMMAND_GRAVEYARDWRONGZONE, ChatHandler::PSendSysMessage(), sAreaTableStore, ChatHandler::SendErrorMessage(), sGraveyard, StringEqualI(), TEAM_ALLIANCE, TEAM_HORDE, TEAM_NEUTRAL, and AreaTableEntry::zone.

Referenced by GetCommands().

◆ HandleMailBoxCommand()

static bool misc_commandscript::HandleMailBoxCommand ( ChatHandler handler)
inlinestatic
3116 {
3117 Player* player = handler->GetSession()->GetPlayer();
3118 handler->GetSession()->SendShowMailBox(player->GetGUID());
3119 return true;
3120 }
void SendShowMailBox(ObjectGuid guid)
Definition NPCHandler.cpp:75

References Object::GetGUID(), WorldSession::GetPlayer(), ChatHandler::GetSession(), and WorldSession::SendShowMailBox().

Referenced by GetCommands().

◆ HandleMaxSkillCommand()

static bool misc_commandscript::HandleMaxSkillCommand ( ChatHandler handler)
inlinestatic
1937 {
1938 Player* SelectedPlayer = handler->getSelectedPlayer();
1939 if (!SelectedPlayer)
1940 {
1942 return false;
1943 }
1944
1945 // each skills that have max skill value dependent from level seted to current level max skill value
1946 SelectedPlayer->UpdateSkillsToMaxSkillsForLevel();
1947 return true;
1948 }
void UpdateSkillsToMaxSkillsForLevel()
Definition PlayerUpdates.cpp:1128

References ChatHandler::getSelectedPlayer(), LANG_NO_CHAR_SELECTED, ChatHandler::SendErrorMessage(), and Player::UpdateSkillsToMaxSkillsForLevel().

Referenced by GetCommands().

◆ HandleMovegensCommand()

static bool misc_commandscript::HandleMovegensCommand ( ChatHandler handler)
inlinestatic
2754 {
2755 Unit* unit = handler->getSelectedUnit();
2756 if (!unit)
2757 {
2759 return false;
2760 }
2761
2762 handler->PSendSysMessage(LANG_MOVEGENS_LIST, (unit->IsPlayer() ? "Player" : "Creature"), unit->GetGUID().ToString());
2763
2764 MotionMaster* motionMaster = unit->GetMotionMaster();
2765 float x, y, z;
2766 motionMaster->GetDestination(x, y, z);
2767
2768 for (uint8 i = 0; i < MAX_MOTION_SLOT; ++i)
2769 {
2770 MovementGenerator* movementGenerator = motionMaster->GetMotionSlot(i);
2771 if (!movementGenerator)
2772 {
2773 handler->SendSysMessage("Empty");
2774 continue;
2775 }
2776
2777 switch (movementGenerator->GetMovementGeneratorType())
2778 {
2779 case IDLE_MOTION_TYPE:
2781 break;
2782 case RANDOM_MOTION_TYPE:
2784 break;
2787 break;
2790 break;
2793 break;
2794 case CHASE_MOTION_TYPE:
2795 {
2796 Unit* target = nullptr;
2797 if (unit->IsPlayer())
2798 {
2799 target = static_cast<ChaseMovementGenerator<Player> const*>(movementGenerator)->GetTarget();
2800 }
2801 else
2802 {
2803 target = static_cast<ChaseMovementGenerator<Creature> const*>(movementGenerator)->GetTarget();
2804 }
2805
2806 if (!target)
2807 {
2809 }
2810 else if (target->IsPlayer())
2811 {
2812 handler->PSendSysMessage(LANG_MOVEGENS_CHASE_PLAYER, target->GetName(), target->GetGUID().ToString());
2813 }
2814 else
2815 {
2816 handler->PSendSysMessage(LANG_MOVEGENS_CHASE_CREATURE, target->GetName(), target->GetGUID().ToString());
2817 }
2818 break;
2819 }
2820 case FOLLOW_MOTION_TYPE:
2821 {
2822 Unit* target = nullptr;
2823 if (unit->IsPlayer())
2824 {
2825 target = static_cast<FollowMovementGenerator<Player> const*>(movementGenerator)->GetTarget();
2826 }
2827 else
2828 {
2829 target = static_cast<FollowMovementGenerator<Creature> const*>(movementGenerator)->GetTarget();
2830 }
2831
2832 if (!target)
2833 {
2835 }
2836 else if (target->IsPlayer())
2837 {
2838 handler->PSendSysMessage(LANG_MOVEGENS_FOLLOW_PLAYER, target->GetName(), target->GetGUID().ToString());
2839 }
2840 else
2841 {
2842 handler->PSendSysMessage(LANG_MOVEGENS_FOLLOW_CREATURE, target->GetName(), target->GetGUID().ToString());
2843 }
2844 break;
2845 }
2846 case HOME_MOTION_TYPE:
2847 {
2848 if (unit->IsCreature())
2849 {
2851 }
2852 else
2853 {
2855 }
2856 break;
2857 }
2858 case FLIGHT_MOTION_TYPE:
2860 break;
2861 case POINT_MOTION_TYPE:
2862 {
2863 handler->PSendSysMessage(LANG_MOVEGENS_POINT, x, y, z);
2864 break;
2865 }
2868 break;
2871 break;
2872 case EFFECT_MOTION_TYPE:
2874 break;
2875 default:
2876 handler->PSendSysMessage(LANG_MOVEGENS_UNKNOWN, movementGenerator->GetMovementGeneratorType());
2877 break;
2878 }
2879 }
2880 return true;
2881 }
std::uint8_t uint8
Definition Define.h:109
@ LANG_MOVEGENS_FOLLOW_PLAYER
Definition Language.h:940
@ LANG_MOVEGENS_EFFECT
Definition Language.h:943
@ LANG_MOVEGENS_UNKNOWN
Definition Language.h:593
@ LANG_MOVEGENS_CHASE_PLAYER
Definition Language.h:587
@ LANG_MOVEGENS_IDLE
Definition Language.h:582
@ LANG_MOVEGENS_CONFUSED
Definition Language.h:586
@ LANG_MOVEGENS_FOLLOW_CREATURE
Definition Language.h:941
@ LANG_MOVEGENS_FOLLOW_NULL
Definition Language.h:942
@ LANG_MOVEGENS_DISTRACT
Definition Language.h:661
@ LANG_MOVEGENS_CHASE_CREATURE
Definition Language.h:588
@ LANG_MOVEGENS_RANDOM
Definition Language.h:583
@ LANG_MOVEGENS_WAYPOINT
Definition Language.h:584
@ LANG_MOVEGENS_POINT
Definition Language.h:659
@ LANG_MOVEGENS_ANIMAL_RANDOM
Definition Language.h:585
@ LANG_MOVEGENS_CHASE_NULL
Definition Language.h:589
@ LANG_MOVEGENS_FLIGHT
Definition Language.h:592
@ LANG_MOVEGENS_HOME_CREATURE
Definition Language.h:590
@ LANG_MOVEGENS_HOME_PLAYER
Definition Language.h:591
@ LANG_MOVEGENS_LIST
Definition Language.h:581
@ LANG_MOVEGENS_FEAR
Definition Language.h:660
@ MAX_MOTION_SLOT
Definition MotionMaster.h:67
@ DISTRACT_MOTION_TYPE
Definition MotionMaster.h:50
@ IDLE_MOTION_TYPE
Definition MotionMaster.h:39
@ CHASE_MOTION_TYPE
Definition MotionMaster.h:45
@ WAYPOINT_MOTION_TYPE
Definition MotionMaster.h:41
@ FLEEING_MOTION_TYPE
Definition MotionMaster.h:49
@ CONFUSED_MOTION_TYPE
Definition MotionMaster.h:44
@ HOME_MOTION_TYPE
Definition MotionMaster.h:46
@ POINT_MOTION_TYPE
Definition MotionMaster.h:48
@ FLIGHT_MOTION_TYPE
Definition MotionMaster.h:47
@ FOLLOW_MOTION_TYPE
Definition MotionMaster.h:54
@ ANIMAL_RANDOM_MOTION_TYPE
Definition MotionMaster.h:43
@ RANDOM_MOTION_TYPE
Definition MotionMaster.h:40
@ EFFECT_MOTION_TYPE
Definition MotionMaster.h:56
Definition TargetedMovementGenerator.h:38
Definition TargetedMovementGenerator.h:82
Definition MotionMaster.h:138
_Ty GetMotionSlot(int slot) const
Definition MotionMaster.h:181
bool GetDestination(float &x, float &y, float &z)
Definition MotionMaster.cpp:1024
Definition MovementGenerator.h:28
virtual MovementGeneratorType GetMovementGeneratorType()=0
std::string const & GetName() const
Definition Object.h:528
std::string ToString(Type &&val, Params &&... params)
Definition StringConvert.h:250

References ANIMAL_RANDOM_MOTION_TYPE, CHASE_MOTION_TYPE, CONFUSED_MOTION_TYPE, DISTRACT_MOTION_TYPE, EFFECT_MOTION_TYPE, FLEEING_MOTION_TYPE, FLIGHT_MOTION_TYPE, FOLLOW_MOTION_TYPE, MotionMaster::GetDestination(), Object::GetGUID(), Unit::GetMotionMaster(), MotionMaster::GetMotionSlot(), MovementGenerator::GetMovementGeneratorType(), WorldObject::GetName(), ChatHandler::getSelectedUnit(), HOME_MOTION_TYPE, IDLE_MOTION_TYPE, Object::IsCreature(), Object::IsPlayer(), LANG_MOVEGENS_ANIMAL_RANDOM, LANG_MOVEGENS_CHASE_CREATURE, LANG_MOVEGENS_CHASE_NULL, LANG_MOVEGENS_CHASE_PLAYER, LANG_MOVEGENS_CONFUSED, LANG_MOVEGENS_DISTRACT, LANG_MOVEGENS_EFFECT, LANG_MOVEGENS_FEAR, LANG_MOVEGENS_FLIGHT, LANG_MOVEGENS_FOLLOW_CREATURE, LANG_MOVEGENS_FOLLOW_NULL, LANG_MOVEGENS_FOLLOW_PLAYER, LANG_MOVEGENS_HOME_CREATURE, LANG_MOVEGENS_HOME_PLAYER, LANG_MOVEGENS_IDLE, LANG_MOVEGENS_LIST, LANG_MOVEGENS_POINT, LANG_MOVEGENS_RANDOM, LANG_MOVEGENS_UNKNOWN, LANG_MOVEGENS_WAYPOINT, LANG_SELECT_CHAR_OR_CREATURE, MAX_MOTION_SLOT, POINT_MOTION_TYPE, ChatHandler::PSendSysMessage(), RANDOM_MOTION_TYPE, ChatHandler::SendErrorMessage(), ChatHandler::SendSysMessage(), ObjectGuid::ToString(), and WAYPOINT_MOTION_TYPE.

Referenced by GetCommands().

◆ HandleMuteCommand()

static bool misc_commandscript::HandleMuteCommand ( ChatHandler handler,
Optional< PlayerIdentifier player,
std::string  notSpeakTime,
Tail  muteReason 
)
inlinestatic
2530 {
2531 std::string muteReasonStr{ muteReason };
2532
2533 if (notSpeakTime.empty())
2534 {
2535 return false;
2536 }
2537
2538 if (Acore::StringTo<int32>(notSpeakTime).value_or(0) < 0)
2539 {
2541 return false;
2542 }
2543
2544 if (muteReason.empty())
2545 {
2546 muteReasonStr = handler->GetAcoreString(LANG_NO_REASON);
2547 }
2548
2549 if (!player)
2550 {
2551 player = PlayerIdentifier::FromTarget(handler);
2552 }
2553
2554 if (!player)
2555 {
2557 return false;
2558 }
2559
2560 Player* target = player->GetConnectedPlayer();
2561 uint32 accountId = target ? target->GetSession()->GetAccountId() : sCharacterCache->GetCharacterAccountIdByGuid(player->GetGUID());
2562
2563 // find only player from same account if any
2564 if (!target)
2565 if (WorldSession* session = sWorldSessionMgr->FindSession(accountId))
2566 {
2567 target = session->GetPlayer();
2568 }
2569
2570 // must have strong lesser security level
2571 if (handler->HasLowerSecurity(target, player->GetGUID(), true))
2572 {
2573 return false;
2574 }
2575
2577 int32 muteDuration = TimeStringToSecs(notSpeakTime);
2578 if (muteDuration <= 0)
2579 {
2580 muteDuration = Acore::StringTo<int32>(notSpeakTime).value_or(0);
2581 }
2582
2583 if (muteDuration <= 0)
2584 {
2586 return false;
2587 }
2588
2589 std::string muteBy = "";
2590 if (handler->GetSession())
2591 {
2592 muteBy = handler->GetSession()->GetPlayerName();
2593 }
2594 else
2595 {
2596 muteBy = handler->GetAcoreString(LANG_CONSOLE);
2597 }
2598
2599 if (target)
2600 {
2601 // Target is online, mute will be in effect right away.
2602 int64 muteTime = GameTime::GetGameTime().count() + muteDuration;
2603 target->GetSession()->m_muteTime = muteTime;
2604 stmt->SetData(0, muteTime);
2605 std::string nameLink = handler->playerLink(player->GetName());
2606
2607 if (sWorld->getBoolConfig(CONFIG_SHOW_MUTE_IN_WORLD))
2608 {
2609 handler->SendWorldText(LANG_COMMAND_MUTEMESSAGE_WORLD, muteBy, nameLink, secsToTimeString(muteDuration, true), muteReasonStr);
2610 }
2611
2612 ChatHandler(target->GetSession()).PSendSysMessage(LANG_YOUR_CHAT_DISABLED, secsToTimeString(muteDuration, true), muteBy, muteReasonStr);
2613 }
2614 else
2615 {
2616 // Target is offline, mute will be in effect starting from the next login.
2617 stmt->SetData(0, -int32(muteDuration));
2618 }
2619
2620 stmt->SetData(1, muteReasonStr);
2621 stmt->SetData(2, muteBy);
2622 stmt->SetData(3, accountId);
2623 LoginDatabase.Execute(stmt);
2624
2625 stmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_ACCOUNT_MUTE);
2626 stmt->SetData(0, accountId);
2627 stmt->SetData(1, muteDuration / MINUTE);
2628 stmt->SetData(2, muteBy);
2629 stmt->SetData(3, muteReasonStr);
2630 LoginDatabase.Execute(stmt);
2631
2632 std::string nameLink = handler->playerLink(player->GetName());
2633
2634 if (sWorld->getBoolConfig(CONFIG_SHOW_MUTE_IN_WORLD) && !target)
2635 {
2636 handler->SendWorldText(LANG_COMMAND_MUTEMESSAGE_WORLD, muteBy, nameLink, secsToTimeString(muteDuration, true), muteReasonStr);
2637 }
2638 else
2639 {
2640 // pussywizard: notify all online GMs
2641 std::shared_lock<std::shared_mutex> lock(*HashMapHolder<Player>::GetLock());
2643 for (HashMapHolder<Player>::MapType::const_iterator itr = m.begin(); itr != m.end(); ++itr)
2644 if (itr->second->GetSession()->GetSecurity())
2645 ChatHandler(itr->second->GetSession()).PSendSysMessage(target ? LANG_YOU_DISABLE_CHAT : LANG_COMMAND_DISABLE_CHAT_DELAYED,
2646 (handler->GetSession() ? handler->GetSession()->GetPlayerName() : handler->GetAcoreString(LANG_CONSOLE)), nameLink, secsToTimeString(muteDuration, true), muteReasonStr);
2647 }
2648
2649 return true;
2650 }
#define sCharacterCache
Definition CharacterCache.h:83
constexpr auto MINUTE
Definition Common.h:47
DatabaseWorkerPool< LoginDatabaseConnection > LoginDatabase
Accessor to the realm/login database.
Definition DatabaseEnv.cpp:22
std::int64_t int64
Definition Define.h:102
@ LANG_COMMAND_DISABLE_CHAT_DELAYED
Definition Language.h:336
@ LANG_YOUR_CHAT_DISABLED
Definition Language.h:349
@ LANG_COMMAND_MUTEMESSAGE_WORLD
Definition Language.h:1373
@ LANG_YOU_DISABLE_CHAT
Definition Language.h:350
@ LANG_CONSOLE
Definition Language.h:1101
@ LOGIN_UPD_MUTE_TIME
Definition LoginDatabase.h:72
@ LOGIN_INS_ACCOUNT_MUTE
Definition LoginDatabase.h:121
std::string secsToTimeString(uint64 timeInSecs, bool shortText)
Definition Util.cpp:73
uint32 TimeStringToSecs(const std::string &timestring)
Definition Util.cpp:163
@ CONFIG_SHOW_MUTE_IN_WORLD
Definition WorldConfig.h:89
#define sWorldSessionMgr
Definition WorldSessionMgr.h:108
Definition ObjectAccessor.h:41
std::unordered_map< ObjectGuid, T * > MapType
Definition ObjectAccessor.h:47
Acore::Types::is_default< T > SetData(const uint8 index, T value)
Definition PreparedStatement.h:77
Definition PreparedStatement.h:157
uint32 GetAccountId() const
Definition WorldSession.h:453
time_t m_muteTime
Definition WorldSession.h:585
AC_GAME_API std::string GetAcoreString(ChatHandler const *handler, AcoreStrings which)
Definition ChatCommandHelpers.cpp:27
Seconds GetGameTime()
Definition GameTime.cpp:38
HashMapHolder< Player >::MapType const & GetPlayers()
Definition ObjectAccessor.cpp:75

References CONFIG_SHOW_MUTE_IN_WORLD, Acore::ChatCommands::PlayerIdentifier::FromTarget(), WorldSession::GetAccountId(), ChatHandler::GetAcoreString(), GameTime::GetGameTime(), Object::GetGUID(), WorldSession::GetPlayerName(), ObjectAccessor::GetPlayers(), ChatHandler::GetSession(), Player::GetSession(), ChatHandler::HasLowerSecurity(), LANG_BAD_VALUE, LANG_COMMAND_DISABLE_CHAT_DELAYED, LANG_COMMAND_MUTEMESSAGE_WORLD, LANG_CONSOLE, LANG_NO_REASON, LANG_PLAYER_NOT_FOUND, LANG_YOU_DISABLE_CHAT, LANG_YOUR_CHAT_DISABLED, LOGIN_INS_ACCOUNT_MUTE, LOGIN_UPD_MUTE_TIME, LoginDatabase, WorldSession::m_muteTime, MINUTE, ChatHandler::playerLink(), ChatHandler::PSendSysMessage(), sCharacterCache, secsToTimeString(), ChatHandler::SendErrorMessage(), ChatHandler::SendWorldText(), PreparedStatementBase::SetData(), sWorld, sWorldSessionMgr, and TimeStringToSecs().

Referenced by GetCommands().

◆ HandleMuteInfoCommand()

static bool misc_commandscript::HandleMuteInfoCommand ( ChatHandler handler,
std::string  accountName 
)
inlinestatic
2713 {
2714 if (!Utf8ToUpperOnlyLatin(accountName))
2715 {
2716 handler->SendErrorMessage(LANG_ACCOUNT_NOT_EXIST, accountName);
2717 return false;
2718 }
2719
2720 uint32 accountId = AccountMgr::GetId(accountName);
2721 if (!accountId)
2722 {
2723 handler->PSendSysMessage(LANG_ACCOUNT_NOT_EXIST, accountName);
2724 return false;
2725 }
2726
2727 return HandleMuteInfoHelper(handler, accountId, accountName.c_str());
2728 }
@ LANG_ACCOUNT_NOT_EXIST
Definition Language.h:451
bool Utf8ToUpperOnlyLatin(std::string &utf8String)
Definition Util.cpp:532
static uint32 GetId(std::string const &username)
Definition AccountMgr.cpp:248
static bool HandleMuteInfoHelper(ChatHandler *handler, uint32 accountId, char const *accountName)
Definition cs_misc.cpp:2731

References AccountMgr::GetId(), HandleMuteInfoHelper(), LANG_ACCOUNT_NOT_EXIST, ChatHandler::PSendSysMessage(), ChatHandler::SendErrorMessage(), and Utf8ToUpperOnlyLatin().

Referenced by GetCommands().

◆ HandleMuteInfoHelper()

static bool misc_commandscript::HandleMuteInfoHelper ( ChatHandler handler,
uint32  accountId,
char const *  accountName 
)
inlinestatic
2732 {
2734 stmt->SetData(0, accountId);
2735 PreparedQueryResult result = LoginDatabase.Query(stmt);
2736
2737 if (!result)
2738 {
2739 handler->PSendSysMessage(LANG_COMMAND_MUTEHISTORY_EMPTY, accountName);
2740 return true;
2741 }
2742
2743 handler->PSendSysMessage(LANG_COMMAND_MUTEHISTORY, accountName);
2744 do
2745 {
2746 Field* fields = result->Fetch();
2747 handler->PSendSysMessage(LANG_COMMAND_MUTEHISTORY_OUTPUT, Acore::Time::TimeToHumanReadable(Seconds(fields[0].Get<uint32>())), fields[1].Get<uint32>(), fields[2].Get<std::string>(), fields[3].Get<std::string>());
2748 } while (result->NextRow());
2749
2750 return true;
2751 }
std::shared_ptr< PreparedResultSet > PreparedQueryResult
Definition DatabaseEnvFwd.h:45
std::chrono::seconds Seconds
Seconds shorthand typedef.
Definition Duration.h:30
@ LANG_COMMAND_MUTEHISTORY_OUTPUT
Definition Language.h:1127
@ LANG_COMMAND_MUTEHISTORY_EMPTY
Definition Language.h:1126
@ LANG_COMMAND_MUTEHISTORY
Definition Language.h:1125
@ LOGIN_SEL_ACCOUNT_MUTE_INFO
Definition LoginDatabase.h:122
Class used to access individual fields of database query result.
Definition Field.h:98
AC_COMMON_API std::string TimeToHumanReadable(Seconds time=0s, std::string_view fmt={})
Definition Timer.cpp:287

References LANG_COMMAND_MUTEHISTORY, LANG_COMMAND_MUTEHISTORY_EMPTY, LANG_COMMAND_MUTEHISTORY_OUTPUT, LOGIN_SEL_ACCOUNT_MUTE_INFO, LoginDatabase, ChatHandler::PSendSysMessage(), PreparedStatementBase::SetData(), and Acore::Time::TimeToHumanReadable().

Referenced by HandleMuteInfoCommand().

◆ HandleNearGraveCommand()

static bool misc_commandscript::HandleNearGraveCommand ( ChatHandler handler,
Optional< std::string_view >  team 
)
inlinestatic
1611 {
1612 TeamId teamId;
1613
1614 if (!team)
1615 {
1616 teamId = TEAM_NEUTRAL;
1617 }
1618 else if (StringEqualI(team->substr(0, 6), "horde"))
1619 {
1620 teamId = TEAM_HORDE;
1621 }
1622 else if (StringEqualI(team->substr(0, 9), "alliance"))
1623 {
1624 teamId = TEAM_ALLIANCE;
1625 }
1626 else
1627 {
1628 return false;
1629 }
1630
1631 Player* player = handler->GetSession()->GetPlayer();
1632 uint32 zone_id = player->GetZoneId();
1633
1634 GraveyardStruct const* graveyard = sGraveyard->GetClosestGraveyard(player, teamId);
1635
1636 if (graveyard)
1637 {
1638 uint32 graveyardId = graveyard->ID;
1639
1640 GraveyardData const* data = sGraveyard->FindGraveyardData(graveyardId, zone_id);
1641 if (!data)
1642 {
1643 handler->SendErrorMessage(LANG_COMMAND_GRAVEYARDERROR, graveyardId);
1644 return false;
1645 }
1646
1647 std::string team_name = handler->GetAcoreString(LANG_COMMAND_GRAVEYARD_NOTEAM);
1648
1649 if (data->teamId == TEAM_NEUTRAL)
1650 {
1651 team_name = handler->GetAcoreString(LANG_COMMAND_GRAVEYARD_ANY);
1652 }
1653 else if (data->teamId == TEAM_HORDE)
1654 {
1655 team_name = handler->GetAcoreString(LANG_COMMAND_GRAVEYARD_HORDE);
1656 }
1657 else if (data->teamId == TEAM_ALLIANCE)
1658 {
1659 team_name = handler->GetAcoreString(LANG_COMMAND_GRAVEYARD_ALLIANCE);
1660 }
1661
1662 handler->PSendSysMessage(LANG_COMMAND_GRAVEYARDNEAREST, graveyardId, team_name, zone_id);
1663 }
1664 else
1665 {
1666 std::string team_name;
1667
1668 if (teamId == TEAM_NEUTRAL)
1669 {
1670 team_name = handler->GetAcoreString(LANG_COMMAND_GRAVEYARD_ANY);
1671 }
1672 else if (teamId == TEAM_HORDE)
1673 {
1674 team_name = handler->GetAcoreString(LANG_COMMAND_GRAVEYARD_HORDE);
1675 }
1676 else if (teamId == TEAM_ALLIANCE)
1677 {
1678 team_name = handler->GetAcoreString(LANG_COMMAND_GRAVEYARD_ALLIANCE);
1679 }
1680
1681 handler->PSendSysMessage(LANG_COMMAND_ZONENOGRAFACTION, zone_id, team_name);
1682 }
1683
1684 return true;
1685 }
@ LANG_COMMAND_GRAVEYARD_ALLIANCE
Definition Language.h:498
@ LANG_COMMAND_ZONENOGRAFACTION
Definition Language.h:502
@ LANG_COMMAND_GRAVEYARDNEAREST
Definition Language.h:500
@ LANG_COMMAND_GRAVEYARD_NOTEAM
Definition Language.h:496
@ LANG_COMMAND_GRAVEYARDERROR
Definition Language.h:495
@ LANG_COMMAND_GRAVEYARD_HORDE
Definition Language.h:499
@ LANG_COMMAND_GRAVEYARD_ANY
Definition Language.h:497
Definition GameGraveyard.h:38
TeamId teamId
Definition GameGraveyard.h:40
uint32 ID
Definition GameGraveyard.h:28

References ChatHandler::GetAcoreString(), WorldSession::GetPlayer(), ChatHandler::GetSession(), WorldObject::GetZoneId(), GraveyardStruct::ID, LANG_COMMAND_GRAVEYARD_ALLIANCE, LANG_COMMAND_GRAVEYARD_ANY, LANG_COMMAND_GRAVEYARD_HORDE, LANG_COMMAND_GRAVEYARD_NOTEAM, LANG_COMMAND_GRAVEYARDERROR, LANG_COMMAND_GRAVEYARDNEAREST, LANG_COMMAND_ZONENOGRAFACTION, ChatHandler::PSendSysMessage(), ChatHandler::SendErrorMessage(), sGraveyard, StringEqualI(), TEAM_ALLIANCE, TEAM_HORDE, TEAM_NEUTRAL, and GraveyardData::teamId.

Referenced by GetCommands().

◆ HandleOpenDoorCommand()

static bool misc_commandscript::HandleOpenDoorCommand ( ChatHandler handler,
Optional< float >  range 
)
inlinestatic
3136 {
3137 if (GameObject* go = handler->GetPlayer()->FindNearestGameObjectOfType(GAMEOBJECT_TYPE_DOOR, range ? *range : 5.0f))
3138 {
3139 go->SetGoState(GO_STATE_ACTIVE);
3140 handler->PSendSysMessage(LANG_CMD_DOOR_OPENED, go->GetName(), go->GetEntry());
3141 return true;
3142 }
3143
3144 handler->SendErrorMessage(LANG_CMD_NO_DOOR_FOUND, range ? *range : 5.0f);
3145 return false;
3146 }
@ GO_STATE_ACTIVE
Definition GameObjectData.h:708
@ LANG_CMD_NO_DOOR_FOUND
Definition Language.h:1163
@ LANG_CMD_DOOR_OPENED
Definition Language.h:1164
@ GAMEOBJECT_TYPE_DOOR
Definition SharedDefines.h:1564
Player * GetPlayer() const
Definition Chat.cpp:37
Definition GameObject.h:120
GameObject * FindNearestGameObjectOfType(GameobjectTypes type, float range) const
Definition Object.cpp:2516

References WorldObject::FindNearestGameObjectOfType(), GAMEOBJECT_TYPE_DOOR, ChatHandler::GetPlayer(), GO_STATE_ACTIVE, LANG_CMD_DOOR_OPENED, LANG_CMD_NO_DOOR_FOUND, ChatHandler::PSendSysMessage(), and ChatHandler::SendErrorMessage().

Referenced by GetCommands().

◆ HandlePacketLog()

static bool misc_commandscript::HandlePacketLog ( ChatHandler handler,
Optional< PlayerIdentifier target,
Optional< bool >  enableArg 
)
inlinestatic
3190 {
3191 if (!target)
3192 target = PlayerIdentifier::FromTargetOrSelf(handler);
3193
3194 if (!target || !target->IsConnected())
3195 {
3197 return false;
3198 }
3199
3200 Player* playerTarget = target->GetConnectedPlayer();
3201 WorldSession* session = playerTarget->GetSession();
3202
3203 if (!session)
3204 return false;
3205
3206 if (enableArg)
3207 {
3208 if (*enableArg)
3209 {
3210 session->SetPacketLogging(true);
3211 handler->PSendSysMessage("Packet logging enabled for {}.", playerTarget->GetName());
3212 return true;
3213 }
3214 else
3215 {
3216 session->SetPacketLogging(false);
3217 handler->PSendSysMessage("Packet logging disabled for {}.", playerTarget->GetName());
3218 return true;
3219 }
3220 }
3221
3223 return false;
3224 }
void SetPacketLogging(bool state)
Definition WorldSession.cpp:1521

References Acore::ChatCommands::PlayerIdentifier::FromTargetOrSelf(), WorldObject::GetName(), Player::GetSession(), LANG_PLAYER_NOT_FOUND, LANG_USE_BOL, ChatHandler::PSendSysMessage(), ChatHandler::SendErrorMessage(), and WorldSession::SetPacketLogging().

Referenced by GetCommands().

◆ HandlePInfoCommand()

static bool misc_commandscript::HandlePInfoCommand ( ChatHandler handler,
Optional< PlayerIdentifier target 
)
inlinestatic
1995 {
1996 if (!target)
1997 {
1998 target = PlayerIdentifier::FromTargetOrSelf(handler);
1999 }
2000
2001 if (!target)
2002 {
2003 return false;
2004 }
2005
2006 Player* playerTarget = target->GetConnectedPlayer();
2007
2008 CharacterDatabasePreparedStatement* stmt = nullptr;
2009 LoginDatabasePreparedStatement* loginStmt = nullptr;
2010
2011 // Account data print variables
2012 std::string userName = handler->GetAcoreString(LANG_ERROR);
2013 ObjectGuid::LowType lowguid = target->GetGUID().GetCounter();
2014 uint32 accId = 0;
2015 std::string eMail = handler->GetAcoreString(LANG_ERROR);
2016 std::string regMail = handler->GetAcoreString(LANG_ERROR);
2017 uint32 security = 0;
2018 std::string lastIp = handler->GetAcoreString(LANG_ERROR);
2019 uint8 locked = 0;
2020 std::string lastLogin = handler->GetAcoreString(LANG_ERROR);
2021 uint32 failedLogins = 0;
2022 uint32 latency = 0;
2023 std::string OS = handler->GetAcoreString(LANG_UNKNOWN);
2024
2025 // Mute data print variables
2026 int64 muteTime = -1;
2027 std::string muteReason = handler->GetAcoreString(LANG_NO_REASON);
2028 std::string muteBy = handler->GetAcoreString(LANG_UNKNOWN);
2029
2030 // Ban data print variables
2031 int64 banTime = -1;
2032 std::string banType = handler->GetAcoreString(LANG_UNKNOWN);
2033 std::string banReason = handler->GetAcoreString(LANG_NO_REASON);
2034 std::string bannedBy = handler->GetAcoreString(LANG_UNKNOWN);
2035
2036 // Character data print variables
2037 uint8 raceid, classid = 0; //RACE_NONE, CLASS_NONE
2038 std::string raceStr, classStr = handler->GetAcoreString(LANG_UNKNOWN);
2039 uint8 gender = 0;
2040 int8 locale = handler->GetSessionDbcLocale();
2041 uint32 totalPlayerTime = 0;
2042 uint8 level = 0;
2043 std::string alive = handler->GetAcoreString(LANG_ERROR);
2044 uint32 money = 0;
2045 uint32 xp = 0;
2046 uint32 xptotal = 0;
2047
2048 // Position data print
2049 uint32 mapId;
2050 uint32 areaId;
2051 uint32 phase = 0;
2052 std::string areaName = "";
2053 std::string zoneName = "";
2054
2055 // Guild data print variables defined so that they exist, but are not necessarily used
2056 uint32 guildId = 0;
2057 uint8 guildRankId = 0;
2058 std::string guildName;
2059 std::string guildRank;
2060 std::string note;
2061 std::string officeNote;
2062
2063 // get additional information from Player object
2064 if (playerTarget)
2065 {
2066 // check online security
2067 if (handler->HasLowerSecurity(playerTarget))
2068 {
2069 return false;
2070 }
2071
2072 accId = playerTarget->GetSession()->GetAccountId();
2073 money = playerTarget->GetMoney();
2074 totalPlayerTime = playerTarget->GetTotalPlayedTime();
2075 level = playerTarget->GetLevel();
2076 latency = playerTarget->GetSession()->GetLatency();
2077 raceid = playerTarget->getRace();
2078 classid = playerTarget->getClass();
2079 muteTime = playerTarget->GetSession()->m_muteTime;
2080 mapId = playerTarget->GetMapId();
2081 areaId = playerTarget->GetAreaId();
2082 alive = playerTarget->IsAlive() ? handler->GetAcoreString(LANG_YES) : handler->GetAcoreString(LANG_NO);
2083 gender = playerTarget->getGender();
2084 phase = playerTarget->GetPhaseMask();
2085 }
2086 // get additional information from DB
2087 else
2088 {
2089 // check offline security
2090 if (handler->HasLowerSecurity(nullptr, target->GetGUID()))
2091 {
2092 return false;
2093 }
2094
2095 // Query informations from the DB
2096 stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_PINFO);
2097 stmt->SetData(0, lowguid);
2098 PreparedQueryResult charInfoResult = CharacterDatabase.Query(stmt);
2099
2100 if (!charInfoResult)
2101 {
2102 return false;
2103 }
2104
2105 Field* fields = charInfoResult->Fetch();
2106 totalPlayerTime = fields[0].Get<uint32>();
2107 level = fields[1].Get<uint8>();
2108 money = fields[2].Get<uint32>();
2109 accId = fields[3].Get<uint32>();
2110 raceid = fields[4].Get<uint8>();
2111 classid = fields[5].Get<uint8>();
2112 mapId = fields[6].Get<uint16>();
2113 areaId = fields[7].Get<uint16>();
2114 gender = fields[8].Get<uint8>();
2115 uint32 health = fields[9].Get<uint32>();
2116 uint32 playerFlags = fields[10].Get<uint32>();
2117
2118 if (!health || playerFlags & PLAYER_FLAGS_GHOST)
2119 {
2120 alive = handler->GetAcoreString(LANG_NO);
2121 }
2122 else
2123 {
2124 alive = handler->GetAcoreString(LANG_YES);
2125 }
2126 }
2127
2128 // Query the prepared statement for login data
2129 loginStmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_PINFO);
2130 loginStmt->SetData(0, int32(realm.Id.Realm));
2131 loginStmt->SetData(1, accId);
2132
2133 PreparedQueryResult accInfoResult = LoginDatabase.Query(loginStmt);
2134 if (accInfoResult)
2135 {
2136 Field* fields = accInfoResult->Fetch();
2137 userName = fields[0].Get<std::string>();
2138 security = fields[1].Get<uint8>();
2139
2140 // Only fetch these fields if commander has sufficient rights)
2141 if (!handler->GetSession() || handler->GetSession()->GetSecurity() >= AccountTypes(security))
2142 {
2143 eMail = fields[2].Get<std::string>();
2144 regMail = fields[3].Get<std::string>();
2145 lastIp = fields[4].Get<std::string>();
2146 lastLogin = fields[5].Get<std::string>();
2147
2148 if (IpLocationRecord const* location = sIPLocation->GetLocationRecord(lastIp))
2149 {
2150 lastIp.append(" (");
2151 lastIp.append(location->CountryName);
2152 lastIp.append(")");
2153 }
2154 }
2155 else
2156 {
2157 eMail = handler->GetAcoreString(LANG_UNAUTHORIZED);
2158 regMail = handler->GetAcoreString(LANG_UNAUTHORIZED);
2159 lastIp = handler->GetAcoreString(LANG_UNAUTHORIZED);
2160 lastLogin = handler->GetAcoreString(LANG_UNAUTHORIZED);
2161 }
2162
2163 muteTime = fields[6].Get<uint64>();
2164 muteReason = fields[7].Get<std::string>();
2165 muteBy = fields[8].Get<std::string>();
2166 failedLogins = fields[9].Get<uint32>();
2167 locked = fields[10].Get<uint8>();
2168 OS = fields[11].Get<std::string>();
2169 }
2170
2171 // Creates a chat link to the character. Returns nameLink
2172 std::string nameLink = handler->playerLink(target->GetName());
2173
2174 // Returns banType, banTime, bannedBy, banreason
2175 LoginDatabasePreparedStatement* banQuery = LoginDatabase.GetPreparedStatement(LOGIN_SEL_PINFO_BANS);
2176 banQuery->SetData(0, accId);
2177
2178 PreparedQueryResult accBannedResult = LoginDatabase.Query(banQuery);
2179 if (!accBannedResult)
2180 {
2181 banType = handler->GetAcoreString(LANG_CHARACTER);
2182 stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PINFO_BANS);
2183 stmt->SetData(0, lowguid);
2184 accBannedResult = CharacterDatabase.Query(stmt);
2185 }
2186
2187 if (accBannedResult)
2188 {
2189 Field* fields = accBannedResult->Fetch();
2190 banTime = int64(fields[1].Get<uint64>() ? 0 : fields[0].Get<uint32>());
2191 bannedBy = fields[2].Get<std::string>();
2192 banReason = fields[3].Get<std::string>();
2193 }
2194
2195 // Can be used to query data from World database
2196 WorldDatabasePreparedStatement* xpQuery = WorldDatabase.GetPreparedStatement(WORLD_SEL_REQ_XP);
2197 xpQuery->SetData(0, level);
2198
2199 PreparedQueryResult xpResult = WorldDatabase.Query(xpQuery);
2200 if (xpResult)
2201 {
2202 Field* fields = xpResult->Fetch();
2203 xptotal = fields[0].Get<uint32>();
2204 }
2205
2206 // Can be used to query data from Characters database
2207 CharacterDatabasePreparedStatement* charXpQuery = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PINFO_XP);
2208 charXpQuery->SetData(0, lowguid);
2209
2210 PreparedQueryResult charXpResult = CharacterDatabase.Query(charXpQuery);
2211 if (charXpResult)
2212 {
2213 Field* fields = charXpResult->Fetch();
2214 xp = fields[0].Get<uint32>();
2215 ObjectGuid::LowType gguid = fields[1].Get<uint32>();
2216
2217 if (gguid != 0)
2218 {
2220 guildQuery->SetData(0, lowguid);
2221
2222 PreparedQueryResult guildInfoResult = CharacterDatabase.Query(guildQuery);
2223 if (guildInfoResult)
2224 {
2225 Field* guildInfoFields = guildInfoResult->Fetch();
2226 guildId = guildInfoFields[0].Get<uint32>();
2227 guildName = guildInfoFields[1].Get<std::string>();
2228 guildRank = guildInfoFields[2].Get<std::string>();
2229 note = guildInfoFields[3].Get<std::string>();
2230 officeNote = guildInfoFields[4].Get<std::string>();
2231 }
2232 }
2233 }
2234
2235 // Initiate output
2236 // Output I. LANG_PINFO_PLAYER
2237 handler->PSendSysMessage(LANG_PINFO_PLAYER, playerTarget ? "" : handler->GetAcoreString(LANG_OFFLINE), nameLink, target->GetGUID().ToString());
2238
2239 // Output II. LANG_PINFO_GM_ACTIVE if character is gamemaster
2240 if (playerTarget && playerTarget->IsGameMaster())
2241 {
2243 }
2244
2245 // Output III. LANG_PINFO_BANNED if ban exists and is applied
2246 if (banTime >= 0)
2247 {
2248 handler->PSendSysMessage(LANG_PINFO_BANNED, banType, banReason, banTime > 0 ? secsToTimeString(banTime - GameTime::GetGameTime().count(), true) : handler->GetAcoreString(LANG_PERMANENTLY), bannedBy);
2249 }
2250
2251 // Output IV. LANG_PINFO_MUTED if mute is applied
2252 if (muteTime > 0)
2253 {
2254 handler->PSendSysMessage(LANG_PINFO_MUTED, muteReason, secsToTimeString(muteTime - GameTime::GetGameTime().count(), true), muteBy);
2255 }
2256
2257 // Output V. LANG_PINFO_ACC_ACCOUNT
2258 handler->PSendSysMessage(LANG_PINFO_ACC_ACCOUNT, userName, accId, security);
2259
2260 if (playerTarget)
2261 {
2262 uint32 accountFlags = playerTarget->GetSession()->GetAccountFlags();
2264 for (uint8 i = 0; i < MAX_ACCOUNT_FLAG; i++)
2265 if (accountFlags & static_cast<uint32>(accountFlagText[i].flag))
2267 }
2268
2269 // Output VI. LANG_PINFO_ACC_LASTLOGIN
2270 handler->PSendSysMessage(LANG_PINFO_ACC_LASTLOGIN, lastLogin, failedLogins);
2271
2272 // Output VII. LANG_PINFO_ACC_OS
2273 handler->PSendSysMessage(LANG_PINFO_ACC_OS, OS, latency);
2274
2275 // Output VIII. LANG_PINFO_ACC_REGMAILS
2276 handler->PSendSysMessage(LANG_PINFO_ACC_REGMAILS, regMail, eMail);
2277
2278 // Output IX. LANG_PINFO_ACC_IP
2279 handler->PSendSysMessage(LANG_PINFO_ACC_IP, lastIp, locked ? handler->GetAcoreString(LANG_YES) : handler->GetAcoreString(LANG_NO));
2280
2281 // Output X. LANG_PINFO_CHR_LEVEL
2282 if (level != sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL))
2283 {
2284 handler->PSendSysMessage(LANG_PINFO_CHR_LEVEL_LOW, level, xp, xptotal, (xptotal - xp));
2285 }
2286 else
2287 {
2289 }
2290
2291 // Output XI. LANG_PINFO_CHR_RACE
2292 switch (raceid)
2293 {
2294 case RACE_HUMAN:
2295 raceStr = "Human";
2296 break;
2297 case RACE_ORC:
2298 raceStr = "Orc";
2299 break;
2300 case RACE_DWARF:
2301 raceStr = "Dwarf";
2302 break;
2303 case RACE_NIGHTELF:
2304 raceStr = "Night Elf";
2305 break;
2306 case RACE_UNDEAD_PLAYER:
2307 raceStr = "Undead";
2308 break;
2309 case RACE_TAUREN:
2310 raceStr = "Tauren";
2311 break;
2312 case RACE_GNOME:
2313 raceStr = "Gnome";
2314 break;
2315 case RACE_TROLL:
2316 raceStr = "Troll";
2317 break;
2318 case RACE_BLOODELF:
2319 raceStr = "Blood Elf";
2320 break;
2321 case RACE_DRAENEI:
2322 raceStr = "Draenei";
2323 break;
2324 }
2325
2326 switch (classid)
2327 {
2328 case CLASS_WARRIOR:
2329 classStr = "Warrior";
2330 break;
2331 case CLASS_PALADIN:
2332 classStr = "Paladin";
2333 break;
2334 case CLASS_HUNTER:
2335 classStr = "Hunter";
2336 break;
2337 case CLASS_ROGUE:
2338 classStr = "Rogue";
2339 break;
2340 case CLASS_PRIEST:
2341 classStr = "Priest";
2342 break;
2343 case CLASS_DEATH_KNIGHT:
2344 classStr = "Death Knight";
2345 break;
2346 case CLASS_SHAMAN:
2347 classStr = "Shaman";
2348 break;
2349 case CLASS_MAGE:
2350 classStr = "Mage";
2351 break;
2352 case CLASS_WARLOCK:
2353 classStr = "Warlock";
2354 break;
2355 case CLASS_DRUID:
2356 classStr = "Druid";
2357 break;
2358 }
2359
2360 handler->PSendSysMessage(LANG_PINFO_CHR_RACE, (gender == 0 ? handler->GetAcoreString(LANG_CHARACTER_GENDER_MALE) : handler->GetAcoreString(LANG_CHARACTER_GENDER_FEMALE)), raceStr, classStr);
2361
2362 // Output XII. LANG_PINFO_CHR_ALIVE
2363 handler->PSendSysMessage(LANG_PINFO_CHR_ALIVE, alive);
2364
2365 // Output XIII. LANG_PINFO_CHR_PHASE if player is not in GM mode (GM is in every phase)
2366 if (playerTarget && !playerTarget->IsGameMaster()) // IsInWorld() returns false on loadingscreen, so it's more
2367 {
2368 handler->PSendSysMessage(LANG_PINFO_CHR_PHASE, phase); // precise than just target (safer ?).
2369 }
2370
2371 // However, as we usually just require a target here, we use target instead.
2372 // Output XIV. LANG_PINFO_CHR_MONEY
2373 uint32 gold = money / GOLD;
2374 uint32 silv = (money % GOLD) / SILVER;
2375 uint32 copp = (money % GOLD) % SILVER;
2376 handler->PSendSysMessage(LANG_PINFO_CHR_MONEY, gold, silv, copp);
2377
2378 // Position data
2379 MapEntry const* map = sMapStore.LookupEntry(mapId);
2380 AreaTableEntry const* area = sAreaTableStore.LookupEntry(areaId);
2381
2382 if (area)
2383 {
2384 zoneName = area->area_name[locale];
2385
2386 AreaTableEntry const* zone = sAreaTableStore.LookupEntry(area->zone);
2387 if (zone)
2388 {
2389 areaName = zoneName;
2390 zoneName = zone->area_name[locale];
2391 }
2392 }
2393
2394 if (zoneName.empty())
2395 zoneName = handler->GetAcoreString(LANG_UNKNOWN);
2396
2397 if (!areaName.empty())
2398 handler->PSendSysMessage(LANG_PINFO_CHR_MAP_WITH_AREA, map->name[locale], zoneName, areaName);
2399 else
2400 handler->PSendSysMessage(LANG_PINFO_CHR_MAP, map->name[locale], zoneName);
2401
2402 // Output XVII. - XVIX. if they are not empty
2403 if (!guildName.empty())
2404 {
2405 handler->PSendSysMessage(LANG_PINFO_CHR_GUILD, guildName, guildId);
2406 handler->PSendSysMessage(LANG_PINFO_CHR_GUILD_RANK, guildRank, uint32(guildRankId));
2407
2408 if (!note.empty())
2409 {
2411 }
2412
2413 if (!officeNote.empty())
2414 {
2415 handler->PSendSysMessage(LANG_PINFO_CHR_GUILD_ONOTE, officeNote);
2416 }
2417 }
2418
2419 // Output XX. LANG_PINFO_CHR_PLAYEDTIME
2420 handler->PSendSysMessage(LANG_PINFO_CHR_PLAYEDTIME, (secsToTimeString(totalPlayerTime, true)));
2421
2422 // Output XXI. LANG_PINFO_CHR_ONLINETIME (only for online players)
2423 if (playerTarget)
2424 {
2425 uint32 onlineTime = uint32(GameTime::GetGameTime().count() - playerTarget->m_logintime);
2426 handler->PSendSysMessage(LANG_PINFO_CHR_ONLINETIME, secsToTimeString(onlineTime, true));
2427 }
2428
2429 // Mail Data - an own query, because it may or may not be useful.
2430 // SQL: "SELECT SUM(CASE WHEN (checked & 1) THEN 1 ELSE 0 END) AS 'readmail', COUNT(*) AS 'totalmail' FROM mail WHERE `receiver` = ?"
2432 mailQuery->SetData(0, lowguid);
2433
2434 PreparedQueryResult mailInfoResult = CharacterDatabase.Query(mailQuery);
2435 if (mailInfoResult)
2436 {
2437 Field* fields = mailInfoResult->Fetch();
2438 uint32 readmail = uint32(fields[0].Get<double>());
2439 uint32 totalmail = uint32(fields[1].Get<uint64>());
2440
2441 // Output XXI. LANG_INFO_CHR_MAILS if at least one mail is given
2442 if (totalmail >= 1)
2443 {
2444 handler->PSendSysMessage(LANG_PINFO_CHR_MAILS, readmail, totalmail);
2445 }
2446 }
2447
2448 return true;
2449 }
@ CHAR_SEL_PINFO_XP
Definition CharacterDatabase.h:340
@ CHAR_SEL_GUILD_MEMBER_EXTENDED
Definition CharacterDatabase.h:146
@ CHAR_SEL_CHAR_PINFO
Definition CharacterDatabase.h:339
@ CHAR_SEL_PINFO_MAILS
Definition CharacterDatabase.h:341
@ CHAR_SEL_PINFO_BANS
Definition CharacterDatabase.h:342
#define MAX_ACCOUNT_FLAG
Definition Common.h:64
AccountTypes
Definition Common.h:56
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
Definition DatabaseEnv.cpp:21
DatabaseWorkerPool< WorldDatabaseConnection > WorldDatabase
Accessor to the world database.
Definition DatabaseEnv.cpp:20
std::int8_t int8
Definition Define.h:105
std::uint64_t uint64
Definition Define.h:106
std::uint16_t uint16
Definition Define.h:108
#define sIPLocation
Definition IPLocation.h:49
@ LANG_YES
Definition Language.h:460
@ LANG_CHARACTER_GENDER_FEMALE
Definition Language.h:824
@ LANG_PINFO_CHR_GUILD_NOTE
Definition Language.h:813
@ LANG_PINFO_CHR_ALIVE
Definition Language.h:807
@ LANG_PINFO_ACC_LASTLOGIN
Definition Language.h:801
@ LANG_CHARACTER
Definition Language.h:1102
@ LANG_UNKNOWN
Definition Language.h:77
@ LANG_PINFO_CHR_PHASE
Definition Language.h:808
@ LANG_ERROR
Definition Language.h:78
@ LANG_PERMANENTLY
Definition Language.h:1103
@ LANG_OFFLINE
Definition Language.h:69
@ LANG_PINFO_CHR_LEVEL_LOW
Definition Language.h:805
@ LANG_PINFO_CHR_PLAYEDTIME
Definition Language.h:815
@ LANG_UNAUTHORIZED
Definition Language.h:819
@ LANG_SUBCMDS_LIST_ENTRY
Definition Language.h:233
@ LANG_PINFO_CHR_RACE
Definition Language.h:806
@ LANG_PINFO_CHR_MAP_WITH_AREA
Definition Language.h:820
@ LANG_PINFO_PLAYER
Definition Language.h:796
@ LANG_PINFO_CHR_ONLINETIME
Definition Language.h:821
@ LANG_PINFO_ACC_OS
Definition Language.h:802
@ LANG_CHARACTER_GENDER_MALE
Definition Language.h:823
@ LANG_PINFO_CHR_MONEY
Definition Language.h:809
@ LANG_PINFO_CHR_LEVEL_HIGH
Definition Language.h:817
@ LANG_NO
Definition Language.h:461
@ LANG_PINFO_CHR_MAP
Definition Language.h:810
@ LANG_PINFO_ACC_IP
Definition Language.h:804
@ LANG_PINFO_BANNED
Definition Language.h:798
@ LANG_PINFO_CHR_GUILD_RANK
Definition Language.h:812
@ LANG_PINFO_ACC_ACCOUNT
Definition Language.h:800
@ LANG_PINFO_ACC_REGMAILS
Definition Language.h:803
@ LANG_PINFO_GM_ACTIVE
Definition Language.h:797
@ LANG_PINFO_CHR_MAILS
Definition Language.h:816
@ LANG_PINFO_CHR_GUILD
Definition Language.h:811
@ LANG_ACCOUNT_FLAGS_PINFO
Definition Language.h:224
@ LANG_PINFO_CHR_GUILD_ONOTE
Definition Language.h:814
@ LANG_PINFO_MUTED
Definition Language.h:799
@ LOGIN_SEL_PINFO
Definition LoginDatabase.h:90
@ LOGIN_SEL_PINFO_BANS
Definition LoginDatabase.h:91
@ PLAYER_FLAGS_GHOST
Definition Player.h:463
@ CLASS_HUNTER
Definition SharedDefines.h:128
@ CLASS_DRUID
Definition SharedDefines.h:136
@ CLASS_SHAMAN
Definition SharedDefines.h:132
@ CLASS_PRIEST
Definition SharedDefines.h:130
@ CLASS_WARRIOR
Definition SharedDefines.h:126
@ CLASS_WARLOCK
Definition SharedDefines.h:134
@ CLASS_MAGE
Definition SharedDefines.h:133
@ CLASS_DEATH_KNIGHT
Definition SharedDefines.h:131
@ CLASS_PALADIN
Definition SharedDefines.h:127
@ CLASS_ROGUE
Definition SharedDefines.h:129
@ SILVER
Definition SharedDefines.h:240
@ GOLD
Definition SharedDefines.h:241
@ RACE_TROLL
Definition SharedDefines.h:78
@ RACE_UNDEAD_PLAYER
Definition SharedDefines.h:75
@ RACE_ORC
Definition SharedDefines.h:72
@ RACE_DRAENEI
Definition SharedDefines.h:81
@ RACE_NIGHTELF
Definition SharedDefines.h:74
@ RACE_BLOODELF
Definition SharedDefines.h:80
@ RACE_DWARF
Definition SharedDefines.h:73
@ RACE_GNOME
Definition SharedDefines.h:77
@ RACE_HUMAN
Definition SharedDefines.h:71
@ RACE_TAUREN
Definition SharedDefines.h:76
@ CONFIG_MAX_PLAYER_LEVEL
Definition WorldConfig.h:189
@ WORLD_SEL_REQ_XP
Definition WorldDatabase.h:116
std::enable_if_t< std::is_arithmetic_v< T >, T > Get() const
Definition Field.h:112
uint32 LowType
Definition ObjectGuid.h:122
uint32 GetTotalPlayedTime()
Definition Player.h:1206
uint32 GetMoney() const
Definition Player.h:1624
time_t m_logintime
Definition Player.h:1203
uint8 getGender() const
Definition Unit.h:848
uint8 getClass() const
Definition Unit.h:843
uint8 getRace(bool original=false) const
Definition Unit.cpp:17048
uint8 GetLevel() const
Definition Unit.h:1103
uint32 GetPhaseMask() const
Definition Object.h:516
uint32 GetAreaId() const
Definition Object.cpp:3119
uint32 GetAccountFlags() const
Definition WorldSession.h:389
uint32 GetLatency() const
Definition WorldSession.h:593
AccountFlagText const accountFlagText[MAX_ACCOUNT_FLAG]
Definition cs_misc.cpp:69
Realm realm
Definition World.cpp:111
char const * area_name[16]
Definition DBCStructure.h:527
Definition IPLocation.h:23
uint32 Realm
Definition Realm.h:43
RealmHandle Id
Definition Realm.h:69

References accountFlagText, AreaTableEntry::area_name, CHAR_SEL_CHAR_PINFO, CHAR_SEL_GUILD_MEMBER_EXTENDED, CHAR_SEL_PINFO_BANS, CHAR_SEL_PINFO_MAILS, CHAR_SEL_PINFO_XP, CharacterDatabase, CLASS_DEATH_KNIGHT, CLASS_DRUID, CLASS_HUNTER, CLASS_MAGE, CLASS_PALADIN, CLASS_PRIEST, CLASS_ROGUE, CLASS_SHAMAN, CLASS_WARLOCK, CLASS_WARRIOR, CONFIG_MAX_PLAYER_LEVEL, Acore::ChatCommands::PlayerIdentifier::FromTargetOrSelf(), Field::Get(), WorldSession::GetAccountFlags(), WorldSession::GetAccountId(), ChatHandler::GetAcoreString(), WorldObject::GetAreaId(), Unit::getClass(), GameTime::GetGameTime(), Unit::getGender(), WorldSession::GetLatency(), Unit::GetLevel(), WorldLocation::GetMapId(), Player::GetMoney(), WorldObject::GetPhaseMask(), Unit::getRace(), WorldSession::GetSecurity(), ChatHandler::GetSession(), Player::GetSession(), ChatHandler::GetSessionDbcLocale(), Player::GetTotalPlayedTime(), GOLD, ChatHandler::HasLowerSecurity(), Realm::Id, Unit::IsAlive(), Player::IsGameMaster(), LANG_ACCOUNT_FLAGS_PINFO, LANG_CHARACTER, LANG_CHARACTER_GENDER_FEMALE, LANG_CHARACTER_GENDER_MALE, LANG_ERROR, LANG_NO, LANG_NO_REASON, LANG_OFFLINE, LANG_PERMANENTLY, LANG_PINFO_ACC_ACCOUNT, LANG_PINFO_ACC_IP, LANG_PINFO_ACC_LASTLOGIN, LANG_PINFO_ACC_OS, LANG_PINFO_ACC_REGMAILS, LANG_PINFO_BANNED, LANG_PINFO_CHR_ALIVE, LANG_PINFO_CHR_GUILD, LANG_PINFO_CHR_GUILD_NOTE, LANG_PINFO_CHR_GUILD_ONOTE, LANG_PINFO_CHR_GUILD_RANK, LANG_PINFO_CHR_LEVEL_HIGH, LANG_PINFO_CHR_LEVEL_LOW, LANG_PINFO_CHR_MAILS, LANG_PINFO_CHR_MAP, LANG_PINFO_CHR_MAP_WITH_AREA, LANG_PINFO_CHR_MONEY, LANG_PINFO_CHR_ONLINETIME, LANG_PINFO_CHR_PHASE, LANG_PINFO_CHR_PLAYEDTIME, LANG_PINFO_CHR_RACE, LANG_PINFO_GM_ACTIVE, LANG_PINFO_MUTED, LANG_PINFO_PLAYER, LANG_SUBCMDS_LIST_ENTRY, LANG_UNAUTHORIZED, LANG_UNKNOWN, LANG_YES, LOGIN_SEL_PINFO, LOGIN_SEL_PINFO_BANS, LoginDatabase, Player::m_logintime, WorldSession::m_muteTime, MAX_ACCOUNT_FLAG, MapEntry::name, PLAYER_FLAGS_GHOST, ChatHandler::playerLink(), ChatHandler::PSendSysMessage(), RACE_BLOODELF, RACE_DRAENEI, RACE_DWARF, RACE_GNOME, RACE_HUMAN, RACE_NIGHTELF, RACE_ORC, RACE_TAUREN, RACE_TROLL, RACE_UNDEAD_PLAYER, realm, RealmHandle::Realm, sAreaTableStore, secsToTimeString(), PreparedStatementBase::SetData(), SILVER, sIPLocation, sMapStore, sWorld, AccountFlagText::text, WORLD_SEL_REQ_XP, WorldDatabase, and AreaTableEntry::zone.

Referenced by GetCommands().

◆ HandlePlayAllCommand()

static bool misc_commandscript::HandlePlayAllCommand ( ChatHandler handler,
uint32  soundId 
)
inlinestatic
3053 {
3054 if (!sSoundEntriesStore.LookupEntry(soundId))
3055 {
3056 handler->SendErrorMessage(LANG_SOUND_NOT_EXIST, soundId);
3057 return false;
3058 }
3059
3060 sWorldSessionMgr->SendGlobalMessage(WorldPackets::Misc::Playsound(soundId).Write());
3061
3063 return true;
3064 }
DBCStorage< SoundEntriesEntry > sSoundEntriesStore(SoundEntriesfmt)
@ LANG_COMMAND_PLAYED_TO_ALL
Definition Language.h:1070
@ LANG_SOUND_NOT_EXIST
Definition Language.h:214
Definition MiscPackets.h:85

References LANG_COMMAND_PLAYED_TO_ALL, LANG_SOUND_NOT_EXIST, ChatHandler::PSendSysMessage(), ChatHandler::SendErrorMessage(), sSoundEntriesStore, and sWorldSessionMgr.

Referenced by GetCommands().

◆ HandlePossessCommand()

static bool misc_commandscript::HandlePossessCommand ( ChatHandler handler)
inlinestatic
3067 {
3068 Unit* unit = handler->getSelectedUnit();
3069 if (!unit)
3070 {
3071 return false;
3072 }
3073
3074 handler->GetSession()->GetPlayer()->CastSpell(unit, MAP_OUTLAND, true);
3075 return true;
3076 }
@ MAP_OUTLAND
Definition AreaDefines.h:217

References Unit::CastSpell(), WorldSession::GetPlayer(), ChatHandler::getSelectedUnit(), ChatHandler::GetSession(), and MAP_OUTLAND.

Referenced by GetCommands().

◆ HandleRecallCommand()

static bool misc_commandscript::HandleRecallCommand ( ChatHandler handler,
Optional< PlayerIdentifier target 
)
inlinestatic
1360 {
1361 if (!target)
1362 {
1363 target = PlayerIdentifier::FromTargetOrSelf(handler);
1364 }
1365
1366 if (!target || !target->IsConnected())
1367 {
1368 return false;
1369 }
1370
1371 auto targetPlayer = target->GetConnectedPlayer();
1372
1373 // check online security
1374 if (handler->HasLowerSecurity(targetPlayer))
1375 {
1376 return false;
1377 }
1378
1379 if (targetPlayer->IsBeingTeleported())
1380 {
1381 handler->SendErrorMessage(LANG_IS_TELEPORTED, handler->playerLink(target->GetName()));
1382 return false;
1383 }
1384
1385 // stop flight if need
1386 if (targetPlayer->IsInFlight())
1387 {
1388 targetPlayer->GetMotionMaster()->MovementExpired();
1389 targetPlayer->CleanupAfterTaxiFlight();
1390 }
1391
1392 targetPlayer->TeleportTo(targetPlayer->m_recallMap, targetPlayer->m_recallX, targetPlayer->m_recallY, targetPlayer->m_recallZ, targetPlayer->m_recallO);
1393 return true;
1394 }

References Acore::ChatCommands::PlayerIdentifier::FromTargetOrSelf(), ChatHandler::HasLowerSecurity(), LANG_IS_TELEPORTED, ChatHandler::playerLink(), and ChatHandler::SendErrorMessage().

Referenced by GetCommands().

◆ HandleRespawnAllCommand()

static bool misc_commandscript::HandleRespawnAllCommand ( ChatHandler handler)
inlinestatic
2476 {
2477 Player* player = handler->GetSession()->GetPlayer();
2478
2479 // Phase 1: respawn creatures/GOs that still have corpses in the grid
2480 Acore::RespawnDo u_do;
2481 Acore::WorldObjectWorker<Acore::RespawnDo> worker(player, u_do);
2482 Cell::VisitObjects(player, worker, player->GetGridActivationRange());
2483
2484 // Phase 2: force-respawn creatures/GOs that were fully removed (non-compat mode)
2485 // by setting their respawn times to now so ProcessRespawns() picks them up
2486 Map* map = player->GetMap();
2487 uint32 gridId = Acore::ComputeGridCoord(player->GetPositionX(), player->GetPositionY()).GetId();
2488 time_t now = GameTime::GetGameTime().count();
2489
2490 std::vector<ObjectGuid::LowType> creaturesToRespawn;
2491 for (auto const& pair : map->GetCreatureRespawnTimes())
2492 {
2493 CreatureData const* data = sObjectMgr->GetCreatureData(pair.first);
2494 if (!data || Acore::ComputeGridCoord(data->posX, data->posY).GetId() != gridId)
2495 continue;
2496
2497 // Skip pooled spawns — Phase 1 already triggered pool rotation via
2498 // Creature::Respawn() -> PoolMgr::UpdatePool(). Forcing a respawn time
2499 // here would cause ProcessRespawns() to call UpdatePool() again,
2500 // spawning duplicates beyond the pool's max_limit.
2501 if (sPoolMgr->IsPartOfAPool<Creature>(pair.first))
2502 continue;
2503
2504 creaturesToRespawn.push_back(pair.first);
2505 }
2506 for (ObjectGuid::LowType spawnId : creaturesToRespawn)
2507 map->SaveCreatureRespawnTime(spawnId, now);
2508
2509 std::vector<ObjectGuid::LowType> goesToRespawn;
2510 for (auto const& pair : map->GetGORespawnTimes())
2511 {
2512 GameObjectData const* data = sObjectMgr->GetGameObjectData(pair.first);
2513 if (!data || Acore::ComputeGridCoord(data->posX, data->posY).GetId() != gridId)
2514 continue;
2515
2516 // Skip pooled spawns — same reason as creatures above.
2517 if (sPoolMgr->IsPartOfAPool<GameObject>(pair.first))
2518 continue;
2519
2520 goesToRespawn.push_back(pair.first);
2521 }
2522 for (ObjectGuid::LowType spawnId : goesToRespawn)
2523 map->SaveGORespawnTime(spawnId, now);
2524
2525 return true;
2526 }
#define sPoolMgr
Definition PoolMgr.h:177
Definition GridNotifiers.h:636
float GetGridActivationRange() const
Definition Object.cpp:1679
GridCoord ComputeGridCoord(float x, float y)
Definition GridDefines.h:185
Definition GridNotifiers.h:251
static void VisitObjects(WorldObject const *obj, T &visitor, float radius)
Definition CellImpl.h:165
uint32 GetId() const
Definition GridDefines.h:150
Definition CreatureData.h:370
Definition GameObjectData.h:715
float posX
Definition SpawnData.h:71
float posY
Definition SpawnData.h:72

References Acore::ComputeGridCoord(), Map::GetCreatureRespawnTimes(), GameTime::GetGameTime(), Map::GetGORespawnTimes(), WorldObject::GetGridActivationRange(), CoordPair< LIMIT >::GetId(), WorldObject::GetMap(), WorldSession::GetPlayer(), Position::GetPositionX(), Position::GetPositionY(), ChatHandler::GetSession(), SpawnData::posX, SpawnData::posY, Map::SaveCreatureRespawnTime(), Map::SaveGORespawnTime(), sObjectMgr, sPoolMgr, and Cell::VisitObjects().

Referenced by GetCommands().

◆ HandleRespawnCommand()

static bool misc_commandscript::HandleRespawnCommand ( ChatHandler handler)
inlinestatic
2452 {
2453 Player* player = handler->GetSession()->GetPlayer();
2454
2455 Unit* target = handler->getSelectedUnit();
2456 if (player->GetTarget() && target)
2457 {
2458 if (!target->IsCreature() || target->IsPet())
2459 {
2461 return false;
2462 }
2463
2464 if (target->isDead())
2465 {
2466 target->ToCreature()->Respawn(true);
2467 }
2468 return true;
2469 }
2470
2472 return false;
2473 }
void Respawn(bool force=false)
Definition Creature.cpp:2017
bool IsPet() const
Definition Unit.h:797
bool isDead() const
Definition Unit.h:1796

References WorldSession::GetPlayer(), ChatHandler::getSelectedUnit(), ChatHandler::GetSession(), Unit::GetTarget(), Object::IsCreature(), Unit::isDead(), Unit::IsPet(), LANG_SELECT_CREATURE, Creature::Respawn(), ChatHandler::SendErrorMessage(), and Object::ToCreature().

Referenced by GetCommands().

◆ HandleReviveCommand()

static bool misc_commandscript::HandleReviveCommand ( ChatHandler handler,
Optional< PlayerIdentifier target 
)
inlinestatic
1227 {
1228 if (!target)
1229 target = PlayerIdentifier::FromTargetOrSelf(handler);
1230
1231 if (!target)
1232 return false;
1233
1234 if (target->IsConnected())
1235 {
1236 auto targetPlayer = target->GetConnectedPlayer();
1237 targetPlayer->RemoveAurasDueToSpell(27827); // Spirit of Redemption
1238 targetPlayer->ResurrectPlayer(!AccountMgr::IsPlayerAccount(targetPlayer->GetSession()->GetSecurity()) ? 1.0f : 0.5f);
1239 targetPlayer->SpawnCorpseBones();
1240 targetPlayer->SaveToDB(false, false);
1241 }
1242 else
1243 {
1244 CharacterDatabaseTransaction trans(nullptr);
1245 Player::OfflineResurrect(target->GetGUID(), trans);
1246 }
1247
1248 return true;
1249 }
SQLTransaction< CharacterDatabaseConnection > CharacterDatabaseTransaction
Definition DatabaseEnvFwd.h:69
static void OfflineResurrect(ObjectGuid const &guid, CharacterDatabaseTransaction trans)
Definition Player.cpp:4500

References Acore::ChatCommands::PlayerIdentifier::FromTargetOrSelf(), AccountMgr::IsPlayerAccount(), and Player::OfflineResurrect().

Referenced by GetCommands().

◆ HandleSaveAllCommand()

static bool misc_commandscript::HandleSaveAllCommand ( ChatHandler handler)
inlinestatic
1428 {
1431 return true;
1432 }
@ LANG_PLAYERS_SAVED
Definition Language.h:47
void SaveAllPlayers()
Definition ObjectAccessor.cpp:262

References LANG_PLAYERS_SAVED, ObjectAccessor::SaveAllPlayers(), and ChatHandler::SendSysMessage().

Referenced by GetCommands().

◆ HandleSaveCommand()

static bool misc_commandscript::HandleSaveCommand ( ChatHandler handler)
inlinestatic
1397 {
1398 Player* player = handler->GetSession()->GetPlayer();
1399
1400 // save GM account without delay and output message
1402 {
1403 if (Player* target = handler->getSelectedPlayer())
1404 {
1405 target->SaveToDB(false, false);
1406 }
1407 else
1408 {
1409 player->SaveToDB(false, false);
1410 }
1411
1413 return true;
1414 }
1415
1416 // save if the player has last been saved over 20 seconds ago
1417 uint32 saveInterval = sWorld->getIntConfig(CONFIG_INTERVAL_SAVE);
1418 if (saveInterval == 0 || (saveInterval > 20 * IN_MILLISECONDS && player->GetSaveTimer() <= saveInterval - 20 * IN_MILLISECONDS))
1419 {
1420 player->SaveToDB(false, false);
1421 }
1422
1423 return true;
1424 }
constexpr auto IN_MILLISECONDS
Definition Common.h:53
@ LANG_PLAYER_SAVED
Definition Language.h:46
@ CONFIG_INTERVAL_SAVE
Definition WorldConfig.h:167
void SaveToDB(bool create, bool logout)
Definition PlayerStorage.cpp:7122
uint32 GetSaveTimer() const
Definition Player.h:2393
bool HasPermission(uint32 permissionId)
Definition WorldSession.cpp:1551
@ RBAC_PERM_COMMANDS_SAVE_WITHOUT_DELAY
Definition RBAC.h:81

References CONFIG_INTERVAL_SAVE, WorldSession::GetPlayer(), Player::GetSaveTimer(), ChatHandler::getSelectedPlayer(), ChatHandler::GetSession(), WorldSession::HasPermission(), IN_MILLISECONDS, LANG_PLAYER_SAVED, rbac::RBAC_PERM_COMMANDS_SAVE_WITHOUT_DELAY, Player::SaveToDB(), ChatHandler::SendSysMessage(), and sWorld.

Referenced by GetCommands().

◆ HandleSetSkillCommand()

static bool misc_commandscript::HandleSetSkillCommand ( ChatHandler handler,
Variant< Hyperlink< skill >, uint32 skillId,
int32  level,
Optional< uint16 maxPureSkill 
)
inlinestatic
1951 {
1952 uint32 skillID = uint32(skillId);
1953
1954 if (skillID <= 0)
1955 {
1956 handler->SendErrorMessage(LANG_INVALID_SKILL_ID, skillID);
1957 return false;
1958 }
1959
1960 Player* target = handler->getSelectedPlayer();
1961 if (!target)
1962 {
1964 return false;
1965 }
1966
1967 SkillLineEntry const* skillLine = sSkillLineStore.LookupEntry(skillID);
1968 if (!skillLine)
1969 {
1970 handler->SendErrorMessage(LANG_INVALID_SKILL_ID, uint32(skillID));
1971 return false;
1972 }
1973
1974 bool targetHasSkill = target->GetSkillValue(skillID);
1975
1976 // If our target does not yet have the skill they are trying to add to them, the chosen level also becomes
1977 // the max level of the new profession.
1978 uint16 max = maxPureSkill ? *maxPureSkill : targetHasSkill ? target->GetPureMaxSkillValue(skillID) : uint16(level);
1979
1980 if (level <= 0 || level > max || max <= 0)
1981 {
1982 return false;
1983 }
1984
1985 // If the player has the skill, we get the current skill step. If they don't have the skill, we
1986 // add the skill to the player's book with step 1 (which is the first rank, in most cases something
1987 // like 'Apprentice <skill>'.
1988 target->SetSkill(skillID, targetHasSkill ? target->GetSkillStep(skillID) : 1, level, max);
1989 handler->PSendSysMessage(LANG_SET_SKILL, skillID, skillLine->name[handler->GetSessionDbcLocale()], handler->GetNameLink(target), level, max);
1990 return true;
1991 }
DBCStorage< SkillLineEntry > sSkillLineStore(SkillLinefmt)
@ LANG_INVALID_SKILL_ID
Definition Language.h:534
@ LANG_SET_SKILL
Definition Language.h:531
uint16 GetSkillValue(uint32 skill) const
Definition Player.cpp:5450
uint16 GetSkillStep(uint16 skill) const
Definition Player.cpp:5438
uint16 GetPureMaxSkillValue(uint32 skill) const
Definition Player.cpp:5485
void SetSkill(uint16 id, uint16 step, uint16 currVal, uint16 maxVal)
Definition Player.cpp:5326
Definition DBCStructure.h:1583
char const * name[16]
Definition DBCStructure.h:1587

References ChatHandler::GetNameLink(), Player::GetPureMaxSkillValue(), ChatHandler::getSelectedPlayer(), ChatHandler::GetSessionDbcLocale(), Player::GetSkillStep(), Player::GetSkillValue(), LANG_INVALID_SKILL_ID, LANG_NO_CHAR_SELECTED, LANG_SET_SKILL, SkillLineEntry::name, ChatHandler::PSendSysMessage(), ChatHandler::SendErrorMessage(), Player::SetSkill(), and sSkillLineStore.

Referenced by GetCommands().

◆ HandleShowAreaCommand()

static bool misc_commandscript::HandleShowAreaCommand ( ChatHandler handler,
uint32  areaID 
)
inlinestatic
1688 {
1689 Player* playerTarget = handler->getSelectedPlayer();
1690 if (!playerTarget)
1691 {
1693 return false;
1694 }
1695
1696 AreaTableEntry const* area = sAreaTableStore.LookupEntry(areaID);
1697 if (!area)
1698 {
1700 return false;
1701 }
1702
1703 int32 offset = area->exploreFlag / 32;
1704 if (offset >= PLAYER_EXPLORED_ZONES_SIZE)
1705 {
1707 return false;
1708 }
1709
1710 uint32 val = uint32((1 << (area->exploreFlag % 32)));
1711 uint32 currFields = playerTarget->GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset);
1712 playerTarget->SetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset, uint32((currFields | val)));
1713
1715 return true;
1716 }
@ LANG_EXPLORE_AREA
Definition Language.h:625

References AreaTableEntry::exploreFlag, ChatHandler::getSelectedPlayer(), Object::GetUInt32Value(), LANG_BAD_VALUE, LANG_EXPLORE_AREA, LANG_NO_CHAR_SELECTED, PLAYER_EXPLORED_ZONES_1, PLAYER_EXPLORED_ZONES_SIZE, sAreaTableStore, ChatHandler::SendErrorMessage(), ChatHandler::SendSysMessage(), and Unit::SetUInt32Value().

Referenced by GetCommands().

◆ HandleSkirmishCommand()

static bool misc_commandscript::HandleSkirmishCommand ( ChatHandler handler,
std::vector< std::string_view >  args 
)
inlinestatic
207 {
208 auto tokens = args;
209
210 if (args.empty() || !tokens.size())
211 {
212 handler->SetSentErrorMessage(true);
213 return false;
214 }
215
216 auto tokensItr = tokens.begin();
217
218 std::vector<BattlegroundTypeId> allowedArenas;
219 std::string_view arenasStr = *(tokensItr++);
220
221 auto arenaTokens = Acore::Tokenize(arenasStr, ',', false);
222 for (auto const& arenaName : arenaTokens)
223 {
224 if (arenaName == "all")
225 {
226 if (arenaTokens.size() > 1)
227 {
228 handler->SendErrorMessage("Invalid [arena] specified.");
229 return false;
230 }
231
232 allowedArenas.emplace_back(BATTLEGROUND_NA);
233 allowedArenas.emplace_back(BATTLEGROUND_BE);
234 allowedArenas.emplace_back(BATTLEGROUND_RL);
235 allowedArenas.emplace_back(BATTLEGROUND_DS);
236 allowedArenas.emplace_back(BATTLEGROUND_RV);
237 }
238 else if (arenaName == "NA")
239 {
240 allowedArenas.emplace_back(BATTLEGROUND_NA);
241 }
242 else if (arenaName == "BE")
243 {
244 allowedArenas.emplace_back(BATTLEGROUND_BE);
245 }
246 else if (arenaName == "RL")
247 {
248 allowedArenas.emplace_back(BATTLEGROUND_RL);
249 }
250 else if (arenaName == "DS")
251 {
252 allowedArenas.emplace_back(BATTLEGROUND_DS);
253 }
254 else if (arenaName == "RV")
255 {
256 allowedArenas.emplace_back(BATTLEGROUND_RV);
257 }
258 else
259 {
260 handler->SendErrorMessage("Invalid [arena] specified.");
261 return false;
262 }
263 }
264
265 ASSERT(!allowedArenas.empty());
266 BattlegroundTypeId randomizedArenaBgTypeId = Acore::Containers::SelectRandomContainerElement(allowedArenas);
267
268 uint8 count = 0;
269 if (tokensItr != tokens.end())
270 {
271 std::string_view mode = *(tokensItr++);
272
273 if (mode == "1v1")
274 {
275 count = 2;
276 }
277 else if (mode == "2v2")
278 {
279 count = 4;
280 }
281 else if (mode == "3v3")
282 {
283 count = 6;
284 }
285 else if (mode == "5v5")
286 {
287 count = 10;
288 }
289 }
290
291 if (!count)
292 {
293 handler->SendErrorMessage("Invalid bracket. Can be 1v1, 2v2, 3v3, 5v5");
294 return false;
295 }
296
297 if (tokens.size() != uint16(count + 2))
298 {
299 handler->SendErrorMessage("Invalid number of nicknames for this bracket.");
300 return false;
301 }
302
303 uint8 hcnt = count / 2;
304 uint8 error = 0;
305 std::string last_name;
306 Player* plr = nullptr;
307 std::array<Player*, 10> players = {};
308 uint8 cnt = 0;
309
310 for (; tokensItr != tokens.end(); ++tokensItr)
311 {
312 last_name = std::string(*tokensItr);
313 plr = ObjectAccessor::FindPlayerByName(last_name, false);
314
315 if (!plr)
316 {
317 error = 1;
318 break;
319 }
320
321 if (!plr->IsInWorld() || !plr->FindMap() || plr->IsBeingTeleported())
322 {
323 error = 2;
324 break;
325 }
326
327 if (plr->GetMap()->GetEntry()->Instanceable())
328 {
329 error = 3;
330 break;
331 }
332
333 if (plr->IsUsingLfg())
334 {
335 error = 4;
336 break;
337 }
338
339 if (plr->InBattlegroundQueue())
340 {
341 error = 5;
342 break;
343 }
344
345 if (plr->IsInFlight())
346 {
347 error = 10;
348 break;
349 }
350
351 if (!plr->IsAlive())
352 {
353 error = 11;
354 break;
355 }
356
357 const Group* g = plr->GetGroup();
358
359 if (hcnt > 1)
360 {
361 if (!g)
362 {
363 error = 6;
364 break;
365 }
366
367 if (g->isRaidGroup() || g->isBGGroup() || g->isBFGroup() || g->isLFGGroup())
368 {
369 error = 7;
370 break;
371 }
372
373 if (g->GetMembersCount() != hcnt)
374 {
375 error = 8;
376 break;
377 }
378
379 uint8 sti = (cnt < hcnt ? 0 : hcnt);
380 if (sti != cnt && players[sti]->GetGroup() != plr->GetGroup())
381 {
382 error = 9;
383 last_name += " and " + players[sti]->GetName();
384 break;
385 }
386 }
387 else // 1v1
388 {
389 if (g)
390 {
391 error = 12;
392 break;
393 }
394 }
395
396 players[cnt++] = plr;
397 }
398
399 for (uint8 i = 0; i < cnt && !error; ++i)
400 {
401 for (uint8 j = i + 1; j < cnt; ++j)
402 {
403 if (players[i]->GetGUID() == players[j]->GetGUID())
404 {
405 last_name = players[i]->GetName();
406 error = 13;
407 break;
408 }
409 }
410 }
411
412 switch (error)
413 {
414 case 1:
415 handler->PSendSysMessage("Player {} not found.", last_name);
416 break;
417 case 2:
418 handler->PSendSysMessage("Player {} is being teleported.", last_name);
419 break;
420 case 3:
421 handler->PSendSysMessage("Player {} is in instance/battleground/arena.", last_name);
422 break;
423 case 4:
424 handler->PSendSysMessage("Player {} is in LFG system.", last_name);
425 break;
426 case 5:
427 handler->PSendSysMessage("Player {} is queued for battleground/arena.", last_name);
428 break;
429 case 6:
430 handler->PSendSysMessage("Player {} is not in group.", last_name);
431 break;
432 case 7:
433 handler->PSendSysMessage("Player {} is not in normal group.", last_name);
434 break;
435 case 8:
436 handler->PSendSysMessage("Group of player {} has invalid member count.", last_name);
437 break;
438 case 9:
439 handler->PSendSysMessage("Players {} are not in the same group.", last_name);
440 break;
441 case 10:
442 handler->PSendSysMessage("Player {} is in flight.", last_name);
443 break;
444 case 11:
445 handler->PSendSysMessage("Player {} is dead.", last_name);
446 break;
447 case 12:
448 handler->PSendSysMessage("Player {} is in a group.", last_name);
449 break;
450 case 13:
451 handler->PSendSysMessage("Player {} occurs more than once.", last_name);
452 break;
453 }
454
455 if (error)
456 {
457 handler->SetSentErrorMessage(true);
458 return false;
459 }
460
461 Battleground* bgt = sBattlegroundMgr->GetBattlegroundTemplate(BATTLEGROUND_AA);
462 if (!bgt)
463 {
464 handler->SendErrorMessage("Couldn't create arena map!");
465 return false;
466 }
467
468 Battleground* bg = sBattlegroundMgr->CreateNewBattleground(randomizedArenaBgTypeId, GetBattlegroundBracketById(bgt->GetMapId(), bgt->GetBracketId()), ArenaType(hcnt >= 2 ? hcnt : 2), false);
469 if (!bg)
470 {
471 handler->SendErrorMessage("Couldn't create arena map!");
472 return false;
473 }
474
475 bg->StartBattleground();
476
477 BattlegroundTypeId bgTypeId = bg->GetBgTypeID();
478
479 TeamId teamId1 = Player::TeamIdForRace(players[0]->getRace());
480 TeamId teamId2 = (teamId1 == TEAM_ALLIANCE ? TEAM_HORDE : TEAM_ALLIANCE);
481
482 for (uint8 i = 0; i < cnt; ++i)
483 {
484 Player* player = players[i];
485
486 TeamId teamId = (i < hcnt ? teamId1 : teamId2);
487 player->SetEntryPoint();
488
489 uint32 queueSlot = 0;
490 WorldPacket data;
491 sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_IN_PROGRESS, 0, bg->GetStartTime(), bg->GetArenaType(), teamId);
492 player->SendDirectMessage(&data);
493
494 // Remove from LFG queues
495 sLFGMgr->LeaveAllLfgQueues(player->GetGUID(), false);
496
497 player->SetBattlegroundId(bg->GetInstanceID(), bgTypeId, queueSlot, true, false, teamId);
498 sBattlegroundMgr->SendToBattleground(player, bg->GetInstanceID(), bgTypeId);
499 }
500
501 handler->PSendSysMessage("Success! Players are now being teleported to the arena.");
502 return true;
503 }
#define sBattlegroundMgr
Definition BattlegroundMgr.h:187
@ STATUS_IN_PROGRESS
Definition Battleground.h:193
ArenaType
Definition Battleground.h:207
PvPDifficultyEntry const * GetBattlegroundBracketById(uint32 mapid, BattlegroundBracketId id)
Definition DBCStores.cpp:815
#define ASSERT
Definition Errors.h:68
#define sLFGMgr
Definition LFGMgr.h:658
BattlegroundTypeId
Definition SharedDefines.h:3735
@ BATTLEGROUND_AA
Definition SharedDefines.h:3742
@ BATTLEGROUND_BE
Definition SharedDefines.h:3741
@ BATTLEGROUND_RV
Definition SharedDefines.h:3747
@ BATTLEGROUND_NA
Definition SharedDefines.h:3740
@ BATTLEGROUND_DS
Definition SharedDefines.h:3746
@ BATTLEGROUND_RL
Definition SharedDefines.h:3744
Definition Battleground.h:294
uint32 GetMapId() const
Definition Battleground.h:436
uint8 GetArenaType() const
Definition Battleground.h:348
void StartBattleground()
Definition Battleground.cpp:1174
uint32 GetInstanceID() const
Definition Battleground.h:322
uint32 GetStartTime() const
Definition Battleground.h:325
BattlegroundBracketId GetBracketId() const
Definition Battleground.h:321
BattlegroundTypeId GetBgTypeID(bool GetRandom=false) const
Definition Battleground.h:320
void SetSentErrorMessage(bool val)
Definition Chat.h:238
bool isLFGGroup(bool restricted=false) const
Definition Group.cpp:2278
bool isBGGroup() const
Definition Group.cpp:2289
uint32 GetMembersCount() const
Definition Group.h:245
bool isBFGroup() const
Definition Group.cpp:2294
bool isRaidGroup() const
Definition Group.cpp:2284
MapEntry const * GetEntry() const
Definition Map.h:173
bool IsInWorld() const
Definition Object.h:109
static TeamId TeamIdForRace(uint8 race)
Definition Player.cpp:5829
void SendDirectMessage(WorldPacket const *data) const
Definition Player.cpp:5692
bool InBattlegroundQueue(bool ignoreArena=false) const
Definition Player.cpp:12196
bool IsUsingLfg()
Definition Player.cpp:13114
Map * FindMap() const
Definition Object.h:626
Definition WorldPacket.h:26
auto SelectRandomContainerElement(C const &container) -> typename std::add_const< decltype(*std::begin(container))>::type &
Definition Containers.h:133
std::vector< std::string_view > Tokenize(std::string_view str, char sep, bool keepEmpty)
Definition Tokenize.cpp:20
Player * FindPlayerByName(std::string const &name, bool checkInWorld=true)
Definition ObjectAccessor.cpp:271
bool Instanceable() const
Definition DBCStructure.h:1353

References ASSERT, BATTLEGROUND_AA, BATTLEGROUND_BE, BATTLEGROUND_DS, BATTLEGROUND_NA, BATTLEGROUND_RL, BATTLEGROUND_RV, WorldObject::FindMap(), ObjectAccessor::FindPlayerByName(), Battleground::GetArenaType(), GetBattlegroundBracketById(), Battleground::GetBgTypeID(), Battleground::GetBracketId(), Map::GetEntry(), Player::GetGroup(), Object::GetGUID(), Battleground::GetInstanceID(), WorldObject::GetMap(), Battleground::GetMapId(), Group::GetMembersCount(), WorldObject::GetName(), Battleground::GetStartTime(), Player::InBattlegroundQueue(), MapEntry::Instanceable(), Unit::IsAlive(), Player::IsBeingTeleported(), Group::isBFGroup(), Group::isBGGroup(), Unit::IsInFlight(), Object::IsInWorld(), Group::isLFGGroup(), Group::isRaidGroup(), Player::IsUsingLfg(), ChatHandler::PSendSysMessage(), sBattlegroundMgr, Acore::Containers::SelectRandomContainerElement(), Player::SendDirectMessage(), ChatHandler::SendErrorMessage(), Player::SetBattlegroundId(), Player::SetEntryPoint(), ChatHandler::SetSentErrorMessage(), sLFGMgr, Battleground::StartBattleground(), STATUS_IN_PROGRESS, TEAM_ALLIANCE, TEAM_HORDE, Player::TeamIdForRace(), and Acore::Tokenize().

Referenced by GetCommands().

◆ HandleStringCommand()

static bool misc_commandscript::HandleStringCommand ( ChatHandler handler,
uint32  id,
Optional< uint8 locale 
)
inlinestatic
3123 {
3124 if (!id)
3125 {
3127 return false;
3128 }
3129
3130 std::string str = sObjectMgr->GetAcoreString(id, locale ? static_cast<LocaleConstant>(*locale) : DEFAULT_LOCALE);
3131 handler->SendSysMessage(str);
3132 return true;
3133 }
LocaleConstant
Definition Common.h:117
#define DEFAULT_LOCALE
Definition Common.h:131
@ LANG_CMD_SYNTAX
Definition Language.h:42

References DEFAULT_LOCALE, LANG_CMD_SYNTAX, ChatHandler::SendSysMessage(), and sObjectMgr.

Referenced by GetCommands().

◆ HandleSummonCommand()

static bool misc_commandscript::HandleSummonCommand ( ChatHandler handler,
Optional< PlayerIdentifier target 
)
inlinestatic
957 {
958 if (!target)
959 {
960 target = PlayerIdentifier::FromTarget(handler);
961 }
962
963 if (!target)
964 {
965 return false;
966 }
967
968 Player* _player = handler->GetSession()->GetPlayer();
969 if (target->GetGUID() == _player->GetGUID())
970 {
972 return false;
973 }
974
975 std::string nameLink = handler->playerLink(target->GetName());
976
977 if (target->IsConnected())
978 {
979 auto targetPlayer = target->GetConnectedPlayer();
980
981 // check online security
982 if (handler->HasLowerSecurity(targetPlayer))
983 {
984 return false;
985 }
986
987 if (targetPlayer->IsBeingTeleported())
988 {
989 handler->SendErrorMessage(LANG_IS_TELEPORTED, nameLink);
990 return false;
991 }
992
993 Map* map = handler->GetSession()->GetPlayer()->GetMap();
994
995 if (map->IsBattlegroundOrArena())
996 {
997 handler->SendErrorMessage("Can't summon to a battleground!");
998 return false;
999 }
1000 else if (map->IsDungeon())
1001 {
1002 // Allow GM to summon players or only other GM accounts inside instances.
1003 if (!sWorld->getBoolConfig(CONFIG_INSTANCE_GMSUMMON_PLAYER))
1004 {
1005 // pussywizard: prevent unbinding normal player's perm bind by just summoning him >_>
1006 if (!targetPlayer->GetSession()->GetSecurity())
1007 {
1008 handler->SendErrorMessage("Only GMs can be summoned to an instance!");
1009 return false;
1010 }
1011 }
1012
1013 Map* destMap = targetPlayer->GetMap();
1014
1015 if (destMap->Instanceable() && destMap->GetInstanceId() != map->GetInstanceId())
1016 {
1017 sInstanceSaveMgr->PlayerUnbindInstance(target->GetGUID(), map->GetInstanceId(), targetPlayer->GetDungeonDifficulty(), true, targetPlayer);
1018 }
1019
1020 // we are in an instance, and can only summon players in our group with us as leader
1021 if (!handler->GetSession()->GetPlayer()->GetGroup() || !targetPlayer->GetGroup() ||
1022 (targetPlayer->GetGroup()->GetLeaderGUID() != handler->GetSession()->GetPlayer()->GetGUID()) ||
1023 (handler->GetSession()->GetPlayer()->GetGroup()->GetLeaderGUID() != handler->GetSession()->GetPlayer()->GetGUID()))
1024 // the last check is a bit excessive, but let it be, just in case
1025 {
1026 handler->SendErrorMessage(LANG_CANNOT_SUMMON_TO_INST, nameLink);
1027 return false;
1028 }
1029 }
1030
1031 handler->PSendSysMessage(LANG_SUMMONING, nameLink, "");
1032 if (handler->needReportToTarget(targetPlayer))
1033 {
1034 ChatHandler(targetPlayer->GetSession()).PSendSysMessage(LANG_SUMMONED_BY, handler->playerLink(_player->GetName()));
1035 }
1036
1037 // stop flight if need
1038 if (targetPlayer->IsInFlight())
1039 {
1040 targetPlayer->GetMotionMaster()->MovementExpired();
1041 targetPlayer->CleanupAfterTaxiFlight();
1042 }
1043 // save only in non-flight case
1044 else
1045 {
1046 targetPlayer->SaveRecallPosition();
1047 }
1048
1049 // before GM
1050 float x, y, z;
1051 handler->GetSession()->GetPlayer()->GetClosePoint(x, y, z, targetPlayer->GetObjectSize());
1052 targetPlayer->TeleportTo(handler->GetSession()->GetPlayer()->GetMapId(), x, y, z, targetPlayer->GetOrientation(), 0, handler->GetSession()->GetPlayer());
1053 }
1054 else
1055 {
1056 // check offline security
1057 if (handler->HasLowerSecurity(nullptr, target->GetGUID()))
1058 {
1059 return false;
1060 }
1061
1062 handler->PSendSysMessage(LANG_SUMMONING, nameLink, handler->GetAcoreString(LANG_OFFLINE));
1063
1064 // in point where GM stay
1066 handler->GetSession()->GetPlayer()->GetPositionX(),
1067 handler->GetSession()->GetPlayer()->GetPositionY(),
1068 handler->GetSession()->GetPlayer()->GetPositionZ(),
1069 handler->GetSession()->GetPlayer()->GetOrientation(),
1070 handler->GetSession()->GetPlayer()->GetZoneId(),
1071 target->GetGUID());
1072 }
1073
1074 return true;
1075 }
@ CONFIG_INSTANCE_GMSUMMON_PLAYER
Definition WorldConfig.h:41
static void SavePositionInDB(uint32 mapid, float x, float y, float z, float o, uint32 zone, ObjectGuid guid)
Definition PlayerMisc.cpp:86

References CONFIG_INSTANCE_GMSUMMON_PLAYER, Acore::ChatCommands::PlayerIdentifier::FromTarget(), ChatHandler::GetAcoreString(), WorldObject::GetClosePoint(), Player::GetGroup(), Object::GetGUID(), Map::GetInstanceId(), Group::GetLeaderGUID(), WorldObject::GetMap(), WorldLocation::GetMapId(), WorldObject::GetName(), Position::GetOrientation(), WorldSession::GetPlayer(), Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), ChatHandler::GetSession(), WorldObject::GetZoneId(), ChatHandler::HasLowerSecurity(), Map::Instanceable(), Map::IsBattlegroundOrArena(), Map::IsDungeon(), LANG_CANNOT_SUMMON_TO_INST, LANG_CANT_TELEPORT_SELF, LANG_IS_TELEPORTED, LANG_OFFLINE, LANG_SUMMONED_BY, LANG_SUMMONING, ChatHandler::needReportToTarget(), ChatHandler::playerLink(), ChatHandler::PSendSysMessage(), Player::SavePositionInDB(), ChatHandler::SendErrorMessage(), sInstanceSaveMgr, and sWorld.

Referenced by GetCommands().

◆ HandleUnAuraCommand()

static bool misc_commandscript::HandleUnAuraCommand ( ChatHandler handler,
Variant< SpellInfo const *, std::string_view >  spells 
)
inlinestatic
748 {
749 Unit* target = handler->getSelectedUnit();
750 if (!target)
751 {
753 return false;
754 }
755
756 if (spells.holds_alternative<std::string_view>() && spells.get<std::string_view>() == "all")
757 {
758 target->RemoveAllAuras();
759 return true;
760 }
761
762 if (!spells.holds_alternative<SpellInfo const*>())
763 {
765 return false;
766 }
767
768 auto spell = spells.get<SpellInfo const*>();
769
770 if (!SpellMgr::IsSpellValid(spell))
771 {
772 handler->SendErrorMessage(LANG_COMMAND_SPELL_BROKEN, spell->Id);
773 return false;
774 }
775
776 target->RemoveAurasDueToSpell(spell->Id);
777
778 return true;
779 }
spells
Definition boss_krystallus.cpp:26
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint8 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
Definition Unit.cpp:5171
void RemoveAllAuras()
Definition Unit.cpp:5594

References ChatHandler::getSelectedUnit(), SpellMgr::IsSpellValid(), LANG_COMMAND_NOSPELLFOUND, LANG_COMMAND_SPELL_BROKEN, LANG_SELECT_CHAR_OR_CREATURE, Unit::RemoveAllAuras(), Unit::RemoveAurasDueToSpell(), and ChatHandler::SendErrorMessage().

Referenced by GetCommands().

◆ HandleUnbindSightCommand()

static bool misc_commandscript::HandleUnbindSightCommand ( ChatHandler handler)
inlinestatic
3103 {
3104 Player* player = handler->GetSession()->GetPlayer();
3105
3106 if (player->isPossessing())
3107 {
3108 return false;
3109 }
3110
3111 player->StopCastingBindSight();
3112 return true;
3113 }
void StopCastingBindSight(Aura *except=nullptr)
Definition Player.cpp:13202
bool isPossessing() const
Definition Unit.h:1313

References WorldSession::GetPlayer(), ChatHandler::GetSession(), Unit::isPossessing(), and Player::StopCastingBindSight().

Referenced by GetCommands().

◆ HandleUnFreezeCommand()

static bool misc_commandscript::HandleUnFreezeCommand ( ChatHandler handler,
Optional< PlayerIdentifier target 
)
inlinestatic
3011 {
3012 Creature* creatureTarget = handler->getSelectedCreature();
3013
3014 if (!target && !creatureTarget)
3015 {
3016 target = PlayerIdentifier::FromTargetOrSelf(handler);
3017 }
3018
3019 if (!target && !creatureTarget)
3020 {
3022 return false;
3023 }
3024
3025 Player* playerTarget = target->GetConnectedPlayer();
3026
3027 if (!creatureTarget && playerTarget && playerTarget->HasAura(SPELL_FREEZE))
3028 {
3029 handler->PSendSysMessage(LANG_COMMAND_UNFREEZE, target->GetName());
3030 playerTarget->RemoveAurasDueToSpell(SPELL_FREEZE);
3031 return true;
3032 }
3033 else if (creatureTarget && creatureTarget->HasAura(SPELL_FREEZE))
3034 {
3036 creatureTarget->RemoveAurasDueToSpell(SPELL_FREEZE);
3037 return true;
3038 }
3039 else if (!creatureTarget && target && !target->IsConnected())
3040 {
3042 stmt->SetData(0, target->GetGUID().GetCounter());
3043 CharacterDatabase.Execute(stmt);
3044 handler->PSendSysMessage(LANG_COMMAND_UNFREEZE, target->GetName());
3045 return true;
3046 }
3047
3049 return true;
3050 }
@ CHAR_DEL_CHAR_AURA_FROZEN
Definition CharacterDatabase.h:357
@ LANG_COMMAND_UNFREEZE
Definition Language.h:1064
@ LANG_COMMAND_FREEZE_WRONG
Definition Language.h:1063
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint8 reqEffMask=0) const
Definition Unit.cpp:5999

References CHAR_DEL_CHAR_AURA_FROZEN, CharacterDatabase, Acore::ChatCommands::PlayerIdentifier::FromTargetOrSelf(), GetLocalizeCreatureName(), ChatHandler::getSelectedCreature(), ChatHandler::GetSessionDbcLocale(), Unit::HasAura(), LANG_COMMAND_FREEZE_WRONG, LANG_COMMAND_UNFREEZE, LANG_SELECT_CHAR_OR_CREATURE, ChatHandler::PSendSysMessage(), Unit::RemoveAurasDueToSpell(), ChatHandler::SendErrorMessage(), ChatHandler::SendSysMessage(), PreparedStatementBase::SetData(), and SPELL_FREEZE.

Referenced by GetCommands().

◆ HandleUnmuteCommand()

static bool misc_commandscript::HandleUnmuteCommand ( ChatHandler handler,
Optional< PlayerIdentifier target 
)
inlinestatic
2654 {
2655 if (!target)
2656 {
2657 target = PlayerIdentifier::FromTargetOrSelf(handler);
2658 }
2659
2660 if (!target)
2661 {
2662 return false;
2663 }
2664
2665 Player* playerTarget = target->GetConnectedPlayer();
2666 uint32 accountId = playerTarget ? playerTarget->GetSession()->GetAccountId() : sCharacterCache->GetCharacterAccountIdByGuid(target->GetGUID());
2667
2668 // find only player from same account if any
2669 if (!playerTarget)
2670 {
2671 if (WorldSession* session = sWorldSessionMgr->FindSession(accountId))
2672 {
2673 playerTarget = session->GetPlayer();
2674 }
2675 }
2676
2677 // must have strong lesser security level
2678 if (handler->HasLowerSecurity(playerTarget, target->GetGUID(), true))
2679 {
2680 return false;
2681 }
2682
2683 if (playerTarget)
2684 {
2685 if (playerTarget->CanSpeak())
2686 {
2688 return false;
2689 }
2690
2691 playerTarget->GetSession()->m_muteTime = 0;
2692 }
2693
2695 stmt->SetData(0, 0);
2696 stmt->SetData(1, "");
2697 stmt->SetData(2, "");
2698 stmt->SetData(3, accountId);
2699 LoginDatabase.Execute(stmt);
2700
2701 if (playerTarget)
2702 {
2704 }
2705
2706 handler->PSendSysMessage(LANG_YOU_ENABLE_CHAT, handler->playerLink(target->GetName()));
2707
2708 return true;
2709 }
@ LANG_CHAT_ALREADY_ENABLED
Definition Language.h:351
@ LANG_YOU_ENABLE_CHAT
Definition Language.h:353
@ LANG_YOUR_CHAT_ENABLED
Definition Language.h:352
bool CanSpeak() const
Definition PlayerMisc.cpp:71

References Player::CanSpeak(), Acore::ChatCommands::PlayerIdentifier::FromTargetOrSelf(), WorldSession::GetAccountId(), Object::GetGUID(), Player::GetSession(), ChatHandler::HasLowerSecurity(), LANG_CHAT_ALREADY_ENABLED, LANG_YOU_ENABLE_CHAT, LANG_YOUR_CHAT_ENABLED, LOGIN_UPD_MUTE_TIME, LoginDatabase, WorldSession::m_muteTime, ChatHandler::playerLink(), ChatHandler::PSendSysMessage(), sCharacterCache, ChatHandler::SendErrorMessage(), PreparedStatementBase::SetData(), and sWorldSessionMgr.

Referenced by GetCommands().

◆ HandleUnPossessCommand()

static bool misc_commandscript::HandleUnPossessCommand ( ChatHandler handler)
inlinestatic
3079 {
3080 Unit* unit = handler->getSelectedUnit();
3081 if (!unit)
3082 {
3083 unit = handler->GetSession()->GetPlayer();
3084 }
3085
3086 unit->RemoveCharmAuras();
3087 return true;
3088 }
void RemoveCharmAuras()
Definition Unit.cpp:8306

References WorldSession::GetPlayer(), ChatHandler::getSelectedUnit(), ChatHandler::GetSession(), and Unit::RemoveCharmAuras().

Referenced by GetCommands().

◆ HandleUnstuckCommand()

static bool misc_commandscript::HandleUnstuckCommand ( ChatHandler handler,
Optional< PlayerIdentifier target,
Optional< std::string_view >  location 
)
inlinestatic
1482 {
1483 // No args required for players
1484 if (handler->GetSession() && AccountMgr::IsPlayerAccount(handler->GetSession()->GetSecurity()))
1485 {
1486 if (Player* player = handler->GetSession()->GetPlayer())
1487 {
1488 player->CastSpell(player, SPELL_STUCK, false);
1489 }
1490
1491 return true;
1492 }
1493
1494 if (!target)
1495 {
1496 target = PlayerIdentifier::FromTargetOrSelf(handler);
1497 }
1498
1499 if (!target || !target->IsConnected())
1500 {
1501 if (handler->HasLowerSecurity(nullptr, target->GetGUID()))
1502 return false;
1503
1505 stmt->SetData(0, target->GetGUID().GetCounter());
1506
1507 PreparedQueryResult result = CharacterDatabase.Query(stmt);
1508
1509 if (result)
1510 {
1511 Field* fieldsDB = result->Fetch();
1512 WorldLocation loc(fieldsDB[0].Get<uint16>(), fieldsDB[2].Get<float>(), fieldsDB[3].Get<float>(), fieldsDB[4].Get<float>(), 0.0f);
1513 uint32 zoneId = fieldsDB[1].Get<uint16>();
1514
1515 Player::SavePositionInDB(loc, zoneId, target->GetGUID(), nullptr);
1516
1517 handler->PSendSysMessage(LANG_SUMMONING, target->GetName(), handler->GetAcoreString(LANG_OFFLINE));
1518 }
1519
1520 return true;
1521 }
1522
1523 Player* player = target->GetConnectedPlayer();
1524
1525 if (player->IsInFlight() || player->IsInCombat())
1526 {
1527 SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(7355);
1528 if (!spellInfo)
1529 return false;
1530
1531 if (player)
1533
1534 return false;
1535 }
1536
1537 if (location->empty() || *location == "inn")
1538 {
1539 player->TeleportTo(player->m_homebindMapId, player->m_homebindX, player->m_homebindY, player->m_homebindZ, player->GetOrientation());
1540 return true;
1541 }
1542
1543 if (*location == "graveyard")
1544 {
1545 player->RepopAtGraveyard();
1546 return true;
1547 }
1548
1549 if (*location == "startzone")
1550 {
1551 player->TeleportTo(player->GetStartPosition());
1552 return true;
1553 }
1554
1555 //Not a supported argument
1556 return false;
1557 }
@ CHAR_SEL_CHARACTER_HOMEBIND
Definition CharacterDatabase.h:87
@ SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW
Definition SharedDefines.h:1110
float m_homebindZ
Definition Player.h:2411
uint32 m_homebindMapId
Definition Player.h:2407
void RepopAtGraveyard()
Definition Player.cpp:4836
float m_homebindY
Definition Player.h:2410
WorldLocation GetStartPosition() const
Definition Player.cpp:11355
float m_homebindX
Definition Player.h:2409
static void SendCastResult(Player *caster, SpellInfo const *spellInfo, uint8 castCount, SpellCastResult result, SpellCustomErrors customError=SPELL_CUSTOM_ERROR_NONE)
Definition Spell.cpp:4619
bool IsInCombat() const
Definition Unit.h:935
Definition Position.h:256
constexpr auto SPELL_STUCK
Definition cs_misc.cpp:60

References CHAR_SEL_CHARACTER_HOMEBIND, CharacterDatabase, Acore::ChatCommands::PlayerIdentifier::FromTargetOrSelf(), Field::Get(), ChatHandler::GetAcoreString(), Position::GetOrientation(), WorldSession::GetPlayer(), WorldSession::GetSecurity(), ChatHandler::GetSession(), Player::GetStartPosition(), ChatHandler::HasLowerSecurity(), Unit::IsInCombat(), Unit::IsInFlight(), AccountMgr::IsPlayerAccount(), LANG_OFFLINE, LANG_SUMMONING, Player::m_homebindMapId, Player::m_homebindX, Player::m_homebindY, Player::m_homebindZ, ChatHandler::PSendSysMessage(), Player::RepopAtGraveyard(), Player::SavePositionInDB(), Spell::SendCastResult(), PreparedStatementBase::SetData(), SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW, SPELL_STUCK, sSpellMgr, and Player::TeleportTo().

Referenced by GetCommands().


The documentation for this class was generated from the following file: