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

Public Member Functions

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

Static Public Member Functions

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

Additional Inherited Members

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

Detailed Description

Constructor & Destructor Documentation

◆ misc_commandscript()

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

Member Function Documentation

◆ GetCommands()

ChatCommandTable misc_commandscript::GetCommands ( ) const
inlineoverridevirtual

Implements CommandScript.

136 {
137 static ChatCommandTable auraCommandTable =
138 {
139 { "stack", HandleAuraStacksCommand, SEC_GAMEMASTER, Console::No },
140 { "", HandleAuraCommand, SEC_GAMEMASTER, Console::No }
141 };
142
143 static ChatCommandTable commandTable =
144 {
145 { "commentator", HandleCommentatorCommand, SEC_MODERATOR, Console::No },
146 { "dev", HandleDevCommand, SEC_ADMINISTRATOR, Console::No },
147 { "gps", HandleGPSCommand, SEC_MODERATOR, Console::No },
148 { "aura", auraCommandTable },
149 { "unaura", HandleUnAuraCommand, SEC_GAMEMASTER, Console::No },
150 { "appear", HandleAppearCommand, SEC_MODERATOR, Console::No },
151 { "summon", HandleSummonCommand, SEC_GAMEMASTER, Console::No },
152 { "groupsummon", HandleGroupSummonCommand, SEC_GAMEMASTER, Console::No },
153 { "commands", HandleCommandsCommand, SEC_PLAYER, Console::Yes },
154 { "die", HandleDieCommand, SEC_GAMEMASTER, Console::No },
155 { "revive", HandleReviveCommand, SEC_GAMEMASTER, Console::Yes },
156 { "dismount", HandleDismountCommand, SEC_PLAYER, Console::No },
157 { "guid", HandleGUIDCommand, SEC_GAMEMASTER, Console::No },
158 { "help", HandleHelpCommand, SEC_PLAYER, Console::Yes },
159 { "cooldown", HandleCooldownCommand, SEC_GAMEMASTER, Console::No },
160 { "distance", HandleGetDistanceCommand, SEC_ADMINISTRATOR, Console::No },
161 { "recall", HandleRecallCommand, SEC_GAMEMASTER, Console::No },
162 { "save", HandleSaveCommand, SEC_PLAYER, Console::No },
163 { "saveall", HandleSaveAllCommand, SEC_GAMEMASTER, Console::Yes },
164 { "kick", HandleKickPlayerCommand, SEC_GAMEMASTER, Console::Yes },
165 { "unstuck", HandleUnstuckCommand, SEC_GAMEMASTER, Console::Yes },
166 { "linkgrave", HandleLinkGraveCommand, SEC_ADMINISTRATOR, Console::No },
167 { "neargrave", HandleNearGraveCommand, SEC_GAMEMASTER, Console::No },
168 { "showarea", HandleShowAreaCommand, SEC_GAMEMASTER, Console::No },
169 { "hidearea", HandleHideAreaCommand, SEC_ADMINISTRATOR, Console::No },
170 { "additem", HandleAddItemCommand, SEC_GAMEMASTER, Console::Yes },
171 { "additem set", HandleAddItemSetCommand, SEC_GAMEMASTER, Console::No },
172 { "wchange", HandleChangeWeather, SEC_ADMINISTRATOR, Console::No },
173 { "maxskill", HandleMaxSkillCommand, SEC_GAMEMASTER, Console::No },
174 { "setskill", HandleSetSkillCommand, SEC_GAMEMASTER, Console::No },
175 { "pinfo", HandlePInfoCommand, SEC_GAMEMASTER, Console::Yes },
176 { "respawn", HandleRespawnCommand, SEC_GAMEMASTER, Console::No },
177 { "respawn all", HandleRespawnAllCommand, SEC_GAMEMASTER, Console::No },
178 { "mute", HandleMuteCommand, SEC_GAMEMASTER, Console::Yes },
179 { "mutehistory", HandleMuteInfoCommand, SEC_GAMEMASTER, Console::Yes },
180 { "unmute", HandleUnmuteCommand, SEC_GAMEMASTER, Console::Yes },
181 { "movegens", HandleMovegensCommand, SEC_ADMINISTRATOR, Console::No },
182 { "cometome", HandleComeToMeCommand, SEC_ADMINISTRATOR, Console::No },
183 { "damage", HandleDamageCommand, SEC_GAMEMASTER, Console::No },
184 { "combatstop", HandleCombatStopCommand, SEC_GAMEMASTER, Console::Yes },
185 { "flusharenapoints", HandleFlushArenaPointsCommand, SEC_ADMINISTRATOR, Console::Yes },
186 { "freeze", HandleFreezeCommand, SEC_GAMEMASTER, Console::No },
187 { "unfreeze", HandleUnFreezeCommand, SEC_GAMEMASTER, Console::No },
188 { "possess", HandlePossessCommand, SEC_GAMEMASTER, Console::No },
189 { "unpossess", HandleUnPossessCommand, SEC_GAMEMASTER, Console::No },
190 { "bindsight", HandleBindSightCommand, SEC_ADMINISTRATOR, Console::No },
191 { "unbindsight", HandleUnbindSightCommand, SEC_ADMINISTRATOR, Console::No },
192 { "playall", HandlePlayAllCommand, SEC_GAMEMASTER, Console::No },
193 { "skirmish", HandleSkirmishCommand, SEC_ADMINISTRATOR, Console::No },
194 { "mailbox", HandleMailBoxCommand, SEC_MODERATOR, Console::No },
195 { "string", HandleStringCommand, SEC_GAMEMASTER, Console::No },
196 { "opendoor", HandleOpenDoorCommand, SEC_GAMEMASTER, Console::No },
197 { "bm", HandleBMCommand, SEC_GAMEMASTER, Console::No },
198 { "packetlog", HandlePacketLog, SEC_GAMEMASTER, Console::Yes }
199 };
200
201 return commandTable;
202 }
@ SEC_PLAYER
Definition Common.h:57
@ SEC_ADMINISTRATOR
Definition Common.h:60
@ SEC_GAMEMASTER
Definition Common.h:59
@ SEC_MODERATOR
Definition Common.h:58
static bool HandleCommentatorCommand(ChatHandler *handler, Optional< bool > enableArg)
Definition cs_misc.cpp:503
static bool HandleDevCommand(ChatHandler *handler, Optional< bool > enableArg)
Definition cs_misc.cpp:545
static bool HandleDamageCommand(ChatHandler *handler, uint32 damage, Optional< std::string > percent)
Definition cs_misc.cpp:2859
static bool HandleSaveCommand(ChatHandler *handler)
Definition cs_misc.cpp:1394
static bool HandleAuraStacksCommand(ChatHandler *handler, SpellInfo const *spell, int16 stacks)
Definition cs_misc.cpp:700
static bool HandleLinkGraveCommand(ChatHandler *handler, uint32 graveyardId, Optional< std::string_view > team)
Definition cs_misc.cpp:1557
static bool HandlePlayAllCommand(ChatHandler *handler, uint32 soundId)
Definition cs_misc.cpp:3008
static bool HandleAddItemCommand(ChatHandler *handler, Optional< PlayerIdentifier > player, ItemTemplate const *itemTemplate, Optional< int32 > _count)
Definition cs_misc.cpp:1747
static bool HandleAuraCommand(ChatHandler *handler, SpellInfo const *spell)
Definition cs_misc.cpp:674
static bool HandleUnstuckCommand(ChatHandler *handler, Optional< PlayerIdentifier > target, Optional< std::string_view > location)
Definition cs_misc.cpp:1479
static bool HandleRespawnAllCommand(ChatHandler *handler)
Definition cs_misc.cpp:2473
static bool HandleSkirmishCommand(ChatHandler *handler, std::vector< std::string_view > args)
Definition cs_misc.cpp:204
static bool HandleUnbindSightCommand(ChatHandler *handler)
Definition cs_misc.cpp:3058
static bool HandleShowAreaCommand(ChatHandler *handler, uint32 areaID)
Definition cs_misc.cpp:1685
static bool HandleStringCommand(ChatHandler *handler, uint32 id, Optional< uint8 > locale)
Definition cs_misc.cpp:3078
static bool HandleChangeWeather(ChatHandler *handler, uint32 type, float grade)
Definition cs_misc.cpp:1910
static bool HandlePInfoCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:1992
static bool HandleBMCommand(ChatHandler *handler, Optional< bool > enableArg)
Definition cs_misc.cpp:3104
static bool HandleSummonCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:954
static bool HandleCooldownCommand(ChatHandler *handler, Optional< SpellInfo const * > spell)
Definition cs_misc.cpp:1299
static bool HandleReviveCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:1224
static bool HandleOpenDoorCommand(ChatHandler *handler, Optional< float > range)
Definition cs_misc.cpp:3091
static bool HandleCommandsCommand(ChatHandler *handler)
Definition cs_misc.cpp:1181
static bool HandleMailBoxCommand(ChatHandler *handler)
Definition cs_misc.cpp:3071
static bool HandleDieCommand(ChatHandler *handler)
Definition cs_misc.cpp:1187
static bool HandleAppearCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:779
static bool HandleHelpCommand(ChatHandler *handler, Tail cmd)
Definition cs_misc.cpp:1287
static bool HandleRespawnCommand(ChatHandler *handler)
Definition cs_misc.cpp:2449
static bool HandleNearGraveCommand(ChatHandler *handler, Optional< std::string_view > team)
Definition cs_misc.cpp:1608
static bool HandleMovegensCommand(ChatHandler *handler)
Definition cs_misc.cpp:2709
static bool HandleGUIDCommand(ChatHandler *handler)
Definition cs_misc.cpp:1273
static bool HandleAddItemSetCommand(ChatHandler *handler, Variant< Hyperlink< itemset >, uint32 > itemSetId)
Definition cs_misc.cpp:1849
static bool HandleSaveAllCommand(ChatHandler *handler)
Definition cs_misc.cpp:1425
static bool HandleGPSCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:588
static bool HandleKickPlayerCommand(ChatHandler *handler, Optional< PlayerIdentifier > target, Optional< std::string_view > reason)
Definition cs_misc.cpp:1433
static bool HandleHideAreaCommand(ChatHandler *handler, uint32 areaID)
Definition cs_misc.cpp:1716
static bool HandleSetSkillCommand(ChatHandler *handler, Variant< Hyperlink< skill >, uint32 > skillId, int32 level, Optional< uint16 > maxPureSkill)
Definition cs_misc.cpp:1948
static bool HandlePacketLog(ChatHandler *handler, Optional< PlayerIdentifier > target, Optional< bool > enableArg)
Definition cs_misc.cpp:3145
static bool HandleUnmuteCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:2609
static bool HandleRecallCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:1357
static bool HandleBindSightCommand(ChatHandler *handler)
Definition cs_misc.cpp:3046
static bool HandleComeToMeCommand(ChatHandler *handler)
Definition cs_misc.cpp:2843
static bool HandleUnPossessCommand(ChatHandler *handler)
Definition cs_misc.cpp:3034
static bool HandleDismountCommand(ChatHandler *handler)
Definition cs_misc.cpp:1249
static bool HandleGroupSummonCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:1076
static bool HandleCombatStopCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:2891
static bool HandleUnAuraCommand(ChatHandler *handler, Variant< SpellInfo const *, std::string_view > spells)
Definition cs_misc.cpp:745
static bool HandleGetDistanceCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:1329
static bool HandleMaxSkillCommand(ChatHandler *handler)
Definition cs_misc.cpp:1934
static bool HandleFlushArenaPointsCommand(ChatHandler *)
Definition cs_misc.cpp:2917
static bool HandleFreezeCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:2923
static bool HandleMuteInfoCommand(ChatHandler *handler, std::string accountName)
Definition cs_misc.cpp:2668
static bool HandleUnFreezeCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:2966
static bool HandleMuteCommand(ChatHandler *handler, Optional< PlayerIdentifier > player, std::string notSpeakTime, Tail muteReason)
Definition cs_misc.cpp:2485
static bool HandlePossessCommand(ChatHandler *handler)
Definition cs_misc.cpp:3022
std::vector< ChatCommandBuilder > ChatCommandTable
Definition ChatCommand.h:46

