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 HandleRespawnCreatureByGuidCommand (ChatHandler *handler, ObjectGuid::LowType spawnId)
 
static bool HandleRespawnGameObjectByGuidCommand (ChatHandler *handler, ObjectGuid::LowType spawnId)
 
static bool HandleRespawnCreatureByEntryCommand (ChatHandler *handler, uint32 entry, Optional< uint32 > mapIdArg, Optional< uint32 > instanceIdArg)
 
static bool HandleRespawnGameObjectByEntryCommand (ChatHandler *handler, uint32 entry, Optional< uint32 > mapIdArg, Optional< uint32 > instanceIdArg)
 
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
136: CommandScript("misc_commandscript") { }
Definition CommandScript.h:25

Member Function Documentation

◆ GetCommands()

ChatCommandTable misc_commandscript::GetCommands ( ) const
inlineoverridevirtual

Implements CommandScript.

139 {
140 static ChatCommandTable auraCommandTable =
141 {
144 };
145
146 static ChatCommandTable commandTable =
147 {
148 { "commentator", HandleCommentatorCommand, rbac::RBAC_PERM_COMMAND_COMMENTATOR, Console::No },
149 { "dev", HandleDevCommand, rbac::RBAC_PERM_COMMAND_DEV, Console::No },
150 { "gps", HandleGPSCommand, rbac::RBAC_PERM_COMMAND_GPS, Console::No },
151 { "aura", auraCommandTable },
152 { "unaura", HandleUnAuraCommand, rbac::RBAC_PERM_COMMAND_UNAURA, Console::No },
153 { "appear", HandleAppearCommand, rbac::RBAC_PERM_COMMAND_APPEAR, Console::No },
154 { "summon", HandleSummonCommand, rbac::RBAC_PERM_COMMAND_SUMMON, Console::No },
155 { "groupsummon", HandleGroupSummonCommand, rbac::RBAC_PERM_COMMAND_GROUP_SUMMON, Console::No },
156 { "commands", HandleCommandsCommand, rbac::RBAC_PERM_COMMAND_COMMANDS, Console::Yes },
157 { "die", HandleDieCommand, rbac::RBAC_PERM_COMMAND_DIE, Console::No },
158 { "revive", HandleReviveCommand, rbac::RBAC_PERM_COMMAND_REVIVE, Console::Yes },
159 { "dismount", HandleDismountCommand, rbac::RBAC_PERM_COMMAND_DISMOUNT, Console::No },
160 { "guid", HandleGUIDCommand, rbac::RBAC_PERM_COMMAND_GUID, Console::No },
161 { "help", HandleHelpCommand, rbac::RBAC_PERM_COMMAND_HELP, Console::Yes },
162 { "cooldown", HandleCooldownCommand, rbac::RBAC_PERM_COMMAND_COOLDOWN, Console::No },
164 { "recall", HandleRecallCommand, rbac::RBAC_PERM_COMMAND_RECALL, Console::No },
165 { "save", HandleSaveCommand, rbac::RBAC_PERM_COMMAND_SAVE, Console::No },
166 { "saveall", HandleSaveAllCommand, rbac::RBAC_PERM_COMMAND_SAVEALL, Console::Yes },
167 { "kick", HandleKickPlayerCommand, rbac::RBAC_PERM_COMMAND_KICK, Console::Yes },
168 { "unstuck", HandleUnstuckCommand, rbac::RBAC_PERM_COMMAND_UNSTUCK, Console::Yes },
169 { "linkgrave", HandleLinkGraveCommand, rbac::RBAC_PERM_COMMAND_LINKGRAVE, Console::No },
170 { "neargrave", HandleNearGraveCommand, rbac::RBAC_PERM_COMMAND_NEARGRAVE, Console::No },
171 { "showarea", HandleShowAreaCommand, rbac::RBAC_PERM_COMMAND_SHOWAREA, Console::No },
172 { "hidearea", HandleHideAreaCommand, rbac::RBAC_PERM_COMMAND_HIDEAREA, Console::No },
173 { "additem", HandleAddItemCommand, rbac::RBAC_PERM_COMMAND_ADDITEM, Console::Yes },
174 { "additem set", HandleAddItemSetCommand, rbac::RBAC_PERM_COMMAND_ADDITEMSET, Console::No },
175 { "wchange", HandleChangeWeather, rbac::RBAC_PERM_COMMAND_WCHANGE, Console::No },
176 { "maxskill", HandleMaxSkillCommand, rbac::RBAC_PERM_COMMAND_MAXSKILL, Console::No },
177 { "setskill", HandleSetSkillCommand, rbac::RBAC_PERM_COMMAND_SETSKILL, Console::No },
178 { "pinfo", HandlePInfoCommand, rbac::RBAC_PERM_COMMAND_PINFO, Console::Yes },
179 { "respawn", HandleRespawnCommand, rbac::RBAC_PERM_COMMAND_RESPAWN, Console::No },
180 { "respawn all", HandleRespawnAllCommand, rbac::RBAC_PERM_COMMAND_RESPAWN_ALL, Console::No },
185 { "mute", HandleMuteCommand, rbac::RBAC_PERM_COMMAND_MUTE, Console::Yes },
186 { "mutehistory", HandleMuteInfoCommand, rbac::RBAC_PERM_COMMAND_MUTEHISTORY, Console::Yes },
187 { "unmute", HandleUnmuteCommand, rbac::RBAC_PERM_COMMAND_UNMUTE, Console::Yes },
188 { "movegens", HandleMovegensCommand, rbac::RBAC_PERM_COMMAND_MOVEGENS, Console::No },
189 { "cometome", HandleComeToMeCommand, rbac::RBAC_PERM_COMMAND_COMETOME, Console::No },
190 { "damage", HandleDamageCommand, rbac::RBAC_PERM_COMMAND_DAMAGE, Console::No },
191 { "combatstop", HandleCombatStopCommand, rbac::RBAC_PERM_COMMAND_COMBATSTOP, Console::Yes },
192 { "flusharenapoints", HandleFlushArenaPointsCommand, rbac::RBAC_PERM_COMMAND_FLUSHARENAPOINTS, Console::Yes },
193 { "freeze", HandleFreezeCommand, rbac::RBAC_PERM_COMMAND_FREEZE, Console::No },
194 { "unfreeze", HandleUnFreezeCommand, rbac::RBAC_PERM_COMMAND_UNFREEZE, Console::No },
195 { "possess", HandlePossessCommand, rbac::RBAC_PERM_COMMAND_POSSESS, Console::No },
196 { "unpossess", HandleUnPossessCommand, rbac::RBAC_PERM_COMMAND_UNPOSSESS, Console::No },
197 { "bindsight", HandleBindSightCommand, rbac::RBAC_PERM_COMMAND_BINDSIGHT, Console::No },
198 { "unbindsight", HandleUnbindSightCommand, rbac::RBAC_PERM_COMMAND_UNBINDSIGHT, Console::No },
199 { "playall", HandlePlayAllCommand, rbac::RBAC_PERM_COMMAND_PLAYALL, Console::No },
200 { "skirmish", HandleSkirmishCommand, rbac::RBAC_PERM_COMMAND_SKIRMISH, Console::No },
201 { "mailbox", HandleMailBoxCommand, rbac::RBAC_PERM_COMMAND_MAILBOX, Console::No },
202 { "string", HandleStringCommand, rbac::RBAC_PERM_COMMAND_STRING, Console::No },
203 { "opendoor", HandleOpenDoorCommand, rbac::RBAC_PERM_COMMAND_OPENDOOR, Console::No },
205 { "packetlog", HandlePacketLog, rbac::RBAC_PERM_COMMAND_PACKETLOG, Console::Yes }
206 };
207
208 return commandTable;
209 }
static bool HandleCommentatorCommand(ChatHandler *handler, Optional< bool > enableArg)
Definition cs_misc.cpp:510
static bool HandleDevCommand(ChatHandler *handler, Optional< bool > enableArg)
Definition cs_misc.cpp:552
static bool HandleDamageCommand(ChatHandler *handler, uint32 damage, Optional< std::string > percent)
Definition cs_misc.cpp:3167
static bool HandleSaveCommand(ChatHandler *handler)
Definition cs_misc.cpp:1401
static bool HandleAuraStacksCommand(ChatHandler *handler, SpellInfo const *spell, int16 stacks)
Definition cs_misc.cpp:707
static bool HandleLinkGraveCommand(ChatHandler *handler, uint32 graveyardId, Optional< std::string_view > team)
Definition cs_misc.cpp:1564
static bool HandlePlayAllCommand(ChatHandler *handler, uint32 soundId)
Definition cs_misc.cpp:3316
static bool HandleAddItemCommand(ChatHandler *handler, Optional< PlayerIdentifier > player, ItemTemplate const *itemTemplate, Optional< int32 > _count)
Definition cs_misc.cpp:1754
static bool HandleAuraCommand(ChatHandler *handler, SpellInfo const *spell)
Definition cs_misc.cpp:681
static bool HandleUnstuckCommand(ChatHandler *handler, Optional< PlayerIdentifier > target, Optional< std::string_view > location)
Definition cs_misc.cpp:1486
static bool HandleRespawnAllCommand(ChatHandler *handler)
Definition cs_misc.cpp:2739
static bool HandleSkirmishCommand(ChatHandler *handler, std::vector< std::string_view > args)
Definition cs_misc.cpp:211
static bool HandleUnbindSightCommand(ChatHandler *handler)
Definition cs_misc.cpp:3366
static bool HandleRespawnCreatureByGuidCommand(ChatHandler *handler, ObjectGuid::LowType spawnId)
Definition cs_misc.cpp:2456
static bool HandleShowAreaCommand(ChatHandler *handler, uint32 areaID)
Definition cs_misc.cpp:1692
static bool HandleStringCommand(ChatHandler *handler, uint32 id, Optional< uint8 > locale)
Definition cs_misc.cpp:3386
static bool HandleChangeWeather(ChatHandler *handler, uint32 type, float grade)
Definition cs_misc.cpp:1917
static bool HandlePInfoCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:1999
static bool HandleBMCommand(ChatHandler *handler, Optional< bool > enableArg)
Definition cs_misc.cpp:3412
static bool HandleSummonCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:961
static bool HandleCooldownCommand(ChatHandler *handler, Optional< SpellInfo const * > spell)
Definition cs_misc.cpp:1306
static bool HandleReviveCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:1231
static bool HandleOpenDoorCommand(ChatHandler *handler, Optional< float > range)
Definition cs_misc.cpp:3399
static bool HandleCommandsCommand(ChatHandler *handler)
Definition cs_misc.cpp:1188
static bool HandleMailBoxCommand(ChatHandler *handler)
Definition cs_misc.cpp:3379
static bool HandleDieCommand(ChatHandler *handler)
Definition cs_misc.cpp:1194
static bool HandleAppearCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:786
static bool HandleHelpCommand(ChatHandler *handler, Tail cmd)
Definition cs_misc.cpp:1294
static bool HandleRespawnCommand(ChatHandler *handler)
Definition cs_misc.cpp:2715
static bool HandleNearGraveCommand(ChatHandler *handler, Optional< std::string_view > team)
Definition cs_misc.cpp:1615
static bool HandleMovegensCommand(ChatHandler *handler)
Definition cs_misc.cpp:3017
static bool HandleGUIDCommand(ChatHandler *handler)
Definition cs_misc.cpp:1280
static bool HandleAddItemSetCommand(ChatHandler *handler, Variant< Hyperlink< itemset >, uint32 > itemSetId)
Definition cs_misc.cpp:1856
static bool HandleSaveAllCommand(ChatHandler *handler)
Definition cs_misc.cpp:1432
static bool HandleGPSCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:595
static bool HandleKickPlayerCommand(ChatHandler *handler, Optional< PlayerIdentifier > target, Optional< std::string_view > reason)
Definition cs_misc.cpp:1440
static bool HandleHideAreaCommand(ChatHandler *handler, uint32 areaID)
Definition cs_misc.cpp:1723
static bool HandleSetSkillCommand(ChatHandler *handler, Variant< Hyperlink< skill >, uint32 > skillId, int32 level, Optional< uint16 > maxPureSkill)
Definition cs_misc.cpp:1955
static bool HandlePacketLog(ChatHandler *handler, Optional< PlayerIdentifier > target, Optional< bool > enableArg)
Definition cs_misc.cpp:3453
static bool HandleUnmuteCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:2917
static bool HandleRecallCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:1364
static bool HandleBindSightCommand(ChatHandler *handler)
Definition cs_misc.cpp:3354
static bool HandleComeToMeCommand(ChatHandler *handler)
Definition cs_misc.cpp:3151
static bool HandleUnPossessCommand(ChatHandler *handler)
Definition cs_misc.cpp:3342
static bool HandleRespawnGameObjectByEntryCommand(ChatHandler *handler, uint32 entry, Optional< uint32 > mapIdArg, Optional< uint32 > instanceIdArg)
Definition cs_misc.cpp:2643
static bool HandleDismountCommand(ChatHandler *handler)
Definition cs_misc.cpp:1256
static bool HandleGroupSummonCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:1083
static bool HandleCombatStopCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:3199
static bool HandleUnAuraCommand(ChatHandler *handler, Variant< SpellInfo const *, std::string_view > spells)
Definition cs_misc.cpp:752
static bool HandleGetDistanceCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:1336
static bool HandleMaxSkillCommand(ChatHandler *handler)
Definition cs_misc.cpp:1941
static bool HandleFlushArenaPointsCommand(ChatHandler *)
Definition cs_misc.cpp:3225
static bool HandleFreezeCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:3231
static bool HandleRespawnGameObjectByGuidCommand(ChatHandler *handler, ObjectGuid::LowType spawnId)
Definition cs_misc.cpp:2515
static bool HandleMuteInfoCommand(ChatHandler *handler, std::string accountName)
Definition cs_misc.cpp:2976
static bool HandleUnFreezeCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:3274
static bool HandleMuteCommand(ChatHandler *handler, Optional< PlayerIdentifier > player, std::string notSpeakTime, Tail muteReason)
Definition cs_misc.cpp:2793
static bool HandlePossessCommand(ChatHandler *handler)
Definition cs_misc.cpp:3330
static bool HandleRespawnCreatureByEntryCommand(ChatHandler *handler, uint32 entry, Optional< uint32 > mapIdArg, Optional< uint32 > instanceIdArg)
Definition cs_misc.cpp:2571
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_RESPAWN_CREATURE_ENTRY
Definition RBAC.h:682
@ RBAC_PERM_COMMAND_GPS
Definition RBAC.h:336
@ RBAC_PERM_COMMAND_RESPAWN_CREATURE_GUID
Definition RBAC.h:680
@ 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_RESPAWN_GAMEOBJECT_GUID
Definition RBAC.h:681
@ 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_RESPAWN_GAMEOBJECT_ENTRY
Definition RBAC.h:683
@ 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(), HandleRespawnCreatureByEntryCommand(), HandleRespawnCreatureByGuidCommand(), HandleRespawnGameObjectByEntryCommand(), HandleRespawnGameObjectByGuidCommand(), 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_RESPAWN_CREATURE_ENTRY, rbac::RBAC_PERM_COMMAND_RESPAWN_CREATURE_GUID, rbac::RBAC_PERM_COMMAND_RESPAWN_GAMEOBJECT_ENTRY, rbac::RBAC_PERM_COMMAND_RESPAWN_GAMEOBJECT_GUID, 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
1755 {
1756 if (!sObjectMgr->GetItemTemplate(itemTemplate->ItemId))
1757 {
1758 handler->SendErrorMessage(LANG_COMMAND_ITEMIDINVALID, itemTemplate->ItemId);
1759 return false;
1760 }
1761
1762 uint32 itemId = itemTemplate->ItemId;
1763 int32 count = 1;
1764
1765 if (_count)
1766 count = *_count;
1767
1768 if (!count)
1769 count = 1;
1770
1771 if (!player)
1772 player = PlayerIdentifier::FromTargetOrSelf(handler);
1773
1774 if (!player)
1775 return false;
1776
1777 Player* playerTarget = player->GetConnectedPlayer();
1778
1779 if (!playerTarget)
1780 return false;
1781
1782 // Subtract
1783 if (count < 0)
1784 {
1785 // Only have scam check on player accounts
1786 if (playerTarget->GetSession()->GetSecurity() == SEC_PLAYER)
1787 {
1788 if (!playerTarget->HasItemCount(itemId, 0))
1789 {
1790 // output that player don't have any items to destroy
1791 handler->SendErrorMessage(LANG_REMOVEITEM_FAILURE, handler->GetNameLink(playerTarget), itemId);
1792 return false;
1793 }
1794
1795 if (!playerTarget->HasItemCount(itemId, -count))
1796 {
1797 // output that player don't have as many items that you want to destroy
1798 handler->SendErrorMessage(LANG_REMOVEITEM_ERROR, handler->GetNameLink(playerTarget), itemId);
1799 return false;
1800 }
1801 }
1802
1803 // output successful amount of destroyed items
1804 playerTarget->DestroyItemCount(itemId, -count, true, false);
1805 handler->PSendSysMessage(LANG_REMOVEITEM, itemId, -count, handler->GetNameLink(playerTarget));
1806 return true;
1807 }
1808
1809 // Adding items
1810 uint32 noSpaceForCount = 0;
1811
1812 // check space and find places
1813 ItemPosCountVec dest;
1814 InventoryResult msg = playerTarget->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, itemId, count, &noSpaceForCount);
1815
1816 if (msg != EQUIP_ERR_OK) // convert to possible store amount
1817 count -= noSpaceForCount;
1818
1819 if (!count || dest.empty()) // can't add any
1820 {
1821 handler->SendErrorMessage(LANG_ITEM_CANNOT_CREATE, itemId, noSpaceForCount);
1822 return false;
1823 }
1824
1825 Item* item = playerTarget->StoreNewItem(dest, itemId, true);
1826
1827 Player* p = handler->GetSession() ? handler->GetSession()->GetPlayer() : nullptr;
1828 // remove binding (let GM give it to another player later)
1829 if (p && p == playerTarget)
1830 {
1831 for (auto const& itemPos : dest)
1832 {
1833 if (Item* item1 = p->GetItemByPos(itemPos.pos))
1834 {
1835 item1->SetBinding(false);
1836 }
1837 }
1838 }
1839
1840 if (p && count && item)
1841 {
1842 p->SendNewItem(item, count, false, true);
1843
1844 if (p != playerTarget)
1845 {
1846 playerTarget->SendNewItem(item, count, true, false);
1847 }
1848 }
1849
1850 if (noSpaceForCount)
1851 handler->PSendSysMessage(LANG_ITEM_CANNOT_CREATE, itemId, noSpaceForCount);
1852
1853 return true;
1854 }
@ 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:1412
@ LANG_REMOVEITEM_ERROR
Definition Language.h:1413
@ LANG_REMOVEITEM
Definition Language.h:545
@ LANG_COMMAND_ITEMIDINVALID
Definition Language.h:476
#define sObjectMgr
Definition ObjectMgr.h:1732
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:2023
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:4817
void DestroyItemCount(uint32 item, uint32 count, bool update, bool unequip_check=false)
Definition PlayerStorage.cpp:3187
Item * StoreNewItem(ItemPosCountVec const &pos, uint32 item, bool update, int32 randomPropertyId=0, bool refund=false)
Definition PlayerStorage.cpp:2601
InventoryResult CanStoreNewItem(uint8 bag, uint8 slot, ItemPosCountVec &dest, uint32 item, uint32 count, uint32 *no_space_count=nullptr) const
Definition Player.h:1300
AccountTypes GetSecurity() const
Definition WorldSession.h:451
Player * GetPlayer() const
Definition WorldSession.h:464
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
1857 {
1858 // prevent generation all items with itemset field value '0'
1859 if (!*itemSetId)
1860 {
1862 return false;
1863 }
1864
1865 Player* player = handler->GetSession()->GetPlayer();
1866 Player* playerTarget = handler->getSelectedPlayer();
1867
1868 if (!playerTarget)
1869 {
1870 playerTarget = player;
1871 }
1872
1873 bool found = false;
1874
1875 for (auto const& [itemid, itemTemplate] : *sObjectMgr->GetItemTemplateStore())
1876 {
1877 if (itemTemplate.ItemSet == uint32(itemSetId))
1878 {
1879 found = true;
1880 ItemPosCountVec dest;
1881 InventoryResult msg = playerTarget->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, itemTemplate.ItemId, 1);
1882
1883 if (msg == EQUIP_ERR_OK)
1884 {
1885 Item* item = playerTarget->StoreNewItem(dest, itemTemplate.ItemId, true);
1886
1887 // remove binding (let GM give it to another player later)
1888 if (player == playerTarget)
1889 {
1890 item->SetBinding(false);
1891 }
1892
1893 player->SendNewItem(item, 1, false, true);
1894
1895 if (player != playerTarget)
1896 {
1897 playerTarget->SendNewItem(item, 1, true, false);
1898 }
1899 }
1900 else
1901 {
1902 player->SendEquipError(msg, nullptr, nullptr, itemTemplate.ItemId);
1903 handler->PSendSysMessage(LANG_ITEM_CANNOT_CREATE, itemTemplate.ItemId, 1);
1904 }
1905 }
1906 }
1907
1908 if (!found)
1909 {
1911 return false;
1912 }
1913
1914 return true;
1915 }
@ 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:4093

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
787 {
788 if (!target)
789 {
790 target = PlayerIdentifier::FromTarget(handler);
791 }
792
793 if (!target)
794 {
795 return false;
796 }
797
798 Player* _player = handler->GetSession()->GetPlayer();
799 if (target->GetGUID() == _player->GetGUID())
800 {
802 return false;
803 }
804
805 std::string nameLink = handler->playerLink(target->GetName());
806
807 if (target->IsConnected())
808 {
809 auto targetPlayer = target->GetConnectedPlayer();
810
811 // check online security
812 if (handler->HasLowerSecurity(targetPlayer))
813 {
814 return false;
815 }
816
817 Map* map = targetPlayer->GetMap();
818 if (map->IsBattlegroundOrArena())
819 {
820 // only allow if gm mode is on
821 if (!_player->IsGameMaster())
822 {
823 handler->SendErrorMessage(LANG_CANNOT_GO_TO_BG_GM, nameLink);
824 return false;
825 }
826
827 if (!_player->GetMap()->IsBattlegroundOrArena())
828 {
829 _player->SetEntryPoint();
830 }
831
832 _player->SetBattlegroundId(targetPlayer->GetBattlegroundId(), targetPlayer->GetBattlegroundTypeId(), PLAYER_MAX_BATTLEGROUND_QUEUES, false, false, TEAM_NEUTRAL);
833 }
834 else if (map->IsDungeon())
835 {
836 // we have to go to instance, and can go to player only if:
837 // 1) we are in his group (either as leader or as member)
838 // 2) we are not bound to any group and have GM mode on
839 if (_player->GetGroup())
840 {
841 // we are in group, we can go only if we are in the player group
842 if (_player->GetGroup() != targetPlayer->GetGroup())
843 {
845 return false;
846 }
847 }
848 else
849 {
850 // we are not in group, let's verify our GM mode
851 if (!_player->IsGameMaster())
852 {
854 return false;
855 }
856 }
857
858 // if the GM is bound to another instance, he will not be bound to another one
859 InstancePlayerBind* bind = sInstanceSaveMgr->PlayerGetBoundInstance(_player->GetGUID(), targetPlayer->GetMapId(), targetPlayer->GetDifficulty(map->IsRaid()));
860 if (!bind)
861 {
862 if (InstanceSave* save = sInstanceSaveMgr->GetInstanceSave(target->GetConnectedPlayer()->GetInstanceId()))
863 {
864 sInstanceSaveMgr->PlayerBindToInstance(_player->GetGUID(), save, !save->CanReset(), _player);
865 }
866 }
867
868 if (map->IsRaid())
869 {
870 _player->SetRaidDifficulty(targetPlayer->GetRaidDifficulty());
871 }
872 else
873 {
874 _player->SetDungeonDifficulty(targetPlayer->GetDungeonDifficulty());
875 }
876 }
877
878 handler->PSendSysMessage(LANG_APPEARING_AT, nameLink);
879
880 // stop flight if need
881 if (_player->IsInFlight())
882 {
883 _player->GetMotionMaster()->MovementExpired();
884 _player->CleanupAfterTaxiFlight();
885 }
886 else // save only in non-flight case
887 _player->SaveRecallPosition();
888
889 if (Transport* transport = targetPlayer->GetTransport())
890 {
891 if (Transport* oldTransport = _player->GetTransport())
892 oldTransport->RemovePassenger(_player, true);
893
894 float x;
895 float y;
896 float z;
897 float o;
898 targetPlayer->m_movementInfo.transport.pos.GetPosition(x, y, z, o);
899
900 _player->SetTransport(transport);
901 _player->m_movementInfo.transport.guid = transport->GetGUID();
902 _player->m_movementInfo.transport.pos.Relocate(x, y, z, o);
904
905 float worldX = x;
906 float worldY = y;
907 float worldZ = z;
908 float worldO = o;
909 transport->CalculatePassengerPosition(worldX, worldY, worldZ, &worldO);
910
911 transport->AddPassenger(_player, false);
912
913 if (_player->TeleportTo(transport->GetMapId(), worldX, worldY, worldZ + 0.25f, worldO, TELE_TO_NOT_LEAVE_TRANSPORT | TELE_TO_GM_MODE, targetPlayer))
914 _player->SetPhaseMask(targetPlayer->GetPhaseMask() | 1, false);
915 }
916 else
917 {
918 if (_player->TeleportTo(targetPlayer->GetMapId(), targetPlayer->GetPositionX(), targetPlayer->GetPositionY(), targetPlayer->GetPositionZ() + 0.25f, _player->GetOrientation(), TELE_TO_GM_MODE, targetPlayer))
919 _player->SetPhaseMask(targetPlayer->GetPhaseMask() | 1, false);
920 }
921 }
922 else
923 {
924 // check offline security
925 if (handler->HasLowerSecurity(nullptr, target->GetGUID()))
926 {
927 return false;
928 }
929
930 handler->PSendSysMessage(LANG_APPEARING_AT, nameLink);
931
932 // to point where player stay (if loaded)
933 float x, y, z, o;
934 uint32 map;
935 bool in_flight;
936
937 if (!Player::LoadPositionFromDB(map, x, y, z, o, in_flight, target->GetGUID().GetCounter()))
938 {
939 return false;
940 }
941
942 // stop flight if need
943 if (_player->IsInFlight())
944 {
945 _player->GetMotionMaster()->MovementExpired();
946 _player->CleanupAfterTaxiFlight();
947 }
948 // save only in non-flight case
949 else
950 {
951 _player->SaveRecallPosition();
952 }
953
954 _player->TeleportTo(map, x, y, z, _player->GetOrientation());
955 }
956
957 return true;
958 }
#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:1944
void SetEntryPoint()
Definition Player.cpp:11292
void SetRaidDifficulty(Difficulty raid_difficulty)
Definition Player.h:1945
void SetBattlegroundId(uint32 id, BattlegroundTypeId bgTypeId, uint32 queueSlot, bool invited, bool isRandom, TeamId teamId)
Definition Player.cpp:12374
void SaveRecallPosition()
Definition Player.cpp:5669
Group * GetGroup()
Definition Player.h:2509
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:4942
void CleanupAfterTaxiFlight()
Definition Player.cpp:10435
Definition Transport.h:30
MotionMaster * GetMotionMaster()
Definition Unit.h:1762
bool IsInFlight() const
Definition Unit.h:1708
void AddUnitMovementFlag(uint32 f)
Definition Unit.h:772
void SetPhaseMask(uint32 newPhaseMask, bool update) override
Definition Unit.cpp:15345
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
682 {
683 if (!spell)
684 {
686 return false;
687 }
688
689 if (!SpellMgr::IsSpellValid(spell))
690 {
691 handler->SendErrorMessage(LANG_COMMAND_SPELL_BROKEN, spell->Id);
692 return false;
693 }
694
695 Unit* target = handler->getSelectedUnit();
696 if (!target)
697 {
699 return false;
700 }
701
702 Aura::TryRefreshStackOrCreate(spell, MAX_EFFECT_MASK, target, target);
703
704 return true;
705 }
#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:490
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
708 {
709 if (!spell)
710 {
712 return false;
713 }
714
715 if (!SpellMgr::IsSpellValid(spell))
716 {
717 handler->SendErrorMessage(LANG_COMMAND_SPELL_BROKEN, spell->Id);
718 return false;
719 }
720
721 if (!stacks)
722 {
724 return false;
725 }
726
727 Unit* target = handler->getSelectedUnit();
728 if (!target)
729 {
731 return false;
732 }
733
734 Aura* aur = target->GetAura(spell->Id);
735 if (!aur)
736 {
738 return false;
739 }
740
741 if (!spell->StackAmount)
742 {
744 return false;
745 }
746
747 aur->ModStackAmount(stacks);
748
749 return true;
750 }
@ 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:5877

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
3355 {
3356 Unit* unit = handler->getSelectedUnit();
3357 if (!unit)
3358 {
3359 return false;
3360 }
3361
3362 handler->GetSession()->GetPlayer()->CastSpell(unit, 6277, true);
3363 return true;
3364 }
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:1389

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
3413 {
3414 WorldSession* session = handler->GetSession();
3415
3416 if (!session)
3417 return false;
3418
3419 auto SetBMMod = [&](bool enable)
3420 {
3421 char const* enabled = "ON";
3422 char const* disabled = "OFF";
3423 handler->SendNotification(LANG_COMMAND_BEASTMASTER_MODE, enable ? enabled : disabled);
3424
3425 session->GetPlayer()->SetBeastMaster(enable);
3426 };
3427
3428 if (!enableArg)
3429 {
3430 if (!AccountMgr::IsPlayerAccount(session->GetSecurity()) && session->GetPlayer()->IsDeveloper())
3431 SetBMMod(true);
3432 else
3433 SetBMMod(false);
3434
3435 return true;
3436 }
3437
3438 if (*enableArg)
3439 {
3440 SetBMMod(true);
3441 return true;
3442 }
3443 else
3444 {
3445 SetBMMod(false);
3446 return true;
3447 }
3448
3450 return false;
3451 }
@ 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:394

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
1918 {
1919 // Weather is OFF
1920 if (!sWorld->getBoolConfig(CONFIG_WEATHER))
1921 {
1923 return false;
1924 }
1925
1926 Player* player = handler->GetSession()->GetPlayer();
1927 uint32 zoneid = player->GetZoneId();
1928
1929 Weather* weather = player->GetMap()->GetOrGenerateZoneDefaultWeather(zoneid);
1930 if (!weather)
1931 {
1933 return false;
1934 }
1935
1936 weather->SetWeather(WeatherType(type), grade);
1937
1938 return true;
1939 }
@ 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:3214
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
3200 {
3201 if (!target)
3202 {
3203 target = PlayerIdentifier::FromTargetOrSelf(handler);
3204 }
3205
3206 if (!target || !target->IsConnected())
3207 {
3209 return false;
3210 }
3211
3212 Player* playerTarget = target->GetConnectedPlayer();
3213
3214 // check online security
3215 if (handler->HasLowerSecurity(playerTarget))
3216 {
3217 return false;
3218 }
3219
3220 playerTarget->CombatStop();
3221 playerTarget->GetThreatMgr().RemoveMeFromThreatLists();
3222 return true;
3223 }
@ 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:7504

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
3152 {
3153 Creature* caster = handler->getSelectedCreature();
3154 if (!caster)
3155 {
3157 return false;
3158 }
3159
3160 Player* player = handler->GetSession()->GetPlayer();
3161
3162 caster->GetMotionMaster()->MovePoint(0, player->GetPositionX(), player->GetPositionY(), player->GetPositionZ());
3163
3164 return true;
3165 }
@ 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
1189 {
1190 SendCommandHelpFor(*handler, "");
1191 return true;
1192 }
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
511 {
512 WorldSession* session = handler->GetSession();
513
514 if (!session)
515 {
517 return false;
518 }
519
520 auto SetCommentatorMod = [&](bool enable)
521 {
522 handler->SendNotification(enable ? "Commentator mode on" : "Commentator mode off");
523 session->GetPlayer()->SetCommentator(enable);
524 };
525
526 if (!enableArg)
527 {
528 if (!AccountMgr::IsPlayerAccount(session->GetSecurity()) && session->GetPlayer()->IsCommentator())
529 {
530 SetCommentatorMod(true);
531 }
532 else
533 {
534 SetCommentatorMod(false);
535 }
536
537 return true;
538 }
539
540 if (*enableArg)
541 {
542 SetCommentatorMod(true);
543 return true;
544 }
545 else
546 {
547 SetCommentatorMod(false);
548 return true;
549 }
550 }
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
1307 {
1308 Player* target = handler->getSelectedPlayer();
1309 if (!target)
1310 {
1312 return false;
1313 }
1314
1315 std::string nameLink = handler->GetNameLink(target);
1316
1317 if (!spell)
1318 {
1319 target->RemoveAllSpellCooldown();
1320 handler->PSendSysMessage(LANG_REMOVEALL_COOLDOWN, nameLink);
1321 }
1322 else
1323 {
1324 if (!SpellMgr::IsSpellValid(*spell))
1325 {
1326 handler->SendErrorMessage(LANG_COMMAND_SPELL_BROKEN, spell.value()->Id);
1327 return false;
1328 }
1329
1330 target->RemoveSpellCooldown(spell.value()->Id, true);
1331 handler->PSendSysMessage(LANG_REMOVE_COOLDOWN, spell.value()->Id, target == handler->GetSession()->GetPlayer() ? handler->GetAcoreString(LANG_YOU) : nameLink);
1332 }
1333 return true;
1334 }
@ 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:3583
void RemoveSpellCooldown(uint32 spell_id, bool update=false)
Definition Player.cpp:3532

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
3168 {
3169 Unit* target = handler->getSelectedUnit();
3170 if (!target || !handler->GetSession()->GetPlayer()->GetTarget())
3171 {
3173 return false;
3174 }
3175
3176 if (target->IsPlayer())
3177 if (handler->HasLowerSecurity(target->ToPlayer()))
3178 return false;
3179
3180 if (!target->IsAlive() || !damage)
3181 return true;
3182
3183 if (target->IsCreature() && handler->GetSession()->GetSecurity() == SEC_CONSOLE) // pussywizard
3184 target->ToCreature()->LowerPlayerDamageReq(target->GetMaxHealth());
3185
3186 if (percent)
3187 if (StringStartsWith("pct", *percent))
3188 if (damage <= 100)
3189 damage = target->CountPctFromMaxHealth(damage);
3190
3191 Unit::DealDamage(handler->GetSession()->GetPlayer(), target, damage, nullptr, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, nullptr, false, true);
3192
3193 if (target != handler->GetSession()->GetPlayer())
3195
3196 return true;
3197 }
@ 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, uint8 attackerLevel=0)
Definition Creature.cpp:3846
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:6905
uint32 GetMaxHealth() const
Definition Unit.h:1109
bool IsAlive() const
Definition Unit.h:1797
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:1010

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
553 {
554 WorldSession* session = handler->GetSession();
555
556 if (!session)
557 {
559 return false;
560 }
561
562 auto SetDevMod = [&](bool enable)
563 {
564 handler->SendNotification(enable ? LANG_DEV_ON : LANG_DEV_OFF);
565 session->GetPlayer()->SetDeveloper(enable);
566 sScriptMgr->OnHandleDevCommand(handler->GetSession()->GetPlayer(), enable);
567 };
568
569 if (!enableArg)
570 {
571 if (!AccountMgr::IsPlayerAccount(session->GetSecurity()) && session->GetPlayer()->IsDeveloper())
572 {
573 SetDevMod(true);
574 }
575 else
576 {
577 SetDevMod(false);
578 }
579
580 return true;
581 }
582
583 if (*enableArg)
584 {
585 SetDevMod(true);
586 return true;
587 }
588 else
589 {
590 SetDevMod(false);
591 return true;
592 }
593 }
@ LANG_DEV_ON
Definition Language.h:938
@ LANG_DEV_OFF
Definition Language.h:939
#define sScriptMgr
Definition ScriptMgr.h:740
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
1195 {
1196 Unit* target = handler->getSelectedUnit();
1197
1198 if (!target || !handler->GetSession()->GetPlayer()->GetTarget())
1199 {
1201 return false;
1202 }
1203
1204 if (target->IsPlayer())
1205 {
1206 if (handler->HasLowerSecurity(target->ToPlayer()))
1207 {
1208 return false;
1209 }
1210 }
1211
1212 if (target->IsAlive())
1213 {
1214 if (sWorld->getBoolConfig(CONFIG_DIE_COMMAND_MODE))
1215 {
1216 if (target->IsCreature() && handler->GetSession()->GetSecurity() == SEC_CONSOLE) // pussywizard
1217 {
1218 target->ToCreature()->LowerPlayerDamageReq(target->GetMaxHealth());
1219 }
1220 Unit::Kill(handler->GetSession()->GetPlayer(), target);
1221 }
1222 else
1223 {
1224 Unit::DealDamage(handler->GetSession()->GetPlayer(), target, target->GetHealth(), nullptr, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, nullptr, false, true);
1225 }
1226 }
1227
1228 return true;
1229 }
@ 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:13997
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
1257 {
1258 Player* player = handler->GetSession()->GetPlayer();
1259
1260 // If player is not mounted, so go out :)
1261 if (!player->IsMounted())
1262 {
1264 return false;
1265 }
1266
1267 if (player->IsInFlight())
1268 {
1270 return false;
1271 }
1272
1273 player->Dismount();
1275 player->SetSpeed(MOVE_RUN, 1, true);
1276 player->SetSpeed(MOVE_FLIGHT, 1, true);
1277 return true;
1278 }
@ 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:10593
bool IsMounted() const
Definition Unit.h:1890
void SetSpeed(UnitMoveType mtype, float rate, bool forced=false)
Definition Unit.cpp:11326
void RemoveAurasByType(AuraType auraType, ObjectGuid casterGUID=ObjectGuid::Empty, Aura *except=nullptr, bool negative=true, bool positive=true)
Definition Unit.cpp:5397

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
3226 {
3227 sArenaTeamMgr->DistributeArenaPoints();
3228 return true;
3229 }
#define sArenaTeamMgr
Definition ArenaTeamMgr.h:69

References sArenaTeamMgr.

Referenced by GetCommands().

◆ HandleFreezeCommand()

static bool misc_commandscript::HandleFreezeCommand ( ChatHandler handler,
Optional< PlayerIdentifier target 
)
inlinestatic
3232 {
3233 Creature* creatureTarget = handler->getSelectedCreature();
3234
3235 if (!target && !creatureTarget)
3236 {
3237 target = PlayerIdentifier::FromTargetOrSelf(handler);
3238 }
3239
3240 if (!target && !creatureTarget)
3241 {
3243 return false;
3244 }
3245
3246 Player* playerTarget = target->GetConnectedPlayer();
3247 if (playerTarget && !creatureTarget)
3248 {
3249 handler->PSendSysMessage(LANG_COMMAND_FREEZE, target->GetName());
3250
3251 if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(SPELL_FREEZE))
3252 {
3253 Aura::TryRefreshStackOrCreate(spellInfo, MAX_EFFECT_MASK, playerTarget, playerTarget);
3254 }
3255
3256 return true;
3257 }
3258 else if (creatureTarget && creatureTarget->IsAlive())
3259 {
3261
3262 if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(SPELL_FREEZE))
3263 {
3264 Aura::TryRefreshStackOrCreate(spellInfo, MAX_EFFECT_MASK, creatureTarget, creatureTarget);
3265 }
3266
3267 return true;
3268 }
3269
3271 return false;
3272 }
@ LANG_COMMAND_FREEZE
Definition Language.h:1061
#define sSpellMgr
Definition SpellMgr.h:847
virtual LocaleConstant GetSessionDbcLocale() const
Definition Chat.cpp:878
Definition SpellInfo.h:340
constexpr auto SPELL_FREEZE
Definition cs_misc.cpp:62
std::string const GetLocalizeCreatureName(Creature *creature, LocaleConstant locale)
Definition cs_misc.cpp:107

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
1337 {
1338 if (!target)
1339 {
1340 target = PlayerIdentifier::FromTargetOrSelf(handler);
1341 }
1342
1343 WorldObject* object = handler->getSelectedUnit();
1344
1345 if (!object && !target)
1346 {
1347 return false;
1348 }
1349
1350 if (!object && target && target->IsConnected())
1351 {
1352 object = target->GetConnectedPlayer();
1353 }
1354
1355 if (!object)
1356 {
1357 return false;
1358 }
1359
1360 handler->PSendSysMessage(LANG_DISTANCE, handler->GetSession()->GetPlayer()->GetDistance(object), handler->GetSession()->GetPlayer()->GetDistance2d(object), handler->GetSession()->GetPlayer()->GetExactDist(object), handler->GetSession()->GetPlayer()->GetExactDist2d(object));
1361 return true;
1362 }
@ 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
596 {
597 if (!target)
598 {
599 target = PlayerIdentifier::FromTargetOrSelf(handler);
600 }
601
602 WorldObject* object = handler->getSelectedUnit();
603
604 if (!object && !target)
605 {
606 return false;
607 }
608
609 if (!object && target && target->IsConnected())
610 {
611 object = target->GetConnectedPlayer();
612 }
613
614 if (!object)
615 {
616 return false;
617 }
618
619 CellCoord const cellCoord = Acore::ComputeCellCoord(object->GetPositionX(), object->GetPositionY());
620 Cell cell(cellCoord);
621
622 uint32 zoneId, areaId;
623 object->GetZoneAndAreaId(zoneId, areaId);
624
625 MapEntry const* mapEntry = sMapStore.LookupEntry(object->GetMapId());
626 AreaTableEntry const* zoneEntry = sAreaTableStore.LookupEntry(zoneId);
627 AreaTableEntry const* areaEntry = sAreaTableStore.LookupEntry(areaId);
628
629 float zoneX = object->GetPositionX();
630 float zoneY = object->GetPositionY();
631
632 Map2ZoneCoordinates(zoneX, zoneY, zoneId);
633
634 float groundZ = object->GetMapHeight(object->GetPositionX(), object->GetPositionY(), MAX_HEIGHT);
635 float floorZ = object->GetMapHeight(object->GetPositionX(), object->GetPositionY(), object->GetPositionZ());
636
637 uint32 haveMap = GridTerrainLoader::ExistMap(object->GetMapId(), cell.GridX(), cell.GridY()) ? 1 : 0;
638 uint32 haveVMap = GridTerrainLoader::ExistVMap(object->GetMapId(), cell.GridX(), cell.GridY()) ? 1 : 0;
639 uint32 haveMMAP = handler->GetSession()->GetPlayer()->GetMap()->GetMapCollisionData().GetMMapData().GetNavMesh() ? 1 : 0;
640
641 if (haveVMap)
642 {
643 if (object->IsOutdoors())
644 {
645 handler->PSendSysMessage("You are outdoors");
646 }
647 else
648 {
649 handler->PSendSysMessage("You are indoors");
650 }
651 }
652 else
653 {
654 handler->PSendSysMessage("no VMAP available for area info");
655 }
656
658 object->GetMapId(), (mapEntry ? mapEntry->name[handler->GetSessionDbcLocale()] : "<unknown>"),
659 zoneId, (zoneEntry ? zoneEntry->area_name[handler->GetSessionDbcLocale()] : "<unknown>"),
660 areaId, (areaEntry ? areaEntry->area_name[handler->GetSessionDbcLocale()] : "<unknown>"),
661 object->GetPhaseMask(),
662 object->GetPositionX(), object->GetPositionY(), object->GetPositionZ(), object->GetOrientation(),
663 cell.GridX(), cell.GridY(), cell.CellX(), cell.CellY(), object->GetInstanceId(),
664 zoneX, zoneY, groundZ, floorZ, haveMap, haveVMap, haveMMAP);
665
666 LiquidData const& liquidData = object->GetLiquidData();
667
668 if (liquidData.Status)
669 {
670 handler->PSendSysMessage(LANG_LIQUID_STATUS, liquidData.Level, liquidData.DepthLevel, liquidData.Entry, liquidData.Flags, liquidData.Status);
671 }
672
673 if (object->GetTransport())
674 {
675 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());
676 }
677
678 return true;
679 }
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
1084 {
1085 if (!target)
1086 {
1087 target = PlayerIdentifier::FromTargetOrSelf(handler);
1088 }
1089
1090 if (!target || !target->IsConnected())
1091 {
1092 return false;
1093 }
1094
1095 // check online security
1096 if (handler->HasLowerSecurity(target->GetConnectedPlayer()))
1097 {
1098 return false;
1099 }
1100
1101 auto targetPlayer = target->GetConnectedPlayer();
1102
1103 Group* group = targetPlayer->GetGroup();
1104
1105 std::string nameLink = handler->playerLink(target->GetName());
1106
1107 if (!group)
1108 {
1109 handler->SendErrorMessage(LANG_NOT_IN_GROUP, nameLink);
1110 return false;
1111 }
1112
1113 Map* gmMap = handler->GetSession()->GetPlayer()->GetMap();
1114 bool toInstance = gmMap->Instanceable();
1115
1116 // we are in instance, and can summon only player in our group with us as lead
1117 if (toInstance && (
1118 !handler->GetSession()->GetPlayer()->GetGroup() || (group->GetLeaderGUID() != handler->GetSession()->GetPlayer()->GetGUID()) ||
1119 (handler->GetSession()->GetPlayer()->GetGroup()->GetLeaderGUID() != handler->GetSession()->GetPlayer()->GetGUID())))
1120 // the last check is a bit excessive, but let it be, just in case
1121 {
1123 return false;
1124 }
1125
1126 for (GroupReference* itr = group->GetFirstMember(); itr != nullptr; itr = itr->next())
1127 {
1128 Player* player = itr->GetSource();
1129
1130 if (!player || player == handler->GetSession()->GetPlayer() || !player->GetSession())
1131 {
1132 continue;
1133 }
1134
1135 // check online security
1136 if (handler->HasLowerSecurity(player))
1137 {
1138 return false;
1139 }
1140
1141 std::string plNameLink = handler->GetNameLink(player);
1142
1143 if (player->IsBeingTeleported())
1144 {
1145 handler->SendErrorMessage(LANG_IS_TELEPORTED, plNameLink);
1146 return false;
1147 }
1148
1149 if (toInstance)
1150 {
1151 Map* playerMap = player->GetMap();
1152
1153 if (playerMap->Instanceable() && playerMap->GetInstanceId() != gmMap->GetInstanceId())
1154 {
1155 // cannot summon from instance to instance
1156 handler->SendErrorMessage(LANG_CANNOT_SUMMON_TO_INST, plNameLink);
1157 return false;
1158 }
1159 }
1160
1161 handler->PSendSysMessage(LANG_SUMMONING, plNameLink, "");
1162 if (handler->needReportToTarget(player))
1163 {
1165 }
1166
1167 // stop flight if need
1168 if (player->IsInFlight())
1169 {
1170 player->GetMotionMaster()->MovementExpired();
1171 player->CleanupAfterTaxiFlight();
1172 }
1173 // save only in non-flight case
1174 else
1175 {
1176 player->SaveRecallPosition();
1177 }
1178
1179 // before GM
1180 float x, y, z;
1181 handler->GetSession()->GetPlayer()->GetClosePoint(x, y, z, player->GetObjectSize());
1182 player->TeleportTo(handler->GetSession()->GetPlayer()->GetMapId(), x, y, z, player->GetOrientation(), 0, handler->GetSession()->GetPlayer());
1183 }
1184
1185 return true;
1186 }
@ 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:176
GroupReference * GetFirstMember()
Definition Group.h:250
ObjectGuid GetLeaderGUID() const
Definition Group.cpp:2371
bool Instanceable() const
Definition Map.h:296
uint32 GetInstanceId() const
Definition Map.h:268
bool IsBeingTeleported() const
Definition Player.h:2113
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
1281 {
1282 ObjectGuid guid = handler->GetSession()->GetPlayer()->GetTarget();
1283
1284 if (!guid)
1285 {
1287 return false;
1288 }
1289
1290 handler->PSendSysMessage(LANG_OBJECT_GUID, guid.ToString());
1291 return true;
1292 }
@ 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
1295 {
1297
1298 if (cmd.empty())
1299 {
1301 }
1302
1303 return true;
1304 }

References Acore::ChatCommands::SendCommandHelpFor().

Referenced by GetCommands().

◆ HandleHideAreaCommand()

static bool misc_commandscript::HandleHideAreaCommand ( ChatHandler handler,
uint32  areaID 
)
inlinestatic
1724 {
1725 Player* playerTarget = handler->getSelectedPlayer();
1726 if (!playerTarget)
1727 {
1729 return false;
1730 }
1731
1732 AreaTableEntry const* area = sAreaTableStore.LookupEntry(areaID);
1733 if (!area)
1734 {
1736 return false;
1737 }
1738
1739 int32 offset = area->exploreFlag / 32;
1740 if (offset >= PLAYER_EXPLORED_ZONES_SIZE)
1741 {
1743 return false;
1744 }
1745
1746 uint32 val = uint32((1 << (area->exploreFlag % 32)));
1747 uint32 currFields = playerTarget->GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset);
1748 playerTarget->SetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset, uint32((currFields ^ val)));
1749
1751 return true;
1752 }
@ 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:17388
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
1441 {
1442 if (!target)
1443 {
1444 target = PlayerIdentifier::FromTargetOrSelf(handler);
1445 }
1446
1447 if (!target || !target->IsConnected())
1448 {
1449 return false;
1450 }
1451
1452 auto targetPlayer = target->GetConnectedPlayer();
1453
1454 if (handler->GetSession() && target->GetGUID() == handler->GetSession()->GetPlayer()->GetGUID())
1455 {
1457 return false;
1458 }
1459
1460 // check online security
1461 if (handler->HasLowerSecurity(targetPlayer))
1462 {
1463 return false;
1464 }
1465
1466 std::string kickReasonStr = handler->GetAcoreString(LANG_NO_REASON);
1467 if (reason && !reason->empty())
1468 {
1469 kickReasonStr = std::string{ *reason };
1470 }
1471
1472 if (sWorld->getBoolConfig(CONFIG_SHOW_KICK_IN_WORLD))
1473 {
1474 handler->SendWorldText(LANG_COMMAND_KICKMESSAGE_WORLD, (handler->GetSession() ? handler->GetSession()->GetPlayerName() : "Server"), target->GetName(), kickReasonStr);
1475 }
1476 else
1477 {
1478 handler->PSendSysMessage(LANG_COMMAND_KICKMESSAGE, target->GetName());
1479 }
1480
1481 targetPlayer->GetSession()->KickPlayer("HandleKickPlayerCommand");
1482
1483 return true;
1484 }
@ LANG_COMMAND_KICKSELF
Definition Language.h:334
@ LANG_COMMAND_KICKMESSAGE_WORLD
Definition Language.h:1375
@ 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
1565 {
1566 TeamId teamId;
1567
1568 if (!team)
1569 {
1570 teamId = TEAM_NEUTRAL;
1571 }
1572 else if (StringEqualI(team->substr(0, 6), "horde"))
1573 {
1574 teamId = TEAM_HORDE;
1575 }
1576 else if (StringEqualI(team->substr(0, 9), "alliance"))
1577 {
1578 teamId = TEAM_ALLIANCE;
1579 }
1580 else
1581 {
1582 return false;
1583 }
1584
1585 GraveyardStruct const* graveyard = sGraveyard->GetGraveyard(graveyardId);
1586
1587 if (!graveyard)
1588 {
1589 handler->SendErrorMessage(LANG_COMMAND_GRAVEYARDNOEXIST, graveyardId);
1590 return false;
1591 }
1592
1593 Player* player = handler->GetSession()->GetPlayer();
1594 uint32 zoneId = player->GetZoneId();
1595
1596 AreaTableEntry const* areaEntry = sAreaTableStore.LookupEntry(zoneId);
1597 if (!areaEntry || areaEntry->zone != 0)
1598 {
1599 handler->SendErrorMessage(LANG_COMMAND_GRAVEYARDWRONGZONE, graveyardId, zoneId);
1600 return false;
1601 }
1602
1603 if (sGraveyard->AddGraveyardLink(graveyardId, zoneId, teamId))
1604 {
1605 handler->PSendSysMessage(LANG_COMMAND_GRAVEYARDLINKED, graveyardId, zoneId);
1606 }
1607 else
1608 {
1609 handler->PSendSysMessage(LANG_COMMAND_GRAVEYARDALRLINKED, graveyardId, zoneId);
1610 }
1611
1612 return true;
1613 }
#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
3380 {
3381 Player* player = handler->GetSession()->GetPlayer();
3382 handler->GetSession()->SendShowMailBox(player->GetGUID());
3383 return true;
3384 }
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
1942 {
1943 Player* SelectedPlayer = handler->getSelectedPlayer();
1944 if (!SelectedPlayer)
1945 {
1947 return false;
1948 }
1949
1950 // each skills that have max skill value dependent from level seted to current level max skill value
1951 SelectedPlayer->UpdateSkillsToMaxSkillsForLevel();
1952 return true;
1953 }
void UpdateSkillsToMaxSkillsForLevel()
Definition PlayerUpdates.cpp:1133

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

Referenced by GetCommands().

◆ HandleMovegensCommand()

static bool misc_commandscript::HandleMovegensCommand ( ChatHandler handler)
inlinestatic
3018 {
3019 Unit* unit = handler->getSelectedUnit();
3020 if (!unit)
3021 {
3023 return false;
3024 }
3025
3026 handler->PSendSysMessage(LANG_MOVEGENS_LIST, (unit->IsPlayer() ? "Player" : "Creature"), unit->GetGUID().ToString());
3027
3028 MotionMaster* motionMaster = unit->GetMotionMaster();
3029 float x, y, z;
3030 motionMaster->GetDestination(x, y, z);
3031
3032 for (uint8 i = 0; i < MAX_MOTION_SLOT; ++i)
3033 {
3034 MovementGenerator* movementGenerator = motionMaster->GetMotionSlot(i);
3035 if (!movementGenerator)
3036 {
3037 handler->SendSysMessage("Empty");
3038 continue;
3039 }
3040
3041 switch (movementGenerator->GetMovementGeneratorType())
3042 {
3043 case IDLE_MOTION_TYPE:
3045 break;
3046 case RANDOM_MOTION_TYPE:
3048 break;
3051 break;
3054 break;
3057 break;
3058 case CHASE_MOTION_TYPE:
3059 {
3060 Unit* target = nullptr;
3061 if (unit->IsPlayer())
3062 {
3063 target = static_cast<ChaseMovementGenerator<Player> const*>(movementGenerator)->GetTarget();
3064 }
3065 else
3066 {
3067 target = static_cast<ChaseMovementGenerator<Creature> const*>(movementGenerator)->GetTarget();
3068 }
3069
3070 if (!target)
3071 {
3073 }
3074 else if (target->IsPlayer())
3075 {
3076 handler->PSendSysMessage(LANG_MOVEGENS_CHASE_PLAYER, target->GetName(), target->GetGUID().ToString());
3077 }
3078 else
3079 {
3080 handler->PSendSysMessage(LANG_MOVEGENS_CHASE_CREATURE, target->GetName(), target->GetGUID().ToString());
3081 }
3082 break;
3083 }
3084 case FOLLOW_MOTION_TYPE:
3085 {
3086 Unit* target = nullptr;
3087 if (unit->IsPlayer())
3088 {
3089 target = static_cast<FollowMovementGenerator<Player> const*>(movementGenerator)->GetTarget();
3090 }
3091 else
3092 {
3093 target = static_cast<FollowMovementGenerator<Creature> const*>(movementGenerator)->GetTarget();
3094 }
3095
3096 if (!target)
3097 {
3099 }
3100 else if (target->IsPlayer())
3101 {
3102 handler->PSendSysMessage(LANG_MOVEGENS_FOLLOW_PLAYER, target->GetName(), target->GetGUID().ToString());
3103 }
3104 else
3105 {
3106 handler->PSendSysMessage(LANG_MOVEGENS_FOLLOW_CREATURE, target->GetName(), target->GetGUID().ToString());
3107 }
3108 break;
3109 }
3110 case HOME_MOTION_TYPE:
3111 {
3112 if (unit->IsCreature())
3113 {
3115 }
3116 else
3117 {
3119 }
3120 break;
3121 }
3122 case FLIGHT_MOTION_TYPE:
3124 break;
3125 case POINT_MOTION_TYPE:
3126 {
3127 handler->PSendSysMessage(LANG_MOVEGENS_POINT, x, y, z);
3128 break;
3129 }
3132 break;
3135 break;
3136 case EFFECT_MOTION_TYPE:
3138 break;
3139 default:
3140 handler->PSendSysMessage(LANG_MOVEGENS_UNKNOWN, movementGenerator->GetMovementGeneratorType());
3141 break;
3142 }
3143 }
3144 return true;
3145 }
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
2794 {
2795 std::string muteReasonStr{ muteReason };
2796
2797 if (notSpeakTime.empty())
2798 {
2799 return false;
2800 }
2801
2802 if (Acore::StringTo<int32>(notSpeakTime).value_or(0) < 0)
2803 {
2805 return false;
2806 }
2807
2808 if (muteReason.empty())
2809 {
2810 muteReasonStr = handler->GetAcoreString(LANG_NO_REASON);
2811 }
2812
2813 if (!player)
2814 {
2815 player = PlayerIdentifier::FromTarget(handler);
2816 }
2817
2818 if (!player)
2819 {
2821 return false;
2822 }
2823
2824 Player* target = player->GetConnectedPlayer();
2825 uint32 accountId = target ? target->GetSession()->GetAccountId() : sCharacterCache->GetCharacterAccountIdByGuid(player->GetGUID());
2826
2827 // find only player from same account if any
2828 if (!target)
2829 if (WorldSession* session = sWorldSessionMgr->FindSession(accountId))
2830 {
2831 target = session->GetPlayer();
2832 }
2833
2834 // must have strong lesser security level
2835 if (handler->HasLowerSecurity(target, player->GetGUID(), true))
2836 {
2837 return false;
2838 }
2839
2841 int32 muteDuration = TimeStringToSecs(notSpeakTime);
2842 if (muteDuration <= 0)
2843 {
2844 muteDuration = Acore::StringTo<int32>(notSpeakTime).value_or(0);
2845 }
2846
2847 if (muteDuration <= 0)
2848 {
2850 return false;
2851 }
2852
2853 std::string muteBy = "";
2854 if (handler->GetSession())
2855 {
2856 muteBy = handler->GetSession()->GetPlayerName();
2857 }
2858 else
2859 {
2860 muteBy = handler->GetAcoreString(LANG_CONSOLE);
2861 }
2862
2863 if (target)
2864 {
2865 // Target is online, mute will be in effect right away.
2866 int64 muteTime = GameTime::GetGameTime().count() + muteDuration;
2867 target->GetSession()->m_muteTime = muteTime;
2868 stmt->SetData(0, muteTime);
2869 std::string nameLink = handler->playerLink(player->GetName());
2870
2871 if (sWorld->getBoolConfig(CONFIG_SHOW_MUTE_IN_WORLD))
2872 {
2873 handler->SendWorldText(LANG_COMMAND_MUTEMESSAGE_WORLD, muteBy, nameLink, secsToTimeString(muteDuration, true), muteReasonStr);
2874 }
2875
2876 ChatHandler(target->GetSession()).PSendSysMessage(LANG_YOUR_CHAT_DISABLED, secsToTimeString(muteDuration, true), muteBy, muteReasonStr);
2877 }
2878 else
2879 {
2880 // Target is offline, mute will be in effect starting from the next login.
2881 stmt->SetData(0, -int32(muteDuration));
2882 }
2883
2884 stmt->SetData(1, muteReasonStr);
2885 stmt->SetData(2, muteBy);
2886 stmt->SetData(3, accountId);
2887 LoginDatabase.Execute(stmt);
2888
2889 stmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_ACCOUNT_MUTE);
2890 stmt->SetData(0, accountId);
2891 stmt->SetData(1, muteDuration / MINUTE);
2892 stmt->SetData(2, muteBy);
2893 stmt->SetData(3, muteReasonStr);
2894 LoginDatabase.Execute(stmt);
2895
2896 std::string nameLink = handler->playerLink(player->GetName());
2897
2898 if (sWorld->getBoolConfig(CONFIG_SHOW_MUTE_IN_WORLD) && !target)
2899 {
2900 handler->SendWorldText(LANG_COMMAND_MUTEMESSAGE_WORLD, muteBy, nameLink, secsToTimeString(muteDuration, true), muteReasonStr);
2901 }
2902 else
2903 {
2904 // pussywizard: notify all online GMs
2905 std::shared_lock<std::shared_mutex> lock(*HashMapHolder<Player>::GetLock());
2907 for (HashMapHolder<Player>::MapType::const_iterator itr = m.begin(); itr != m.end(); ++itr)
2908 if (itr->second->GetSession()->GetSecurity())
2909 ChatHandler(itr->second->GetSession()).PSendSysMessage(target ? LANG_YOU_DISABLE_CHAT : LANG_COMMAND_DISABLE_CHAT_DELAYED,
2910 (handler->GetSession() ? handler->GetSession()->GetPlayerName() : handler->GetAcoreString(LANG_CONSOLE)), nameLink, secsToTimeString(muteDuration, true), muteReasonStr);
2911 }
2912
2913 return true;
2914 }
#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:1378
@ 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:463
time_t m_muteTime
Definition WorldSession.h:595
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
2977 {
2978 if (!Utf8ToUpperOnlyLatin(accountName))
2979 {
2980 handler->SendErrorMessage(LANG_ACCOUNT_NOT_EXIST, accountName);
2981 return false;
2982 }
2983
2984 uint32 accountId = AccountMgr::GetId(accountName);
2985 if (!accountId)
2986 {
2987 handler->PSendSysMessage(LANG_ACCOUNT_NOT_EXIST, accountName);
2988 return false;
2989 }
2990
2991 return HandleMuteInfoHelper(handler, accountId, accountName.c_str());
2992 }
@ 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:2995

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
2996 {
2998 stmt->SetData(0, accountId);
2999 PreparedQueryResult result = LoginDatabase.Query(stmt);
3000
3001 if (!result)
3002 {
3003 handler->PSendSysMessage(LANG_COMMAND_MUTEHISTORY_EMPTY, accountName);
3004 return true;
3005 }
3006
3007 handler->PSendSysMessage(LANG_COMMAND_MUTEHISTORY, accountName);
3008 do
3009 {
3010 Field* fields = result->Fetch();
3011 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>());
3012 } while (result->NextRow());
3013
3014 return true;
3015 }
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
1616 {
1617 TeamId teamId;
1618
1619 if (!team)
1620 {
1621 teamId = TEAM_NEUTRAL;
1622 }
1623 else if (StringEqualI(team->substr(0, 6), "horde"))
1624 {
1625 teamId = TEAM_HORDE;
1626 }
1627 else if (StringEqualI(team->substr(0, 9), "alliance"))
1628 {
1629 teamId = TEAM_ALLIANCE;
1630 }
1631 else
1632 {
1633 return false;
1634 }
1635
1636 Player* player = handler->GetSession()->GetPlayer();
1637 uint32 zone_id = player->GetZoneId();
1638
1639 GraveyardStruct const* graveyard = sGraveyard->GetClosestGraveyard(player, teamId);
1640
1641 if (graveyard)
1642 {
1643 uint32 graveyardId = graveyard->ID;
1644
1645 GraveyardData const* data = sGraveyard->FindGraveyardData(graveyardId, zone_id);
1646 if (!data)
1647 {
1648 handler->SendErrorMessage(LANG_COMMAND_GRAVEYARDERROR, graveyardId);
1649 return false;
1650 }
1651
1652 std::string team_name = handler->GetAcoreString(LANG_COMMAND_GRAVEYARD_NOTEAM);
1653
1654 if (data->teamId == TEAM_NEUTRAL)
1655 {
1656 team_name = handler->GetAcoreString(LANG_COMMAND_GRAVEYARD_ANY);
1657 }
1658 else if (data->teamId == TEAM_HORDE)
1659 {
1660 team_name = handler->GetAcoreString(LANG_COMMAND_GRAVEYARD_HORDE);
1661 }
1662 else if (data->teamId == TEAM_ALLIANCE)
1663 {
1664 team_name = handler->GetAcoreString(LANG_COMMAND_GRAVEYARD_ALLIANCE);
1665 }
1666
1667 handler->PSendSysMessage(LANG_COMMAND_GRAVEYARDNEAREST, graveyardId, team_name, zone_id);
1668 }
1669 else
1670 {
1671 std::string team_name;
1672
1673 if (teamId == TEAM_NEUTRAL)
1674 {
1675 team_name = handler->GetAcoreString(LANG_COMMAND_GRAVEYARD_ANY);
1676 }
1677 else if (teamId == TEAM_HORDE)
1678 {
1679 team_name = handler->GetAcoreString(LANG_COMMAND_GRAVEYARD_HORDE);
1680 }
1681 else if (teamId == TEAM_ALLIANCE)
1682 {
1683 team_name = handler->GetAcoreString(LANG_COMMAND_GRAVEYARD_ALLIANCE);
1684 }
1685
1686 handler->PSendSysMessage(LANG_COMMAND_ZONENOGRAFACTION, zone_id, team_name);
1687 }
1688
1689 return true;
1690 }
@ 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
3400 {
3401 if (GameObject* go = handler->GetPlayer()->FindNearestGameObjectOfType(GAMEOBJECT_TYPE_DOOR, range ? *range : 5.0f))
3402 {
3403 go->SetGoState(GO_STATE_ACTIVE);
3404 handler->PSendSysMessage(LANG_CMD_DOOR_OPENED, go->GetName(), go->GetEntry());
3405 return true;
3406 }
3407
3408 handler->SendErrorMessage(LANG_CMD_NO_DOOR_FOUND, range ? *range : 5.0f);
3409 return false;
3410 }
@ 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
3454 {
3455 if (!target)
3456 target = PlayerIdentifier::FromTargetOrSelf(handler);
3457
3458 if (!target || !target->IsConnected())
3459 {
3461 return false;
3462 }
3463
3464 Player* playerTarget = target->GetConnectedPlayer();
3465 WorldSession* session = playerTarget->GetSession();
3466
3467 if (!session)
3468 return false;
3469
3470 if (enableArg)
3471 {
3472 if (*enableArg)
3473 {
3474 session->SetPacketLogging(true);
3475 handler->PSendSysMessage("Packet logging enabled for {}.", playerTarget->GetName());
3476 return true;
3477 }
3478 else
3479 {
3480 session->SetPacketLogging(false);
3481 handler->PSendSysMessage("Packet logging disabled for {}.", playerTarget->GetName());
3482 return true;
3483 }
3484 }
3485
3487 return false;
3488 }
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
2000 {
2001 if (!target)
2002 {
2003 target = PlayerIdentifier::FromTargetOrSelf(handler);
2004 }
2005
2006 if (!target)
2007 {
2008 return false;
2009 }
2010
2011 Player* playerTarget = target->GetConnectedPlayer();
2012
2013 CharacterDatabasePreparedStatement* stmt = nullptr;
2014 LoginDatabasePreparedStatement* loginStmt = nullptr;
2015
2016 // Account data print variables
2017 std::string userName = handler->GetAcoreString(LANG_ERROR);
2018 ObjectGuid::LowType lowguid = target->GetGUID().GetCounter();
2019 uint32 accId = 0;
2020 std::string eMail = handler->GetAcoreString(LANG_ERROR);
2021 std::string regMail = handler->GetAcoreString(LANG_ERROR);
2022 uint32 security = 0;
2023 std::string lastIp = handler->GetAcoreString(LANG_ERROR);
2024 uint8 locked = 0;
2025 std::string lastLogin = handler->GetAcoreString(LANG_ERROR);
2026 uint32 failedLogins = 0;
2027 uint32 latency = 0;
2028 std::string OS = handler->GetAcoreString(LANG_UNKNOWN);
2029
2030 // Mute data print variables
2031 int64 muteTime = -1;
2032 std::string muteReason = handler->GetAcoreString(LANG_NO_REASON);
2033 std::string muteBy = handler->GetAcoreString(LANG_UNKNOWN);
2034
2035 // Ban data print variables
2036 int64 banTime = -1;
2037 std::string banType = handler->GetAcoreString(LANG_UNKNOWN);
2038 std::string banReason = handler->GetAcoreString(LANG_NO_REASON);
2039 std::string bannedBy = handler->GetAcoreString(LANG_UNKNOWN);
2040
2041 // Character data print variables
2042 uint8 raceid, classid = 0; //RACE_NONE, CLASS_NONE
2043 std::string raceStr, classStr = handler->GetAcoreString(LANG_UNKNOWN);
2044 uint8 gender = 0;
2045 int8 locale = handler->GetSessionDbcLocale();
2046 uint32 totalPlayerTime = 0;
2047 uint8 level = 0;
2048 std::string alive = handler->GetAcoreString(LANG_ERROR);
2049 uint32 money = 0;
2050 uint32 xp = 0;
2051 uint32 xptotal = 0;
2052
2053 // Position data print
2054 uint32 mapId;
2055 uint32 areaId;
2056 uint32 phase = 0;
2057 std::string areaName = "";
2058 std::string zoneName = "";
2059
2060 // Guild data print variables defined so that they exist, but are not necessarily used
2061 uint32 guildId = 0;
2062 uint8 guildRankId = 0;
2063 std::string guildName;
2064 std::string guildRank;
2065 std::string note;
2066 std::string officeNote;
2067
2068 // get additional information from Player object
2069 if (playerTarget)
2070 {
2071 // check online security
2072 if (handler->HasLowerSecurity(playerTarget))
2073 {
2074 return false;
2075 }
2076
2077 accId = playerTarget->GetSession()->GetAccountId();
2078 money = playerTarget->GetMoney();
2079 totalPlayerTime = playerTarget->GetTotalPlayedTime();
2080 level = playerTarget->GetLevel();
2081 latency = playerTarget->GetSession()->GetLatency();
2082 raceid = playerTarget->getRace();
2083 classid = playerTarget->getClass();
2084 muteTime = playerTarget->GetSession()->m_muteTime;
2085 mapId = playerTarget->GetMapId();
2086 areaId = playerTarget->GetAreaId();
2087 alive = playerTarget->IsAlive() ? handler->GetAcoreString(LANG_YES) : handler->GetAcoreString(LANG_NO);
2088 gender = playerTarget->getGender();
2089 phase = playerTarget->GetPhaseMask();
2090 }
2091 // get additional information from DB
2092 else
2093 {
2094 // check offline security
2095 if (handler->HasLowerSecurity(nullptr, target->GetGUID()))
2096 {
2097 return false;
2098 }
2099
2100 // Query informations from the DB
2101 stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_PINFO);
2102 stmt->SetData(0, lowguid);
2103 PreparedQueryResult charInfoResult = CharacterDatabase.Query(stmt);
2104
2105 if (!charInfoResult)
2106 {
2107 return false;
2108 }
2109
2110 Field* fields = charInfoResult->Fetch();
2111 totalPlayerTime = fields[0].Get<uint32>();
2112 level = fields[1].Get<uint8>();
2113 money = fields[2].Get<uint32>();
2114 accId = fields[3].Get<uint32>();
2115 raceid = fields[4].Get<uint8>();
2116 classid = fields[5].Get<uint8>();
2117 mapId = fields[6].Get<uint16>();
2118 areaId = fields[7].Get<uint16>();
2119 gender = fields[8].Get<uint8>();
2120 uint32 health = fields[9].Get<uint32>();
2121 uint32 playerFlags = fields[10].Get<uint32>();
2122
2123 if (!health || playerFlags & PLAYER_FLAGS_GHOST)
2124 {
2125 alive = handler->GetAcoreString(LANG_NO);
2126 }
2127 else
2128 {
2129 alive = handler->GetAcoreString(LANG_YES);
2130 }
2131 }
2132
2133 // Query the prepared statement for login data
2134 loginStmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_PINFO);
2135 loginStmt->SetData(0, int32(realm.Id.Realm));
2136 loginStmt->SetData(1, accId);
2137
2138 PreparedQueryResult accInfoResult = LoginDatabase.Query(loginStmt);
2139 if (accInfoResult)
2140 {
2141 Field* fields = accInfoResult->Fetch();
2142 userName = fields[0].Get<std::string>();
2143 security = fields[1].Get<uint8>();
2144
2145 // Only fetch these fields if commander has sufficient rights)
2146 if (!handler->GetSession() || handler->GetSession()->GetSecurity() >= AccountTypes(security))
2147 {
2148 eMail = fields[2].Get<std::string>();
2149 regMail = fields[3].Get<std::string>();
2150 lastIp = fields[4].Get<std::string>();
2151 lastLogin = fields[5].Get<std::string>();
2152
2153 if (IpLocationRecord const* location = sIPLocation->GetLocationRecord(lastIp))
2154 {
2155 lastIp.append(" (");
2156 lastIp.append(location->CountryName);
2157 lastIp.append(")");
2158 }
2159 }
2160 else
2161 {
2162 eMail = handler->GetAcoreString(LANG_UNAUTHORIZED);
2163 regMail = handler->GetAcoreString(LANG_UNAUTHORIZED);
2164 lastIp = handler->GetAcoreString(LANG_UNAUTHORIZED);
2165 lastLogin = handler->GetAcoreString(LANG_UNAUTHORIZED);
2166 }
2167
2168 muteTime = fields[6].Get<uint64>();
2169 muteReason = fields[7].Get<std::string>();
2170 muteBy = fields[8].Get<std::string>();
2171 failedLogins = fields[9].Get<uint32>();
2172 locked = fields[10].Get<uint8>();
2173 OS = fields[11].Get<std::string>();
2174 }
2175
2176 // Creates a chat link to the character. Returns nameLink
2177 std::string nameLink = handler->playerLink(target->GetName());
2178
2179 // Returns banType, banTime, bannedBy, banreason
2180 LoginDatabasePreparedStatement* banQuery = LoginDatabase.GetPreparedStatement(LOGIN_SEL_PINFO_BANS);
2181 banQuery->SetData(0, accId);
2182
2183 PreparedQueryResult accBannedResult = LoginDatabase.Query(banQuery);
2184 if (!accBannedResult)
2185 {
2186 banType = handler->GetAcoreString(LANG_CHARACTER);
2187 stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PINFO_BANS);
2188 stmt->SetData(0, lowguid);
2189 accBannedResult = CharacterDatabase.Query(stmt);
2190 }
2191
2192 if (accBannedResult)
2193 {
2194 Field* fields = accBannedResult->Fetch();
2195 banTime = int64(fields[1].Get<uint64>() ? 0 : fields[0].Get<uint32>());
2196 bannedBy = fields[2].Get<std::string>();
2197 banReason = fields[3].Get<std::string>();
2198 }
2199
2200 // Can be used to query data from World database
2201 WorldDatabasePreparedStatement* xpQuery = WorldDatabase.GetPreparedStatement(WORLD_SEL_REQ_XP);
2202 xpQuery->SetData(0, level);
2203
2204 PreparedQueryResult xpResult = WorldDatabase.Query(xpQuery);
2205 if (xpResult)
2206 {
2207 Field* fields = xpResult->Fetch();
2208 xptotal = fields[0].Get<uint32>();
2209 }
2210
2211 // Can be used to query data from Characters database
2212 CharacterDatabasePreparedStatement* charXpQuery = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PINFO_XP);
2213 charXpQuery->SetData(0, lowguid);
2214
2215 PreparedQueryResult charXpResult = CharacterDatabase.Query(charXpQuery);
2216 if (charXpResult)
2217 {
2218 Field* fields = charXpResult->Fetch();
2219 xp = fields[0].Get<uint32>();
2220 ObjectGuid::LowType gguid = fields[1].Get<uint32>();
2221
2222 if (gguid != 0)
2223 {
2225 guildQuery->SetData(0, lowguid);
2226
2227 PreparedQueryResult guildInfoResult = CharacterDatabase.Query(guildQuery);
2228 if (guildInfoResult)
2229 {
2230 Field* guildInfoFields = guildInfoResult->Fetch();
2231 guildId = guildInfoFields[0].Get<uint32>();
2232 guildName = guildInfoFields[1].Get<std::string>();
2233 guildRank = guildInfoFields[2].Get<std::string>();
2234 note = guildInfoFields[3].Get<std::string>();
2235 officeNote = guildInfoFields[4].Get<std::string>();
2236 }
2237 }
2238 }
2239
2240 // Initiate output
2241 // Output I. LANG_PINFO_PLAYER
2242 handler->PSendSysMessage(LANG_PINFO_PLAYER, playerTarget ? "" : handler->GetAcoreString(LANG_OFFLINE), nameLink, target->GetGUID().ToString());
2243
2244 // Output II. LANG_PINFO_GM_ACTIVE if character is gamemaster
2245 if (playerTarget && playerTarget->IsGameMaster())
2246 {
2248 }
2249
2250 // Output III. LANG_PINFO_BANNED if ban exists and is applied
2251 if (banTime >= 0)
2252 {
2253 handler->PSendSysMessage(LANG_PINFO_BANNED, banType, banReason, banTime > 0 ? secsToTimeString(banTime - GameTime::GetGameTime().count(), true) : handler->GetAcoreString(LANG_PERMANENTLY), bannedBy);
2254 }
2255
2256 // Output IV. LANG_PINFO_MUTED if mute is applied
2257 if (muteTime > 0)
2258 {
2259 handler->PSendSysMessage(LANG_PINFO_MUTED, muteReason, secsToTimeString(muteTime - GameTime::GetGameTime().count(), true), muteBy);
2260 }
2261
2262 // Output V. LANG_PINFO_ACC_ACCOUNT
2263 handler->PSendSysMessage(LANG_PINFO_ACC_ACCOUNT, userName, accId, security);
2264
2265 if (playerTarget)
2266 {
2267 uint32 accountFlags = playerTarget->GetSession()->GetAccountFlags();
2269 for (uint8 i = 0; i < MAX_ACCOUNT_FLAG; i++)
2270 if (accountFlags & static_cast<uint32>(accountFlagText[i].flag))
2272 }
2273
2274 // Output VI. LANG_PINFO_ACC_LASTLOGIN
2275 handler->PSendSysMessage(LANG_PINFO_ACC_LASTLOGIN, lastLogin, failedLogins);
2276
2277 // Output VII. LANG_PINFO_ACC_OS
2278 handler->PSendSysMessage(LANG_PINFO_ACC_OS, OS, latency);
2279
2280 // Output VIII. LANG_PINFO_ACC_REGMAILS
2281 handler->PSendSysMessage(LANG_PINFO_ACC_REGMAILS, regMail, eMail);
2282
2283 // Output IX. LANG_PINFO_ACC_IP
2284 handler->PSendSysMessage(LANG_PINFO_ACC_IP, lastIp, locked ? handler->GetAcoreString(LANG_YES) : handler->GetAcoreString(LANG_NO));
2285
2286 // Output X. LANG_PINFO_CHR_LEVEL
2287 if (level != sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL))
2288 {
2289 handler->PSendSysMessage(LANG_PINFO_CHR_LEVEL_LOW, level, xp, xptotal, (xptotal - xp));
2290 }
2291 else
2292 {
2294 }
2295
2296 // Output XI. LANG_PINFO_CHR_RACE
2297 switch (raceid)
2298 {
2299 case RACE_HUMAN:
2300 raceStr = "Human";
2301 break;
2302 case RACE_ORC:
2303 raceStr = "Orc";
2304 break;
2305 case RACE_DWARF:
2306 raceStr = "Dwarf";
2307 break;
2308 case RACE_NIGHTELF:
2309 raceStr = "Night Elf";
2310 break;
2311 case RACE_UNDEAD_PLAYER:
2312 raceStr = "Undead";
2313 break;
2314 case RACE_TAUREN:
2315 raceStr = "Tauren";
2316 break;
2317 case RACE_GNOME:
2318 raceStr = "Gnome";
2319 break;
2320 case RACE_TROLL:
2321 raceStr = "Troll";
2322 break;
2323 case RACE_BLOODELF:
2324 raceStr = "Blood Elf";
2325 break;
2326 case RACE_DRAENEI:
2327 raceStr = "Draenei";
2328 break;
2329 }
2330
2331 switch (classid)
2332 {
2333 case CLASS_WARRIOR:
2334 classStr = "Warrior";
2335 break;
2336 case CLASS_PALADIN:
2337 classStr = "Paladin";
2338 break;
2339 case CLASS_HUNTER:
2340 classStr = "Hunter";
2341 break;
2342 case CLASS_ROGUE:
2343 classStr = "Rogue";
2344 break;
2345 case CLASS_PRIEST:
2346 classStr = "Priest";
2347 break;
2348 case CLASS_DEATH_KNIGHT:
2349 classStr = "Death Knight";
2350 break;
2351 case CLASS_SHAMAN:
2352 classStr = "Shaman";
2353 break;
2354 case CLASS_MAGE:
2355 classStr = "Mage";
2356 break;
2357 case CLASS_WARLOCK:
2358 classStr = "Warlock";
2359 break;
2360 case CLASS_DRUID:
2361 classStr = "Druid";
2362 break;
2363 }
2364
2365 handler->PSendSysMessage(LANG_PINFO_CHR_RACE, (gender == 0 ? handler->GetAcoreString(LANG_CHARACTER_GENDER_MALE) : handler->GetAcoreString(LANG_CHARACTER_GENDER_FEMALE)), raceStr, classStr);
2366
2367 // Output XII. LANG_PINFO_CHR_ALIVE
2368 handler->PSendSysMessage(LANG_PINFO_CHR_ALIVE, alive);
2369
2370 // Output XIII. LANG_PINFO_CHR_PHASE if player is not in GM mode (GM is in every phase)
2371 if (playerTarget && !playerTarget->IsGameMaster()) // IsInWorld() returns false on loadingscreen, so it's more
2372 {
2373 handler->PSendSysMessage(LANG_PINFO_CHR_PHASE, phase); // precise than just target (safer ?).
2374 }
2375
2376 // However, as we usually just require a target here, we use target instead.
2377 // Output XIV. LANG_PINFO_CHR_MONEY
2378 uint32 gold = money / GOLD;
2379 uint32 silv = (money % GOLD) / SILVER;
2380 uint32 copp = (money % GOLD) % SILVER;
2381 handler->PSendSysMessage(LANG_PINFO_CHR_MONEY, gold, silv, copp);
2382
2383 // Position data
2384 MapEntry const* map = sMapStore.LookupEntry(mapId);
2385 AreaTableEntry const* area = sAreaTableStore.LookupEntry(areaId);
2386
2387 if (area)
2388 {
2389 zoneName = area->area_name[locale];
2390
2391 AreaTableEntry const* zone = sAreaTableStore.LookupEntry(area->zone);
2392 if (zone)
2393 {
2394 areaName = zoneName;
2395 zoneName = zone->area_name[locale];
2396 }
2397 }
2398
2399 if (zoneName.empty())
2400 zoneName = handler->GetAcoreString(LANG_UNKNOWN);
2401
2402 if (!areaName.empty())
2403 handler->PSendSysMessage(LANG_PINFO_CHR_MAP_WITH_AREA, map->name[locale], zoneName, areaName);
2404 else
2405 handler->PSendSysMessage(LANG_PINFO_CHR_MAP, map->name[locale], zoneName);
2406
2407 // Output XVII. - XVIX. if they are not empty
2408 if (!guildName.empty())
2409 {
2410 handler->PSendSysMessage(LANG_PINFO_CHR_GUILD, guildName, guildId);
2411 handler->PSendSysMessage(LANG_PINFO_CHR_GUILD_RANK, guildRank, uint32(guildRankId));
2412
2413 if (!note.empty())
2414 {
2416 }
2417
2418 if (!officeNote.empty())
2419 {
2420 handler->PSendSysMessage(LANG_PINFO_CHR_GUILD_ONOTE, officeNote);
2421 }
2422 }
2423
2424 // Output XX. LANG_PINFO_CHR_PLAYEDTIME
2425 handler->PSendSysMessage(LANG_PINFO_CHR_PLAYEDTIME, (secsToTimeString(totalPlayerTime, true)));
2426
2427 // Output XXI. LANG_PINFO_CHR_ONLINETIME (only for online players)
2428 if (playerTarget)
2429 {
2430 uint32 onlineTime = uint32(GameTime::GetGameTime().count() - playerTarget->m_logintime);
2431 handler->PSendSysMessage(LANG_PINFO_CHR_ONLINETIME, secsToTimeString(onlineTime, true));
2432 }
2433
2434 // Mail Data - an own query, because it may or may not be useful.
2435 // SQL: "SELECT SUM(CASE WHEN (checked & 1) THEN 1 ELSE 0 END) AS 'readmail', COUNT(*) AS 'totalmail' FROM mail WHERE `receiver` = ?"
2437 mailQuery->SetData(0, lowguid);
2438
2439 PreparedQueryResult mailInfoResult = CharacterDatabase.Query(mailQuery);
2440 if (mailInfoResult)
2441 {
2442 Field* fields = mailInfoResult->Fetch();
2443 uint32 readmail = uint32(fields[0].Get<double>());
2444 uint32 totalmail = uint32(fields[1].Get<uint64>());
2445
2446 // Output XXI. LANG_INFO_CHR_MAILS if at least one mail is given
2447 if (totalmail >= 1)
2448 {
2449 handler->PSendSysMessage(LANG_PINFO_CHR_MAILS, readmail, totalmail);
2450 }
2451 }
2452
2453 return true;
2454 }
@ 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:193
@ WORLD_SEL_REQ_XP
Definition WorldDatabase.h:117
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:1626
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:17078
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:399
uint32 GetLatency() const
Definition WorldSession.h:603
AccountFlagText const accountFlagText[MAX_ACCOUNT_FLAG]
Definition cs_misc.cpp:70
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
3317 {
3318 if (!sSoundEntriesStore.LookupEntry(soundId))
3319 {
3320 handler->SendErrorMessage(LANG_SOUND_NOT_EXIST, soundId);
3321 return false;
3322 }
3323
3324 sWorldSessionMgr->SendGlobalMessage(WorldPackets::Misc::Playsound(soundId).Write());
3325
3327 return true;
3328 }
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
3331 {
3332 Unit* unit = handler->getSelectedUnit();
3333 if (!unit)
3334 {
3335 return false;
3336 }
3337
3338 handler->GetSession()->GetPlayer()->CastSpell(unit, MAP_OUTLAND, true);
3339 return true;
3340 }
@ 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
1365 {
1366 if (!target)
1367 {
1368 target = PlayerIdentifier::FromTargetOrSelf(handler);
1369 }
1370
1371 if (!target || !target->IsConnected())
1372 {
1373 return false;
1374 }
1375
1376 auto targetPlayer = target->GetConnectedPlayer();
1377
1378 // check online security
1379 if (handler->HasLowerSecurity(targetPlayer))
1380 {
1381 return false;
1382 }
1383
1384 if (targetPlayer->IsBeingTeleported())
1385 {
1386 handler->SendErrorMessage(LANG_IS_TELEPORTED, handler->playerLink(target->GetName()));
1387 return false;
1388 }
1389
1390 // stop flight if need
1391 if (targetPlayer->IsInFlight())
1392 {
1393 targetPlayer->GetMotionMaster()->MovementExpired();
1394 targetPlayer->CleanupAfterTaxiFlight();
1395 }
1396
1397 targetPlayer->TeleportTo(targetPlayer->m_recallMap, targetPlayer->m_recallX, targetPlayer->m_recallY, targetPlayer->m_recallZ, targetPlayer->m_recallO);
1398 return true;
1399 }

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
2740 {
2741 Player* player = handler->GetSession()->GetPlayer();
2742
2743 // Phase 1: respawn creatures/GOs that still have corpses in the grid
2744 Acore::RespawnDo u_do;
2745 Acore::WorldObjectWorker<Acore::RespawnDo> worker(player, u_do);
2746 Cell::VisitObjects(player, worker, player->GetGridActivationRange());
2747
2748 // Phase 2: force-respawn creatures/GOs that were fully removed (non-compat mode)
2749 // by setting their respawn times to now so ProcessRespawns() picks them up
2750 Map* map = player->GetMap();
2751 uint32 gridId = Acore::ComputeGridCoord(player->GetPositionX(), player->GetPositionY()).GetId();
2752 time_t now = GameTime::GetGameTime().count();
2753
2754 std::vector<ObjectGuid::LowType> creaturesToRespawn;
2755 for (auto const& pair : map->GetCreatureRespawnTimes())
2756 {
2757 CreatureData const* data = sObjectMgr->GetCreatureData(pair.first);
2758 if (!data || Acore::ComputeGridCoord(data->posX, data->posY).GetId() != gridId)
2759 continue;
2760
2761 // Skip pooled spawns — Phase 1 already triggered pool rotation via
2762 // Creature::Respawn() -> PoolMgr::UpdatePool(). Forcing a respawn time
2763 // here would cause ProcessRespawns() to call UpdatePool() again,
2764 // spawning duplicates beyond the pool's max_limit.
2765 if (sPoolMgr->IsPartOfAPool<Creature>(pair.first))
2766 continue;
2767
2768 creaturesToRespawn.push_back(pair.first);
2769 }
2770 for (ObjectGuid::LowType spawnId : creaturesToRespawn)
2771 map->SaveCreatureRespawnTime(spawnId, now);
2772
2773 std::vector<ObjectGuid::LowType> goesToRespawn;
2774 for (auto const& pair : map->GetGORespawnTimes())
2775 {
2776 GameObjectData const* data = sObjectMgr->GetGameObjectData(pair.first);
2777 if (!data || Acore::ComputeGridCoord(data->posX, data->posY).GetId() != gridId)
2778 continue;
2779
2780 // Skip pooled spawns — same reason as creatures above.
2781 if (sPoolMgr->IsPartOfAPool<GameObject>(pair.first))
2782 continue;
2783
2784 goesToRespawn.push_back(pair.first);
2785 }
2786 for (ObjectGuid::LowType spawnId : goesToRespawn)
2787 map->SaveGORespawnTime(spawnId, now);
2788
2789 return true;
2790 }
#define sPoolMgr
Definition PoolMgr.h:177
Definition GridNotifiers.h:666
float GetGridActivationRange() const
Definition Object.cpp:1679
GridCoord ComputeGridCoord(float x, float y)
Definition GridDefines.h:185
Definition GridNotifiers.h:281
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
2716 {
2717 Player* player = handler->GetSession()->GetPlayer();
2718
2719 Unit* target = handler->getSelectedUnit();
2720 if (player->GetTarget() && target)
2721 {
2722 if (!target->IsCreature() || target->IsPet())
2723 {
2725 return false;
2726 }
2727
2728 if (target->isDead())
2729 {
2730 target->ToCreature()->Respawn(true);
2731 }
2732 return true;
2733 }
2734
2736 return false;
2737 }
void Respawn(bool force=false)
Definition Creature.cpp:2019
bool IsPet() const
Definition Unit.h:797
bool isDead() const
Definition Unit.h:1799

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().

◆ HandleRespawnCreatureByEntryCommand()

static bool misc_commandscript::HandleRespawnCreatureByEntryCommand ( ChatHandler handler,
uint32  entry,
Optional< uint32 mapIdArg,
Optional< uint32 instanceIdArg 
)
inlinestatic
2572 {
2573 if (!sObjectMgr->GetCreatureTemplate(entry))
2574 {
2576 return false;
2577 }
2578
2579 Map* map = nullptr;
2580 if (handler->GetSession())
2581 {
2582 // In-game: always use the player's current map
2583 map = handler->GetSession()->GetPlayer()->GetMap();
2584 }
2585 else
2586 {
2587 // Console: mapId required, instanceId optional
2588 if (!mapIdArg)
2589 {
2591 return false;
2592 }
2593 map = sMapMgr->FindMap(*mapIdArg, instanceIdArg.value_or(0));
2594 }
2595
2596 if (!map)
2597 {
2598 handler->PSendSysMessage(LANG_RESPAWN_GUID_MAP_NOT_LOADED, mapIdArg.value_or(0));
2599 return false;
2600 }
2601
2602 time_t now = GameTime::GetGameTime().count();
2603 uint32 count = 0;
2604
2605 // Phase 1: respawn dead corpses that are still tracked in the spawn-id store.
2606 // Collect first to avoid iterator invalidation caused by Respawn().
2607 std::vector<Creature*> deadCreatures;
2608 for (auto const& [spawnId, creature] : map->GetCreatureBySpawnIdStore())
2609 {
2610 CreatureData const* data = sObjectMgr->GetCreatureData(spawnId);
2611 if (!data || data->id != entry)
2612 continue;
2613 if (creature->isDead())
2614 deadCreatures.push_back(creature);
2615 }
2616 for (Creature* creature : deadCreatures)
2617 {
2618 creature->Respawn(true);
2619 ++count;
2620 }
2621
2622 // Phase 2: set respawn time to now for fully-removed spawns, skipping pools
2623 std::vector<ObjectGuid::LowType> toRespawn;
2624 for (auto const& [spawnId, respawnTime] : map->GetCreatureRespawnTimes())
2625 {
2626 CreatureData const* data = sObjectMgr->GetCreatureData(spawnId);
2627 if (!data || data->id != entry)
2628 continue;
2629 if (sPoolMgr->IsPartOfAPool<Creature>(spawnId))
2630 continue;
2631 toRespawn.push_back(spawnId);
2632 }
2633 for (ObjectGuid::LowType spawnId : toRespawn)
2634 {
2635 map->SaveCreatureRespawnTime(spawnId, now);
2636 ++count;
2637 }
2638
2640 return true;
2641 }
@ LANG_LIST_RESPAWNS_NO_MAP
Definition Language.h:1516
@ LANG_RESPAWN_GUID_MAP_NOT_LOADED
Definition Language.h:1501
@ LANG_RESPAWN_ENTRY_CREATURE_NOT_FOUND
Definition Language.h:1510
@ LANG_RESPAWN_ENTRY_CREATURE_QUEUED
Definition Language.h:1512
#define sMapMgr
Definition MapMgr.h:220
void SaveCreatureRespawnTime(ObjectGuid::LowType dbGuid, time_t &respawnTime)
Definition Map.cpp:2397
uint32 id
Definition CreatureData.h:372

References Map::GetCreatureBySpawnIdStore(), Map::GetCreatureRespawnTimes(), GameTime::GetGameTime(), WorldObject::GetMap(), WorldSession::GetPlayer(), ChatHandler::GetSession(), CreatureData::id, LANG_LIST_RESPAWNS_NO_MAP, LANG_RESPAWN_ENTRY_CREATURE_NOT_FOUND, LANG_RESPAWN_ENTRY_CREATURE_QUEUED, LANG_RESPAWN_GUID_MAP_NOT_LOADED, ChatHandler::PSendSysMessage(), Map::SaveCreatureRespawnTime(), ChatHandler::SendErrorMessage(), ChatHandler::SendSysMessage(), sMapMgr, sObjectMgr, and sPoolMgr.

Referenced by GetCommands().

◆ HandleRespawnCreatureByGuidCommand()

static bool misc_commandscript::HandleRespawnCreatureByGuidCommand ( ChatHandler handler,
ObjectGuid::LowType  spawnId 
)
inlinestatic
2457 {
2458 CreatureData const* creData = sObjectMgr->GetCreatureData(spawnId);
2459 if (!creData)
2460 {
2462 return false;
2463 }
2464
2465 Map* map = nullptr;
2466 if (handler->GetSession())
2467 {
2468 Player* player = handler->GetSession()->GetPlayer();
2469 if (player->GetMapId() == creData->mapid)
2470 map = player->GetMap();
2471 }
2472 if (!map)
2473 map = sMapMgr->FindMap(creData->mapid, 0);
2474
2475 if (!map)
2476 {
2478 return true;
2479 }
2480
2481 // First pass: check if any instance is alive
2482 bool isAlive = false;
2483 auto const creBounds = map->GetCreatureBySpawnIdStore().equal_range(spawnId);
2484 for (auto itr = creBounds.first; itr != creBounds.second; ++itr)
2485 {
2486 if (itr->second->IsAlive())
2487 {
2488 isAlive = true;
2489 break;
2490 }
2491 }
2492
2493 if (isAlive)
2494 {
2495 handler->PSendSysMessage(LANG_RESPAWN_GUID_CREATURE_ALIVE, spawnId, creData->id);
2496 return true;
2497 }
2498
2499 // Second pass: respawn any dead corpses in the world
2500 for (auto itr = creBounds.first; itr != creBounds.second; ++itr)
2501 {
2502 if (itr->second->isDead())
2503 itr->second->Respawn(true);
2504 }
2505 // Also trigger via respawn time queue for fully-removed spawns
2506 if (map->GetCreatureRespawnTime(spawnId) > 0)
2507 {
2508 time_t now = GameTime::GetGameTime().count();
2509 map->SaveCreatureRespawnTime(spawnId, now);
2510 }
2511 handler->PSendSysMessage(LANG_RESPAWN_GUID_CREATURE_QUEUED, spawnId, creData->id);
2512 return true;
2513 }
@ LANG_RESPAWN_GUID_CREATURE_QUEUED
Definition Language.h:1503
@ LANG_RESPAWN_GUID_CREATURE_ALIVE
Definition Language.h:1502
@ LANG_RESPAWN_GUID_CREATURE_NOT_FOUND
Definition Language.h:1500
time_t GetCreatureRespawnTime(ObjectGuid::LowType dbGuid) const
Definition Map.h:407
CreatureBySpawnIdContainer & GetCreatureBySpawnIdStore()
Definition Map.h:355
uint16 mapid
Definition SpawnData.h:69

References Map::GetCreatureBySpawnIdStore(), Map::GetCreatureRespawnTime(), GameTime::GetGameTime(), WorldObject::GetMap(), WorldLocation::GetMapId(), WorldSession::GetPlayer(), ChatHandler::GetSession(), CreatureData::id, LANG_RESPAWN_GUID_CREATURE_ALIVE, LANG_RESPAWN_GUID_CREATURE_NOT_FOUND, LANG_RESPAWN_GUID_CREATURE_QUEUED, LANG_RESPAWN_GUID_MAP_NOT_LOADED, SpawnData::mapid, ChatHandler::PSendSysMessage(), Map::SaveCreatureRespawnTime(), ChatHandler::SendErrorMessage(), sMapMgr, and sObjectMgr.

Referenced by GetCommands().

◆ HandleRespawnGameObjectByEntryCommand()

static bool misc_commandscript::HandleRespawnGameObjectByEntryCommand ( ChatHandler handler,
uint32  entry,
Optional< uint32 mapIdArg,
Optional< uint32 instanceIdArg 
)
inlinestatic
2644 {
2645 if (!sObjectMgr->GetGameObjectTemplate(entry))
2646 {
2648 return false;
2649 }
2650
2651 Map* map = nullptr;
2652 if (handler->GetSession())
2653 {
2654 // In-game: always use the player's current map
2655 map = handler->GetSession()->GetPlayer()->GetMap();
2656 }
2657 else
2658 {
2659 // Console: mapId required, instanceId optional
2660 if (!mapIdArg)
2661 {
2663 return false;
2664 }
2665 map = sMapMgr->FindMap(*mapIdArg, instanceIdArg.value_or(0));
2666 }
2667
2668 if (!map)
2669 {
2670 handler->PSendSysMessage(LANG_RESPAWN_GUID_MAP_NOT_LOADED, mapIdArg.value_or(0));
2671 return false;
2672 }
2673
2674 time_t now = GameTime::GetGameTime().count();
2675 uint32 count = 0;
2676
2677 // Phase 1: respawn inactive objects that are still tracked in the spawn-id store.
2678 // Collect first to avoid iterator invalidation caused by Respawn().
2679 std::vector<GameObject*> inactiveGOs;
2680 for (auto const& [spawnId, go] : map->GetGameObjectBySpawnIdStore())
2681 {
2682 GameObjectData const* data = sObjectMgr->GetGameObjectData(spawnId);
2683 if (!data || data->id != entry)
2684 continue;
2685 if (!go->isSpawned())
2686 inactiveGOs.push_back(go);
2687 }
2688 for (GameObject* go : inactiveGOs)
2689 {
2690 go->Respawn();
2691 ++count;
2692 }
2693
2694 // Phase 2: set respawn time to now for fully-removed spawns, skipping pools
2695 std::vector<ObjectGuid::LowType> toRespawn;
2696 for (auto const& [spawnId, respawnTime] : map->GetGORespawnTimes())
2697 {
2698 GameObjectData const* data = sObjectMgr->GetGameObjectData(spawnId);
2699 if (!data || data->id != entry)
2700 continue;
2701 if (sPoolMgr->IsPartOfAPool<GameObject>(spawnId))
2702 continue;
2703 toRespawn.push_back(spawnId);
2704 }
2705 for (ObjectGuid::LowType spawnId : toRespawn)
2706 {
2707 map->SaveGORespawnTime(spawnId, now);
2708 ++count;
2709 }
2710
2712 return true;
2713 }
@ LANG_RESPAWN_ENTRY_GAMEOBJECT_QUEUED
Definition Language.h:1513
@ LANG_RESPAWN_ENTRY_GAMEOBJECT_NOT_FOUND
Definition Language.h:1511
void SaveGORespawnTime(ObjectGuid::LowType dbGuid, time_t &respawnTime)
Definition Map.cpp:2442
uint32 id
Definition GameObjectData.h:717

References Map::GetGameObjectBySpawnIdStore(), GameTime::GetGameTime(), Map::GetGORespawnTimes(), WorldObject::GetMap(), WorldSession::GetPlayer(), ChatHandler::GetSession(), GameObjectData::id, LANG_LIST_RESPAWNS_NO_MAP, LANG_RESPAWN_ENTRY_GAMEOBJECT_NOT_FOUND, LANG_RESPAWN_ENTRY_GAMEOBJECT_QUEUED, LANG_RESPAWN_GUID_MAP_NOT_LOADED, ChatHandler::PSendSysMessage(), Map::SaveGORespawnTime(), ChatHandler::SendErrorMessage(), ChatHandler::SendSysMessage(), sMapMgr, sObjectMgr, and sPoolMgr.

Referenced by GetCommands().

◆ HandleRespawnGameObjectByGuidCommand()

static bool misc_commandscript::HandleRespawnGameObjectByGuidCommand ( ChatHandler handler,
ObjectGuid::LowType  spawnId 
)
inlinestatic
2516 {
2517 GameObjectData const* goData = sObjectMgr->GetGameObjectData(spawnId);
2518 if (!goData)
2519 {
2521 return false;
2522 }
2523
2524 Map* map = nullptr;
2525 if (handler->GetSession())
2526 {
2527 Player* player = handler->GetSession()->GetPlayer();
2528 if (player->GetMapId() == goData->mapid)
2529 map = player->GetMap();
2530 }
2531 if (!map)
2532 map = sMapMgr->FindMap(goData->mapid, 0);
2533
2534 if (!map)
2535 {
2537 return true;
2538 }
2539
2540 // First pass: check if any instance is already active
2541 bool isActive = false;
2542 auto const goBounds = map->GetGameObjectBySpawnIdStore().equal_range(spawnId);
2543 for (auto itr = goBounds.first; itr != goBounds.second; ++itr)
2544 {
2545 if (itr->second->isSpawned())
2546 {
2547 isActive = true;
2548 break;
2549 }
2550 }
2551
2552 if (isActive)
2553 {
2555 return true;
2556 }
2557
2558 // Second pass: respawn inactive objects in the world
2559 for (auto itr = goBounds.first; itr != goBounds.second; ++itr)
2560 itr->second->Respawn();
2561 // Also trigger via respawn time queue for fully-removed spawns
2562 if (map->GetGORespawnTime(spawnId) > 0)
2563 {
2564 time_t now = GameTime::GetGameTime().count();
2565 map->SaveGORespawnTime(spawnId, now);
2566 }
2568 return true;
2569 }
@ LANG_RESPAWN_GUID_GAMEOBJECT_QUEUED
Definition Language.h:1505
@ LANG_RESPAWN_GUID_GAMEOBJECT_ACTIVE
Definition Language.h:1504
@ LANG_RESPAWN_GUID_GAMEOBJECT_NOT_FOUND
Definition Language.h:1507
time_t GetGORespawnTime(ObjectGuid::LowType dbGuid) const
Definition Map.h:416
GameObjectBySpawnIdContainer & GetGameObjectBySpawnIdStore()
Definition Map.h:358
ObjectData const goData[]
Definition instance_violet_hold.cpp:48

References Map::GetGameObjectBySpawnIdStore(), GameTime::GetGameTime(), Map::GetGORespawnTime(), WorldObject::GetMap(), WorldLocation::GetMapId(), WorldSession::GetPlayer(), ChatHandler::GetSession(), goData, LANG_RESPAWN_GUID_GAMEOBJECT_ACTIVE, LANG_RESPAWN_GUID_GAMEOBJECT_NOT_FOUND, LANG_RESPAWN_GUID_GAMEOBJECT_QUEUED, LANG_RESPAWN_GUID_MAP_NOT_LOADED, ChatHandler::PSendSysMessage(), Map::SaveGORespawnTime(), ChatHandler::SendErrorMessage(), sMapMgr, and sObjectMgr.

Referenced by GetCommands().

◆ HandleReviveCommand()

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

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

Referenced by GetCommands().

◆ HandleSaveAllCommand()

static bool misc_commandscript::HandleSaveAllCommand ( ChatHandler handler)
inlinestatic
1433 {
1436 return true;
1437 }
@ 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
1402 {
1403 Player* player = handler->GetSession()->GetPlayer();
1404
1405 // save GM account without delay and output message
1407 {
1408 if (Player* target = handler->getSelectedPlayer())
1409 {
1410 target->SaveToDB(false, false);
1411 }
1412 else
1413 {
1414 player->SaveToDB(false, false);
1415 }
1416
1418 return true;
1419 }
1420
1421 // save if the player has last been saved over 20 seconds ago
1422 uint32 saveInterval = sWorld->getIntConfig(CONFIG_INTERVAL_SAVE);
1423 if (saveInterval == 0 || (saveInterval > 20 * IN_MILLISECONDS && player->GetSaveTimer() <= saveInterval - 20 * IN_MILLISECONDS))
1424 {
1425 player->SaveToDB(false, false);
1426 }
1427
1428 return true;
1429 }
constexpr auto IN_MILLISECONDS
Definition Common.h:53
@ LANG_PLAYER_SAVED
Definition Language.h:46
@ CONFIG_INTERVAL_SAVE
Definition WorldConfig.h:171
void SaveToDB(bool create, bool logout)
Definition PlayerStorage.cpp:7157
uint32 GetSaveTimer() const
Definition Player.h:2397
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
1956 {
1957 uint32 skillID = uint32(skillId);
1958
1959 if (skillID <= 0)
1960 {
1961 handler->SendErrorMessage(LANG_INVALID_SKILL_ID, skillID);
1962 return false;
1963 }
1964
1965 Player* target = handler->getSelectedPlayer();
1966 if (!target)
1967 {
1969 return false;
1970 }
1971
1972 SkillLineEntry const* skillLine = sSkillLineStore.LookupEntry(skillID);
1973 if (!skillLine)
1974 {
1975 handler->SendErrorMessage(LANG_INVALID_SKILL_ID, uint32(skillID));
1976 return false;
1977 }
1978
1979 bool targetHasSkill = target->GetSkillValue(skillID);
1980
1981 // If our target does not yet have the skill they are trying to add to them, the chosen level also becomes
1982 // the max level of the new profession.
1983 uint16 max = maxPureSkill ? *maxPureSkill : targetHasSkill ? target->GetPureMaxSkillValue(skillID) : uint16(level);
1984
1985 if (level <= 0 || level > max || max <= 0)
1986 {
1987 return false;
1988 }
1989
1990 // If the player has the skill, we get the current skill step. If they don't have the skill, we
1991 // add the skill to the player's book with step 1 (which is the first rank, in most cases something
1992 // like 'Apprentice <skill>'.
1993 target->SetSkill(skillID, targetHasSkill ? target->GetSkillStep(skillID) : 1, level, max);
1994 handler->PSendSysMessage(LANG_SET_SKILL, skillID, skillLine->name[handler->GetSessionDbcLocale()], handler->GetNameLink(target), level, max);
1995 return true;
1996 }
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:5459
uint16 GetSkillStep(uint16 skill) const
Definition Player.cpp:5447
uint16 GetPureMaxSkillValue(uint32 skill) const
Definition Player.cpp:5494
void SetSkill(uint16 id, uint16 step, uint16 currVal, uint16 maxVal)
Definition Player.cpp:5333
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
1693 {
1694 Player* playerTarget = handler->getSelectedPlayer();
1695 if (!playerTarget)
1696 {
1698 return false;
1699 }
1700
1701 AreaTableEntry const* area = sAreaTableStore.LookupEntry(areaID);
1702 if (!area)
1703 {
1705 return false;
1706 }
1707
1708 int32 offset = area->exploreFlag / 32;
1709 if (offset >= PLAYER_EXPLORED_ZONES_SIZE)
1710 {
1712 return false;
1713 }
1714
1715 uint32 val = uint32((1 << (area->exploreFlag % 32)));
1716 uint32 currFields = playerTarget->GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset);
1717 playerTarget->SetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset, uint32((currFields | val)));
1718
1720 return true;
1721 }
@ 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
212 {
213 auto tokens = args;
214
215 if (args.empty() || !tokens.size())
216 {
217 handler->SetSentErrorMessage(true);
218 return false;
219 }
220
221 auto tokensItr = tokens.begin();
222
223 std::vector<BattlegroundTypeId> allowedArenas;
224 std::string_view arenasStr = *(tokensItr++);
225
226 auto arenaTokens = Acore::Tokenize(arenasStr, ',', false);
227 for (auto const& arenaName : arenaTokens)
228 {
229 if (arenaName == "all")
230 {
231 if (arenaTokens.size() > 1)
232 {
233 handler->SendErrorMessage("Invalid [arena] specified.");
234 return false;
235 }
236
237 allowedArenas.emplace_back(BATTLEGROUND_NA);
238 allowedArenas.emplace_back(BATTLEGROUND_BE);
239 allowedArenas.emplace_back(BATTLEGROUND_RL);
240 allowedArenas.emplace_back(BATTLEGROUND_DS);
241 allowedArenas.emplace_back(BATTLEGROUND_RV);
242 }
243 else if (arenaName == "NA")
244 {
245 allowedArenas.emplace_back(BATTLEGROUND_NA);
246 }
247 else if (arenaName == "BE")
248 {
249 allowedArenas.emplace_back(BATTLEGROUND_BE);
250 }
251 else if (arenaName == "RL")
252 {
253 allowedArenas.emplace_back(BATTLEGROUND_RL);
254 }
255 else if (arenaName == "DS")
256 {
257 allowedArenas.emplace_back(BATTLEGROUND_DS);
258 }
259 else if (arenaName == "RV")
260 {
261 allowedArenas.emplace_back(BATTLEGROUND_RV);
262 }
263 else
264 {
265 handler->SendErrorMessage("Invalid [arena] specified.");
266 return false;
267 }
268 }
269
270 ASSERT(!allowedArenas.empty());
271 BattlegroundTypeId randomizedArenaBgTypeId = Acore::Containers::SelectRandomContainerElement(allowedArenas);
272
273 uint8 count = 0;
274 if (tokensItr != tokens.end())
275 {
276 std::string_view mode = *(tokensItr++);
277
278 if (mode == "1v1")
279 {
280 count = 2;
281 }
282 else if (mode == "2v2")
283 {
284 count = 4;
285 }
286 else if (mode == "3v3")
287 {
288 count = 6;
289 }
290 else if (mode == "5v5")
291 {
292 count = 10;
293 }
294 }
295
296 if (!count)
297 {
298 handler->SendErrorMessage("Invalid bracket. Can be 1v1, 2v2, 3v3, 5v5");
299 return false;
300 }
301
302 if (tokens.size() != uint16(count + 2))
303 {
304 handler->SendErrorMessage("Invalid number of nicknames for this bracket.");
305 return false;
306 }
307
308 uint8 hcnt = count / 2;
309 uint8 error = 0;
310 std::string last_name;
311 Player* plr = nullptr;
312 std::array<Player*, 10> players = {};
313 uint8 cnt = 0;
314
315 for (; tokensItr != tokens.end(); ++tokensItr)
316 {
317 last_name = std::string(*tokensItr);
318 plr = ObjectAccessor::FindPlayerByName(last_name, false);
319
320 if (!plr)
321 {
322 error = 1;
323 break;
324 }
325
326 if (!plr->IsInWorld() || !plr->FindMap() || plr->IsBeingTeleported())
327 {
328 error = 2;
329 break;
330 }
331
332 if (plr->GetMap()->GetEntry()->Instanceable())
333 {
334 error = 3;
335 break;
336 }
337
338 if (plr->IsUsingLfg())
339 {
340 error = 4;
341 break;
342 }
343
344 if (plr->InBattlegroundQueue())
345 {
346 error = 5;
347 break;
348 }
349
350 if (plr->IsInFlight())
351 {
352 error = 10;
353 break;
354 }
355
356 if (!plr->IsAlive())
357 {
358 error = 11;
359 break;
360 }
361
362 const Group* g = plr->GetGroup();
363
364 if (hcnt > 1)
365 {
366 if (!g)
367 {
368 error = 6;
369 break;
370 }
371
372 if (g->isRaidGroup() || g->isBGGroup() || g->isBFGroup() || g->isLFGGroup())
373 {
374 error = 7;
375 break;
376 }
377
378 if (g->GetMembersCount() != hcnt)
379 {
380 error = 8;
381 break;
382 }
383
384 uint8 sti = (cnt < hcnt ? 0 : hcnt);
385 if (sti != cnt && players[sti]->GetGroup() != plr->GetGroup())
386 {
387 error = 9;
388 last_name += " and " + players[sti]->GetName();
389 break;
390 }
391 }
392 else // 1v1
393 {
394 if (g)
395 {
396 error = 12;
397 break;
398 }
399 }
400
401 players[cnt++] = plr;
402 }
403
404 for (uint8 i = 0; i < cnt && !error; ++i)
405 {
406 for (uint8 j = i + 1; j < cnt; ++j)
407 {
408 if (players[i]->GetGUID() == players[j]->GetGUID())
409 {
410 last_name = players[i]->GetName();
411 error = 13;
412 break;
413 }
414 }
415 }
416
417 switch (error)
418 {
419 case 1:
420 handler->PSendSysMessage("Player {} not found.", last_name);
421 break;
422 case 2:
423 handler->PSendSysMessage("Player {} is being teleported.", last_name);
424 break;
425 case 3:
426 handler->PSendSysMessage("Player {} is in instance/battleground/arena.", last_name);
427 break;
428 case 4:
429 handler->PSendSysMessage("Player {} is in LFG system.", last_name);
430 break;
431 case 5:
432 handler->PSendSysMessage("Player {} is queued for battleground/arena.", last_name);
433 break;
434 case 6:
435 handler->PSendSysMessage("Player {} is not in group.", last_name);
436 break;
437 case 7:
438 handler->PSendSysMessage("Player {} is not in normal group.", last_name);
439 break;
440 case 8:
441 handler->PSendSysMessage("Group of player {} has invalid member count.", last_name);
442 break;
443 case 9:
444 handler->PSendSysMessage("Players {} are not in the same group.", last_name);
445 break;
446 case 10:
447 handler->PSendSysMessage("Player {} is in flight.", last_name);
448 break;
449 case 11:
450 handler->PSendSysMessage("Player {} is dead.", last_name);
451 break;
452 case 12:
453 handler->PSendSysMessage("Player {} is in a group.", last_name);
454 break;
455 case 13:
456 handler->PSendSysMessage("Player {} occurs more than once.", last_name);
457 break;
458 }
459
460 if (error)
461 {
462 handler->SetSentErrorMessage(true);
463 return false;
464 }
465
466 Battleground* bgt = sBattlegroundMgr->GetBattlegroundTemplate(BATTLEGROUND_AA);
467 if (!bgt)
468 {
469 handler->SendErrorMessage("Couldn't create arena map!");
470 return false;
471 }
472
473 Battleground* bg = sBattlegroundMgr->CreateNewBattleground(randomizedArenaBgTypeId, GetBattlegroundBracketById(bgt->GetMapId(), bgt->GetBracketId()), ArenaType(hcnt >= 2 ? hcnt : 2), false);
474 if (!bg)
475 {
476 handler->SendErrorMessage("Couldn't create arena map!");
477 return false;
478 }
479
480 bg->StartBattleground();
481
482 BattlegroundTypeId bgTypeId = bg->GetBgTypeID();
483
484 TeamId teamId1 = Player::TeamIdForRace(players[0]->getRace());
485 TeamId teamId2 = (teamId1 == TEAM_ALLIANCE ? TEAM_HORDE : TEAM_ALLIANCE);
486
487 for (uint8 i = 0; i < cnt; ++i)
488 {
489 Player* player = players[i];
490
491 TeamId teamId = (i < hcnt ? teamId1 : teamId2);
492 player->SetEntryPoint();
493
494 uint32 queueSlot = 0;
495 WorldPacket data;
496 sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_IN_PROGRESS, 0, bg->GetStartTime(), bg->GetArenaType(), teamId);
497 player->SendDirectMessage(&data);
498
499 // Remove from LFG queues
500 sLFGMgr->LeaveAllLfgQueues(player->GetGUID(), false);
501
502 player->SetBattlegroundId(bg->GetInstanceID(), bgTypeId, queueSlot, true, false, teamId);
503 sBattlegroundMgr->SendToBattleground(player, bg->GetInstanceID(), bgTypeId);
504 }
505
506 handler->PSendSysMessage("Success! Players are now being teleported to the arena.");
507 return true;
508 }
#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:304
uint32 GetMapId() const
Definition Battleground.h:446
uint8 GetArenaType() const
Definition Battleground.h:358
void StartBattleground()
Definition Battleground.cpp:1179
uint32 GetInstanceID() const
Definition Battleground.h:332
uint32 GetStartTime() const
Definition Battleground.h:335
BattlegroundBracketId GetBracketId() const
Definition Battleground.h:331
BattlegroundTypeId GetBgTypeID(bool GetRandom=false) const
Definition Battleground.h:330
void SetSentErrorMessage(bool val)
Definition Chat.h:238
bool isLFGGroup(bool restricted=false) const
Definition Group.cpp:2340
bool isBGGroup() const
Definition Group.cpp:2351
uint32 GetMembersCount() const
Definition Group.h:252
bool isBFGroup() const
Definition Group.cpp:2356
bool isRaidGroup() const
Definition Group.cpp:2346
MapEntry const * GetEntry() const
Definition Map.h:173
bool IsInWorld() const
Definition Object.h:109
static TeamId TeamIdForRace(uint8 race)
Definition Player.cpp:5838
void SendDirectMessage(WorldPacket const *data) const
Definition Player.cpp:5701
bool InBattlegroundQueue(bool ignoreArena=false) const
Definition Player.cpp:12273
bool IsUsingLfg()
Definition Player.cpp:13196
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
3387 {
3388 if (!id)
3389 {
3391 return false;
3392 }
3393
3394 std::string str = sObjectMgr->GetAcoreString(id, locale ? static_cast<LocaleConstant>(*locale) : DEFAULT_LOCALE);
3395 handler->SendSysMessage(str);
3396 return true;
3397 }
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
962 {
963 if (!target)
964 {
965 target = PlayerIdentifier::FromTarget(handler);
966 }
967
968 if (!target)
969 {
970 return false;
971 }
972
973 Player* _player = handler->GetSession()->GetPlayer();
974 if (target->GetGUID() == _player->GetGUID())
975 {
977 return false;
978 }
979
980 std::string nameLink = handler->playerLink(target->GetName());
981
982 if (target->IsConnected())
983 {
984 auto targetPlayer = target->GetConnectedPlayer();
985
986 // check online security
987 if (handler->HasLowerSecurity(targetPlayer))
988 {
989 return false;
990 }
991
992 if (targetPlayer->IsBeingTeleported())
993 {
994 handler->SendErrorMessage(LANG_IS_TELEPORTED, nameLink);
995 return false;
996 }
997
998 Map* map = handler->GetSession()->GetPlayer()->GetMap();
999
1000 if (map->IsBattlegroundOrArena())
1001 {
1002 handler->SendErrorMessage("Can't summon to a battleground!");
1003 return false;
1004 }
1005 else if (map->IsDungeon())
1006 {
1007 // Allow GM to summon players or only other GM accounts inside instances.
1008 if (!sWorld->getBoolConfig(CONFIG_INSTANCE_GMSUMMON_PLAYER))
1009 {
1010 // pussywizard: prevent unbinding normal player's perm bind by just summoning him >_>
1011 if (!targetPlayer->GetSession()->GetSecurity())
1012 {
1013 handler->SendErrorMessage("Only GMs can be summoned to an instance!");
1014 return false;
1015 }
1016 }
1017
1018 Map* destMap = targetPlayer->GetMap();
1019
1020 if (destMap->Instanceable() && destMap->GetInstanceId() != map->GetInstanceId())
1021 {
1022 sInstanceSaveMgr->PlayerUnbindInstance(target->GetGUID(), map->GetInstanceId(), targetPlayer->GetDungeonDifficulty(), true, targetPlayer);
1023 }
1024
1025 // we are in an instance, and can only summon players in our group with us as leader
1026 if (!handler->GetSession()->GetPlayer()->GetGroup() || !targetPlayer->GetGroup() ||
1027 (targetPlayer->GetGroup()->GetLeaderGUID() != handler->GetSession()->GetPlayer()->GetGUID()) ||
1028 (handler->GetSession()->GetPlayer()->GetGroup()->GetLeaderGUID() != handler->GetSession()->GetPlayer()->GetGUID()))
1029 // the last check is a bit excessive, but let it be, just in case
1030 {
1031 handler->SendErrorMessage(LANG_CANNOT_SUMMON_TO_INST, nameLink);
1032 return false;
1033 }
1034 }
1035
1036 handler->PSendSysMessage(LANG_SUMMONING, nameLink, "");
1037 if (handler->needReportToTarget(targetPlayer))
1038 {
1039 ChatHandler(targetPlayer->GetSession()).PSendSysMessage(LANG_SUMMONED_BY, handler->playerLink(_player->GetName()));
1040 }
1041
1042 // stop flight if need
1043 if (targetPlayer->IsInFlight())
1044 {
1045 targetPlayer->GetMotionMaster()->MovementExpired();
1046 targetPlayer->CleanupAfterTaxiFlight();
1047 }
1048 // save only in non-flight case
1049 else
1050 {
1051 targetPlayer->SaveRecallPosition();
1052 }
1053
1054 // before GM
1055 float x, y, z;
1056 handler->GetSession()->GetPlayer()->GetClosePoint(x, y, z, targetPlayer->GetObjectSize());
1057 targetPlayer->TeleportTo(handler->GetSession()->GetPlayer()->GetMapId(), x, y, z, targetPlayer->GetOrientation(), 0, handler->GetSession()->GetPlayer());
1058 }
1059 else
1060 {
1061 // check offline security
1062 if (handler->HasLowerSecurity(nullptr, target->GetGUID()))
1063 {
1064 return false;
1065 }
1066
1067 handler->PSendSysMessage(LANG_SUMMONING, nameLink, handler->GetAcoreString(LANG_OFFLINE));
1068
1069 // in point where GM stay
1071 handler->GetSession()->GetPlayer()->GetPositionX(),
1072 handler->GetSession()->GetPlayer()->GetPositionY(),
1073 handler->GetSession()->GetPlayer()->GetPositionZ(),
1074 handler->GetSession()->GetPlayer()->GetOrientation(),
1075 handler->GetSession()->GetPlayer()->GetZoneId(),
1076 target->GetGUID());
1077 }
1078
1079 return true;
1080 }
@ 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
753 {
754 Unit* target = handler->getSelectedUnit();
755 if (!target)
756 {
758 return false;
759 }
760
761 if (spells.holds_alternative<std::string_view>() && spells.get<std::string_view>() == "all")
762 {
763 target->RemoveAllAuras();
764 return true;
765 }
766
767 if (!spells.holds_alternative<SpellInfo const*>())
768 {
770 return false;
771 }
772
773 auto spell = spells.get<SpellInfo const*>();
774
775 if (!SpellMgr::IsSpellValid(spell))
776 {
777 handler->SendErrorMessage(LANG_COMMAND_SPELL_BROKEN, spell->Id);
778 return false;
779 }
780
781 target->RemoveAurasDueToSpell(spell->Id);
782
783 return true;
784 }
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:5189
void RemoveAllAuras()
Definition Unit.cpp:5612

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
3367 {
3368 Player* player = handler->GetSession()->GetPlayer();
3369
3370 if (player->isPossessing())
3371 {
3372 return false;
3373 }
3374
3375 player->StopCastingBindSight();
3376 return true;
3377 }
void StopCastingBindSight(Aura *except=nullptr)
Definition Player.cpp:13284
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
3275 {
3276 Creature* creatureTarget = handler->getSelectedCreature();
3277
3278 if (!target && !creatureTarget)
3279 {
3280 target = PlayerIdentifier::FromTargetOrSelf(handler);
3281 }
3282
3283 if (!target && !creatureTarget)
3284 {
3286 return false;
3287 }
3288
3289 Player* playerTarget = target->GetConnectedPlayer();
3290
3291 if (!creatureTarget && playerTarget && playerTarget->HasAura(SPELL_FREEZE))
3292 {
3293 handler->PSendSysMessage(LANG_COMMAND_UNFREEZE, target->GetName());
3294 playerTarget->RemoveAurasDueToSpell(SPELL_FREEZE);
3295 return true;
3296 }
3297 else if (creatureTarget && creatureTarget->HasAura(SPELL_FREEZE))
3298 {
3300 creatureTarget->RemoveAurasDueToSpell(SPELL_FREEZE);
3301 return true;
3302 }
3303 else if (!creatureTarget && target && !target->IsConnected())
3304 {
3306 stmt->SetData(0, target->GetGUID().GetCounter());
3307 CharacterDatabase.Execute(stmt);
3308 handler->PSendSysMessage(LANG_COMMAND_UNFREEZE, target->GetName());
3309 return true;
3310 }
3311
3313 return true;
3314 }
@ 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:6017

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
2918 {
2919 if (!target)
2920 {
2921 target = PlayerIdentifier::FromTargetOrSelf(handler);
2922 }
2923
2924 if (!target)
2925 {
2926 return false;
2927 }
2928
2929 Player* playerTarget = target->GetConnectedPlayer();
2930 uint32 accountId = playerTarget ? playerTarget->GetSession()->GetAccountId() : sCharacterCache->GetCharacterAccountIdByGuid(target->GetGUID());
2931
2932 // find only player from same account if any
2933 if (!playerTarget)
2934 {
2935 if (WorldSession* session = sWorldSessionMgr->FindSession(accountId))
2936 {
2937 playerTarget = session->GetPlayer();
2938 }
2939 }
2940
2941 // must have strong lesser security level
2942 if (handler->HasLowerSecurity(playerTarget, target->GetGUID(), true))
2943 {
2944 return false;
2945 }
2946
2947 if (playerTarget)
2948 {
2949 if (playerTarget->CanSpeak())
2950 {
2952 return false;
2953 }
2954
2955 playerTarget->GetSession()->m_muteTime = 0;
2956 }
2957
2959 stmt->SetData(0, 0);
2960 stmt->SetData(1, "");
2961 stmt->SetData(2, "");
2962 stmt->SetData(3, accountId);
2963 LoginDatabase.Execute(stmt);
2964
2965 if (playerTarget)
2966 {
2968 }
2969
2970 handler->PSendSysMessage(LANG_YOU_ENABLE_CHAT, handler->playerLink(target->GetName()));
2971
2972 return true;
2973 }
@ 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
3343 {
3344 Unit* unit = handler->getSelectedUnit();
3345 if (!unit)
3346 {
3347 unit = handler->GetSession()->GetPlayer();
3348 }
3349
3350 unit->RemoveCharmAuras();
3351 return true;
3352 }
void RemoveCharmAuras()
Definition Unit.cpp:8324

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

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: