39 static std::vector<ChatCommand> debugPlayCommandTable =
45 static std::vector<ChatCommand> debugSendCommandTable =
58 static std::vector<ChatCommand> boatCommandTable =
63 static std::vector<ChatCommand> debugLfgCommandTable =
69 static std::vector<ChatCommand> debugCommandTable =
101 static std::vector<ChatCommand> commandTable =
114 handler->
SendSysMessage(
"Enable battleground debug mode with .debug bg before using boat debug commands.");
123 handler->
SendSysMessage(
"Boat debug commands require an in-game player session.");
131 handler->
SendSysMessage(
"Boat debug commands can only be used inside Strand of the Ancients.");
148 handler->
SendSysMessage(
"SOTA boat debug start failed: one or more boat objects are missing.");
153 handler->
SendSysMessage(
"SOTA boat debug timer started. Use .boat stop to freeze boats and log elapsed time.");
166 handler->
SendSysMessage(
"SOTA boat debug stop failed: one or more boat objects are missing.");
171 handler->
SendSysMessage(
"SOTA boat debug timer stopped and written to the packet log.");
182 session->SendLfgPlayerLockInfo();
189 handler->
PSendSysMessage(
"LFG requirement override is currently %s server-wide.",
sLFGMgr->IsDebugRequirementOverrideEnabled() ?
"ON" :
"OFF");
195 if (!stricmp(args,
"on"))
197 sLFGMgr->SetDebugRequirementOverride(
true);
199 handler->
SendSysMessage(
"LFG requirement override is ON server-wide.");
203 if (!stricmp(args,
"off"))
205 sLFGMgr->SetDebugRequirementOverride(
false);
207 handler->
SendSysMessage(
"LFG requirement override is OFF server-wide.");
218 if (!*args || !stricmp(args,
"status"))
220 handler->
PSendSysMessage(
"LFG flex raid minimum override is currently %s server-wide.",
sLFGMgr->IsDebugFlexRaidMinimumOverrideEnabled() ?
"ON" :
"OFF");
225 if (!stricmp(args,
"on"))
227 sLFGMgr->SetDebugFlexRaidMinimumOverride(
true);
228 handler->
SendSysMessage(
"LFG flex raid minimum override is ON server-wide.");
232 if (!stricmp(args,
"off"))
234 sLFGMgr->SetDebugFlexRaidMinimumOverride(
false);
235 handler->
SendSysMessage(
"LFG flex raid minimum override is OFF server-wide.");
250 handler->
SendSysMessage(
"Usage: .debug lfg group raid|party|status");
265 handler->
SendSysMessage(
"Only the group leader can convert the group.");
270 if (!*args || !stricmp(args,
"status"))
274 for (Group::MemberSlotList::const_iterator itr = slots.begin(); itr != slots.end(); ++itr)
282 handler->
PSendSysMessage(
"Members missing LFG roles: %u.", missingRoles);
283 handler->
SendSysMessage(
"Usage: .debug lfg group raid|party|status");
287 if (!stricmp(args,
"raid"))
294 for (Group::MemberSlotList::const_iterator itr = slots.begin(); itr != slots.end(); ++itr)
308 handler->
PSendSysMessage(
"Seeded %u missing LFG role(s) as damage for flex raid testing.", seededRoles);
312 if (!stricmp(args,
"party"))
328 handler->
SendSysMessage(
"Usage: .debug lfg group raid|party|status");
344 uint32 id = atoi((
char*)args);
368 uint32 id = atoi((
char*)args);
393 uint32 soundId = atoi((
char*)args);
424 char* result = strtok((
char*)args,
" ");
429 if (failNum == 0 && *result !=
'0')
432 char* fail1 = strtok(NULL,
" ");
433 uint8 failArg1 = fail1 ? (
uint8)atoi(fail1) : 0;
435 char* fail2 = strtok(NULL,
" ");
436 uint8 failArg2 = fail2 ? (
uint8)atoi(fail2) : 0;
441 data <<
uint8(failNum);
484 char* w = strtok((
char*)args,
" ");
485 char* s = strtok(NULL,
" ");
518 char const* name =
"test";
519 uint8 code = atoi(args);
536 char const* msg =
"testtest";
537 uint8 type = atoi(args);
546 uint32 msg = atol((
char*)args);
557 handler->
PSendSysMessage(
"Loot recipient for creature %s (GUID %u, DB GUID %u) is %s",
575 std::string itemState = args;
578 bool listQueue =
false;
579 bool checkAll =
false;
581 if (itemState ==
"unchanged")
583 else if (itemState ==
"changed")
585 else if (itemState ==
"new")
587 else if (itemState ==
"removed")
589 else if (itemState ==
"queue")
591 else if (itemState ==
"check_all")
600 if (!listQueue && !checkAll)
602 itemState =
"The player has the following " + itemState +
" items: ";
613 for (
uint8 j = 0; j < bag->GetBagSize(); ++j)
614 if (
Item* item2 = bag->GetItemByPos(j))
615 if (item2->GetState() == state)
616 handler->
PSendSysMessage(
"bag: 255 slot: %d guid: %d owner: %d", item2->GetSlot(), item2->GetGUIDLow(),
GUID_LOPART(item2->GetOwnerGUID()));
618 else if (item->GetState() == state)
619 handler->
PSendSysMessage(
"bag: 255 slot: %d guid: %d owner: %d", item->GetSlot(), item->GetGUIDLow(),
GUID_LOPART(item->GetOwnerGUID()));
627 for (
size_t i = 0; i < updateQueue.size(); ++i)
629 Item* item = updateQueue[i];
655 if (updateQueue.empty())
688 handler->
PSendSysMessage(
"The item with slot %d and guid %d has a container (slot: %d, guid: %d) but shouldn't!", item->
GetSlot(), item->
GetGUIDLow(), container->GetSlot(), container->GetGUIDLow());
696 if (qp > updateQueue.size())
698 handler->
PSendSysMessage(
"The item with slot %d and guid %d has its queuepos (%d) larger than the update queue size! ", item->
GetSlot(), item->
GetGUIDLow(), qp);
703 if (updateQueue[qp] == NULL)
705 handler->
PSendSysMessage(
"The item with slot %d and guid %d has its queuepos (%d) pointing to NULL in the queue!", item->
GetSlot(), item->
GetGUIDLow(), qp);
710 if (updateQueue[qp] != item)
712 handler->
PSendSysMessage(
"The item with slot %d and guid %d has a queuepos (%d) that points to another item in the queue (bag: %d, slot: %d, guid: %d)", item->
GetSlot(), item->
GetGUIDLow(), qp, updateQueue[qp]->GetBagSlot(), updateQueue[qp]->GetSlot(), updateQueue[qp]->GetGUIDLow());
726 for (
uint8 j = 0; j < bag->GetBagSize(); ++j)
728 Item* item2 = bag->GetItemByPos(j);
734 handler->
PSendSysMessage(
"The item in bag %d and slot %d (guid: %d) has an incorrect slot value: %d", bag->GetSlot(), j, item2->
GetGUIDLow(), item2->
GetSlot());
754 if (container != bag)
764 if (qp > updateQueue.size())
766 handler->
PSendSysMessage(
"The item in bag %d at slot %d having guid %d has a queuepos (%d) larger than the update queue size! ", bag->GetSlot(), item2->
GetSlot(), item2->
GetGUIDLow(), qp);
771 if (updateQueue[qp] == NULL)
773 handler->
PSendSysMessage(
"The item in bag %d at slot %d having guid %d has a queuepos (%d) that points to NULL in the queue!", bag->GetSlot(), item2->
GetSlot(), item2->
GetGUIDLow(), qp);
778 if (updateQueue[qp] != item2)
780 handler->
PSendSysMessage(
"The item in bag %d at slot %d having guid %d has a queuepos (%d) that points to another item in the queue (bag: %d, slot: %d, guid: %d)", bag->GetSlot(), item2->
GetSlot(), item2->
GetGUIDLow(), qp, updateQueue[qp]->GetBagSlot(), updateQueue[qp]->GetSlot(), updateQueue[qp]->GetGUIDLow());
795 for (
size_t i = 0; i < updateQueue.size(); ++i)
797 Item* item = updateQueue[i];
860 ThreatContainer::StorageType::const_iterator itr;
863 for (itr = threatList.begin(); itr != threatList.end(); ++itr)
865 Unit* unit = (*itr)->getTarget();
888 handler->
PSendSysMessage(
" %u. %s (guid %u) - threat %f", count, unit->GetName().c_str(), unit->GetGUIDLow(), ref->
getThreat());
905 char* i = strtok((
char*)args,
" ");
924 char* i = strtok((
char*)args,
" ");
928 char* j = strtok(NULL,
" ");
931 int8 seatId = j ? (
int8)atoi(j) : -1;
941 if (!passenger || passenger == target)
955 char* e = strtok((
char*)args,
" ");
956 char* i = strtok(NULL,
" ");
1001 const char* stuffingString =
"This is a dummy string to push the packet's size beyond 128000 bytes. ";
1002 std::ostringstream ss;
1003 while (ss.str().size() < 128000)
1004 ss << stuffingString;
1014 char* t = strtok((
char*)args,
" ");
1015 char* p = strtok(NULL,
" ");
1020 std::set<uint32> terrainswap;
1021 std::set<uint32> phaseId;
1022 std::set<uint32> worldMapArea;
1024 terrainswap.insert((
uint32)atoi(t));
1027 phaseId.insert((
uint32)atoi(p));
1038 char* e = strtok((
char*)args,
" ");
1039 char* f = strtok(NULL,
" ");
1057 handler->
PSendSysMessage(
"Item %u: value at %u is %u", guid, index, value);
1067 char* e = strtok((
char*)args,
" ");
1068 char* f = strtok(NULL,
" ");
1069 char* g = strtok(NULL,
" ");
1096 char* e = strtok((
char*)args,
" ");
1119 uint32 animId = atoi((
char*)args);
1148 int32 state = atoi((
char*)args);
1152 for (
int i = 1; i <= 32; ++i)
1166 char* x = strtok((
char*)args,
" ");
1167 char* y = strtok(NULL,
" ");
1168 char* z = strtok(NULL,
" ");
1190 bool isInt32 =
true;
1192 isInt32 = (bool)atoi(z);
1202 float value = (float)atof(y);
1215 char* x = strtok((
char*)args,
" ");
1216 char* z = strtok(NULL,
" ");
1238 bool isInt32 =
true;
1240 isInt32 = (bool)atoi(z);
1261 char* x = strtok((
char*)args,
" ");
1262 char* y = strtok(NULL,
" ");
1268 int value = atoi(y);
1278 currentValue += value;
1294 char* index = strtok((
char*)args,
" ");
1307 updateIndex = atoi(index);
1317 char* val = strtok(NULL,
" ");
1348 char* x = strtok((
char*)args,
" ");
1349 char* y = strtok(NULL,
" ");
1359 uint32 value = val ? 1 << (val - 1) : 0;
1379 char* mask1 = strtok((
char*)args,
" ");
1383 char* mask2 = strtok(NULL,
" \n");
1445 bounds.
X = restArea.
X;
1446 bounds.
Y = restArea.
Y;
1447 bounds.
Z = restArea.
Z;
1465 handler->
PSendSysMessage(
"Rest state: flag=%s type=%u (%s) bonus=%.2f",
1467 handler->
PSendSysMessage(
"Position: map=%u zone=%u area=%u x=%.2f y=%.2f z=%.2f o=%.2f",
1474 hasStoredBounds ?
"yes" :
"no",
1495 SF_LOG_INFO(
"sql.dev",
"(@PATH, XX, %.3f, %.3f, %.5f, 0, 0, 0, 100, 0),", player->
GetPositionX(), player->
GetPositionY(), player->
GetPositionZ());
1497 handler->
PSendSysMessage(
"Waypoint SQL written to SQL Developer log");
1508 if (!stricmp(args,
"stop"))
1510 else if (!stricmp(args,
"start"))
1521 handler->
PSendSysMessage(
"Transport %s %s", transport->
GetName().c_str(), start ?
"started" :
"stopped");
DBCStorage< MovieEntry > sMovieStore(MovieEntryfmt)
DBCStorage< VehicleEntry > sVehicleStore(VehicleEntryfmt)
DBCStorage< SoundEntriesEntry > sSoundEntriesStore(SoundEntriesfmt)
DBCStorage< CinematicSequencesEntry > sCinematicSequencesStore(CinematicSequencesEntryfmt)
@ LANG_CHANGE_32BIT_FIELD
@ LANG_DEBUG_AREATRIGGER_ON
@ LANG_CINEMATIC_NOT_EXIST
@ LANG_SELECT_CHAR_OR_CREATURE
@ LANG_DEBUG_AREATRIGGER_OFF
#define SF_LOG_INFO(filterType__,...)
uint32 GUID_LOPART(uint64 x)
uint64 MAKE_NEW_GUID(uint32 l, uint32 e, uint32 h)
#define INVENTORY_SLOT_BAG_0
@ PLAYER_FIELD_PLAYER_FLAGS
BattlegroundTypeId GetTypeID(bool GetRandom=false) const
Class for manage Strand of Ancient battleground.
bool DebugStartBoats(Player *player)
bool DebugStopBoats(Player *player)
std::string GetBoatDebugStatus()
Player * getSelectedPlayer()
WorldSession * GetSession()
Creature * getSelectedCreature()
void PSendSysMessage(const char *format,...) ATTR_PRINTF(2
static size_t BuildChatPacket(WorldPacket &data, ChatMsg chatType, Language language, ObjectGuid senderGUID, ObjectGuid receiverGUID, std::string const &message, uint8 chatTag, std::string const &senderName="", std::string const &receiverName="", uint32 achievementId=0, bool gmMessage=false, std::string const &channelName="", std::string const &addonPrefix="")
void SetSentErrorMessage(bool val)
WorldObject * getSelectedObject()
virtual void SendSysMessage(const char *str)
CommandScript(const char *name)
uint32 GetDBTableGUIDLow() const
bool hasLootRecipient() const
Player * GetLootRecipient() const
bool Create(uint32 guidlow, Map *map, uint32 Entry, uint32 vehId, uint32 team, float x, float y, float z, float ang, const CreatureData *data=NULL)
GOState GetGoState() const
MemberSlotList const & GetMemberSlots() const
std::list< MemberSlot > MemberSlotList
uint32 GetMembersCount() const
void SetMemberRole(uint64 guid, uint32 role)
bool IsLeader(uint64 guid) const
static SF_SHARED_MUTEX * GetLock()
UNORDERED_MAP< uint64, T * > MapType
HostileReference * getFirst()
HostileReference * next()
ItemTemplate const * GetTemplate() const
ItemUpdateState GetState() const
uint16 GetQueuePos() const
uint64 GetOwnerGUID() const
bool IsInUpdateQueue() const
uint32 GetUInt32Value(uint16 index) const
uint32 GetGUIDLow() const
float GetFloatValue(uint16 index) const
void SetFloatValue(uint16 index, float value)
bool HasFlag(uint16 index, uint32 flag) const
void SetUInt32Value(uint16 index, uint32 value)
uint16 GetValuesCount() const
void SendEquipError(InventoryResult msg, Item *pItem, Item *pItem2=NULL, uint32 itemid=0)
void SendCinematicStart(uint32 CinematicSequenceId)
float GetInnAreaBoxOrientation() const
void SendCanTakeQuestResponse(QuestFailedReason msg) const
void SendSellResponse(SellResult msg, ObjectGuid VendorGUID, ObjectGuid ItemGUID)
void SendUpdateWorldState(uint32 Field, uint32 Value)
Item * GetItemByGuid(uint64 guid) const
Item * GetItemByPos(uint16 pos) const
void DestroyItem(uint8 bag, uint8 slot, bool update)
Battleground * GetBattleground() const
float GetInnAreaRadius() const
void SendMovieStart(uint32 MovieId)
void SendPushToPartyResponse(Player *player, uint8 msg)
std::vector< Item * > & GetItemUpdateQueue()
float GetInnAreaBoxY() const
float GetInnAreaBoxZ() const
float GetInnAreaBoxX() const
bool IsInCurrentInnArea(float padding=0.0f) const
void SendBuyFailed(BuyResult msg, ObjectGuid VendorGUID, uint32 item)
float GetRestBonus() const
RestType GetRestType() const
uint32 GetInnPosMapId() const
std::list< HostileReference * > StorageType
ThreatContainer::StorageType const & getThreatList() const
void EnableMovement(bool enabled)
void EnterVehicle(Unit *base, int8 seatId=-1)
uint32 GetUnitMovementFlags() const
bool SetPhased(uint32 id, bool update, bool apply) OVERRIDE
void WriteMovementInfo(WorldPacket &data, Movement::ExtraMovementStatusElement *extras=NULL)
void SetUnitMovementFlags(uint32 f)
void SetExtraUnitMovementFlags(uint16 f)
void ModifyAuraState(AuraStateType flag, bool apply)
uint16 GetExtraUnitMovementFlags() const
HostileRefManager & getHostileRefManager()
ThreatManager & getThreatManager()
void HandleEmoteCommand(uint32 anim_id)
bool IsWithinLOSInMap(WorldObject const *obj) const
std::set< uint32 > const & GetPhases() const
std::string const & GetName() const
void VisitNearbyObject(float const &radius, NOTIFIER ¬ifier) const
void DestroyForNearbyPlayers()
Transport * GetTransport() const
void GetClosePoint(float &x, float &y, float &z, float size, float distance2d=0, float angle=0) const
void PlayDistanceSound(uint32 sound_id, Player *target)
virtual void SendMessageToSet(WorldPacket *data, bool self)
float GetObjectSize() const
void PlayDirectSound(uint32 sound_id, Player *target=NULL)
TempSummon * SummonCreature(uint32 id, Position const &pos, TempSummonType spwtype=TempSummonType::TEMPSUMMON_MANUAL_DESPAWN, uint32 despwtime=0, uint32 vehId=0) const
Player session in the World.
Player * GetPlayer() const
void SendPacket(WorldPacket const *packet, bool forced=false)
Send a packet to the client.
void SendSetPhaseShift(std::set< uint32 > const &phaseIds, std::set< uint32 > const &terrainswaps, std::set< uint32 > const &worldAreas)
static Skyfire::Rest::InnAreaBounds BuildInnAreaBounds(TavernRestArea const &restArea)
static bool HandleDebugTransportCommand(ChatHandler *handler, char const *args)
static bool HandleDebugLoSCommand(ChatHandler *handler, char const *)
static bool HandleDebugSendChatMsgCommand(ChatHandler *handler, char const *args)
static bool HandleDebugSendChannelNotifyCommand(ChatHandler *handler, char const *args)
static bool HandleDebugLfgGroupCommand(ChatHandler *handler, char const *args)
static bool HandleDebugGetItemValueCommand(ChatHandler *handler, char const *args)
static bool HandleDebugPlayCinematicCommand(ChatHandler *handler, char const *args)
static bool HandleDebugSetVehicleIdCommand(ChatHandler *handler, char const *args)
static bool HandleWPGPSCommand(ChatHandler *handler, char const *)
std::vector< ChatCommand > GetCommands() const OVERRIDE
static bool HandleDebugAreaTriggersCommand(ChatHandler *handler, char const *)
static bool HandleDebugHostileRefListCommand(ChatHandler *handler, char const *)
static bool HandleDebugLfgRequirementsCommand(ChatHandler *handler, char const *args)
static bool HandleDebugEnterVehicleCommand(ChatHandler *handler, char const *args)
static bool HandleDebugSendSpellFailCommand(ChatHandler *handler, char const *args)
static bool HandleBoatStopCommand(ChatHandler *handler, char const *)
static bool HandleDebugSendSellErrorCommand(ChatHandler *handler, char const *args)
static Skyfire::Rest::InnAreaBounds BuildInnAreaBounds(Player const *player)
static bool HandleDebugPlayMovieCommand(ChatHandler *handler, char const *args)
static bool HandleDebugPlaySoundCommand(ChatHandler *handler, char const *args)
static bool HandleDebugGetLootRecipientCommand(ChatHandler *handler, char const *)
static bool HandleDebugSetAuraStateCommand(ChatHandler *handler, char const *args)
static bool HandleDebugSendLargePacketCommand(ChatHandler *handler, char const *)
static bool HandleDebugAnimCommand(ChatHandler *handler, char const *args)
static bool HandleDebugThreatListCommand(ChatHandler *handler, char const *)
static BattlegroundSA * GetSOTABattlegroundForBoatCommand(ChatHandler *handler)
static void RefreshLfgLockInfoForOnlinePlayers()
static bool HandleDebugGetItemStateCommand(ChatHandler *handler, char const *args)
static bool HandleDebugRestCommand(ChatHandler *handler, char const *)
static bool HandleDebugSendQuestInvalidMsgCommand(ChatHandler *handler, char const *args)
static char const * GetRestTypeName(RestType restType)
static bool HandleDebugSetItemValueCommand(ChatHandler *handler, char const *args)
static bool HandleDebugMoveflagsCommand(ChatHandler *handler, char const *args)
static bool HandleDebugSendEquipErrorCommand(ChatHandler *handler, char const *args)
static bool HandleDebugUpdateWorldStateCommand(ChatHandler *handler, char const *args)
static bool HandleDebugSet32BitCommand(ChatHandler *handler, char const *args)
static bool HandleDebugSetValueCommand(ChatHandler *handler, char const *args)
static bool HandleDebugMod32ValueCommand(ChatHandler *handler, char const *args)
static bool HandleDebugSendBuyErrorCommand(ChatHandler *handler, char const *args)
static bool HandleDebugSendSetPhaseShiftCommand(ChatHandler *handler, char const *args)
static bool HandleDebugLfgFlexCommand(ChatHandler *handler, char const *args)
static bool HandleDebugItemExpireCommand(ChatHandler *handler, char const *args)
static bool HandleDebugBattlegroundCommand(ChatHandler *, char const *)
static bool HandleDebugSendQuestPartyMsgCommand(ChatHandler *handler, char const *args)
static bool HandleBoatStartCommand(ChatHandler *handler, char const *)
static bool HandleDebugGetValueCommand(ChatHandler *handler, char const *args)
static bool HandleDebugArenaCommand(ChatHandler *, char const *)
static bool HandleDebugUpdateCommand(ChatHandler *handler, char const *args)
static bool HandleDebugSpawnVehicleCommand(ChatHandler *handler, char const *args)
void AddSC_debug_commandscript()
std::string FormatInnAreaBounds(InnAreaBounds const &bounds)
bool HasInnAreaBounds(InnAreaBounds const &bounds)
@ RBAC_PERM_COMMAND_DEBUG_SETVID
@ RBAC_PERM_COMMAND_DEBUG_MOVEFLAGS
@ RBAC_PERM_COMMAND_DEBUG_BG
@ RBAC_PERM_COMMAND_DEBUG_SETAURASTATE
@ RBAC_PERM_COMMAND_DEBUG_SEND_CHATMESSAGE
@ RBAC_PERM_COMMAND_DEBUG_SETBIT
@ RBAC_PERM_COMMAND_DEBUG_UPDATE
@ RBAC_PERM_COMMAND_DEBUG_SEND_CHANNELNOTIFY
@ RBAC_PERM_COMMAND_DEBUG_LOS
@ RBAC_PERM_COMMAND_DEBUG_GETITEMVALUE
@ RBAC_PERM_COMMAND_DEBUG_AREATRIGGERS
@ RBAC_PERM_COMMAND_DEBUG_MOD32VALUE
@ RBAC_PERM_COMMAND_DEBUG_LFG_REQUIREMENTS
@ RBAC_PERM_COMMAND_DEBUG_SEND_QPARTYMSG
@ RBAC_PERM_COMMAND_DEBUG_SEND_LARGEPACKET
@ RBAC_PERM_COMMAND_DEBUG_PLAY_MOVIE
@ RBAC_PERM_COMMAND_DEBUG_GETITEMSTATE
@ RBAC_PERM_COMMAND_DEBUG_SETVALUE
@ RBAC_PERM_COMMAND_DEBUG_LFG_FLEX
@ RBAC_PERM_COMMAND_DEBUG_TRANSPORT
@ RBAC_PERM_COMMAND_DEBUG_ITEMEXPIRE
@ RBAC_PERM_COMMAND_WPGPS
@ RBAC_PERM_COMMAND_DEBUG_PLAY_SOUND
@ RBAC_PERM_COMMAND_DEBUG_SPAWNVEHICLE
@ RBAC_PERM_COMMAND_DEBUG_REST
@ RBAC_PERM_COMMAND_DEBUG_SEND_SETPHASESHIFT
@ RBAC_PERM_COMMAND_DEBUG_ARENA
@ RBAC_PERM_COMMAND_DEBUG_UWS
@ RBAC_PERM_COMMAND_DEBUG_SEND_QINVALIDMSG
@ RBAC_PERM_COMMAND_DEBUG_SEND
@ RBAC_PERM_COMMAND_DEBUG_THREAT
@ RBAC_PERM_COMMAND_DEBUG_SEND_EQUIPERROR
@ RBAC_PERM_COMMAND_DEBUG_SEND_SPELLFAIL
@ RBAC_PERM_COMMAND_DEBUG_HOSTIL
@ RBAC_PERM_COMMAND_DEBUG_GETVALUE
@ RBAC_PERM_COMMAND_DEBUG_ENTERVEHICLE
@ RBAC_PERM_COMMAND_DEBUG_PLAY_CINEMATIC
@ RBAC_PERM_COMMAND_DEBUG_LOOTRECIPIENT
@ RBAC_PERM_COMMAND_DEBUG_ANIM
@ RBAC_PERM_COMMAND_DEBUG_SEND_BUYERROR
@ RBAC_PERM_COMMAND_DEBUG_SETITEMVALUE
@ RBAC_PERM_COMMAND_DEBUG
@ RBAC_PERM_COMMAND_DEBUG_SEND_SELLERROR
@ RBAC_PERM_COMMAND_DEBUG_PLAY
float GetPositionZ() const
float GetOrientation() const
float GetPositionX() const
float GetPositionY() const