References HandleAddItemCommand(), HandleAddItemSetCommand(), HandleAppearCommand(), HandleAuraCommand(), HandleAuraStacksCommand(), HandleBindSightCommand(), HandleBMCommand(), HandleChangeWeather(), HandleCombatStopCommand(), HandleComeToMeCommand(), HandleCommandsCommand(), HandleCommentatorCommand(), HandleCooldownCommand(), HandleDamageCommand(), HandleDevCommand(), HandleDieCommand(), HandleDismountCommand(), HandleFlushArenaPointsCommand(), HandleFreezeCommand(), HandleGetDistanceCommand(), HandleGPSCommand(), HandleGroupSummonCommand(), HandleGUIDCommand(), HandleHelpCommand(), HandleHideAreaCommand(), HandleKickPlayerCommand(), HandleLinkGraveCommand(), HandleMailBoxCommand(), HandleMaxSkillCommand(), HandleMovegensCommand(), HandleMuteCommand(), HandleMuteInfoCommand(), HandleNearGraveCommand(), HandleOpenDoorCommand(), HandlePacketLog(), HandlePInfoCommand(), HandlePlayAllCommand(), HandlePossessCommand(), HandleRecallCommand(), HandleRespawnAllCommand(), HandleRespawnCommand(), HandleReviveCommand(), HandleSaveAllCommand(), HandleSaveCommand(), HandleSetSkillCommand(), HandleShowAreaCommand(), HandleSkirmishCommand(), HandleStringCommand(), HandleSummonCommand(), HandleUnAuraCommand(), HandleUnbindSightCommand(), HandleUnFreezeCommand(), HandleUnmuteCommand(), HandleUnPossessCommand(), HandleUnstuckCommand(), SEC_ADMINISTRATOR, SEC_GAMEMASTER, SEC_MODERATOR, and SEC_PLAYER.

◆ HandleAddItemCommand()

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

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

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
780 {
781 if (!target)
782 {
783 target = PlayerIdentifier::FromTarget(handler);
784 }
785
786 if (!target)
787 {
788 return false;
789 }
790
791 Player* _player = handler->GetSession()->GetPlayer();
792 if (target->GetGUID() == _player->GetGUID())
793 {
795 return false;
796 }
797
798 std::string nameLink = handler->playerLink(target->GetName());
799
800 if (target->IsConnected())
801 {
802 auto targetPlayer = target->GetConnectedPlayer();
803
804 // check online security
805 if (handler->HasLowerSecurity(targetPlayer))
806 {
807 return false;
808 }
809
810 Map* map = targetPlayer->GetMap();
811 if (map->IsBattlegroundOrArena())
812 {
813 // only allow if gm mode is on
814 if (!_player->IsGameMaster())
815 {
816 handler->SendErrorMessage(LANG_CANNOT_GO_TO_BG_GM, nameLink);
817 return false;
818 }
819
820 if (!_player->GetMap()->IsBattlegroundOrArena())
821 {
822 _player->SetEntryPoint();
823 }
824
825 _player->SetBattlegroundId(targetPlayer->GetBattlegroundId(), targetPlayer->GetBattlegroundTypeId(), PLAYER_MAX_BATTLEGROUND_QUEUES, false, false, TEAM_NEUTRAL);
826 }
827 else if (map->IsDungeon())
828 {
829 // we have to go to instance, and can go to player only if:
830 // 1) we are in his group (either as leader or as member)
831 // 2) we are not bound to any group and have GM mode on
832 if (_player->GetGroup())
833 {
834 // we are in group, we can go only if we are in the player group
835 if (_player->GetGroup() != targetPlayer->GetGroup())
836 {
838 return false;
839 }
840 }
841 else
842 {
843 // we are not in group, let's verify our GM mode
844 if (!_player->IsGameMaster())
845 {
847 return false;
848 }
849 }
850
851 // if the GM is bound to another instance, he will not be bound to another one
852 InstancePlayerBind* bind = sInstanceSaveMgr->PlayerGetBoundInstance(_player->GetGUID(), targetPlayer->GetMapId(), targetPlayer->GetDifficulty(map->IsRaid()));
853 if (!bind)
854 {
855 if (InstanceSave* save = sInstanceSaveMgr->GetInstanceSave(target->GetConnectedPlayer()->GetInstanceId()))
856 {
857 sInstanceSaveMgr->PlayerBindToInstance(_player->GetGUID(), save, !save->CanReset(), _player);
858 }
859 }
860
861 if (map->IsRaid())
862 {
863 _player->SetRaidDifficulty(targetPlayer->GetRaidDifficulty());
864 }
865 else
866 {
867 _player->SetDungeonDifficulty(targetPlayer->GetDungeonDifficulty());
868 }
869 }
870
871 handler->PSendSysMessage(LANG_APPEARING_AT, nameLink);
872
873 // stop flight if need
874 if (_player->IsInFlight())
875 {
876 _player->GetMotionMaster()->MovementExpired();
877 _player->CleanupAfterTaxiFlight();
878 }
879 else // save only in non-flight case
880 _player->SaveRecallPosition();
881
882 if (Transport* transport = targetPlayer->GetTransport())
883 {
884 if (Transport* oldTransport = _player->GetTransport())
885 oldTransport->RemovePassenger(_player, true);
886
887 float x;
888 float y;
889 float z;
890 float o;
891 targetPlayer->m_movementInfo.transport.pos.GetPosition(x, y, z, o);
892
893 _player->SetTransport(transport);
894 _player->m_movementInfo.transport.guid = transport->GetGUID();
895 _player->m_movementInfo.transport.pos.Relocate(x, y, z, o);
897
898 float worldX = x;
899 float worldY = y;
900 float worldZ = z;
901 float worldO = o;
902 transport->CalculatePassengerPosition(worldX, worldY, worldZ, &worldO);
903
904 transport->AddPassenger(_player, false);
905
906 if (_player->TeleportTo(transport->GetMapId(), worldX, worldY, worldZ + 0.25f, worldO, TELE_TO_NOT_LEAVE_TRANSPORT | TELE_TO_GM_MODE, targetPlayer))
907 _player->SetPhaseMask(targetPlayer->GetPhaseMask() | 1, false);
908 }
909 else
910 {
911 if (_player->TeleportTo(targetPlayer->GetMapId(), targetPlayer->GetPositionX(), targetPlayer->GetPositionY(), targetPlayer->GetPositionZ() + 0.25f, _player->GetOrientation(), TELE_TO_GM_MODE, targetPlayer))
912 _player->SetPhaseMask(targetPlayer->GetPhaseMask() | 1, false);
913 }
914 }
915 else
916 {
917 // check offline security
918 if (handler->HasLowerSecurity(nullptr, target->GetGUID()))
919 {
920 return false;
921 }
922
923 handler->PSendSysMessage(LANG_APPEARING_AT, nameLink);
924
925 // to point where player stay (if loaded)
926 float x, y, z, o;
927 uint32 map;
928 bool in_flight;
929
930 if (!Player::LoadPositionFromDB(map, x, y, z, o, in_flight, target->GetGUID().GetCounter()))
931 {
932 return false;
933 }
934
935 // stop flight if need
936 if (_player->IsInFlight())
937 {
938 _player->GetMotionMaster()->MovementExpired();
939 _player->CleanupAfterTaxiFlight();
940 }
941 // save only in non-flight case
942 else
943 {
944 _player->SaveRecallPosition();
945 }
946
947 _player->TeleportTo(map, x, y, z, _player->GetOrientation());
948 }
949
950 return true;
951 }
#define sInstanceSaveMgr
Definition InstanceSaveMgr.h:202
@ LANG_CANNOT_GO_TO_INST_PARTY
Definition Language.h:137
@ LANG_CANT_TELEPORT_SELF
Definition Language.h:212
@ LANG_APPEARING_AT
Definition Language.h:146
@ LANG_CANNOT_GO_TO_INST_GM
Definition Language.h:138
@ LANG_CANNOT_GO_TO_BG_GM
Definition Language.h:714
@ 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:57
Definition InstanceSaveMgr.h:56
Definition Map.h:164
bool IsDungeon() const
Definition Map.h:295
bool IsBattlegroundOrArena() const
Definition Map.h:303
bool IsRaid() const
Definition Map.h:297
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:1940
void SetEntryPoint()
Definition Player.cpp:11202
void SetRaidDifficulty(Difficulty raid_difficulty)
Definition Player.h:1941
void SetBattlegroundId(uint32 id, BattlegroundTypeId bgTypeId, uint32 queueSlot, bool invited, bool isRandom, TeamId teamId)
Definition Player.cpp:12263
void SaveRecallPosition()
Definition Player.cpp:5648
Group * GetGroup()
Definition Player.h:2504
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:1352
static bool LoadPositionFromDB(uint32 &mapid, float &x, float &y, float &z, float &o, bool &in_flight, ObjectGuid::LowType guid)
Definition PlayerStorage.cpp:4937
void CleanupAfterTaxiFlight()
Definition Player.cpp:10360
Definition Transport.h:30
MotionMaster * GetMotionMaster()
Definition Unit.h:1758
bool IsInFlight() const
Definition Unit.h:1705
void AddUnitMovementFlag(uint32 f)
Definition Unit.h:772
void SetPhaseMask(uint32 newPhaseMask, bool update) override
Definition Unit.cpp:15274
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
675 {
676 if (!spell)
677 {
679 return false;
680 }
681
682 if (!SpellMgr::IsSpellValid(spell))
683 {
684 handler->SendErrorMessage(LANG_COMMAND_SPELL_BROKEN, spell->Id);
685 return false;
686 }
687
688 Unit* target = handler->getSelectedUnit();
689 if (!target)
690 {
692 return false;
693 }
694
695 Aura::TryRefreshStackOrCreate(spell, MAX_EFFECT_MASK, target, target);
696
697 return true;
698 }
#define MAX_EFFECT_MASK
Definition DBCStructure.h:1638
@ LANG_COMMAND_NOSPELLFOUND
Definition Language.h:483
@ LANG_SELECT_CHAR_OR_CREATURE
Definition Language.h:31
@ LANG_COMMAND_SPELL_BROKEN
Definition Language.h:526
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:386
static bool IsSpellValid(SpellInfo const *spellInfo)
Definition SpellMgr.cpp:488
Definition Unit.h:664

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

Referenced by GetCommands().

◆ HandleAuraStacksCommand()

static bool misc_commandscript::HandleAuraStacksCommand ( ChatHandler handler,
SpellInfo const *  spell,
int16  stacks 
)
inlinestatic
701 {
702 if (!spell)
703 {
705 return false;
706 }
707
708 if (!SpellMgr::IsSpellValid(spell))
709 {
710 handler->SendErrorMessage(LANG_COMMAND_SPELL_BROKEN, spell->Id);
711 return false;
712 }
713
714 if (!stacks)
715 {
717 return false;
718 }
719
720 Unit* target = handler->getSelectedUnit();
721 if (!target)
722 {
724 return false;
725 }
726
727 Aura* aur = target->GetAura(spell->Id);
728 if (!aur)
729 {
731 return false;
732 }
733
734 if (!spell->StackAmount)
735 {
737 return false;
738 }
739
740 aur->ModStackAmount(stacks);
741
742 return true;
743 }
@ LANG_COMMAND_AURASTACK_CANT_STACK
Definition Language.h:427
@ LANG_COMMAND_AURASTACK_NO_STACK
Definition Language.h:426
@ LANG_COMMAND_AURASTACK_NO_AURA
Definition Language.h:425
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:5842

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
3047 {
3048 Unit* unit = handler->getSelectedUnit();
3049 if (!unit)
3050 {
3051 return false;
3052 }
3053
3054 handler->GetSession()->GetPlayer()->CastSpell(unit, 6277, true);
3055 return true;
3056 }
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:1350

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
3105 {
3106 WorldSession* session = handler->GetSession();
3107
3108 if (!session)
3109 return false;
3110
3111 auto SetBMMod = [&](bool enable)
3112 {
3113 char const* enabled = "ON";
3114 char const* disabled = "OFF";
3115 handler->SendNotification(LANG_COMMAND_BEASTMASTER_MODE, enable ? enabled : disabled);
3116
3117 session->GetPlayer()->SetBeastMaster(enable);
3118 };
3119
3120 if (!enableArg)
3121 {
3122 if (!AccountMgr::IsPlayerAccount(session->GetSecurity()) && session->GetPlayer()->IsDeveloper())
3123 SetBMMod(true);
3124 else
3125 SetBMMod(false);
3126
3127 return true;
3128 }
3129
3130 if (*enableArg)
3131 {
3132 SetBMMod(true);
3133 return true;
3134 }
3135 else
3136 {
3137 SetBMMod(false);
3138 return true;
3139 }
3140
3142 return false;
3143 }
@ LANG_USE_BOL
Definition Language.h:308
@ LANG_COMMAND_BEASTMASTER_MODE
Definition Language.h:984
void SendNotification(std::string_view str)
Definition Chat.cpp:105
void SetBeastMaster(bool on)
Definition Player.h:1171
bool IsDeveloper() const
Definition Player.h:1169
Player session in the World.
Definition WorldSession.h:384
bool IsPlayerAccount(uint32 gmlevel)
Definition AccountMgr.cpp:312

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
1911 {
1912 // Weather is OFF
1913 if (!sWorld->getBoolConfig(CONFIG_WEATHER))
1914 {
1916 return false;
1917 }
1918
1919 Player* player = handler->GetSession()->GetPlayer();
1920 uint32 zoneid = player->GetZoneId();
1921
1922 Weather* weather = player->GetMap()->GetOrGenerateZoneDefaultWeather(zoneid);
1923 if (!weather)
1924 {
1926 return false;
1927 }
1928
1929 weather->SetWeather(WeatherType(type), grade);
1930
1931 return true;
1932 }
@ LANG_NO_WEATHER
Definition Language.h:438
@ LANG_WEATHER_DISABLED
Definition Language.h:439
WeatherType
Definition SharedDefines.h:3372
@ CONFIG_WEATHER
Definition WorldConfig.h:53
Weather * GetOrGenerateZoneDefaultWeather(uint32 zoneId)
Definition Map.cpp:2850
Weather for one zone.
Definition Weather.h:65
uint32 GetZoneId() const
Definition Object.cpp:3112
#define sWorld
Definition World.h:316
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
2892 {
2893 if (!target)
2894 {
2895 target = PlayerIdentifier::FromTargetOrSelf(handler);
2896 }
2897
2898 if (!target || !target->IsConnected())
2899 {
2901 return false;
2902 }
2903
2904 Player* playerTarget = target->GetConnectedPlayer();
2905
2906 // check online security
2907 if (handler->HasLowerSecurity(playerTarget))
2908 {
2909 return false;
2910 }
2911
2912 playerTarget->CombatStop();
2913 playerTarget->GetThreatMgr().RemoveMeFromThreatLists();
2914 return true;
2915 }
@ LANG_PLAYER_NOT_FOUND
Definition Language.h:545
void RemoveMeFromThreatLists()
Definition ThreatManager.cpp:794
ThreatManager & GetThreatMgr()
Definition Unit.h:951
void CombatStop(bool includingCast=false, bool mutualPvP=true)
Definition Unit.cpp:7469

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
2844 {
2845 Creature* caster = handler->getSelectedCreature();
2846 if (!caster)
2847 {
2849 return false;
2850 }
2851
2852 Player* player = handler->GetSession()->GetPlayer();
2853
2854 caster->GetMotionMaster()->MovePoint(0, player->GetPositionX(), player->GetPositionY(), player->GetPositionZ());
2855
2856 return true;
2857 }
@ LANG_SELECT_CREATURE
Definition Language.h:32
Creature * getSelectedCreature() const
Definition Chat.cpp:410
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
1182 {
1183 SendCommandHelpFor(*handler, "");
1184 return true;
1185 }
AC_GAME_API void SendCommandHelpFor(ChatHandler &handler, std::string_view cmd)
Definition ChatCommand.cpp:533

References Acore::ChatCommands::SendCommandHelpFor().

Referenced by GetCommands().

◆ HandleCommentatorCommand()

static bool misc_commandscript::HandleCommentatorCommand ( ChatHandler handler,
Optional< bool >  enableArg 
)
inlinestatic
504 {
505 WorldSession* session = handler->GetSession();
506
507 if (!session)
508 {
510 return false;
511 }
512
513 auto SetCommentatorMod = [&](bool enable)
514 {
515 handler->SendNotification(enable ? "Commentator mode on" : "Commentator mode off");
516 session->GetPlayer()->SetCommentator(enable);
517 };
518
519 if (!enableArg)
520 {
521 if (!AccountMgr::IsPlayerAccount(session->GetSecurity()) && session->GetPlayer()->IsCommentator())
522 {
523 SetCommentatorMod(true);
524 }
525 else
526 {
527 SetCommentatorMod(false);
528 }
529
530 return true;
531 }
532
533 if (*enableArg)
534 {
535 SetCommentatorMod(true);
536 return true;
537 }
538 else
539 {
540 SetCommentatorMod(false);
541 return true;
542 }
543 }
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
1300 {
1301 Player* target = handler->getSelectedPlayer();
1302 if (!target)
1303 {
1305 return false;
1306 }
1307
1308 std::string nameLink = handler->GetNameLink(target);
1309
1310 if (!spell)
1311 {
1312 target->RemoveAllSpellCooldown();
1313 handler->PSendSysMessage(LANG_REMOVEALL_COOLDOWN, nameLink);
1314 }
1315 else
1316 {
1317 if (!SpellMgr::IsSpellValid(*spell))
1318 {
1319 handler->SendErrorMessage(LANG_COMMAND_SPELL_BROKEN, spell.value()->Id);
1320 return false;
1321 }
1322
1323 target->RemoveSpellCooldown(spell.value()->Id, true);
1324 handler->PSendSysMessage(LANG_REMOVE_COOLDOWN, spell.value()->Id, target == handler->GetSession()->GetPlayer() ? handler->GetAcoreString(LANG_YOU) : nameLink);
1325 }
1326 return true;
1327 }
@ LANG_YOU
Definition Language.h:76
@ LANG_REMOVE_COOLDOWN
Definition Language.h:538
@ LANG_REMOVEALL_COOLDOWN
Definition Language.h:537
virtual std::string GetAcoreString(uint32 entry) const
Definition Chat.cpp:41
void RemoveAllSpellCooldown()
Definition Player.cpp:3564
void RemoveSpellCooldown(uint32 spell_id, bool update=false)
Definition Player.cpp:3513

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
2860 {
2861 Unit* target = handler->getSelectedUnit();
2862 if (!target || !handler->GetSession()->GetPlayer()->GetTarget())
2863 {
2865 return false;
2866 }
2867
2868 if (target->IsPlayer())
2869 if (handler->HasLowerSecurity(target->ToPlayer()))
2870 return false;
2871
2872 if (!target->IsAlive() || !damage)
2873 return true;
2874
2875 if (target->IsCreature() && handler->GetSession()->GetSecurity() == SEC_CONSOLE) // pussywizard
2876 target->ToCreature()->LowerPlayerDamageReq(target->GetMaxHealth());
2877
2878 if (percent)
2879 if (StringStartsWith("pct", *percent))
2880 if (damage <= 100)
2881 damage = target->CountPctFromMaxHealth(damage);
2882
2883 Unit::DealDamage(handler->GetSession()->GetPlayer(), target, damage, nullptr, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, nullptr, false, true);
2884
2885 if (target != handler->GetSession()->GetPlayer())
2887
2888 return true;
2889 }
@ SEC_CONSOLE
Definition Common.h:61
@ SPELL_SCHOOL_MASK_NORMAL
Definition SharedDefines.h:285
@ VICTIMSTATE_HIT
Definition Unit.h:85
@ HITINFO_AFFECTS_VICTIM
Definition Unit.h:99
@ DIRECT_DAMAGE
Definition Unit.h:254
bool StringStartsWith(std::string_view haystack, std::string_view needle)
Definition Util.h:392
void LowerPlayerDamageReq(uint32 unDamage, bool damagedByPlayer=true)
Definition Creature.cpp:3761
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:6870
uint32 GetMaxHealth() const
Definition Unit.h:1109
bool IsAlive() const
Definition Unit.h:1793
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:983

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
546 {
547 WorldSession* session = handler->GetSession();
548
549 if (!session)
550 {
552 return false;
553 }
554
555 auto SetDevMod = [&](bool enable)
556 {
557 handler->SendNotification(enable ? LANG_DEV_ON : LANG_DEV_OFF);
558 session->GetPlayer()->SetDeveloper(enable);
559 sScriptMgr->OnHandleDevCommand(handler->GetSession()->GetPlayer(), enable);
560 };
561
562 if (!enableArg)
563 {
564 if (!AccountMgr::IsPlayerAccount(session->GetSecurity()) && session->GetPlayer()->IsDeveloper())
565 {
566 SetDevMod(true);
567 }
568 else
569 {
570 SetDevMod(false);
571 }
572
573 return true;
574 }
575
576 if (*enableArg)
577 {
578 SetDevMod(true);
579 return true;
580 }
581 else
582 {
583 SetDevMod(false);
584 return true;
585 }
586 }
@ LANG_DEV_ON
Definition Language.h:935
@ LANG_DEV_OFF
Definition Language.h:936
#define sScriptMgr
Definition ScriptMgr.h:734
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
1188 {
1189 Unit* target = handler->getSelectedUnit();
1190
1191 if (!target || !handler->GetSession()->GetPlayer()->GetTarget())
1192 {
1194 return false;
1195 }
1196
1197 if (target->IsPlayer())
1198 {
1199 if (handler->HasLowerSecurity(target->ToPlayer()))
1200 {
1201 return false;
1202 }
1203 }
1204
1205 if (target->IsAlive())
1206 {
1207 if (sWorld->getBoolConfig(CONFIG_DIE_COMMAND_MODE))
1208 {
1209 if (target->IsCreature() && handler->GetSession()->GetSecurity() == SEC_CONSOLE) // pussywizard
1210 {
1211 target->ToCreature()->LowerPlayerDamageReq(target->GetMaxHealth());
1212 }
1213 Unit::Kill(handler->GetSession()->GetPlayer(), target);
1214 }
1215 else
1216 {
1217 Unit::DealDamage(handler->GetSession()->GetPlayer(), target, target->GetHealth(), nullptr, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, nullptr, false, true);
1218 }
1219 }
1220
1221 return true;
1222 }
@ CONFIG_DIE_COMMAND_MODE
Definition WorldConfig.h:66
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:13938
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
1250 {
1251 Player* player = handler->GetSession()->GetPlayer();
1252
1253 // If player is not mounted, so go out :)
1254 if (!player->IsMounted())
1255 {
1257 return false;
1258 }
1259
1260 if (player->IsInFlight())
1261 {
1263 return false;
1264 }
1265
1266 player->Dismount();
1268 player->SetSpeed(MOVE_RUN, 1, true);
1269 player->SetSpeed(MOVE_FLIGHT, 1, true);
1270 return true;
1271 }
@ 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:10539
bool IsMounted() const
Definition Unit.h:1886
void SetSpeed(UnitMoveType mtype, float rate, bool forced=false)
Definition Unit.cpp:11270
void RemoveAurasByType(AuraType auraType, ObjectGuid casterGUID=ObjectGuid::Empty, Aura *except=nullptr, bool negative=true, bool positive=true)
Definition Unit.cpp:5365

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
2918 {
2919 sArenaTeamMgr->DistributeArenaPoints();
2920 return true;
2921 }
#define sArenaTeamMgr
Definition ArenaTeamMgr.h:69

References sArenaTeamMgr.

Referenced by GetCommands().

◆ HandleFreezeCommand()

static bool misc_commandscript::HandleFreezeCommand ( ChatHandler handler,
Optional< PlayerIdentifier target 
)
inlinestatic
2924 {
2925 Creature* creatureTarget = handler->getSelectedCreature();
2926
2927 if (!target && !creatureTarget)
2928 {
2929 target = PlayerIdentifier::FromTargetOrSelf(handler);
2930 }
2931
2932 if (!target && !creatureTarget)
2933 {
2935 return false;
2936 }
2937
2938 Player* playerTarget = target->GetConnectedPlayer();
2939 if (playerTarget && !creatureTarget)
2940 {
2941 handler->PSendSysMessage(LANG_COMMAND_FREEZE, target->GetName());
2942
2943 if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(SPELL_FREEZE))
2944 {
2945 Aura::TryRefreshStackOrCreate(spellInfo, MAX_EFFECT_MASK, playerTarget, playerTarget);
2946 }
2947
2948 return true;
2949 }
2950 else if (creatureTarget && creatureTarget->IsAlive())
2951 {
2953
2954 if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(SPELL_FREEZE))
2955 {
2956 Aura::TryRefreshStackOrCreate(spellInfo, MAX_EFFECT_MASK, creatureTarget, creatureTarget);
2957 }
2958
2959 return true;
2960 }
2961
2963 return false;
2964 }
@ LANG_COMMAND_FREEZE
Definition Language.h:1058
#define sSpellMgr
Definition SpellMgr.h:836
virtual LocaleConstant GetSessionDbcLocale() const
Definition Chat.cpp:870
Definition SpellInfo.h:340
constexpr auto SPELL_FREEZE
Definition cs_misc.cpp:59
std::string const GetLocalizeCreatureName(Creature *creature, LocaleConstant locale)
Definition cs_misc.cpp:104

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
1330 {
1331 if (!target)
1332 {
1333 target = PlayerIdentifier::FromTargetOrSelf(handler);
1334 }
1335
1336 WorldObject* object = handler->getSelectedUnit();
1337
1338 if (!object && !target)
1339 {
1340 return false;
1341 }
1342
1343 if (!object && target && target->IsConnected())
1344 {
1345 object = target->GetConnectedPlayer();
1346 }
1347
1348 if (!object)
1349 {
1350 return false;
1351 }
1352
1353 handler->PSendSysMessage(LANG_DISTANCE, handler->GetSession()->GetPlayer()->GetDistance(object), handler->GetSession()->GetPlayer()->GetDistance2d(object), handler->GetSession()->GetPlayer()->GetExactDist(object), handler->GetSession()->GetPlayer()->GetExactDist2d(object));
1354 return true;
1355 }
@ LANG_DISTANCE
Definition Language.h:550
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
589 {
590 if (!target)
591 {
592 target = PlayerIdentifier::FromTargetOrSelf(handler);
593 }
594
595 WorldObject* object = handler->getSelectedUnit();
596
597 if (!object && !target)
598 {
599 return false;
600 }
601
602 if (!object && target && target->IsConnected())
603 {
604 object = target->GetConnectedPlayer();
605 }
606
607 if (!object)
608 {
609 return false;
610 }
611
612 CellCoord const cellCoord = Acore::ComputeCellCoord(object->GetPositionX(), object->GetPositionY());
613 Cell cell(cellCoord);
614
615 uint32 zoneId, areaId;
616 object->GetZoneAndAreaId(zoneId, areaId);
617
618 MapEntry const* mapEntry = sMapStore.LookupEntry(object->GetMapId());
619 AreaTableEntry const* zoneEntry = sAreaTableStore.LookupEntry(zoneId);
620 AreaTableEntry const* areaEntry = sAreaTableStore.LookupEntry(areaId);
621
622 float zoneX = object->GetPositionX();
623 float zoneY = object->GetPositionY();
624
625 Map2ZoneCoordinates(zoneX, zoneY, zoneId);
626
627 float groundZ = object->GetMapHeight(object->GetPositionX(), object->GetPositionY(), MAX_HEIGHT);
628 float floorZ = object->GetMapHeight(object->GetPositionX(), object->GetPositionY(), object->GetPositionZ());
629
630 uint32 haveMap = GridTerrainLoader::ExistMap(object->GetMapId(), cell.GridX(), cell.GridY()) ? 1 : 0;
631 uint32 haveVMap = GridTerrainLoader::ExistVMap(object->GetMapId(), cell.GridX(), cell.GridY()) ? 1 : 0;
632 uint32 haveMMAP = handler->GetSession()->GetPlayer()->GetMap()->GetMapCollisionData().GetMMapData().GetNavMesh() ? 1 : 0;
633
634 if (haveVMap)
635 {
636 if (object->IsOutdoors())
637 {
638 handler->PSendSysMessage("You are outdoors");
639 }
640 else
641 {
642 handler->PSendSysMessage("You are indoors");
643 }
644 }
645 else
646 {
647 handler->PSendSysMessage("no VMAP available for area info");
648 }
649
651 object->GetMapId(), (mapEntry ? mapEntry->name[handler->GetSessionDbcLocale()] : "<unknown>"),
652 zoneId, (zoneEntry ? zoneEntry->area_name[handler->GetSessionDbcLocale()] : "<unknown>"),
653 areaId, (areaEntry ? areaEntry->area_name[handler->GetSessionDbcLocale()] : "<unknown>"),
654 object->GetPhaseMask(),
655 object->GetPositionX(), object->GetPositionY(), object->GetPositionZ(), object->GetOrientation(),
656 cell.GridX(), cell.GridY(), cell.CellX(), cell.CellY(), object->GetInstanceId(),
657 zoneX, zoneY, groundZ, floorZ, haveMap, haveVMap, haveMMAP);
658
659 LiquidData const& liquidData = object->GetLiquidData();
660
661 if (liquidData.Status)
662 {
663 handler->PSendSysMessage(LANG_LIQUID_STATUS, liquidData.Level, liquidData.DepthLevel, liquidData.Entry, liquidData.Flags, liquidData.Status);
664 }
665
666 if (object->GetTransport())
667 {
668 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());
669 }
670
671 return true;
672 }
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:216
@ LANG_MAP_POSITION
Definition Language.h:134
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:525
uint32 GetMapId() const
Definition Position.h:281
bool IsOutdoors() const
Definition Object.cpp:3137
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
1077 {
1078 if (!target)
1079 {
1080 target = PlayerIdentifier::FromTargetOrSelf(handler);
1081 }
1082
1083 if (!target || !target->IsConnected())
1084 {
1085 return false;
1086 }
1087
1088 // check online security
1089 if (handler->HasLowerSecurity(target->GetConnectedPlayer()))
1090 {
1091 return false;
1092 }
1093
1094 auto targetPlayer = target->GetConnectedPlayer();
1095
1096 Group* group = targetPlayer->GetGroup();
1097
1098 std::string nameLink = handler->playerLink(target->GetName());
1099
1100 if (!group)
1101 {
1102 handler->SendErrorMessage(LANG_NOT_IN_GROUP, nameLink);
1103 return false;
1104 }
1105
1106 Map* gmMap = handler->GetSession()->GetPlayer()->GetMap();
1107 bool toInstance = gmMap->Instanceable();
1108
1109 // we are in instance, and can summon only player in our group with us as lead
1110 if (toInstance && (
1111 !handler->GetSession()->GetPlayer()->GetGroup() || (group->GetLeaderGUID() != handler->GetSession()->GetPlayer()->GetGUID()) ||
1112 (handler->GetSession()->GetPlayer()->GetGroup()->GetLeaderGUID() != handler->GetSession()->GetPlayer()->GetGUID())))
1113 // the last check is a bit excessive, but let it be, just in case
1114 {
1116 return false;
1117 }
1118
1119 for (GroupReference* itr = group->GetFirstMember(); itr != nullptr; itr = itr->next())
1120 {
1121 Player* player = itr->GetSource();
1122
1123 if (!player || player == handler->GetSession()->GetPlayer() || !player->GetSession())
1124 {
1125 continue;
1126 }
1127
1128 // check online security
1129 if (handler->HasLowerSecurity(player))
1130 {
1131 return false;
1132 }
1133
1134 std::string plNameLink = handler->GetNameLink(player);
1135
1136 if (player->IsBeingTeleported())
1137 {
1138 handler->SendErrorMessage(LANG_IS_TELEPORTED, plNameLink);
1139 return false;
1140 }
1141
1142 if (toInstance)
1143 {
1144 Map* playerMap = player->GetMap();
1145
1146 if (playerMap->Instanceable() && playerMap->GetInstanceId() != gmMap->GetInstanceId())
1147 {
1148 // cannot summon from instance to instance
1149 handler->SendErrorMessage(LANG_CANNOT_SUMMON_TO_INST, plNameLink);
1150 return false;
1151 }
1152 }
1153
1154 handler->PSendSysMessage(LANG_SUMMONING, plNameLink, "");
1155 if (handler->needReportToTarget(player))
1156 {
1158 }
1159
1160 // stop flight if need
1161 if (player->IsInFlight())
1162 {
1163 player->GetMotionMaster()->MovementExpired();
1164 player->CleanupAfterTaxiFlight();
1165 }
1166 // save only in non-flight case
1167 else
1168 {
1169 player->SaveRecallPosition();
1170 }
1171
1172 // before GM
1173 float x, y, z;
1174 handler->GetSession()->GetPlayer()->GetClosePoint(x, y, z, player->GetObjectSize());
1175 player->TeleportTo(handler->GetSession()->GetPlayer()->GetMapId(), x, y, z, player->GetOrientation(), 0, handler->GetSession()->GetPlayer());
1176 }
1177
1178 return true;
1179 }
@ LANG_SUMMONING
Definition Language.h:141
@ LANG_NOT_IN_GROUP
Definition Language.h:150
@ LANG_IS_TELEPORTED
Definition Language.h:135
@ LANG_CANNOT_SUMMON_TO_INST
Definition Language.h:136
@ LANG_SUMMONED_BY
Definition Language.h:142
Definition Chat.h:37
virtual bool needReportToTarget(Player *chr) const
Definition Chat.cpp:864
Definition GroupReference.h:27
Definition Group.h:169
GroupReference * GetFirstMember()
Definition Group.h:243
ObjectGuid GetLeaderGUID() const
Definition Group.cpp:2306
bool Instanceable() const
Definition Map.h:294
uint32 GetInstanceId() const
Definition Map.h:266
bool IsBeingTeleported() const
Definition Player.h:2109
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:2766
float GetObjectSize() const
Definition Object.cpp:2838

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
1274 {
1275 ObjectGuid guid = handler->GetSession()->GetPlayer()->GetTarget();
1276
1277 if (!guid)
1278 {
1280 return false;
1281 }
1282
1283 handler->PSendSysMessage(LANG_OBJECT_GUID, guid.ToString());
1284 return true;
1285 }
@ LANG_OBJECT_GUID
Definition Language.h:243
@ LANG_NO_SELECTION
Definition Language.h:242
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
1288 {
1290
1291 if (cmd.empty())
1292 {
1294 }
1295
1296 return true;
1297 }

References Acore::ChatCommands::SendCommandHelpFor().

Referenced by GetCommands().

◆ HandleHideAreaCommand()

static bool misc_commandscript::HandleHideAreaCommand ( ChatHandler handler,
uint32  areaID 
)
inlinestatic
1717 {
1718 Player* playerTarget = handler->getSelectedPlayer();
1719 if (!playerTarget)
1720 {
1722 return false;
1723 }
1724
1725 AreaTableEntry const* area = sAreaTableStore.LookupEntry(areaID);
1726 if (!area)
1727 {
1729 return false;
1730 }
1731
1732 int32 offset = area->exploreFlag / 32;
1733 if (offset >= PLAYER_EXPLORED_ZONES_SIZE)
1734 {
1736 return false;
1737 }
1738
1739 uint32 val = uint32((1 << (area->exploreFlag % 32)));
1740 uint32 currFields = playerTarget->GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset);
1741 playerTarget->SetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset, uint32((currFields ^ val)));
1742
1744 return true;
1745 }
@ LANG_UNEXPLORE_AREA
Definition Language.h:623
@ LANG_NO_CHAR_SELECTED
Definition Language.h:149
@ LANG_BAD_VALUE
Definition Language.h:148
#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:160
uint32 GetUInt32Value(uint16 index) const
Definition Object.cpp:294
void SetUInt32Value(uint16 index, uint32 value)
Definition Unit.cpp:17323
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
1434 {
1435 if (!target)
1436 {
1437 target = PlayerIdentifier::FromTargetOrSelf(handler);
1438 }
1439
1440 if (!target || !target->IsConnected())
1441 {
1442 return false;
1443 }
1444
1445 auto targetPlayer = target->GetConnectedPlayer();
1446
1447 if (handler->GetSession() && target->GetGUID() == handler->GetSession()->GetPlayer()->GetGUID())
1448 {
1450 return false;
1451 }
1452
1453 // check online security
1454 if (handler->HasLowerSecurity(targetPlayer))
1455 {
1456 return false;
1457 }
1458
1459 std::string kickReasonStr = handler->GetAcoreString(LANG_NO_REASON);
1460 if (reason && !reason->empty())
1461 {
1462 kickReasonStr = std::string{ *reason };
1463 }
1464
1465 if (sWorld->getBoolConfig(CONFIG_SHOW_KICK_IN_WORLD))
1466 {
1467 handler->SendWorldText(LANG_COMMAND_KICKMESSAGE_WORLD, (handler->GetSession() ? handler->GetSession()->GetPlayerName() : "Server"), target->GetName(), kickReasonStr);
1468 }
1469 else
1470 {
1471 handler->PSendSysMessage(LANG_COMMAND_KICKMESSAGE, target->GetName());
1472 }
1473
1474 targetPlayer->GetSession()->KickPlayer("HandleKickPlayerCommand");
1475
1476 return true;
1477 }
@ LANG_COMMAND_KICKSELF
Definition Language.h:331
@ LANG_COMMAND_KICKMESSAGE_WORLD
Definition Language.h:1367
@ LANG_NO_REASON
Definition Language.h:815
@ LANG_COMMAND_KICKMESSAGE
Definition Language.h:332
@ CONFIG_SHOW_KICK_IN_WORLD
Definition WorldConfig.h:92
void SendWorldText(std::string_view str)
Definition Chat.cpp:131
const std::string & GetName() const
Definition ScriptObject.h:53
std::string const & GetPlayerName() const
Definition WorldSession.cpp:242

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
1558 {
1559 TeamId teamId;
1560
1561 if (!team)
1562 {
1563 teamId = TEAM_NEUTRAL;
1564 }
1565 else if (StringEqualI(team->substr(0, 6), "horde"))
1566 {
1567 teamId = TEAM_HORDE;
1568 }
1569 else if (StringEqualI(team->substr(0, 9), "alliance"))
1570 {
1571 teamId = TEAM_ALLIANCE;
1572 }
1573 else
1574 {
1575 return false;
1576 }
1577
1578 GraveyardStruct const* graveyard = sGraveyard->GetGraveyard(graveyardId);
1579
1580 if (!graveyard)
1581 {
1582 handler->SendErrorMessage(LANG_COMMAND_GRAVEYARDNOEXIST, graveyardId);
1583 return false;
1584 }
1585
1586 Player* player = handler->GetSession()->GetPlayer();
1587 uint32 zoneId = player->GetZoneId();
1588
1589 AreaTableEntry const* areaEntry = sAreaTableStore.LookupEntry(zoneId);
1590 if (!areaEntry || areaEntry->zone != 0)
1591 {
1592 handler->SendErrorMessage(LANG_COMMAND_GRAVEYARDWRONGZONE, graveyardId, zoneId);
1593 return false;
1594 }
1595
1596 if (sGraveyard->AddGraveyardLink(graveyardId, zoneId, teamId))
1597 {
1598 handler->PSendSysMessage(LANG_COMMAND_GRAVEYARDLINKED, graveyardId, zoneId);
1599 }
1600 else
1601 {
1602 handler->PSendSysMessage(LANG_COMMAND_GRAVEYARDALRLINKED, graveyardId, zoneId);
1603 }
1604
1605 return true;
1606 }
#define sGraveyard
Definition GameGraveyard.h:74
@ LANG_COMMAND_GRAVEYARDALRLINKED
Definition Language.h:488
@ LANG_COMMAND_GRAVEYARDNOEXIST
Definition Language.h:487
@ LANG_COMMAND_GRAVEYARDWRONGZONE
Definition Language.h:490
@ LANG_COMMAND_GRAVEYARDLINKED
Definition Language.h:489
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
3072 {
3073 Player* player = handler->GetSession()->GetPlayer();
3074 handler->GetSession()->SendShowMailBox(player->GetGUID());
3075 return true;
3076 }
void SendShowMailBox(ObjectGuid guid)
Definition NPCHandler.cpp:74

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

Referenced by GetCommands().

◆ HandleMaxSkillCommand()

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

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

Referenced by GetCommands().

◆ HandleMovegensCommand()

static bool misc_commandscript::HandleMovegensCommand ( ChatHandler handler)
inlinestatic
2710 {
2711 Unit* unit = handler->getSelectedUnit();
2712 if (!unit)
2713 {
2715 return false;
2716 }
2717
2718 handler->PSendSysMessage(LANG_MOVEGENS_LIST, (unit->IsPlayer() ? "Player" : "Creature"), unit->GetGUID().ToString());
2719
2720 MotionMaster* motionMaster = unit->GetMotionMaster();
2721 float x, y, z;
2722 motionMaster->GetDestination(x, y, z);
2723
2724 for (uint8 i = 0; i < MAX_MOTION_SLOT; ++i)
2725 {
2726 MovementGenerator* movementGenerator = motionMaster->GetMotionSlot(i);
2727 if (!movementGenerator)
2728 {
2729 handler->SendSysMessage("Empty");
2730 continue;
2731 }
2732
2733 switch (movementGenerator->GetMovementGeneratorType())
2734 {
2735 case IDLE_MOTION_TYPE:
2737 break;
2738 case RANDOM_MOTION_TYPE:
2740 break;
2743 break;
2746 break;
2749 break;
2750 case CHASE_MOTION_TYPE:
2751 {
2752 Unit* target = nullptr;
2753 if (unit->IsPlayer())
2754 {
2755 target = static_cast<ChaseMovementGenerator<Player> const*>(movementGenerator)->GetTarget();
2756 }
2757 else
2758 {
2759 target = static_cast<ChaseMovementGenerator<Creature> const*>(movementGenerator)->GetTarget();
2760 }
2761
2762 if (!target)
2763 {
2765 }
2766 else if (target->IsPlayer())
2767 {
2768 handler->PSendSysMessage(LANG_MOVEGENS_CHASE_PLAYER, target->GetName(), target->GetGUID().ToString());
2769 }
2770 else
2771 {
2772 handler->PSendSysMessage(LANG_MOVEGENS_CHASE_CREATURE, target->GetName(), target->GetGUID().ToString());
2773 }
2774 break;
2775 }
2776 case FOLLOW_MOTION_TYPE:
2777 {
2778 Unit* target = nullptr;
2779 if (unit->IsPlayer())
2780 {
2781 target = static_cast<FollowMovementGenerator<Player> const*>(movementGenerator)->GetTarget();
2782 }
2783 else
2784 {
2785 target = static_cast<FollowMovementGenerator<Creature> const*>(movementGenerator)->GetTarget();
2786 }
2787
2788 if (!target)
2789 {
2791 }
2792 else if (target->IsPlayer())
2793 {
2794 handler->PSendSysMessage(LANG_MOVEGENS_FOLLOW_PLAYER, target->GetName(), target->GetGUID().ToString());
2795 }
2796 else
2797 {
2798 handler->PSendSysMessage(LANG_MOVEGENS_FOLLOW_CREATURE, target->GetName(), target->GetGUID().ToString());
2799 }
2800 break;
2801 }
2802 case HOME_MOTION_TYPE:
2803 {
2804 if (unit->IsCreature())
2805 {
2807 }
2808 else
2809 {
2811 }
2812 break;
2813 }
2814 case FLIGHT_MOTION_TYPE:
2816 break;
2817 case POINT_MOTION_TYPE:
2818 {
2819 handler->PSendSysMessage(LANG_MOVEGENS_POINT, x, y, z);
2820 break;
2821 }
2824 break;
2827 break;
2828 case EFFECT_MOTION_TYPE:
2830 break;
2831 default:
2832 handler->PSendSysMessage(LANG_MOVEGENS_UNKNOWN, movementGenerator->GetMovementGeneratorType());
2833 break;
2834 }
2835 }
2836 return true;
2837 }
std::uint8_t uint8
Definition Define.h:109
@ LANG_MOVEGENS_FOLLOW_PLAYER
Definition Language.h:937
@ LANG_MOVEGENS_EFFECT
Definition Language.h:940
@ LANG_MOVEGENS_UNKNOWN
Definition Language.h:590
@ LANG_MOVEGENS_CHASE_PLAYER
Definition Language.h:584
@ LANG_MOVEGENS_IDLE
Definition Language.h:579
@ LANG_MOVEGENS_CONFUSED
Definition Language.h:583
@ LANG_MOVEGENS_FOLLOW_CREATURE
Definition Language.h:938
@ LANG_MOVEGENS_FOLLOW_NULL
Definition Language.h:939
@ LANG_MOVEGENS_DISTRACT
Definition Language.h:658
@ LANG_MOVEGENS_CHASE_CREATURE
Definition Language.h:585
@ LANG_MOVEGENS_RANDOM
Definition Language.h:580
@ LANG_MOVEGENS_WAYPOINT
Definition Language.h:581
@ LANG_MOVEGENS_POINT
Definition Language.h:656
@ LANG_MOVEGENS_ANIMAL_RANDOM
Definition Language.h:582
@ LANG_MOVEGENS_CHASE_NULL
Definition Language.h:586
@ LANG_MOVEGENS_FLIGHT
Definition Language.h:589
@ LANG_MOVEGENS_HOME_CREATURE
Definition Language.h:587
@ LANG_MOVEGENS_HOME_PLAYER
Definition Language.h:588
@ LANG_MOVEGENS_LIST
Definition Language.h:578
@ LANG_MOVEGENS_FEAR
Definition Language.h:657
@ 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
2486 {
2487 std::string muteReasonStr{ muteReason };
2488
2489 if (notSpeakTime.empty())
2490 {
2491 return false;
2492 }
2493
2494 if (Acore::StringTo<int32>(notSpeakTime).value_or(0) < 0)
2495 {
2497 return false;
2498 }
2499
2500 if (muteReason.empty())
2501 {
2502 muteReasonStr = handler->GetAcoreString(LANG_NO_REASON);
2503 }
2504
2505 if (!player)
2506 {
2507 player = PlayerIdentifier::FromTarget(handler);
2508 }
2509
2510 if (!player)
2511 {
2513 return false;
2514 }
2515
2516 Player* target = player->GetConnectedPlayer();
2517 uint32 accountId = target ? target->GetSession()->GetAccountId() : sCharacterCache->GetCharacterAccountIdByGuid(player->GetGUID());
2518
2519 // find only player from same account if any
2520 if (!target)
2521 if (WorldSession* session = sWorldSessionMgr->FindSession(accountId))
2522 {
2523 target = session->GetPlayer();
2524 }
2525
2526 // must have strong lesser security level
2527 if (handler->HasLowerSecurity(target, player->GetGUID(), true))
2528 {
2529 return false;
2530 }
2531
2533 int32 muteDuration = TimeStringToSecs(notSpeakTime);
2534 if (muteDuration <= 0)
2535 {
2536 muteDuration = Acore::StringTo<int32>(notSpeakTime).value_or(0);
2537 }
2538
2539 if (muteDuration <= 0)
2540 {
2542 return false;
2543 }
2544
2545 std::string muteBy = "";
2546 if (handler->GetSession())
2547 {
2548 muteBy = handler->GetSession()->GetPlayerName();
2549 }
2550 else
2551 {
2552 muteBy = handler->GetAcoreString(LANG_CONSOLE);
2553 }
2554
2555 if (target)
2556 {
2557 // Target is online, mute will be in effect right away.
2558 int64 muteTime = GameTime::GetGameTime().count() + muteDuration;
2559 target->GetSession()->m_muteTime = muteTime;
2560 stmt->SetData(0, muteTime);
2561 std::string nameLink = handler->playerLink(player->GetName());
2562
2563 if (sWorld->getBoolConfig(CONFIG_SHOW_MUTE_IN_WORLD))
2564 {
2565 handler->SendWorldText(LANG_COMMAND_MUTEMESSAGE_WORLD, muteBy, nameLink, secsToTimeString(muteDuration, true), muteReasonStr);
2566 }
2567
2568 ChatHandler(target->GetSession()).PSendSysMessage(LANG_YOUR_CHAT_DISABLED, secsToTimeString(muteDuration, true), muteBy, muteReasonStr);
2569 }
2570 else
2571 {
2572 // Target is offline, mute will be in effect starting from the next login.
2573 stmt->SetData(0, -int32(muteDuration));
2574 }
2575
2576 stmt->SetData(1, muteReasonStr);
2577 stmt->SetData(2, muteBy);
2578 stmt->SetData(3, accountId);
2579 LoginDatabase.Execute(stmt);
2580
2581 stmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_ACCOUNT_MUTE);
2582 stmt->SetData(0, accountId);
2583 stmt->SetData(1, muteDuration / MINUTE);
2584 stmt->SetData(2, muteBy);
2585 stmt->SetData(3, muteReasonStr);
2586 LoginDatabase.Execute(stmt);
2587
2588 std::string nameLink = handler->playerLink(player->GetName());
2589
2590 if (sWorld->getBoolConfig(CONFIG_SHOW_MUTE_IN_WORLD) && !target)
2591 {
2592 handler->SendWorldText(LANG_COMMAND_MUTEMESSAGE_WORLD, muteBy, nameLink, secsToTimeString(muteDuration, true), muteReasonStr);
2593 }
2594 else
2595 {
2596 // pussywizard: notify all online GMs
2597 std::shared_lock<std::shared_mutex> lock(*HashMapHolder<Player>::GetLock());
2599 for (HashMapHolder<Player>::MapType::const_iterator itr = m.begin(); itr != m.end(); ++itr)
2600 if (itr->second->GetSession()->GetSecurity())
2601 ChatHandler(itr->second->GetSession()).PSendSysMessage(target ? LANG_YOU_DISABLE_CHAT : LANG_COMMAND_DISABLE_CHAT_DELAYED,
2602 (handler->GetSession() ? handler->GetSession()->GetPlayerName() : handler->GetAcoreString(LANG_CONSOLE)), nameLink, secsToTimeString(muteDuration, true), muteReasonStr);
2603 }
2604
2605 return true;
2606 }
#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:333
@ LANG_YOUR_CHAT_DISABLED
Definition Language.h:346
@ LANG_COMMAND_MUTEMESSAGE_WORLD
Definition Language.h:1370
@ LANG_YOU_DISABLE_CHAT
Definition Language.h:347
@ LANG_CONSOLE
Definition Language.h:1098
@ 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:93
#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:443
time_t m_muteTime
Definition WorldSession.h:575
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
2669 {
2670 if (!Utf8ToUpperOnlyLatin(accountName))
2671 {
2672 handler->SendErrorMessage(LANG_ACCOUNT_NOT_EXIST, accountName);
2673 return false;
2674 }
2675
2676 uint32 accountId = AccountMgr::GetId(accountName);
2677 if (!accountId)
2678 {
2679 handler->PSendSysMessage(LANG_ACCOUNT_NOT_EXIST, accountName);
2680 return false;
2681 }
2682
2683 return HandleMuteInfoHelper(handler, accountId, accountName.c_str());
2684 }
@ LANG_ACCOUNT_NOT_EXIST
Definition Language.h:448
bool Utf8ToUpperOnlyLatin(std::string &utf8String)
Definition Util.cpp:532
static bool HandleMuteInfoHelper(ChatHandler *handler, uint32 accountId, char const *accountName)
Definition cs_misc.cpp:2687
uint32 GetId(std::string const &username)
Definition AccountMgr.cpp:236

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
2688 {
2690 stmt->SetData(0, accountId);
2691 PreparedQueryResult result = LoginDatabase.Query(stmt);
2692
2693 if (!result)
2694 {
2695 handler->PSendSysMessage(LANG_COMMAND_MUTEHISTORY_EMPTY, accountName);
2696 return true;
2697 }
2698
2699 handler->PSendSysMessage(LANG_COMMAND_MUTEHISTORY, accountName);
2700 do
2701 {
2702 Field* fields = result->Fetch();
2703 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>());
2704 } while (result->NextRow());
2705
2706 return true;
2707 }
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:1124
@ LANG_COMMAND_MUTEHISTORY_EMPTY
Definition Language.h:1123
@ LANG_COMMAND_MUTEHISTORY
Definition Language.h:1122
@ 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
1609 {
1610 TeamId teamId;
1611
1612 if (!team)
1613 {
1614 teamId = TEAM_NEUTRAL;
1615 }
1616 else if (StringEqualI(team->substr(0, 6), "horde"))
1617 {
1618 teamId = TEAM_HORDE;
1619 }
1620 else if (StringEqualI(team->substr(0, 9), "alliance"))
1621 {
1622 teamId = TEAM_ALLIANCE;
1623 }
1624 else
1625 {
1626 return false;
1627 }
1628
1629 Player* player = handler->GetSession()->GetPlayer();
1630 uint32 zone_id = player->GetZoneId();
1631
1632 GraveyardStruct const* graveyard = sGraveyard->GetClosestGraveyard(player, teamId);
1633
1634 if (graveyard)
1635 {
1636 uint32 graveyardId = graveyard->ID;
1637
1638 GraveyardData const* data = sGraveyard->FindGraveyardData(graveyardId, zone_id);
1639 if (!data)
1640 {
1641 handler->SendErrorMessage(LANG_COMMAND_GRAVEYARDERROR, graveyardId);
1642 return false;
1643 }
1644
1645 std::string team_name = handler->GetAcoreString(LANG_COMMAND_GRAVEYARD_NOTEAM);
1646
1647 if (data->teamId == TEAM_NEUTRAL)
1648 {
1649 team_name = handler->GetAcoreString(LANG_COMMAND_GRAVEYARD_ANY);
1650 }
1651 else if (data->teamId == TEAM_HORDE)
1652 {
1653 team_name = handler->GetAcoreString(LANG_COMMAND_GRAVEYARD_HORDE);
1654 }
1655 else if (data->teamId == TEAM_ALLIANCE)
1656 {
1657 team_name = handler->GetAcoreString(LANG_COMMAND_GRAVEYARD_ALLIANCE);
1658 }
1659
1660 handler->PSendSysMessage(LANG_COMMAND_GRAVEYARDNEAREST, graveyardId, team_name, zone_id);
1661 }
1662 else
1663 {
1664 std::string team_name;
1665
1666 if (teamId == TEAM_NEUTRAL)
1667 {
1668 team_name = handler->GetAcoreString(LANG_COMMAND_GRAVEYARD_ANY);
1669 }
1670 else if (teamId == TEAM_HORDE)
1671 {
1672 team_name = handler->GetAcoreString(LANG_COMMAND_GRAVEYARD_HORDE);
1673 }
1674 else if (teamId == TEAM_ALLIANCE)
1675 {
1676 team_name = handler->GetAcoreString(LANG_COMMAND_GRAVEYARD_ALLIANCE);
1677 }
1678
1679 handler->PSendSysMessage(LANG_COMMAND_ZONENOGRAFACTION, zone_id, team_name);
1680 }
1681
1682 return true;
1683 }
@ LANG_COMMAND_GRAVEYARD_ALLIANCE
Definition Language.h:495
@ LANG_COMMAND_ZONENOGRAFACTION
Definition Language.h:499
@ LANG_COMMAND_GRAVEYARDNEAREST
Definition Language.h:497
@ LANG_COMMAND_GRAVEYARD_NOTEAM
Definition Language.h:493
@ LANG_COMMAND_GRAVEYARDERROR
Definition Language.h:492
@ LANG_COMMAND_GRAVEYARD_HORDE
Definition Language.h:496
@ LANG_COMMAND_GRAVEYARD_ANY
Definition Language.h:494
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
3092 {
3093 if (GameObject* go = handler->GetPlayer()->FindNearestGameObjectOfType(GAMEOBJECT_TYPE_DOOR, range ? *range : 5.0f))
3094 {
3095 go->SetGoState(GO_STATE_ACTIVE);
3096 handler->PSendSysMessage(LANG_CMD_DOOR_OPENED, go->GetName(), go->GetEntry());
3097 return true;
3098 }
3099
3100 handler->SendErrorMessage(LANG_CMD_NO_DOOR_FOUND, range ? *range : 5.0f);
3101 return false;
3102 }
@ GO_STATE_ACTIVE
Definition GameObjectData.h:708
@ LANG_CMD_NO_DOOR_FOUND
Definition Language.h:1160
@ LANG_CMD_DOOR_OPENED
Definition Language.h:1161
@ GAMEOBJECT_TYPE_DOOR
Definition SharedDefines.h:1566
Player * GetPlayer() const
Definition Chat.cpp:36
Definition GameObject.h:120
GameObject * FindNearestGameObjectOfType(GameobjectTypes type, float range) const
Definition Object.cpp:2517

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
3146 {
3147 if (!target)
3148 target = PlayerIdentifier::FromTargetOrSelf(handler);
3149
3150 if (!target || !target->IsConnected())
3151 {
3153 return false;
3154 }
3155
3156 Player* playerTarget = target->GetConnectedPlayer();
3157 WorldSession* session = playerTarget->GetSession();
3158
3159 if (!session)
3160 return false;
3161
3162 if (enableArg)
3163 {
3164 if (*enableArg)
3165 {
3166 session->SetPacketLogging(true);
3167 handler->PSendSysMessage("Packet logging enabled for {}.", playerTarget->GetName());
3168 return true;
3169 }
3170 else
3171 {
3172 session->SetPacketLogging(false);
3173 handler->PSendSysMessage("Packet logging disabled for {}.", playerTarget->GetName());
3174 return true;
3175 }
3176 }
3177
3179 return false;
3180 }
void SetPacketLogging(bool state)
Definition WorldSession.cpp:1513

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

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
2474 {
2475 Player* player = handler->GetSession()->GetPlayer();
2476
2477 Acore::RespawnDo u_do;
2478 Acore::WorldObjectWorker<Acore::RespawnDo> worker(player, u_do);
2479 Cell::VisitObjects(player, worker, player->GetGridActivationRange());
2480
2481 return true;
2482 }
Definition GridNotifiers.h:636
float GetGridActivationRange() const
Definition Object.cpp:1679
Definition GridNotifiers.h:251
static void VisitObjects(WorldObject const *obj, T &visitor, float radius)
Definition CellImpl.h:165

References WorldObject::GetGridActivationRange(), WorldSession::GetPlayer(), ChatHandler::GetSession(), and Cell::VisitObjects().

Referenced by GetCommands().

◆ HandleRespawnCommand()

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

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

Referenced by GetCommands().

◆ HandleReviveCommand()

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

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

Referenced by GetCommands().

◆ HandleSaveAllCommand()

static bool misc_commandscript::HandleSaveAllCommand ( ChatHandler handler)
inlinestatic
1426 {
1429 return true;
1430 }
@ 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
1395 {
1396 Player* player = handler->GetSession()->GetPlayer();
1397
1398 // save GM account without delay and output message
1399 if (handler->GetSession()->GetSecurity() >= SEC_GAMEMASTER)
1400 {
1401 if (Player* target = handler->getSelectedPlayer())
1402 {
1403 target->SaveToDB(false, false);
1404 }
1405 else
1406 {
1407 player->SaveToDB(false, false);
1408 }
1409
1411 return true;
1412 }
1413
1414 // save if the player has last been saved over 20 seconds ago
1415 uint32 saveInterval = sWorld->getIntConfig(CONFIG_INTERVAL_SAVE);
1416 if (saveInterval == 0 || (saveInterval > 20 * IN_MILLISECONDS && player->GetSaveTimer() <= saveInterval - 20 * IN_MILLISECONDS))
1417 {
1418 player->SaveToDB(false, false);
1419 }
1420
1421 return true;
1422 }
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:7119
uint32 GetSaveTimer() const
Definition Player.h:2392

References CONFIG_INTERVAL_SAVE, WorldSession::GetPlayer(), Player::GetSaveTimer(), WorldSession::GetSecurity(), ChatHandler::getSelectedPlayer(), ChatHandler::GetSession(), IN_MILLISECONDS, LANG_PLAYER_SAVED, Player::SaveToDB(), SEC_GAMEMASTER, 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
1949 {
1950 uint32 skillID = uint32(skillId);
1951
1952 if (skillID <= 0)
1953 {
1954 handler->SendErrorMessage(LANG_INVALID_SKILL_ID, skillID);
1955 return false;
1956 }
1957
1958 Player* target = handler->getSelectedPlayer();
1959 if (!target)
1960 {
1962 return false;
1963 }
1964
1965 SkillLineEntry const* skillLine = sSkillLineStore.LookupEntry(skillID);
1966 if (!skillLine)
1967 {
1968 handler->SendErrorMessage(LANG_INVALID_SKILL_ID, uint32(skillID));
1969 return false;
1970 }
1971
1972 bool targetHasSkill = target->GetSkillValue(skillID);
1973
1974 // If our target does not yet have the skill they are trying to add to them, the chosen level also becomes
1975 // the max level of the new profession.
1976 uint16 max = maxPureSkill ? *maxPureSkill : targetHasSkill ? target->GetPureMaxSkillValue(skillID) : uint16(level);
1977
1978 if (level <= 0 || level > max || max <= 0)
1979 {
1980 return false;
1981 }
1982
1983 // If the player has the skill, we get the current skill step. If they don't have the skill, we
1984 // add the skill to the player's book with step 1 (which is the first rank, in most cases something
1985 // like 'Apprentice <skill>'.
1986 target->SetSkill(skillID, targetHasSkill ? target->GetSkillStep(skillID) : 1, level, max);
1987 handler->PSendSysMessage(LANG_SET_SKILL, skillID, skillLine->name[handler->GetSessionDbcLocale()], handler->GetNameLink(target), level, max);
1988 return true;
1989 }
DBCStorage< SkillLineEntry > sSkillLineStore(SkillLinefmt)
@ LANG_INVALID_SKILL_ID
Definition Language.h:531
@ LANG_SET_SKILL
Definition Language.h:528
uint16 GetSkillValue(uint32 skill) const
Definition Player.cpp:5438
uint16 GetSkillStep(uint16 skill) const
Definition Player.cpp:5426
uint16 GetPureMaxSkillValue(uint32 skill) const
Definition Player.cpp:5473
void SetSkill(uint16 id, uint16 step, uint16 currVal, uint16 maxVal)
Definition Player.cpp:5314
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
1686 {
1687 Player* playerTarget = handler->getSelectedPlayer();
1688 if (!playerTarget)
1689 {
1691 return false;
1692 }
1693
1694 AreaTableEntry const* area = sAreaTableStore.LookupEntry(areaID);
1695 if (!area)
1696 {
1698 return false;
1699 }
1700
1701 int32 offset = area->exploreFlag / 32;
1702 if (offset >= PLAYER_EXPLORED_ZONES_SIZE)
1703 {
1705 return false;
1706 }
1707
1708 uint32 val = uint32((1 << (area->exploreFlag % 32)));
1709 uint32 currFields = playerTarget->GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset);
1710 playerTarget->SetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset, uint32((currFields | val)));
1711
1713 return true;
1714 }
@ LANG_EXPLORE_AREA
Definition Language.h:622

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
205 {
206 auto tokens = args;
207
208 if (args.empty() || !tokens.size())
209 {
210 handler->SetSentErrorMessage(true);
211 return false;
212 }
213
214 auto tokensItr = tokens.begin();
215
216 std::vector<BattlegroundTypeId> allowedArenas;
217 std::string_view arenasStr = *(tokensItr++);
218
219 auto arenaTokens = Acore::Tokenize(arenasStr, ',', false);
220 for (auto const& arenaName : arenaTokens)
221 {
222 if (arenaName == "all")
223 {
224 if (arenaTokens.size() > 1)
225 {
226 handler->SendErrorMessage("Invalid [arena] specified.");
227 return false;
228 }
229
230 allowedArenas.emplace_back(BATTLEGROUND_NA);
231 allowedArenas.emplace_back(BATTLEGROUND_BE);
232 allowedArenas.emplace_back(BATTLEGROUND_RL);
233 allowedArenas.emplace_back(BATTLEGROUND_DS);
234 allowedArenas.emplace_back(BATTLEGROUND_RV);
235 }
236 else if (arenaName == "NA")
237 {
238 allowedArenas.emplace_back(BATTLEGROUND_NA);
239 }
240 else if (arenaName == "BE")
241 {
242 allowedArenas.emplace_back(BATTLEGROUND_BE);
243 }
244 else if (arenaName == "RL")
245 {
246 allowedArenas.emplace_back(BATTLEGROUND_RL);
247 }
248 else if (arenaName == "DS")
249 {
250 allowedArenas.emplace_back(BATTLEGROUND_DS);
251 }
252 else if (arenaName == "RV")
253 {
254 allowedArenas.emplace_back(BATTLEGROUND_RV);
255 }
256 else
257 {
258 handler->SendErrorMessage("Invalid [arena] specified.");
259 return false;
260 }
261 }
262
263 ASSERT(!allowedArenas.empty());
264 BattlegroundTypeId randomizedArenaBgTypeId = Acore::Containers::SelectRandomContainerElement(allowedArenas);
265
266 uint8 count = 0;
267 if (tokensItr != tokens.end())
268 {
269 std::string_view mode = *(tokensItr++);
270
271 if (mode == "1v1")
272 {
273 count = 2;
274 }
275 else if (mode == "2v2")
276 {
277 count = 4;
278 }
279 else if (mode == "3v3")
280 {
281 count = 6;
282 }
283 else if (mode == "5v5")
284 {
285 count = 10;
286 }
287 }
288
289 if (!count)
290 {
291 handler->SendErrorMessage("Invalid bracket. Can be 1v1, 2v2, 3v3, 5v5");
292 return false;
293 }
294
295 if (tokens.size() != uint16(count + 2))
296 {
297 handler->SendErrorMessage("Invalid number of nicknames for this bracket.");
298 return false;
299 }
300
301 uint8 hcnt = count / 2;
302 uint8 error = 0;
303 std::string last_name;
304 Player* plr = nullptr;
305 std::array<Player*, 10> players = {};
306 uint8 cnt = 0;
307
308 for (; tokensItr != tokens.end(); ++tokensItr)
309 {
310 last_name = std::string(*tokensItr);
311 plr = ObjectAccessor::FindPlayerByName(last_name, false);
312
313 if (!plr)
314 {
315 error = 1;
316 break;
317 }
318
319 if (!plr->IsInWorld() || !plr->FindMap() || plr->IsBeingTeleported())
320 {
321 error = 2;
322 break;
323 }
324
325 if (plr->GetMap()->GetEntry()->Instanceable())
326 {
327 error = 3;
328 break;
329 }
330
331 if (plr->IsUsingLfg())
332 {
333 error = 4;
334 break;
335 }
336
337 if (plr->InBattlegroundQueue())
338 {
339 error = 5;
340 break;
341 }
342
343 if (plr->IsInFlight())
344 {
345 error = 10;
346 break;
347 }
348
349 if (!plr->IsAlive())
350 {
351 error = 11;
352 break;
353 }
354
355 const Group* g = plr->GetGroup();
356
357 if (hcnt > 1)
358 {
359 if (!g)
360 {
361 error = 6;
362 break;
363 }
364
365 if (g->isRaidGroup() || g->isBGGroup() || g->isBFGroup() || g->isLFGGroup())
366 {
367 error = 7;
368 break;
369 }
370
371 if (g->GetMembersCount() != hcnt)
372 {
373 error = 8;
374 break;
375 }
376
377 uint8 sti = (cnt < hcnt ? 0 : hcnt);
378 if (sti != cnt && players[sti]->GetGroup() != plr->GetGroup())
379 {
380 error = 9;
381 last_name += " and " + players[sti]->GetName();
382 break;
383 }
384 }
385 else // 1v1
386 {
387 if (g)
388 {
389 error = 12;
390 break;
391 }
392 }
393
394 players[cnt++] = plr;
395 }
396
397 for (uint8 i = 0; i < cnt && !error; ++i)
398 {
399 for (uint8 j = i + 1; j < cnt; ++j)
400 {
401 if (players[i]->GetGUID() == players[j]->GetGUID())
402 {
403 last_name = players[i]->GetName();
404 error = 13;
405 break;
406 }
407 }
408 }
409
410 switch (error)
411 {
412 case 1:
413 handler->PSendSysMessage("Player {} not found.", last_name);
414 break;
415 case 2:
416 handler->PSendSysMessage("Player {} is being teleported.", last_name);
417 break;
418 case 3:
419 handler->PSendSysMessage("Player {} is in instance/battleground/arena.", last_name);
420 break;
421 case 4:
422 handler->PSendSysMessage("Player {} is in LFG system.", last_name);
423 break;
424 case 5:
425 handler->PSendSysMessage("Player {} is queued for battleground/arena.", last_name);
426 break;
427 case 6:
428 handler->PSendSysMessage("Player {} is not in group.", last_name);
429 break;
430 case 7:
431 handler->PSendSysMessage("Player {} is not in normal group.", last_name);
432 break;
433 case 8:
434 handler->PSendSysMessage("Group of player {} has invalid member count.", last_name);
435 break;
436 case 9:
437 handler->PSendSysMessage("Players {} are not in the same group.", last_name);
438 break;
439 case 10:
440 handler->PSendSysMessage("Player {} is in flight.", last_name);
441 break;
442 case 11:
443 handler->PSendSysMessage("Player {} is dead.", last_name);
444 break;
445 case 12:
446 handler->PSendSysMessage("Player {} is in a group.", last_name);
447 break;
448 case 13:
449 handler->PSendSysMessage("Player {} occurs more than once.", last_name);
450 break;
451 }
452
453 if (error)
454 {
455 handler->SetSentErrorMessage(true);
456 return false;
457 }
458
459 Battleground* bgt = sBattlegroundMgr->GetBattlegroundTemplate(BATTLEGROUND_AA);
460 if (!bgt)
461 {
462 handler->SendErrorMessage("Couldn't create arena map!");
463 return false;
464 }
465
466 Battleground* bg = sBattlegroundMgr->CreateNewBattleground(randomizedArenaBgTypeId, GetBattlegroundBracketById(bgt->GetMapId(), bgt->GetBracketId()), ArenaType(hcnt >= 2 ? hcnt : 2), false);
467 if (!bg)
468 {
469 handler->SendErrorMessage("Couldn't create arena map!");
470 return false;
471 }
472
473 bg->StartBattleground();
474
475 BattlegroundTypeId bgTypeId = bg->GetBgTypeID();
476
477 TeamId teamId1 = Player::TeamIdForRace(players[0]->getRace());
478 TeamId teamId2 = (teamId1 == TEAM_ALLIANCE ? TEAM_HORDE : TEAM_ALLIANCE);
479
480 for (uint8 i = 0; i < cnt; ++i)
481 {
482 Player* player = players[i];
483
484 TeamId teamId = (i < hcnt ? teamId1 : teamId2);
485 player->SetEntryPoint();
486
487 uint32 queueSlot = 0;
488 WorldPacket data;
489 sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_IN_PROGRESS, 0, bg->GetStartTime(), bg->GetArenaType(), teamId);
490 player->SendDirectMessage(&data);
491
492 // Remove from LFG queues
493 sLFGMgr->LeaveAllLfgQueues(player->GetGUID(), false);
494
495 player->SetBattlegroundId(bg->GetInstanceID(), bgTypeId, queueSlot, true, false, teamId);
496 sBattlegroundMgr->SendToBattleground(player, bg->GetInstanceID(), bgTypeId);
497 }
498
499 handler->PSendSysMessage("Success! Players are now being teleported to the arena.");
500 return true;
501 }
#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:3737
@ BATTLEGROUND_AA
Definition SharedDefines.h:3744
@ BATTLEGROUND_BE
Definition SharedDefines.h:3743
@ BATTLEGROUND_RV
Definition SharedDefines.h:3749
@ BATTLEGROUND_NA
Definition SharedDefines.h:3742
@ BATTLEGROUND_DS
Definition SharedDefines.h:3748
@ BATTLEGROUND_RL
Definition SharedDefines.h:3746
Definition Battleground.h:294
uint32 GetMapId() const
Definition Battleground.h:436
uint8 GetArenaType() const
Definition Battleground.h:348
void StartBattleground()
Definition Battleground.cpp:1173
uint32 GetInstanceID() const
Definition Battleground.h:322
uint32 GetStartTime() const
Definition Battleground.h:325
BattlegroundBracketId GetBracketId() const
Definition Battleground.h:321
BattlegroundTypeId GetBgTypeID(bool GetRandom=false) const
Definition Battleground.h:320
void SetSentErrorMessage(bool val)
Definition Chat.h:238
bool isLFGGroup(bool restricted=false) const
Definition Group.cpp:2275
bool isBGGroup() const
Definition Group.cpp:2286
uint32 GetMembersCount() const
Definition Group.h:245
bool isBFGroup() const
Definition Group.cpp:2291
bool isRaidGroup() const
Definition Group.cpp:2281
MapEntry const * GetEntry() const
Definition Map.h:171
bool IsInWorld() const
Definition Object.h:109
static TeamId TeamIdForRace(uint8 race)
Definition Player.cpp:5814
void SendDirectMessage(WorldPacket const *data) const
Definition Player.cpp:5680
bool InBattlegroundQueue(bool ignoreArena=false) const
Definition Player.cpp:12162
bool IsUsingLfg()
Definition Player.cpp:13079
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
3079 {
3080 if (!id)
3081 {
3083 return false;
3084 }
3085
3086 std::string str = sObjectMgr->GetAcoreString(id, locale ? static_cast<LocaleConstant>(*locale) : DEFAULT_LOCALE);
3087 handler->SendSysMessage(str);
3088 return true;
3089 }
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
955 {
956 if (!target)
957 {
958 target = PlayerIdentifier::FromTarget(handler);
959 }
960
961 if (!target)
962 {
963 return false;
964 }
965
966 Player* _player = handler->GetSession()->GetPlayer();
967 if (target->GetGUID() == _player->GetGUID())
968 {
970 return false;
971 }
972
973 std::string nameLink = handler->playerLink(target->GetName());
974
975 if (target->IsConnected())
976 {
977 auto targetPlayer = target->GetConnectedPlayer();
978
979 // check online security
980 if (handler->HasLowerSecurity(targetPlayer))
981 {
982 return false;
983 }
984
985 if (targetPlayer->IsBeingTeleported())
986 {
987 handler->SendErrorMessage(LANG_IS_TELEPORTED, nameLink);
988 return false;
989 }
990
991 Map* map = handler->GetSession()->GetPlayer()->GetMap();
992
993 if (map->IsBattlegroundOrArena())
994 {
995 handler->SendErrorMessage("Can't summon to a battleground!");
996 return false;
997 }
998 else if (map->IsDungeon())
999 {
1000 // Allow GM to summon players or only other GM accounts inside instances.
1001 if (!sWorld->getBoolConfig(CONFIG_INSTANCE_GMSUMMON_PLAYER))
1002 {
1003 // pussywizard: prevent unbinding normal player's perm bind by just summoning him >_>
1004 if (!targetPlayer->GetSession()->GetSecurity())
1005 {
1006 handler->SendErrorMessage("Only GMs can be summoned to an instance!");
1007 return false;
1008 }
1009 }
1010
1011 Map* destMap = targetPlayer->GetMap();
1012
1013 if (destMap->Instanceable() && destMap->GetInstanceId() != map->GetInstanceId())
1014 {
1015 sInstanceSaveMgr->PlayerUnbindInstance(target->GetGUID(), map->GetInstanceId(), targetPlayer->GetDungeonDifficulty(), true, targetPlayer);
1016 }
1017
1018 // we are in an instance, and can only summon players in our group with us as leader
1019 if (!handler->GetSession()->GetPlayer()->GetGroup() || !targetPlayer->GetGroup() ||
1020 (targetPlayer->GetGroup()->GetLeaderGUID() != handler->GetSession()->GetPlayer()->GetGUID()) ||
1021 (handler->GetSession()->GetPlayer()->GetGroup()->GetLeaderGUID() != handler->GetSession()->GetPlayer()->GetGUID()))
1022 // the last check is a bit excessive, but let it be, just in case
1023 {
1024 handler->SendErrorMessage(LANG_CANNOT_SUMMON_TO_INST, nameLink);
1025 return false;
1026 }
1027 }
1028
1029 handler->PSendSysMessage(LANG_SUMMONING, nameLink, "");
1030 if (handler->needReportToTarget(targetPlayer))
1031 {
1032 ChatHandler(targetPlayer->GetSession()).PSendSysMessage(LANG_SUMMONED_BY, handler->playerLink(_player->GetName()));
1033 }
1034
1035 // stop flight if need
1036 if (targetPlayer->IsInFlight())
1037 {
1038 targetPlayer->GetMotionMaster()->MovementExpired();
1039 targetPlayer->CleanupAfterTaxiFlight();
1040 }
1041 // save only in non-flight case
1042 else
1043 {
1044 targetPlayer->SaveRecallPosition();
1045 }
1046
1047 // before GM
1048 float x, y, z;
1049 handler->GetSession()->GetPlayer()->GetClosePoint(x, y, z, targetPlayer->GetObjectSize());
1050 targetPlayer->TeleportTo(handler->GetSession()->GetPlayer()->GetMapId(), x, y, z, targetPlayer->GetOrientation(), 0, handler->GetSession()->GetPlayer());
1051 }
1052 else
1053 {
1054 // check offline security
1055 if (handler->HasLowerSecurity(nullptr, target->GetGUID()))
1056 {
1057 return false;
1058 }
1059
1060 handler->PSendSysMessage(LANG_SUMMONING, nameLink, handler->GetAcoreString(LANG_OFFLINE));
1061
1062 // in point where GM stay
1064 handler->GetSession()->GetPlayer()->GetPositionX(),
1065 handler->GetSession()->GetPlayer()->GetPositionY(),
1066 handler->GetSession()->GetPlayer()->GetPositionZ(),
1067 handler->GetSession()->GetPlayer()->GetOrientation(),
1068 handler->GetSession()->GetPlayer()->GetZoneId(),
1069 target->GetGUID());
1070 }
1071
1072 return true;
1073 }
@ CONFIG_INSTANCE_GMSUMMON_PLAYER
Definition WorldConfig.h:45
static void SavePositionInDB(uint32 mapid, float x, float y, float z, float o, uint32 zone, ObjectGuid guid)
Definition PlayerMisc.cpp:85

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
746 {
747 Unit* target = handler->getSelectedUnit();
748 if (!target)
749 {
751 return false;
752 }
753
754 if (spells.holds_alternative<std::string_view>() && spells.get<std::string_view>() == "all")
755 {
756 target->RemoveAllAuras();
757 return true;
758 }
759
760 if (!spells.holds_alternative<SpellInfo const*>())
761 {
763 return false;
764 }
765
766 auto spell = spells.get<SpellInfo const*>();
767
768 if (!SpellMgr::IsSpellValid(spell))
769 {
770 handler->SendErrorMessage(LANG_COMMAND_SPELL_BROKEN, spell->Id);
771 return false;
772 }
773
774 target->RemoveAurasDueToSpell(spell->Id);
775
776 return true;
777 }
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:5157
void RemoveAllAuras()
Definition Unit.cpp:5580

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
3059 {
3060 Player* player = handler->GetSession()->GetPlayer();
3061
3062 if (player->isPossessing())
3063 {
3064 return false;
3065 }
3066
3067 player->StopCastingBindSight();
3068 return true;
3069 }
void StopCastingBindSight(Aura *except=nullptr)
Definition Player.cpp:13167
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
2967 {
2968 Creature* creatureTarget = handler->getSelectedCreature();
2969
2970 if (!target && !creatureTarget)
2971 {
2972 target = PlayerIdentifier::FromTargetOrSelf(handler);
2973 }
2974
2975 if (!target && !creatureTarget)
2976 {
2978 return false;
2979 }
2980
2981 Player* playerTarget = target->GetConnectedPlayer();
2982
2983 if (!creatureTarget && playerTarget && playerTarget->HasAura(SPELL_FREEZE))
2984 {
2985 handler->PSendSysMessage(LANG_COMMAND_UNFREEZE, target->GetName());
2986 playerTarget->RemoveAurasDueToSpell(SPELL_FREEZE);
2987 return true;
2988 }
2989 else if (creatureTarget && creatureTarget->HasAura(SPELL_FREEZE))
2990 {
2992 creatureTarget->RemoveAurasDueToSpell(SPELL_FREEZE);
2993 return true;
2994 }
2995 else if (!creatureTarget && target && !target->IsConnected())
2996 {
2998 stmt->SetData(0, target->GetGUID().GetCounter());
2999 CharacterDatabase.Execute(stmt);
3000 handler->PSendSysMessage(LANG_COMMAND_UNFREEZE, target->GetName());
3001 return true;
3002 }
3003
3005 return true;
3006 }
@ CHAR_DEL_CHAR_AURA_FROZEN
Definition CharacterDatabase.h:355
@ LANG_COMMAND_UNFREEZE
Definition Language.h:1061
@ LANG_COMMAND_FREEZE_WRONG
Definition Language.h:1060
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint8 reqEffMask=0) const
Definition Unit.cpp:5982

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
2610 {
2611 if (!target)
2612 {
2613 target = PlayerIdentifier::FromTargetOrSelf(handler);
2614 }
2615
2616 if (!target)
2617 {
2618 return false;
2619 }
2620
2621 Player* playerTarget = target->GetConnectedPlayer();
2622 uint32 accountId = playerTarget ? playerTarget->GetSession()->GetAccountId() : sCharacterCache->GetCharacterAccountIdByGuid(target->GetGUID());
2623
2624 // find only player from same account if any
2625 if (!playerTarget)
2626 {
2627 if (WorldSession* session = sWorldSessionMgr->FindSession(accountId))
2628 {
2629 playerTarget = session->GetPlayer();
2630 }
2631 }
2632
2633 // must have strong lesser security level
2634 if (handler->HasLowerSecurity(playerTarget, target->GetGUID(), true))
2635 {
2636 return false;
2637 }
2638
2639 if (playerTarget)
2640 {
2641 if (playerTarget->CanSpeak())
2642 {
2644 return false;
2645 }
2646
2647 playerTarget->GetSession()->m_muteTime = 0;
2648 }
2649
2651 stmt->SetData(0, 0);
2652 stmt->SetData(1, "");
2653 stmt->SetData(2, "");
2654 stmt->SetData(3, accountId);
2655 LoginDatabase.Execute(stmt);
2656
2657 if (playerTarget)
2658 {
2660 }
2661
2662 handler->PSendSysMessage(LANG_YOU_ENABLE_CHAT, handler->playerLink(target->GetName()));
2663
2664 return true;
2665 }
@ LANG_CHAT_ALREADY_ENABLED
Definition Language.h:348
@ LANG_YOU_ENABLE_CHAT
Definition Language.h:350
@ LANG_YOUR_CHAT_ENABLED
Definition Language.h:349
bool CanSpeak() const
Definition PlayerMisc.cpp:70

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
3035 {
3036 Unit* unit = handler->getSelectedUnit();
3037 if (!unit)
3038 {
3039 unit = handler->GetSession()->GetPlayer();
3040 }
3041
3042 unit->RemoveCharmAuras();
3043 return true;
3044 }
void RemoveCharmAuras()
Definition Unit.cpp:8289

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

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: