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
134: CommandScript("misc_commandscript") { }
Definition CommandScript.h:25

Member Function Documentation

◆ GetCommands()

ChatCommandTable misc_commandscript::GetCommands ( ) const
inlineoverridevirtual

Implements CommandScript.

137 {
138 static ChatCommandTable auraCommandTable =
139 {
140 { "stack", HandleAuraStacksCommand, SEC_GAMEMASTER, Console::No },
141 { "", HandleAuraCommand, SEC_GAMEMASTER, Console::No }
142 };
143
144 static ChatCommandTable commandTable =
145 {
146 { "commentator", HandleCommentatorCommand, SEC_MODERATOR, Console::No },
147 { "dev", HandleDevCommand, SEC_ADMINISTRATOR, Console::No },
148 { "gps", HandleGPSCommand, SEC_MODERATOR, Console::No },
149 { "aura", auraCommandTable },
150 { "unaura", HandleUnAuraCommand, SEC_GAMEMASTER, Console::No },
151 { "appear", HandleAppearCommand, SEC_MODERATOR, Console::No },
152 { "summon", HandleSummonCommand, SEC_GAMEMASTER, Console::No },
153 { "groupsummon", HandleGroupSummonCommand, SEC_GAMEMASTER, Console::No },
154 { "commands", HandleCommandsCommand, SEC_PLAYER, Console::Yes },
155 { "die", HandleDieCommand, SEC_GAMEMASTER, Console::No },
156 { "revive", HandleReviveCommand, SEC_GAMEMASTER, Console::Yes },
157 { "dismount", HandleDismountCommand, SEC_PLAYER, Console::No },
158 { "guid", HandleGUIDCommand, SEC_GAMEMASTER, Console::No },
159 { "help", HandleHelpCommand, SEC_PLAYER, Console::Yes },
160 { "cooldown", HandleCooldownCommand, SEC_GAMEMASTER, Console::No },
161 { "distance", HandleGetDistanceCommand, SEC_ADMINISTRATOR, Console::No },
162 { "recall", HandleRecallCommand, SEC_GAMEMASTER, Console::No },
163 { "save", HandleSaveCommand, SEC_PLAYER, Console::No },
164 { "saveall", HandleSaveAllCommand, SEC_GAMEMASTER, Console::Yes },
165 { "kick", HandleKickPlayerCommand, SEC_GAMEMASTER, Console::Yes },
166 { "unstuck", HandleUnstuckCommand, SEC_GAMEMASTER, Console::Yes },
167 { "linkgrave", HandleLinkGraveCommand, SEC_ADMINISTRATOR, Console::No },
168 { "neargrave", HandleNearGraveCommand, SEC_GAMEMASTER, Console::No },
169 { "showarea", HandleShowAreaCommand, SEC_GAMEMASTER, Console::No },
170 { "hidearea", HandleHideAreaCommand, SEC_ADMINISTRATOR, Console::No },
171 { "additem", HandleAddItemCommand, SEC_GAMEMASTER, Console::Yes },
172 { "additem set", HandleAddItemSetCommand, SEC_GAMEMASTER, Console::No },
173 { "wchange", HandleChangeWeather, SEC_ADMINISTRATOR, Console::No },
174 { "maxskill", HandleMaxSkillCommand, SEC_GAMEMASTER, Console::No },
175 { "setskill", HandleSetSkillCommand, SEC_GAMEMASTER, Console::No },
176 { "pinfo", HandlePInfoCommand, SEC_GAMEMASTER, Console::Yes },
177 { "respawn", HandleRespawnCommand, SEC_GAMEMASTER, Console::No },
178 { "respawn all", HandleRespawnAllCommand, SEC_GAMEMASTER, Console::No },
179 { "mute", HandleMuteCommand, SEC_GAMEMASTER, Console::Yes },
180 { "mutehistory", HandleMuteInfoCommand, SEC_GAMEMASTER, Console::Yes },
181 { "unmute", HandleUnmuteCommand, SEC_GAMEMASTER, Console::Yes },
182 { "movegens", HandleMovegensCommand, SEC_ADMINISTRATOR, Console::No },
183 { "cometome", HandleComeToMeCommand, SEC_ADMINISTRATOR, Console::No },
184 { "damage", HandleDamageCommand, SEC_GAMEMASTER, Console::No },
185 { "combatstop", HandleCombatStopCommand, SEC_GAMEMASTER, Console::Yes },
186 { "flusharenapoints", HandleFlushArenaPointsCommand, SEC_ADMINISTRATOR, Console::Yes },
187 { "freeze", HandleFreezeCommand, SEC_GAMEMASTER, Console::No },
188 { "unfreeze", HandleUnFreezeCommand, SEC_GAMEMASTER, Console::No },
189 { "possess", HandlePossessCommand, SEC_GAMEMASTER, Console::No },
190 { "unpossess", HandleUnPossessCommand, SEC_GAMEMASTER, Console::No },
191 { "bindsight", HandleBindSightCommand, SEC_ADMINISTRATOR, Console::No },
192 { "unbindsight", HandleUnbindSightCommand, SEC_ADMINISTRATOR, Console::No },
193 { "playall", HandlePlayAllCommand, SEC_GAMEMASTER, Console::No },
194 { "skirmish", HandleSkirmishCommand, SEC_ADMINISTRATOR, Console::No },
195 { "mailbox", HandleMailBoxCommand, SEC_MODERATOR, Console::No },
196 { "string", HandleStringCommand, SEC_GAMEMASTER, Console::No },
197 { "opendoor", HandleOpenDoorCommand, SEC_GAMEMASTER, Console::No },
198 { "bm", HandleBMCommand, SEC_GAMEMASTER, Console::No },
199 { "packetlog", HandlePacketLog, SEC_GAMEMASTER, Console::Yes }
200 };
201
202 return commandTable;
203 }
@ 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:504
static bool HandleDevCommand(ChatHandler *handler, Optional< bool > enableArg)
Definition cs_misc.cpp:546
static bool HandleDamageCommand(ChatHandler *handler, uint32 damage, Optional< std::string > percent)
Definition cs_misc.cpp:2853
static bool HandleSaveCommand(ChatHandler *handler)
Definition cs_misc.cpp:1395
static bool HandleAuraStacksCommand(ChatHandler *handler, SpellInfo const *spell, int16 stacks)
Definition cs_misc.cpp:701
static bool HandleLinkGraveCommand(ChatHandler *handler, uint32 graveyardId, Optional< std::string_view > team)
Definition cs_misc.cpp:1558
static bool HandlePlayAllCommand(ChatHandler *handler, uint32 soundId)
Definition cs_misc.cpp:3002
static bool HandleAddItemCommand(ChatHandler *handler, Optional< PlayerIdentifier > player, ItemTemplate const *itemTemplate, Optional< int32 > _count)
Definition cs_misc.cpp:1748
static bool HandleAuraCommand(ChatHandler *handler, SpellInfo const *spell)
Definition cs_misc.cpp:675
static bool HandleUnstuckCommand(ChatHandler *handler, Optional< PlayerIdentifier > target, Optional< std::string_view > location)
Definition cs_misc.cpp:1480
static bool HandleRespawnAllCommand(ChatHandler *handler)
Definition cs_misc.cpp:2467
static bool HandleSkirmishCommand(ChatHandler *handler, std::vector< std::string_view > args)
Definition cs_misc.cpp:205
static bool HandleUnbindSightCommand(ChatHandler *handler)
Definition cs_misc.cpp:3052
static bool HandleShowAreaCommand(ChatHandler *handler, uint32 areaID)
Definition cs_misc.cpp:1686
static bool HandleStringCommand(ChatHandler *handler, uint32 id, Optional< uint8 > locale)
Definition cs_misc.cpp:3072
static bool HandleChangeWeather(ChatHandler *handler, uint32 type, float grade)
Definition cs_misc.cpp:1911
static bool HandlePInfoCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:1993
static bool HandleBMCommand(ChatHandler *handler, Optional< bool > enableArg)
Definition cs_misc.cpp:3098
static bool HandleSummonCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:955
static bool HandleCooldownCommand(ChatHandler *handler, Optional< SpellInfo const * > spell)
Definition cs_misc.cpp:1300
static bool HandleReviveCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:1225
static bool HandleOpenDoorCommand(ChatHandler *handler, Optional< float > range)
Definition cs_misc.cpp:3085
static bool HandleCommandsCommand(ChatHandler *handler)
Definition cs_misc.cpp:1182
static bool HandleMailBoxCommand(ChatHandler *handler)
Definition cs_misc.cpp:3065
static bool HandleDieCommand(ChatHandler *handler)
Definition cs_misc.cpp:1188
static bool HandleAppearCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:780
static bool HandleHelpCommand(ChatHandler *handler, Tail cmd)
Definition cs_misc.cpp:1288
static bool HandleRespawnCommand(ChatHandler *handler)
Definition cs_misc.cpp:2443
static bool HandleNearGraveCommand(ChatHandler *handler, Optional< std::string_view > team)
Definition cs_misc.cpp:1609
static bool HandleMovegensCommand(ChatHandler *handler)
Definition cs_misc.cpp:2703
static bool HandleGUIDCommand(ChatHandler *handler)
Definition cs_misc.cpp:1274
static bool HandleAddItemSetCommand(ChatHandler *handler, Variant< Hyperlink< itemset >, uint32 > itemSetId)
Definition cs_misc.cpp:1850
static bool HandleSaveAllCommand(ChatHandler *handler)
Definition cs_misc.cpp:1426
static bool HandleGPSCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:589
static bool HandleKickPlayerCommand(ChatHandler *handler, Optional< PlayerIdentifier > target, Optional< std::string_view > reason)
Definition cs_misc.cpp:1434
static bool HandleHideAreaCommand(ChatHandler *handler, uint32 areaID)
Definition cs_misc.cpp:1717
static bool HandleSetSkillCommand(ChatHandler *handler, Variant< Hyperlink< skill >, uint32 > skillId, int32 level, Optional< uint16 > maxPureSkill)
Definition cs_misc.cpp:1949
static bool HandlePacketLog(ChatHandler *handler, Optional< PlayerIdentifier > target, Optional< bool > enableArg)
Definition cs_misc.cpp:3139
static bool HandleUnmuteCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:2603
static bool HandleRecallCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:1358
static bool HandleBindSightCommand(ChatHandler *handler)
Definition cs_misc.cpp:3040
static bool HandleComeToMeCommand(ChatHandler *handler)
Definition cs_misc.cpp:2837
static bool HandleUnPossessCommand(ChatHandler *handler)
Definition cs_misc.cpp:3028
static bool HandleDismountCommand(ChatHandler *handler)
Definition cs_misc.cpp:1250
static bool HandleGroupSummonCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:1077
static bool HandleCombatStopCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:2885
static bool HandleUnAuraCommand(ChatHandler *handler, Variant< SpellInfo const *, std::string_view > spells)
Definition cs_misc.cpp:746
static bool HandleGetDistanceCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:1330
static bool HandleMaxSkillCommand(ChatHandler *handler)
Definition cs_misc.cpp:1935
static bool HandleFlushArenaPointsCommand(ChatHandler *)
Definition cs_misc.cpp:2911
static bool HandleFreezeCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:2917
static bool HandleMuteInfoCommand(ChatHandler *handler, std::string accountName)
Definition cs_misc.cpp:2662
static bool HandleUnFreezeCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_misc.cpp:2960
static bool HandleMuteCommand(ChatHandler *handler, Optional< PlayerIdentifier > player, std::string notSpeakTime, Tail muteReason)
Definition cs_misc.cpp:2479
static bool HandlePossessCommand(ChatHandler *handler)
Definition cs_misc.cpp:3016
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
1749 {
1750 if (!sObjectMgr->GetItemTemplate(itemTemplate->ItemId))
1751 {
1752 handler->SendErrorMessage(LANG_COMMAND_ITEMIDINVALID, itemTemplate->ItemId);
1753 return false;
1754 }
1755
1756 uint32 itemId = itemTemplate->ItemId;
1757 int32 count = 1;
1758
1759 if (_count)
1760 count = *_count;
1761
1762 if (!count)
1763 count = 1;
1764
1765 if (!player)
1766 player = PlayerIdentifier::FromTargetOrSelf(handler);
1767
1768 if (!player)
1769 return false;
1770
1771 Player* playerTarget = player->GetConnectedPlayer();
1772
1773 if (!playerTarget)
1774 return false;
1775
1776 // Subtract
1777 if (count < 0)
1778 {
1779 // Only have scam check on player accounts
1780 if (playerTarget->GetSession()->GetSecurity() == SEC_PLAYER)
1781 {
1782 if (!playerTarget->HasItemCount(itemId, 0))
1783 {
1784 // output that player don't have any items to destroy
1785 handler->SendErrorMessage(LANG_REMOVEITEM_FAILURE, handler->GetNameLink(playerTarget), itemId);
1786 return false;
1787 }
1788
1789 if (!playerTarget->HasItemCount(itemId, -count))
1790 {
1791 // output that player don't have as many items that you want to destroy
1792 handler->SendErrorMessage(LANG_REMOVEITEM_ERROR, handler->GetNameLink(playerTarget), itemId);
1793 return false;
1794 }
1795 }
1796
1797 // output successful amount of destroyed items
1798 playerTarget->DestroyItemCount(itemId, -count, true, false);
1799 handler->PSendSysMessage(LANG_REMOVEITEM, itemId, -count, handler->GetNameLink(playerTarget));
1800 return true;
1801 }
1802
1803 // Adding items
1804 uint32 noSpaceForCount = 0;
1805
1806 // check space and find places
1807 ItemPosCountVec dest;
1808 InventoryResult msg = playerTarget->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, itemId, count, &noSpaceForCount);
1809
1810 if (msg != EQUIP_ERR_OK) // convert to possible store amount
1811 count -= noSpaceForCount;
1812
1813 if (!count || dest.empty()) // can't add any
1814 {
1815 handler->SendErrorMessage(LANG_ITEM_CANNOT_CREATE, itemId, noSpaceForCount);
1816 return false;
1817 }
1818
1819 Item* item = playerTarget->StoreNewItem(dest, itemId, true);
1820
1821 Player* p = handler->GetSession() ? handler->GetSession()->GetPlayer() : nullptr;
1822 // remove binding (let GM give it to another player later)
1823 if (p && p == playerTarget)
1824 {
1825 for (auto const& itemPos : dest)
1826 {
1827 if (Item* item1 = p->GetItemByPos(itemPos.pos))
1828 {
1829 item1->SetBinding(false);
1830 }
1831 }
1832 }
1833
1834 if (p && count && item)
1835 {
1836 p->SendNewItem(item, count, false, true);
1837
1838 if (p != playerTarget)
1839 {
1840 playerTarget->SendNewItem(item, count, true, false);
1841 }
1842 }
1843
1844 if (noSpaceForCount)
1845 handler->PSendSysMessage(LANG_ITEM_CANNOT_CREATE, itemId, noSpaceForCount);
1846
1847 return true;
1848 }
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:1338
@ LANG_REMOVEITEM_ERROR
Definition Language.h:1339
@ LANG_REMOVEITEM
Definition Language.h:542
@ LANG_COMMAND_ITEMIDINVALID
Definition Language.h:473
#define sObjectMgr
Definition ObjectMgr.h:1686
std::vector< ItemPosCount > ItemPosCountVec
Definition Player.h:758
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:1066
bool HasItemCount(uint32 item, uint32 count=1, bool inBankAlso=false) const
Definition PlayerStorage.cpp:657
WorldSession * GetSession() const
Definition Player.h:1993
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:4747
void DestroyItemCount(uint32 item, uint32 count, bool update, bool unequip_check=false)
Definition PlayerStorage.cpp:3117
Item * StoreNewItem(ItemPosCountVec const &pos, uint32 item, bool update, int32 randomPropertyId=0, bool refund=false)
Definition PlayerStorage.cpp:2531
InventoryResult CanStoreNewItem(uint8 bag, uint8 slot, ItemPosCountVec &dest, uint32 item, uint32 count, uint32 *no_space_count=nullptr) const
Definition Player.h:1275
AccountTypes GetSecurity() const
Definition WorldSession.h:432
Player * GetPlayer() const
Definition WorldSession.h:435
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
1851 {
1852 // prevent generation all items with itemset field value '0'
1853 if (!*itemSetId)
1854 {
1856 return false;
1857 }
1858
1859 Player* player = handler->GetSession()->GetPlayer();
1860 Player* playerTarget = handler->getSelectedPlayer();
1861
1862 if (!playerTarget)
1863 {
1864 playerTarget = player;
1865 }
1866
1867 bool found = false;
1868
1869 for (auto const& [itemid, itemTemplate] : *sObjectMgr->GetItemTemplateStore())
1870 {
1871 if (itemTemplate.ItemSet == uint32(itemSetId))
1872 {
1873 found = true;
1874 ItemPosCountVec dest;
1875 InventoryResult msg = playerTarget->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, itemTemplate.ItemId, 1);
1876
1877 if (msg == EQUIP_ERR_OK)
1878 {
1879 Item* item = playerTarget->StoreNewItem(dest, itemTemplate.ItemId, true);
1880
1881 // remove binding (let GM give it to another player later)
1882 if (player == playerTarget)
1883 {
1884 item->SetBinding(false);
1885 }
1886
1887 player->SendNewItem(item, 1, false, true);
1888
1889 if (player != playerTarget)
1890 {
1891 playerTarget->SendNewItem(item, 1, true, false);
1892 }
1893 }
1894 else
1895 {
1896 player->SendEquipError(msg, nullptr, nullptr, itemTemplate.ItemId);
1897 handler->PSendSysMessage(LANG_ITEM_CANNOT_CREATE, itemTemplate.ItemId, 1);
1898 }
1899 }
1900 }
1901
1902 if (!found)
1903 {
1905 return false;
1906 }
1907
1908 return true;
1909 }
@ 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:4023

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

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
702 {
703 if (!spell)
704 {
706 return false;
707 }
708
709 if (!SpellMgr::IsSpellValid(spell))
710 {
711 handler->SendErrorMessage(LANG_COMMAND_SPELL_BROKEN, spell->Id);
712 return false;
713 }
714
715 if (!stacks)
716 {
718 return false;
719 }
720
721 Unit* target = handler->getSelectedUnit();
722 if (!target)
723 {
725 return false;
726 }
727
728 Aura* aur = target->GetAura(spell->Id);
729 if (!aur)
730 {
732 return false;
733 }
734
735 if (!spell->StackAmount)
736 {
738 return false;
739 }
740
741 aur->ModStackAmount(stacks);
742
743 return true;
744 }
@ 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:5711

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
3041 {
3042 Unit* unit = handler->getSelectedUnit();
3043 if (!unit)
3044 {
3045 return false;
3046 }
3047
3048 handler->GetSession()->GetPlayer()->CastSpell(unit, 6277, true);
3049 return true;
3050 }
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:1194

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
3099 {
3100 WorldSession* session = handler->GetSession();
3101
3102 if (!session)
3103 return false;
3104
3105 auto SetBMMod = [&](bool enable)
3106 {
3107 char const* enabled = "ON";
3108 char const* disabled = "OFF";
3109 handler->SendNotification(LANG_COMMAND_BEASTMASTER_MODE, enable ? enabled : disabled);
3110
3111 session->GetPlayer()->SetBeastMaster(enable);
3112 };
3113
3114 if (!enableArg)
3115 {
3116 if (!AccountMgr::IsPlayerAccount(session->GetSecurity()) && session->GetPlayer()->IsDeveloper())
3117 SetBMMod(true);
3118 else
3119 SetBMMod(false);
3120
3121 return true;
3122 }
3123
3124 if (*enableArg)
3125 {
3126 SetBMMod(true);
3127 return true;
3128 }
3129 else
3130 {
3131 SetBMMod(false);
3132 return true;
3133 }
3134
3136 return false;
3137 }
@ LANG_USE_BOL
Definition Language.h:308
@ LANG_COMMAND_BEASTMASTER_MODE
Definition Language.h:983
void SendNotification(std::string_view str)
Definition Chat.cpp:105
void SetBeastMaster(bool on)
Definition Player.h:1153
bool IsDeveloper() const
Definition Player.h:1151
Player session in the World.
Definition WorldSession.h:375
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
1912 {
1913 // Weather is OFF
1914 if (!sWorld->getBoolConfig(CONFIG_WEATHER))
1915 {
1917 return false;
1918 }
1919
1920 Player* player = handler->GetSession()->GetPlayer();
1921 uint32 zoneid = player->GetZoneId();
1922
1923 Weather* weather = player->GetMap()->GetOrGenerateZoneDefaultWeather(zoneid);
1924 if (!weather)
1925 {
1927 return false;
1928 }
1929
1930 weather->SetWeather(WeatherType(type), grade);
1931
1932 return true;
1933 }
@ LANG_NO_WEATHER
Definition Language.h:438
@ LANG_WEATHER_DISABLED
Definition Language.h:439
WeatherType
Definition SharedDefines.h:3377
@ CONFIG_WEATHER
Definition WorldConfig.h:53
Weather * GetOrGenerateZoneDefaultWeather(uint32 zoneId)
Definition Map.cpp:2871
Weather for one zone.
Definition Weather.h:65
uint32 GetZoneId() const
Definition Object.cpp:3056
#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
2886 {
2887 if (!target)
2888 {
2889 target = PlayerIdentifier::FromTargetOrSelf(handler);
2890 }
2891
2892 if (!target || !target->IsConnected())
2893 {
2895 return false;
2896 }
2897
2898 Player* playerTarget = target->GetConnectedPlayer();
2899
2900 // check online security
2901 if (handler->HasLowerSecurity(playerTarget))
2902 {
2903 return false;
2904 }
2905
2906 playerTarget->CombatStop();
2907 playerTarget->getHostileRefMgr().deleteReferences();
2908 return true;
2909 }
@ LANG_PLAYER_NOT_FOUND
Definition Language.h:545
void deleteReferences(bool removeFromMap=false)
Definition HostileRefMgr.cpp:125
void CombatStop(bool includingCast=false)
Definition Unit.cpp:10651
HostileRefMgr & getHostileRefMgr()
Definition Unit.h:947

References Unit::CombatStop(), HostileRefMgr::deleteReferences(), Acore::ChatCommands::PlayerIdentifier::FromTargetOrSelf(), Unit::getHostileRefMgr(), ChatHandler::HasLowerSecurity(), LANG_PLAYER_NOT_FOUND, and ChatHandler::SendErrorMessage().

Referenced by GetCommands().

◆ HandleComeToMeCommand()

static bool misc_commandscript::HandleComeToMeCommand ( ChatHandler handler)
inlinestatic
2838 {
2839 Creature* caster = handler->getSelectedCreature();
2840 if (!caster)
2841 {
2843 return false;
2844 }
2845
2846 Player* player = handler->GetSession()->GetPlayer();
2847
2848 caster->GetMotionMaster()->MovePoint(0, player->GetPositionX(), player->GetPositionY(), player->GetPositionZ());
2849
2850 return true;
2851 }
@ 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:238
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
1183 {
1184 SendCommandHelpFor(*handler, "");
1185 return true;
1186 }
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
505 {
506 WorldSession* session = handler->GetSession();
507
508 if (!session)
509 {
511 return false;
512 }
513
514 auto SetCommentatorMod = [&](bool enable)
515 {
516 handler->SendNotification(enable ? "Commentator mode on" : "Commentator mode off");
517 session->GetPlayer()->SetCommentator(enable);
518 };
519
520 if (!enableArg)
521 {
522 if (!AccountMgr::IsPlayerAccount(session->GetSecurity()) && session->GetPlayer()->IsCommentator())
523 {
524 SetCommentatorMod(true);
525 }
526 else
527 {
528 SetCommentatorMod(false);
529 }
530
531 return true;
532 }
533
534 if (*enableArg)
535 {
536 SetCommentatorMod(true);
537 return true;
538 }
539 else
540 {
541 SetCommentatorMod(false);
542 return true;
543 }
544 }
bool IsCommentator() const
Definition Player.h:1149
void SetCommentator(bool on)
Definition Player.h:1150

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
1301 {
1302 Player* target = handler->getSelectedPlayer();
1303 if (!target)
1304 {
1306 return false;
1307 }
1308
1309 std::string nameLink = handler->GetNameLink(target);
1310
1311 if (!spell)
1312 {
1313 target->RemoveAllSpellCooldown();
1314 handler->PSendSysMessage(LANG_REMOVEALL_COOLDOWN, nameLink);
1315 }
1316 else
1317 {
1318 if (!SpellMgr::IsSpellValid(*spell))
1319 {
1320 handler->SendErrorMessage(LANG_COMMAND_SPELL_BROKEN, spell.value()->Id);
1321 return false;
1322 }
1323
1324 target->RemoveSpellCooldown(spell.value()->Id, true);
1325 handler->PSendSysMessage(LANG_REMOVE_COOLDOWN, spell.value()->Id, target == handler->GetSession()->GetPlayer() ? handler->GetAcoreString(LANG_YOU) : nameLink);
1326 }
1327 return true;
1328 }
@ 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:3572
void RemoveSpellCooldown(uint32 spell_id, bool update=false)
Definition Player.cpp:3521

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
2854 {
2855 Unit* target = handler->getSelectedUnit();
2856 if (!target || !handler->GetSession()->GetPlayer()->GetTarget())
2857 {
2859 return false;
2860 }
2861
2862 if (target->IsPlayer())
2863 if (handler->HasLowerSecurity(target->ToPlayer()))
2864 return false;
2865
2866 if (!target->IsAlive() || !damage)
2867 return true;
2868
2869 if (target->IsCreature() && handler->GetSession()->GetSecurity() == SEC_CONSOLE) // pussywizard
2870 target->ToCreature()->LowerPlayerDamageReq(target->GetMaxHealth());
2871
2872 if (percent)
2873 if (StringStartsWith("pct", *percent))
2874 if (damage <= 100)
2875 damage = target->CountPctFromMaxHealth(damage);
2876
2877 Unit::DealDamage(handler->GetSession()->GetPlayer(), target, damage, nullptr, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, nullptr, false, true);
2878
2879 if (target != handler->GetSession()->GetPlayer())
2881
2882 return true;
2883 }
@ SEC_CONSOLE
Definition Common.h:61
@ SPELL_SCHOOL_MASK_NORMAL
Definition SharedDefines.h:308
@ VICTIMSTATE_HIT
Definition Unit.h:86
@ HITINFO_AFFECTS_VICTIM
Definition Unit.h:100
@ DIRECT_DAMAGE
Definition Unit.h:255
bool StringStartsWith(std::string_view haystack, std::string_view needle)
Definition Util.h:392
void LowerPlayerDamageReq(uint32 unDamage, bool damagedByPlayer=true)
Definition Creature.cpp:3680
bool IsPlayer() const
Definition Object.h:200
Player * ToPlayer()
Definition Object.h:201
bool IsCreature() const
Definition Object.h:204
Creature * ToCreature()
Definition Object.h:205
void SendAttackStateUpdate(CalcDamageInfo *damageInfo)
Definition Unit.cpp:6717
uint32 GetMaxHealth() const
Definition Unit.h:1094
bool IsAlive() const
Definition Unit.h:1773
uint32 CountPctFromMaxHealth(int32 pct) const
Definition Unit.h:1106
ObjectGuid GetTarget() const
Definition Unit.h:851
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:824

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
547 {
548 WorldSession* session = handler->GetSession();
549
550 if (!session)
551 {
553 return false;
554 }
555
556 auto SetDevMod = [&](bool enable)
557 {
558 handler->SendNotification(enable ? LANG_DEV_ON : LANG_DEV_OFF);
559 session->GetPlayer()->SetDeveloper(enable);
560 sScriptMgr->OnHandleDevCommand(handler->GetSession()->GetPlayer(), enable);
561 };
562
563 if (!enableArg)
564 {
565 if (!AccountMgr::IsPlayerAccount(session->GetSecurity()) && session->GetPlayer()->IsDeveloper())
566 {
567 SetDevMod(true);
568 }
569 else
570 {
571 SetDevMod(false);
572 }
573
574 return true;
575 }
576
577 if (*enableArg)
578 {
579 SetDevMod(true);
580 return true;
581 }
582 else
583 {
584 SetDevMod(false);
585 return true;
586 }
587 }
@ LANG_DEV_ON
Definition Language.h:934
@ LANG_DEV_OFF
Definition Language.h:935
#define sScriptMgr
Definition ScriptMgr.h:719
void SetDeveloper(bool on)
Definition Player.h:1152

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
1189 {
1190 Unit* target = handler->getSelectedUnit();
1191
1192 if (!target || !handler->GetSession()->GetPlayer()->GetTarget())
1193 {
1195 return false;
1196 }
1197
1198 if (target->IsPlayer())
1199 {
1200 if (handler->HasLowerSecurity(target->ToPlayer()))
1201 {
1202 return false;
1203 }
1204 }
1205
1206 if (target->IsAlive())
1207 {
1208 if (sWorld->getBoolConfig(CONFIG_DIE_COMMAND_MODE))
1209 {
1210 if (target->IsCreature() && handler->GetSession()->GetSecurity() == SEC_CONSOLE) // pussywizard
1211 {
1212 target->ToCreature()->LowerPlayerDamageReq(target->GetMaxHealth());
1213 }
1214 Unit::Kill(handler->GetSession()->GetPlayer(), target);
1215 }
1216 else
1217 {
1218 Unit::DealDamage(handler->GetSession()->GetPlayer(), target, target->GetHealth(), nullptr, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, nullptr, false, true);
1219 }
1220 }
1221
1222 return true;
1223 }
@ 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:17973
uint32 GetHealth() const
Definition Unit.h:1093

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
1251 {
1252 Player* player = handler->GetSession()->GetPlayer();
1253
1254 // If player is not mounted, so go out :)
1255 if (!player->IsMounted())
1256 {
1258 return false;
1259 }
1260
1261 if (player->IsInFlight())
1262 {
1264 return false;
1265 }
1266
1267 player->Dismount();
1269 player->SetSpeed(MOVE_RUN, 1, true);
1270 player->SetSpeed(MOVE_FLIGHT, 1, true);
1271 return true;
1272 }
@ 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:359
@ MOVE_RUN
Definition UnitDefines.h:354
void Dismount()
Definition Unit.cpp:13687
bool IsMounted() const
Definition Unit.h:1866
void SetSpeed(UnitMoveType mtype, float rate, bool forced=false)
Definition Unit.cpp:14606
void RemoveAurasByType(AuraType auraType, ObjectGuid casterGUID=ObjectGuid::Empty, Aura *except=nullptr, bool negative=true, bool positive=true)
Definition Unit.cpp:5240

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
2912 {
2913 sArenaTeamMgr->DistributeArenaPoints();
2914 return true;
2915 }
#define sArenaTeamMgr
Definition ArenaTeamMgr.h:69

References sArenaTeamMgr.

Referenced by GetCommands().

◆ HandleFreezeCommand()

static bool misc_commandscript::HandleFreezeCommand ( ChatHandler handler,
Optional< PlayerIdentifier target 
)
inlinestatic
2918 {
2919 Creature* creatureTarget = handler->getSelectedCreature();
2920
2921 if (!target && !creatureTarget)
2922 {
2923 target = PlayerIdentifier::FromTargetOrSelf(handler);
2924 }
2925
2926 if (!target && !creatureTarget)
2927 {
2929 return false;
2930 }
2931
2932 Player* playerTarget = target->GetConnectedPlayer();
2933 if (playerTarget && !creatureTarget)
2934 {
2935 handler->PSendSysMessage(LANG_COMMAND_FREEZE, target->GetName());
2936
2937 if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(SPELL_FREEZE))
2938 {
2939 Aura::TryRefreshStackOrCreate(spellInfo, MAX_EFFECT_MASK, playerTarget, playerTarget);
2940 }
2941
2942 return true;
2943 }
2944 else if (creatureTarget && creatureTarget->IsAlive())
2945 {
2947
2948 if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(SPELL_FREEZE))
2949 {
2950 Aura::TryRefreshStackOrCreate(spellInfo, MAX_EFFECT_MASK, creatureTarget, creatureTarget);
2951 }
2952
2953 return true;
2954 }
2955
2957 return false;
2958 }
@ LANG_COMMAND_FREEZE
Definition Language.h:1057
#define sSpellMgr
Definition SpellMgr.h:826
virtual LocaleConstant GetSessionDbcLocale() const
Definition Chat.cpp:870
Definition SpellInfo.h:316
constexpr auto SPELL_FREEZE
Definition cs_misc.cpp:60
std::string const GetLocalizeCreatureName(Creature *creature, LocaleConstant locale)
Definition cs_misc.cpp:105

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

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
1275 {
1276 ObjectGuid guid = handler->GetSession()->GetPlayer()->GetTarget();
1277
1278 if (!guid)
1279 {
1281 return false;
1282 }
1283
1284 handler->PSendSysMessage(LANG_OBJECT_GUID, guid.ToString());
1285 return true;
1286 }
@ 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
1289 {
1291
1292 if (cmd.empty())
1293 {
1295 }
1296
1297 return true;
1298 }

References Acore::ChatCommands::SendCommandHelpFor().

Referenced by GetCommands().

◆ HandleHideAreaCommand()

static bool misc_commandscript::HandleHideAreaCommand ( ChatHandler handler,
uint32  areaID 
)
inlinestatic
1718 {
1719 Player* playerTarget = handler->getSelectedPlayer();
1720 if (!playerTarget)
1721 {
1723 return false;
1724 }
1725
1726 AreaTableEntry const* area = sAreaTableStore.LookupEntry(areaID);
1727 if (!area)
1728 {
1730 return false;
1731 }
1732
1733 int32 offset = area->exploreFlag / 32;
1734 if (offset >= PLAYER_EXPLORED_ZONES_SIZE)
1735 {
1737 return false;
1738 }
1739
1740 uint32 val = uint32((1 << (area->exploreFlag % 32)));
1741 uint32 currFields = playerTarget->GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset);
1742 playerTarget->SetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset, uint32((currFields ^ val)));
1743
1745 return true;
1746 }
@ 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:21429
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
1435 {
1436 if (!target)
1437 {
1438 target = PlayerIdentifier::FromTargetOrSelf(handler);
1439 }
1440
1441 if (!target || !target->IsConnected())
1442 {
1443 return false;
1444 }
1445
1446 auto targetPlayer = target->GetConnectedPlayer();
1447
1448 if (handler->GetSession() && target->GetGUID() == handler->GetSession()->GetPlayer()->GetGUID())
1449 {
1451 return false;
1452 }
1453
1454 // check online security
1455 if (handler->HasLowerSecurity(targetPlayer))
1456 {
1457 return false;
1458 }
1459
1460 std::string kickReasonStr = handler->GetAcoreString(LANG_NO_REASON);
1461 if (reason && !reason->empty())
1462 {
1463 kickReasonStr = std::string{ *reason };
1464 }
1465
1466 if (sWorld->getBoolConfig(CONFIG_SHOW_KICK_IN_WORLD))
1467 {
1468 handler->SendWorldText(LANG_COMMAND_KICKMESSAGE_WORLD, (handler->GetSession() ? handler->GetSession()->GetPlayerName() : "Server"), target->GetName(), kickReasonStr);
1469 }
1470 else
1471 {
1472 handler->PSendSysMessage(LANG_COMMAND_KICKMESSAGE, target->GetName());
1473 }
1474
1475 targetPlayer->GetSession()->KickPlayer("HandleKickPlayerCommand");
1476
1477 return true;
1478 }
@ LANG_COMMAND_KICKSELF
Definition Language.h:331
@ LANG_COMMAND_KICKMESSAGE_WORLD
Definition Language.h:1303
@ LANG_NO_REASON
Definition Language.h:815
@ LANG_COMMAND_KICKMESSAGE
Definition Language.h:332
@ CONFIG_SHOW_KICK_IN_WORLD
Definition WorldConfig.h:90
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
1559 {
1560 TeamId teamId;
1561
1562 if (!team)
1563 {
1564 teamId = TEAM_NEUTRAL;
1565 }
1566 else if (StringEqualI(team->substr(0, 6), "horde"))
1567 {
1568 teamId = TEAM_HORDE;
1569 }
1570 else if (StringEqualI(team->substr(0, 9), "alliance"))
1571 {
1572 teamId = TEAM_ALLIANCE;
1573 }
1574 else
1575 {
1576 return false;
1577 }
1578
1579 GraveyardStruct const* graveyard = sGraveyard->GetGraveyard(graveyardId);
1580
1581 if (!graveyard)
1582 {
1583 handler->SendErrorMessage(LANG_COMMAND_GRAVEYARDNOEXIST, graveyardId);
1584 return false;
1585 }
1586
1587 Player* player = handler->GetSession()->GetPlayer();
1588 uint32 zoneId = player->GetZoneId();
1589
1590 AreaTableEntry const* areaEntry = sAreaTableStore.LookupEntry(zoneId);
1591 if (!areaEntry || areaEntry->zone != 0)
1592 {
1593 handler->SendErrorMessage(LANG_COMMAND_GRAVEYARDWRONGZONE, graveyardId, zoneId);
1594 return false;
1595 }
1596
1597 if (sGraveyard->AddGraveyardLink(graveyardId, zoneId, teamId))
1598 {
1599 handler->PSendSysMessage(LANG_COMMAND_GRAVEYARDLINKED, graveyardId, zoneId);
1600 }
1601 else
1602 {
1603 handler->PSendSysMessage(LANG_COMMAND_GRAVEYARDALRLINKED, graveyardId, zoneId);
1604 }
1605
1606 return true;
1607 }
#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:770
@ TEAM_ALLIANCE
Definition SharedDefines.h:771
@ TEAM_HORDE
Definition SharedDefines.h:772
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
3066 {
3067 Player* player = handler->GetSession()->GetPlayer();
3068 handler->GetSession()->SendShowMailBox(player->GetGUID());
3069 return true;
3070 }
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
1936 {
1937 Player* SelectedPlayer = handler->getSelectedPlayer();
1938 if (!SelectedPlayer)
1939 {
1941 return false;
1942 }
1943
1944 // each skills that have max skill value dependent from level seted to current level max skill value
1945 SelectedPlayer->UpdateSkillsToMaxSkillsForLevel();
1946 return true;
1947 }
void UpdateSkillsToMaxSkillsForLevel()
Definition PlayerUpdates.cpp:1136

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

Referenced by GetCommands().

◆ HandleMovegensCommand()

static bool misc_commandscript::HandleMovegensCommand ( ChatHandler handler)
inlinestatic
2704 {
2705 Unit* unit = handler->getSelectedUnit();
2706 if (!unit)
2707 {
2709 return false;
2710 }
2711
2712 handler->PSendSysMessage(LANG_MOVEGENS_LIST, (unit->IsPlayer() ? "Player" : "Creature"), unit->GetGUID().ToString());
2713
2714 MotionMaster* motionMaster = unit->GetMotionMaster();
2715 float x, y, z;
2716 motionMaster->GetDestination(x, y, z);
2717
2718 for (uint8 i = 0; i < MAX_MOTION_SLOT; ++i)
2719 {
2720 MovementGenerator* movementGenerator = motionMaster->GetMotionSlot(i);
2721 if (!movementGenerator)
2722 {
2723 handler->SendSysMessage("Empty");
2724 continue;
2725 }
2726
2727 switch (movementGenerator->GetMovementGeneratorType())
2728 {
2729 case IDLE_MOTION_TYPE:
2731 break;
2732 case RANDOM_MOTION_TYPE:
2734 break;
2737 break;
2740 break;
2743 break;
2744 case CHASE_MOTION_TYPE:
2745 {
2746 Unit* target = nullptr;
2747 if (unit->IsPlayer())
2748 {
2749 target = static_cast<ChaseMovementGenerator<Player> const*>(movementGenerator)->GetTarget();
2750 }
2751 else
2752 {
2753 target = static_cast<ChaseMovementGenerator<Creature> const*>(movementGenerator)->GetTarget();
2754 }
2755
2756 if (!target)
2757 {
2759 }
2760 else if (target->IsPlayer())
2761 {
2762 handler->PSendSysMessage(LANG_MOVEGENS_CHASE_PLAYER, target->GetName(), target->GetGUID().ToString());
2763 }
2764 else
2765 {
2766 handler->PSendSysMessage(LANG_MOVEGENS_CHASE_CREATURE, target->GetName(), target->GetGUID().ToString());
2767 }
2768 break;
2769 }
2770 case FOLLOW_MOTION_TYPE:
2771 {
2772 Unit* target = nullptr;
2773 if (unit->IsPlayer())
2774 {
2775 target = static_cast<FollowMovementGenerator<Player> const*>(movementGenerator)->GetTarget();
2776 }
2777 else
2778 {
2779 target = static_cast<FollowMovementGenerator<Creature> const*>(movementGenerator)->GetTarget();
2780 }
2781
2782 if (!target)
2783 {
2785 }
2786 else if (target->IsPlayer())
2787 {
2788 handler->PSendSysMessage(LANG_MOVEGENS_FOLLOW_PLAYER, target->GetName(), target->GetGUID().ToString());
2789 }
2790 else
2791 {
2792 handler->PSendSysMessage(LANG_MOVEGENS_FOLLOW_CREATURE, target->GetName(), target->GetGUID().ToString());
2793 }
2794 break;
2795 }
2796 case HOME_MOTION_TYPE:
2797 {
2798 if (unit->IsCreature())
2799 {
2801 }
2802 else
2803 {
2805 }
2806 break;
2807 }
2808 case FLIGHT_MOTION_TYPE:
2810 break;
2811 case POINT_MOTION_TYPE:
2812 {
2813 handler->PSendSysMessage(LANG_MOVEGENS_POINT, x, y, z);
2814 break;
2815 }
2818 break;
2821 break;
2822 case EFFECT_MOTION_TYPE:
2824 break;
2825 default:
2826 handler->PSendSysMessage(LANG_MOVEGENS_UNKNOWN, movementGenerator->GetMovementGeneratorType());
2827 break;
2828 }
2829 }
2830 return true;
2831 }
std::uint8_t uint8
Definition Define.h:109
@ LANG_MOVEGENS_FOLLOW_PLAYER
Definition Language.h:936
@ LANG_MOVEGENS_EFFECT
Definition Language.h:939
@ 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:937
@ LANG_MOVEGENS_FOLLOW_NULL
Definition Language.h:938
@ 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:66
@ 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:47
Definition TargetedMovementGenerator.h:91
Definition MotionMaster.h:137
_Ty GetMotionSlot(int slot) const
Definition MotionMaster.h:180
bool GetDestination(float &x, float &y, float &z)
Definition MotionMaster.cpp:1012
Definition MovementGenerator.h:28
virtual MovementGeneratorType GetMovementGeneratorType()=0
std::string const & GetName() const
Definition Object.h:524
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
2480 {
2481 std::string muteReasonStr{ muteReason };
2482
2483 if (notSpeakTime.empty())
2484 {
2485 return false;
2486 }
2487
2488 if (Acore::StringTo<int32>(notSpeakTime).value_or(0) < 0)
2489 {
2491 return false;
2492 }
2493
2494 if (muteReason.empty())
2495 {
2496 muteReasonStr = handler->GetAcoreString(LANG_NO_REASON);
2497 }
2498
2499 if (!player)
2500 {
2501 player = PlayerIdentifier::FromTarget(handler);
2502 }
2503
2504 if (!player)
2505 {
2507 return false;
2508 }
2509
2510 Player* target = player->GetConnectedPlayer();
2511 uint32 accountId = target ? target->GetSession()->GetAccountId() : sCharacterCache->GetCharacterAccountIdByGuid(player->GetGUID());
2512
2513 // find only player from same account if any
2514 if (!target)
2515 if (WorldSession* session = sWorldSessionMgr->FindSession(accountId))
2516 {
2517 target = session->GetPlayer();
2518 }
2519
2520 // must have strong lesser security level
2521 if (handler->HasLowerSecurity(target, player->GetGUID(), true))
2522 {
2523 return false;
2524 }
2525
2527 int32 muteDuration = TimeStringToSecs(notSpeakTime);
2528 if (muteDuration <= 0)
2529 {
2530 muteDuration = Acore::StringTo<int32>(notSpeakTime).value_or(0);
2531 }
2532
2533 if (muteDuration <= 0)
2534 {
2536 return false;
2537 }
2538
2539 std::string muteBy = "";
2540 if (handler->GetSession())
2541 {
2542 muteBy = handler->GetSession()->GetPlayerName();
2543 }
2544 else
2545 {
2546 muteBy = handler->GetAcoreString(LANG_CONSOLE);
2547 }
2548
2549 if (target)
2550 {
2551 // Target is online, mute will be in effect right away.
2552 int64 muteTime = GameTime::GetGameTime().count() + muteDuration;
2553 target->GetSession()->m_muteTime = muteTime;
2554 stmt->SetData(0, muteTime);
2555 std::string nameLink = handler->playerLink(player->GetName());
2556
2557 if (sWorld->getBoolConfig(CONFIG_SHOW_MUTE_IN_WORLD))
2558 {
2559 handler->SendWorldText(LANG_COMMAND_MUTEMESSAGE_WORLD, muteBy, nameLink, secsToTimeString(muteDuration, true), muteReasonStr);
2560 }
2561
2562 ChatHandler(target->GetSession()).PSendSysMessage(LANG_YOUR_CHAT_DISABLED, secsToTimeString(muteDuration, true), muteBy, muteReasonStr);
2563 }
2564 else
2565 {
2566 // Target is offline, mute will be in effect starting from the next login.
2567 stmt->SetData(0, -int32(muteDuration));
2568 }
2569
2570 stmt->SetData(1, muteReasonStr);
2571 stmt->SetData(2, muteBy);
2572 stmt->SetData(3, accountId);
2573 LoginDatabase.Execute(stmt);
2574
2575 stmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_ACCOUNT_MUTE);
2576 stmt->SetData(0, accountId);
2577 stmt->SetData(1, muteDuration / MINUTE);
2578 stmt->SetData(2, muteBy);
2579 stmt->SetData(3, muteReasonStr);
2580 LoginDatabase.Execute(stmt);
2581
2582 std::string nameLink = handler->playerLink(player->GetName());
2583
2584 if (sWorld->getBoolConfig(CONFIG_SHOW_MUTE_IN_WORLD) && !target)
2585 {
2586 handler->SendWorldText(LANG_COMMAND_MUTEMESSAGE_WORLD, muteBy, nameLink, secsToTimeString(muteDuration, true), muteReasonStr);
2587 }
2588 else
2589 {
2590 // pussywizard: notify all online GMs
2591 std::shared_lock<std::shared_mutex> lock(*HashMapHolder<Player>::GetLock());
2593 for (HashMapHolder<Player>::MapType::const_iterator itr = m.begin(); itr != m.end(); ++itr)
2594 if (itr->second->GetSession()->GetSecurity())
2595 ChatHandler(itr->second->GetSession()).PSendSysMessage(target ? LANG_YOU_DISABLE_CHAT : LANG_COMMAND_DISABLE_CHAT_DELAYED,
2596 (handler->GetSession() ? handler->GetSession()->GetPlayerName() : handler->GetAcoreString(LANG_CONSOLE)), nameLink, secsToTimeString(muteDuration, true), muteReasonStr);
2597 }
2598
2599 return true;
2600 }
#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:1306
@ LANG_YOU_DISABLE_CHAT
Definition Language.h:347
@ LANG_CONSOLE
Definition Language.h:1097
@ LOGIN_UPD_MUTE_TIME
Definition LoginDatabase.h:72
@ LOGIN_INS_ACCOUNT_MUTE
Definition LoginDatabase.h:114
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:91
#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:434
time_t m_muteTime
Definition WorldSession.h:566
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
2663 {
2664 if (!Utf8ToUpperOnlyLatin(accountName))
2665 {
2666 handler->SendErrorMessage(LANG_ACCOUNT_NOT_EXIST, accountName);
2667 return false;
2668 }
2669
2670 uint32 accountId = AccountMgr::GetId(accountName);
2671 if (!accountId)
2672 {
2673 handler->PSendSysMessage(LANG_ACCOUNT_NOT_EXIST, accountName);
2674 return false;
2675 }
2676
2677 return HandleMuteInfoHelper(handler, accountId, accountName.c_str());
2678 }
@ 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:2681
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
2682 {
2684 stmt->SetData(0, accountId);
2685 PreparedQueryResult result = LoginDatabase.Query(stmt);
2686
2687 if (!result)
2688 {
2689 handler->PSendSysMessage(LANG_COMMAND_MUTEHISTORY_EMPTY, accountName);
2690 return true;
2691 }
2692
2693 handler->PSendSysMessage(LANG_COMMAND_MUTEHISTORY, accountName);
2694 do
2695 {
2696 Field* fields = result->Fetch();
2697 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>());
2698 } while (result->NextRow());
2699
2700 return true;
2701 }
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:1123
@ LANG_COMMAND_MUTEHISTORY_EMPTY
Definition Language.h:1122
@ LANG_COMMAND_MUTEHISTORY
Definition Language.h:1121
@ LOGIN_SEL_ACCOUNT_MUTE_INFO
Definition LoginDatabase.h:115
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
1610 {
1611 TeamId teamId;
1612
1613 if (!team)
1614 {
1615 teamId = TEAM_NEUTRAL;
1616 }
1617 else if (StringEqualI(team->substr(0, 6), "horde"))
1618 {
1619 teamId = TEAM_HORDE;
1620 }
1621 else if (StringEqualI(team->substr(0, 9), "alliance"))
1622 {
1623 teamId = TEAM_ALLIANCE;
1624 }
1625 else
1626 {
1627 return false;
1628 }
1629
1630 Player* player = handler->GetSession()->GetPlayer();
1631 uint32 zone_id = player->GetZoneId();
1632
1633 GraveyardStruct const* graveyard = sGraveyard->GetClosestGraveyard(player, teamId);
1634
1635 if (graveyard)
1636 {
1637 uint32 graveyardId = graveyard->ID;
1638
1639 GraveyardData const* data = sGraveyard->FindGraveyardData(graveyardId, zone_id);
1640 if (!data)
1641 {
1642 handler->SendErrorMessage(LANG_COMMAND_GRAVEYARDERROR, graveyardId);
1643 return false;
1644 }
1645
1646 std::string team_name = handler->GetAcoreString(LANG_COMMAND_GRAVEYARD_NOTEAM);
1647
1648 if (data->teamId == TEAM_NEUTRAL)
1649 {
1650 team_name = handler->GetAcoreString(LANG_COMMAND_GRAVEYARD_ANY);
1651 }
1652 else if (data->teamId == TEAM_HORDE)
1653 {
1654 team_name = handler->GetAcoreString(LANG_COMMAND_GRAVEYARD_HORDE);
1655 }
1656 else if (data->teamId == TEAM_ALLIANCE)
1657 {
1658 team_name = handler->GetAcoreString(LANG_COMMAND_GRAVEYARD_ALLIANCE);
1659 }
1660
1661 handler->PSendSysMessage(LANG_COMMAND_GRAVEYARDNEAREST, graveyardId, team_name, zone_id);
1662 }
1663 else
1664 {
1665 std::string team_name;
1666
1667 if (teamId == TEAM_NEUTRAL)
1668 {
1669 team_name = handler->GetAcoreString(LANG_COMMAND_GRAVEYARD_ANY);
1670 }
1671 else if (teamId == TEAM_HORDE)
1672 {
1673 team_name = handler->GetAcoreString(LANG_COMMAND_GRAVEYARD_HORDE);
1674 }
1675 else if (teamId == TEAM_ALLIANCE)
1676 {
1677 team_name = handler->GetAcoreString(LANG_COMMAND_GRAVEYARD_ALLIANCE);
1678 }
1679
1680 handler->PSendSysMessage(LANG_COMMAND_ZONENOGRAFACTION, zone_id, team_name);
1681 }
1682
1683 return true;
1684 }
@ 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
3086 {
3087 if (GameObject* go = handler->GetPlayer()->FindNearestGameObjectOfType(GAMEOBJECT_TYPE_DOOR, range ? *range : 5.0f))
3088 {
3089 go->SetGoState(GO_STATE_ACTIVE);
3090 handler->PSendSysMessage(LANG_CMD_DOOR_OPENED, go->GetName(), go->GetEntry());
3091 return true;
3092 }
3093
3094 handler->SendErrorMessage(LANG_CMD_NO_DOOR_FOUND, range ? *range : 5.0f);
3095 return false;
3096 }
@ GO_STATE_ACTIVE
Definition GameObjectData.h:705
@ LANG_CMD_NO_DOOR_FOUND
Definition Language.h:1159
@ LANG_CMD_DOOR_OPENED
Definition Language.h:1160
@ GAMEOBJECT_TYPE_DOOR
Definition SharedDefines.h:1571
Player * GetPlayer() const
Definition Chat.cpp:36
Definition GameObject.h:120
GameObject * FindNearestGameObjectOfType(GameobjectTypes type, float range) const
Definition Object.cpp:2461

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

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

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
2468 {
2469 Player* player = handler->GetSession()->GetPlayer();
2470
2471 Acore::RespawnDo u_do;
2472 Acore::WorldObjectWorker<Acore::RespawnDo> worker(player, u_do);
2473 Cell::VisitObjects(player, worker, player->GetGridActivationRange());
2474
2475 return true;
2476 }
Definition GridNotifiers.h:636
float GetGridActivationRange() const
Definition Object.cpp:1649
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
2444 {
2445 Player* player = handler->GetSession()->GetPlayer();
2446
2447 Unit* target = handler->getSelectedUnit();
2448 if (player->GetTarget() && target)
2449 {
2450 if (!target->IsCreature() || target->IsPet())
2451 {
2453 return false;
2454 }
2455
2456 if (target->isDead())
2457 {
2458 target->ToCreature()->Respawn(true);
2459 }
2460 return true;
2461 }
2462
2464 return false;
2465 }
void Respawn(bool force=false)
Definition Creature.cpp:1991
bool IsPet() const
Definition Unit.h:787
bool isDead() const
Definition Unit.h:1775

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

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

Referenced by GetCommands().

◆ HandleSaveAllCommand()

static bool misc_commandscript::HandleSaveAllCommand ( ChatHandler handler)
inlinestatic
1427 {
1430 return true;
1431 }
@ 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
1396 {
1397 Player* player = handler->GetSession()->GetPlayer();
1398
1399 // save GM account without delay and output message
1400 if (handler->GetSession()->GetSecurity() >= SEC_GAMEMASTER)
1401 {
1402 if (Player* target = handler->getSelectedPlayer())
1403 {
1404 target->SaveToDB(false, false);
1405 }
1406 else
1407 {
1408 player->SaveToDB(false, false);
1409 }
1410
1412 return true;
1413 }
1414
1415 // save if the player has last been saved over 20 seconds ago
1416 uint32 saveInterval = sWorld->getIntConfig(CONFIG_INTERVAL_SAVE);
1417 if (saveInterval == 0 || (saveInterval > 20 * IN_MILLISECONDS && player->GetSaveTimer() <= saveInterval - 20 * IN_MILLISECONDS))
1418 {
1419 player->SaveToDB(false, false);
1420 }
1421
1422 return true;
1423 }
constexpr auto IN_MILLISECONDS
Definition Common.h:53
@ LANG_PLAYER_SAVED
Definition Language.h:46
@ CONFIG_INTERVAL_SAVE
Definition WorldConfig.h:168
void SaveToDB(bool create, bool logout)
Definition PlayerStorage.cpp:7054
uint32 GetSaveTimer() const
Definition Player.h:2365

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
1950 {
1951 uint32 skillID = uint32(skillId);
1952
1953 if (skillID <= 0)
1954 {
1955 handler->SendErrorMessage(LANG_INVALID_SKILL_ID, skillID);
1956 return false;
1957 }
1958
1959 Player* target = handler->getSelectedPlayer();
1960 if (!target)
1961 {
1963 return false;
1964 }
1965
1966 SkillLineEntry const* skillLine = sSkillLineStore.LookupEntry(skillID);
1967 if (!skillLine)
1968 {
1969 handler->SendErrorMessage(LANG_INVALID_SKILL_ID, uint32(skillID));
1970 return false;
1971 }
1972
1973 bool targetHasSkill = target->GetSkillValue(skillID);
1974
1975 // If our target does not yet have the skill they are trying to add to them, the chosen level also becomes
1976 // the max level of the new profession.
1977 uint16 max = maxPureSkill ? *maxPureSkill : targetHasSkill ? target->GetPureMaxSkillValue(skillID) : uint16(level);
1978
1979 if (level <= 0 || level > max || max <= 0)
1980 {
1981 return false;
1982 }
1983
1984 // If the player has the skill, we get the current skill step. If they don't have the skill, we
1985 // add the skill to the player's book with step 1 (which is the first rank, in most cases something
1986 // like 'Apprentice <skill>'.
1987 target->SetSkill(skillID, targetHasSkill ? target->GetSkillStep(skillID) : 1, level, max);
1988 handler->PSendSysMessage(LANG_SET_SKILL, skillID, skillLine->name[handler->GetSessionDbcLocale()], handler->GetNameLink(target), level, max);
1989 return true;
1990 }
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:5443
uint16 GetSkillStep(uint16 skill) const
Definition Player.cpp:5431
uint16 GetPureMaxSkillValue(uint32 skill) const
Definition Player.cpp:5478
void SetSkill(uint16 id, uint16 step, uint16 currVal, uint16 maxVal)
Definition Player.cpp:5322
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
1687 {
1688 Player* playerTarget = handler->getSelectedPlayer();
1689 if (!playerTarget)
1690 {
1692 return false;
1693 }
1694
1695 AreaTableEntry const* area = sAreaTableStore.LookupEntry(areaID);
1696 if (!area)
1697 {
1699 return false;
1700 }
1701
1702 int32 offset = area->exploreFlag / 32;
1703 if (offset >= PLAYER_EXPLORED_ZONES_SIZE)
1704 {
1706 return false;
1707 }
1708
1709 uint32 val = uint32((1 << (area->exploreFlag % 32)));
1710 uint32 currFields = playerTarget->GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset);
1711 playerTarget->SetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset, uint32((currFields | val)));
1712
1714 return true;
1715 }
@ 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
206 {
207 auto tokens = args;
208
209 if (args.empty() || !tokens.size())
210 {
211 handler->SetSentErrorMessage(true);
212 return false;
213 }
214
215 auto tokensItr = tokens.begin();
216
217 std::vector<BattlegroundTypeId> allowedArenas;
218 std::string_view arenasStr = *(tokensItr++);
219
220 auto arenaTokens = Acore::Tokenize(arenasStr, ',', false);
221 for (auto const& arenaName : arenaTokens)
222 {
223 if (arenaName == "all")
224 {
225 if (arenaTokens.size() > 1)
226 {
227 handler->SendErrorMessage("Invalid [arena] specified.");
228 return false;
229 }
230
231 allowedArenas.emplace_back(BATTLEGROUND_NA);
232 allowedArenas.emplace_back(BATTLEGROUND_BE);
233 allowedArenas.emplace_back(BATTLEGROUND_RL);
234 allowedArenas.emplace_back(BATTLEGROUND_DS);
235 allowedArenas.emplace_back(BATTLEGROUND_RV);
236 }
237 else if (arenaName == "NA")
238 {
239 allowedArenas.emplace_back(BATTLEGROUND_NA);
240 }
241 else if (arenaName == "BE")
242 {
243 allowedArenas.emplace_back(BATTLEGROUND_BE);
244 }
245 else if (arenaName == "RL")
246 {
247 allowedArenas.emplace_back(BATTLEGROUND_RL);
248 }
249 else if (arenaName == "DS")
250 {
251 allowedArenas.emplace_back(BATTLEGROUND_DS);
252 }
253 else if (arenaName == "RV")
254 {
255 allowedArenas.emplace_back(BATTLEGROUND_RV);
256 }
257 else
258 {
259 handler->SendErrorMessage("Invalid [arena] specified.");
260 return false;
261 }
262 }
263
264 ASSERT(!allowedArenas.empty());
265 BattlegroundTypeId randomizedArenaBgTypeId = Acore::Containers::SelectRandomContainerElement(allowedArenas);
266
267 uint8 count = 0;
268 if (tokensItr != tokens.end())
269 {
270 std::string_view mode = *(tokensItr++);
271
272 if (mode == "1v1")
273 {
274 count = 2;
275 }
276 else if (mode == "2v2")
277 {
278 count = 4;
279 }
280 else if (mode == "3v3")
281 {
282 count = 6;
283 }
284 else if (mode == "5v5")
285 {
286 count = 10;
287 }
288 }
289
290 if (!count)
291 {
292 handler->SendErrorMessage("Invalid bracket. Can be 1v1, 2v2, 3v3, 5v5");
293 return false;
294 }
295
296 if (tokens.size() != uint16(count + 2))
297 {
298 handler->SendErrorMessage("Invalid number of nicknames for this bracket.");
299 return false;
300 }
301
302 uint8 hcnt = count / 2;
303 uint8 error = 0;
304 std::string last_name;
305 Player* plr = nullptr;
306 std::array<Player*, 10> players = {};
307 uint8 cnt = 0;
308
309 for (; tokensItr != tokens.end(); ++tokensItr)
310 {
311 last_name = std::string(*tokensItr);
312 plr = ObjectAccessor::FindPlayerByName(last_name, false);
313
314 if (!plr)
315 {
316 error = 1;
317 break;
318 }
319
320 if (!plr->IsInWorld() || !plr->FindMap() || plr->IsBeingTeleported())
321 {
322 error = 2;
323 break;
324 }
325
326 if (plr->GetMap()->GetEntry()->Instanceable())
327 {
328 error = 3;
329 break;
330 }
331
332 if (plr->IsUsingLfg())
333 {
334 error = 4;
335 break;
336 }
337
338 if (plr->InBattlegroundQueue())
339 {
340 error = 5;
341 break;
342 }
343
344 if (plr->IsInFlight())
345 {
346 error = 10;
347 break;
348 }
349
350 if (!plr->IsAlive())
351 {
352 error = 11;
353 break;
354 }
355
356 const Group* g = plr->GetGroup();
357
358 if (hcnt > 1)
359 {
360 if (!g)
361 {
362 error = 6;
363 break;
364 }
365
366 if (g->isRaidGroup() || g->isBGGroup() || g->isBFGroup() || g->isLFGGroup())
367 {
368 error = 7;
369 break;
370 }
371
372 if (g->GetMembersCount() != hcnt)
373 {
374 error = 8;
375 break;
376 }
377
378 uint8 sti = (cnt < hcnt ? 0 : hcnt);
379 if (sti != cnt && players[sti]->GetGroup() != plr->GetGroup())
380 {
381 error = 9;
382 last_name += " and " + players[sti]->GetName();
383 break;
384 }
385 }
386 else // 1v1
387 {
388 if (g)
389 {
390 error = 12;
391 break;
392 }
393 }
394
395 players[cnt++] = plr;
396 }
397
398 for (uint8 i = 0; i < cnt && !error; ++i)
399 {
400 for (uint8 j = i + 1; j < cnt; ++j)
401 {
402 if (players[i]->GetGUID() == players[j]->GetGUID())
403 {
404 last_name = players[i]->GetName();
405 error = 13;
406 break;
407 }
408 }
409 }
410
411 switch (error)
412 {
413 case 1:
414 handler->PSendSysMessage("Player {} not found.", last_name);
415 break;
416 case 2:
417 handler->PSendSysMessage("Player {} is being teleported.", last_name);
418 break;
419 case 3:
420 handler->PSendSysMessage("Player {} is in instance/battleground/arena.", last_name);
421 break;
422 case 4:
423 handler->PSendSysMessage("Player {} is in LFG system.", last_name);
424 break;
425 case 5:
426 handler->PSendSysMessage("Player {} is queued for battleground/arena.", last_name);
427 break;
428 case 6:
429 handler->PSendSysMessage("Player {} is not in group.", last_name);
430 break;
431 case 7:
432 handler->PSendSysMessage("Player {} is not in normal group.", last_name);
433 break;
434 case 8:
435 handler->PSendSysMessage("Group of player {} has invalid member count.", last_name);
436 break;
437 case 9:
438 handler->PSendSysMessage("Players {} are not in the same group.", last_name);
439 break;
440 case 10:
441 handler->PSendSysMessage("Player {} is in flight.", last_name);
442 break;
443 case 11:
444 handler->PSendSysMessage("Player {} is dead.", last_name);
445 break;
446 case 12:
447 handler->PSendSysMessage("Player {} is in a group.", last_name);
448 break;
449 case 13:
450 handler->PSendSysMessage("Player {} occurs more than once.", last_name);
451 break;
452 }
453
454 if (error)
455 {
456 handler->SetSentErrorMessage(true);
457 return false;
458 }
459
460 Battleground* bgt = sBattlegroundMgr->GetBattlegroundTemplate(BATTLEGROUND_AA);
461 if (!bgt)
462 {
463 handler->SendErrorMessage("Couldn't create arena map!");
464 return false;
465 }
466
467 Battleground* bg = sBattlegroundMgr->CreateNewBattleground(randomizedArenaBgTypeId, GetBattlegroundBracketById(bgt->GetMapId(), bgt->GetBracketId()), ArenaType(hcnt >= 2 ? hcnt : 2), false);
468 if (!bg)
469 {
470 handler->SendErrorMessage("Couldn't create arena map!");
471 return false;
472 }
473
474 bg->StartBattleground();
475
476 BattlegroundTypeId bgTypeId = bg->GetBgTypeID();
477
478 TeamId teamId1 = Player::TeamIdForRace(players[0]->getRace());
479 TeamId teamId2 = (teamId1 == TEAM_ALLIANCE ? TEAM_HORDE : TEAM_ALLIANCE);
480
481 for (uint8 i = 0; i < cnt; ++i)
482 {
483 Player* player = players[i];
484
485 TeamId teamId = (i < hcnt ? teamId1 : teamId2);
486 player->SetEntryPoint();
487
488 uint32 queueSlot = 0;
489 WorldPacket data;
490 sBattlegroundMgr->BuildBattlegroundStatusPacket(&data, bg, queueSlot, STATUS_IN_PROGRESS, 0, bg->GetStartTime(), bg->GetArenaType(), teamId);
491 player->SendDirectMessage(&data);
492
493 // Remove from LFG queues
494 sLFGMgr->LeaveAllLfgQueues(player->GetGUID(), false);
495
496 player->SetBattlegroundId(bg->GetInstanceID(), bgTypeId, queueSlot, true, false, teamId);
497 sBattlegroundMgr->SendToBattleground(player, bg->GetInstanceID(), bgTypeId);
498 }
499
500 handler->PSendSysMessage("Success! Players are now being teleported to the arena.");
501 return true;
502 }
#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:646
BattlegroundTypeId
Definition SharedDefines.h:3735
@ BATTLEGROUND_AA
Definition SharedDefines.h:3742
@ BATTLEGROUND_BE
Definition SharedDefines.h:3741
@ BATTLEGROUND_RV
Definition SharedDefines.h:3747
@ BATTLEGROUND_NA
Definition SharedDefines.h:3740
@ BATTLEGROUND_DS
Definition SharedDefines.h:3746
@ BATTLEGROUND_RL
Definition SharedDefines.h:3744
Definition Battleground.h:294
uint32 GetMapId() const
Definition Battleground.h:436
uint8 GetArenaType() const
Definition Battleground.h:348
void StartBattleground()
Definition Battleground.cpp: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:170
bool IsInWorld() const
Definition Object.h:108
static TeamId TeamIdForRace(uint8 race)
Definition Player.cpp:5823
void SendDirectMessage(WorldPacket const *data) const
Definition Player.cpp:5685
bool InBattlegroundQueue(bool ignoreArena=false) const
Definition Player.cpp:12193
bool IsUsingLfg()
Definition Player.cpp:13069
Map * FindMap() const
Definition Object.h:621
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
3073 {
3074 if (!id)
3075 {
3077 return false;
3078 }
3079
3080 std::string str = sObjectMgr->GetAcoreString(id, locale ? static_cast<LocaleConstant>(*locale) : DEFAULT_LOCALE);
3081 handler->SendSysMessage(str);
3082 return true;
3083 }
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
956 {
957 if (!target)
958 {
959 target = PlayerIdentifier::FromTarget(handler);
960 }
961
962 if (!target)
963 {
964 return false;
965 }
966
967 Player* _player = handler->GetSession()->GetPlayer();
968 if (target->GetGUID() == _player->GetGUID())
969 {
971 return false;
972 }
973
974 std::string nameLink = handler->playerLink(target->GetName());
975
976 if (target->IsConnected())
977 {
978 auto targetPlayer = target->GetConnectedPlayer();
979
980 // check online security
981 if (handler->HasLowerSecurity(targetPlayer))
982 {
983 return false;
984 }
985
986 if (targetPlayer->IsBeingTeleported())
987 {
988 handler->SendErrorMessage(LANG_IS_TELEPORTED, nameLink);
989 return false;
990 }
991
992 Map* map = handler->GetSession()->GetPlayer()->GetMap();
993
994 if (map->IsBattlegroundOrArena())
995 {
996 handler->SendErrorMessage("Can't summon to a battleground!");
997 return false;
998 }
999 else if (map->IsDungeon())
1000 {
1001 // Allow GM to summon players or only other GM accounts inside instances.
1002 if (!sWorld->getBoolConfig(CONFIG_INSTANCE_GMSUMMON_PLAYER))
1003 {
1004 // pussywizard: prevent unbinding normal player's perm bind by just summoning him >_>
1005 if (!targetPlayer->GetSession()->GetSecurity())
1006 {
1007 handler->SendErrorMessage("Only GMs can be summoned to an instance!");
1008 return false;
1009 }
1010 }
1011
1012 Map* destMap = targetPlayer->GetMap();
1013
1014 if (destMap->Instanceable() && destMap->GetInstanceId() != map->GetInstanceId())
1015 {
1016 sInstanceSaveMgr->PlayerUnbindInstance(target->GetGUID(), map->GetInstanceId(), targetPlayer->GetDungeonDifficulty(), true, targetPlayer);
1017 }
1018
1019 // we are in an instance, and can only summon players in our group with us as leader
1020 if (!handler->GetSession()->GetPlayer()->GetGroup() || !targetPlayer->GetGroup() ||
1021 (targetPlayer->GetGroup()->GetLeaderGUID() != handler->GetSession()->GetPlayer()->GetGUID()) ||
1022 (handler->GetSession()->GetPlayer()->GetGroup()->GetLeaderGUID() != handler->GetSession()->GetPlayer()->GetGUID()))
1023 // the last check is a bit excessive, but let it be, just in case
1024 {
1025 handler->SendErrorMessage(LANG_CANNOT_SUMMON_TO_INST, nameLink);
1026 return false;
1027 }
1028 }
1029
1030 handler->PSendSysMessage(LANG_SUMMONING, nameLink, "");
1031 if (handler->needReportToTarget(targetPlayer))
1032 {
1033 ChatHandler(targetPlayer->GetSession()).PSendSysMessage(LANG_SUMMONED_BY, handler->playerLink(_player->GetName()));
1034 }
1035
1036 // stop flight if need
1037 if (targetPlayer->IsInFlight())
1038 {
1039 targetPlayer->GetMotionMaster()->MovementExpired();
1040 targetPlayer->CleanupAfterTaxiFlight();
1041 }
1042 // save only in non-flight case
1043 else
1044 {
1045 targetPlayer->SaveRecallPosition();
1046 }
1047
1048 // before GM
1049 float x, y, z;
1050 handler->GetSession()->GetPlayer()->GetClosePoint(x, y, z, targetPlayer->GetObjectSize());
1051 targetPlayer->TeleportTo(handler->GetSession()->GetPlayer()->GetMapId(), x, y, z, targetPlayer->GetOrientation(), 0, handler->GetSession()->GetPlayer());
1052 }
1053 else
1054 {
1055 // check offline security
1056 if (handler->HasLowerSecurity(nullptr, target->GetGUID()))
1057 {
1058 return false;
1059 }
1060
1061 handler->PSendSysMessage(LANG_SUMMONING, nameLink, handler->GetAcoreString(LANG_OFFLINE));
1062
1063 // in point where GM stay
1065 handler->GetSession()->GetPlayer()->GetPositionX(),
1066 handler->GetSession()->GetPlayer()->GetPositionY(),
1067 handler->GetSession()->GetPlayer()->GetPositionZ(),
1068 handler->GetSession()->GetPlayer()->GetOrientation(),
1069 handler->GetSession()->GetPlayer()->GetZoneId(),
1070 target->GetGUID());
1071 }
1072
1073 return true;
1074 }
@ 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:84

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

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
3053 {
3054 Player* player = handler->GetSession()->GetPlayer();
3055
3056 if (player->isPossessing())
3057 {
3058 return false;
3059 }
3060
3061 player->StopCastingBindSight();
3062 return true;
3063 }
void StopCastingBindSight(Aura *except=nullptr)
Definition Player.cpp:13157
bool isPossessing() const
Definition Unit.h:1298

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
2961 {
2962 Creature* creatureTarget = handler->getSelectedCreature();
2963
2964 if (!target && !creatureTarget)
2965 {
2966 target = PlayerIdentifier::FromTargetOrSelf(handler);
2967 }
2968
2969 if (!target && !creatureTarget)
2970 {
2972 return false;
2973 }
2974
2975 Player* playerTarget = target->GetConnectedPlayer();
2976
2977 if (!creatureTarget && playerTarget && playerTarget->HasAura(SPELL_FREEZE))
2978 {
2979 handler->PSendSysMessage(LANG_COMMAND_UNFREEZE, target->GetName());
2980 playerTarget->RemoveAurasDueToSpell(SPELL_FREEZE);
2981 return true;
2982 }
2983 else if (creatureTarget && creatureTarget->HasAura(SPELL_FREEZE))
2984 {
2986 creatureTarget->RemoveAurasDueToSpell(SPELL_FREEZE);
2987 return true;
2988 }
2989 else if (!creatureTarget && target && !target->IsConnected())
2990 {
2992 stmt->SetData(0, target->GetGUID().GetCounter());
2993 CharacterDatabase.Execute(stmt);
2994 handler->PSendSysMessage(LANG_COMMAND_UNFREEZE, target->GetName());
2995 return true;
2996 }
2997
2999 return true;
3000 }
@ CHAR_DEL_CHAR_AURA_FROZEN
Definition CharacterDatabase.h:355
@ LANG_COMMAND_UNFREEZE
Definition Language.h:1060
@ LANG_COMMAND_FREEZE_WRONG
Definition Language.h:1059
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint8 reqEffMask=0) const
Definition Unit.cpp:5851

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
2604 {
2605 if (!target)
2606 {
2607 target = PlayerIdentifier::FromTargetOrSelf(handler);
2608 }
2609
2610 if (!target)
2611 {
2612 return false;
2613 }
2614
2615 Player* playerTarget = target->GetConnectedPlayer();
2616 uint32 accountId = playerTarget ? playerTarget->GetSession()->GetAccountId() : sCharacterCache->GetCharacterAccountIdByGuid(target->GetGUID());
2617
2618 // find only player from same account if any
2619 if (!playerTarget)
2620 {
2621 if (WorldSession* session = sWorldSessionMgr->FindSession(accountId))
2622 {
2623 playerTarget = session->GetPlayer();
2624 }
2625 }
2626
2627 // must have strong lesser security level
2628 if (handler->HasLowerSecurity(playerTarget, target->GetGUID(), true))
2629 {
2630 return false;
2631 }
2632
2633 if (playerTarget)
2634 {
2635 if (playerTarget->CanSpeak())
2636 {
2638 return false;
2639 }
2640
2641 playerTarget->GetSession()->m_muteTime = 0;
2642 }
2643
2645 stmt->SetData(0, 0);
2646 stmt->SetData(1, "");
2647 stmt->SetData(2, "");
2648 stmt->SetData(3, accountId);
2649 LoginDatabase.Execute(stmt);
2650
2651 if (playerTarget)
2652 {
2654 }
2655
2656 handler->PSendSysMessage(LANG_YOU_ENABLE_CHAT, handler->playerLink(target->GetName()));
2657
2658 return true;
2659 }
@ 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:69

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
3029 {
3030 Unit* unit = handler->getSelectedUnit();
3031 if (!unit)
3032 {
3033 unit = handler->GetSession()->GetPlayer();
3034 }
3035
3036 unit->RemoveCharmAuras();
3037 return true;
3038 }
void RemoveCharmAuras()
Definition Unit.cpp:11415

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

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: