27 static std::vector<ChatCommand> wpCommandTable =
37 static std::vector<ChatCommand> commandTable =
67 char* path_number = NULL;
71 path_number = strtok((
char*)args,
" ");
86 uint32 maxpathid = result->Fetch()->GetInt32();
87 pathid = maxpathid + 1;
92 pathid = atoi(path_number);
99 handler->
PSendSysMessage(
"%s%s|r",
"|cffff33ff",
"Current creature haven't loaded path.");
108 point = (*result)[0].GetUInt32();
123 handler->
PSendSysMessage(
"%s%s%u%s%u%s|r",
"|cff00ff00",
"PathID: |r|cff00ffff", pathid,
"|r|cff00ff00: Waypoint |r|cff00ffff", point + 1,
"|r|cff00ff00 created. ");
133 char* path_number = NULL;
136 path_number = strtok((
char*)args,
" ");
155 handler->
PSendSysMessage(
"%s%s|r",
"|cffff33ff",
"You want to load path to a waypoint? Aren't you?");
160 pathid = atoi(path_number);
164 handler->
PSendSysMessage(
"%s%s|r",
"|cffff33ff",
"No valid path number provided.");
218 handler->
PSendSysMessage(
"%s%s|r|cff00ffff%u|r",
"|cff00ff00",
"Loading Path: ",
id);
229 handler->
PSendSysMessage(
"%s%s|r",
"|cff33ffff",
"You must select a target.");
236 handler->
PSendSysMessage(
"%s%s|r",
"|cffff33ff",
"Target is not saved to DB.");
241 if (!addon || addon->
path_id == 0)
243 handler->
PSendSysMessage(
"%s%s|r",
"|cffff33ff",
"Target does not have a loaded path.");
275 char* show_str = strtok((
char*)args,
" ");
276 std::string show = show_str;
279 if ((show !=
"add") && (show !=
"mod") && (show !=
"del") && (show !=
"listid"))
282 char* arg_id = strtok(NULL,
" ");
304 handler->
PSendSysMessage(
"%s%s%u|r",
"|cff00ff00",
"Wp Event: New waypoint event added: ",
id);
307 handler->
PSendSysMessage(
"|cff00ff00Wp Event: You have choosed an existing waypoint script guid: %u|r",
id);
315 id = result->Fetch()->GetUInt32();
323 handler->
PSendSysMessage(
"%s%s%u|r",
"|cff00ff00",
"Wp Event: New waypoint event added: |r|cff00ffff",
id + 1);
329 if (show ==
"listid")
333 handler->
PSendSysMessage(
"%s%s|r",
"|cff33ffff",
"Wp Event: You must provide waypoint script id.");
339 uint32 a2, a3, a4, a5, a6;
340 float a8, a9, a10, a11;
349 handler->
PSendSysMessage(
"%s%s%u|r",
"|cff33ffff",
"Wp Event: No waypoint scripts found on id: ",
id);
357 fields = result->Fetch();
369 handler->
PSendSysMessage(
"|cffff33ffid:|r|cff00ffff %u|r|cff00ff00, guid: |r|cff00ffff%u|r|cff00ff00, delay: |r|cff00ffff%u|r|cff00ff00, command: |r|cff00ffff%u|r|cff00ff00, datalong: |r|cff00ffff%u|r|cff00ff00, datalong2: |r|cff00ffff%u|r|cff00ff00, datatext: |r|cff00ffff%s|r|cff00ff00, posx: |r|cff00ffff%f|r|cff00ff00, posy: |r|cff00ffff%f|r|cff00ff00, posz: |r|cff00ffff%f|r|cff00ff00, orientation: |r|cff00ffff%f|r",
id, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
370 }
while (result->NextRow());
391 handler->
PSendSysMessage(
"%s%s%u|r",
"|cff00ff00",
"Wp Event: Waypoint script removed: ",
id);
394 handler->
PSendSysMessage(
"|cffff33ffWp Event: ERROR: you have selected a non existing script: %u|r",
id);
403 handler->
SendSysMessage(
"|cffff33ffERROR: Waypoint script guid not present.|r");
411 handler->
SendSysMessage(
"|cffff33ffERROR: No vallid waypoint script id not present.|r");
415 char* arg_2 = strtok(NULL,
" ");
419 handler->
SendSysMessage(
"|cffff33ffERROR: No argument present.|r");
423 std::string arg_string = arg_2;
425 if ((arg_string !=
"setid") && (arg_string !=
"delay") && (arg_string !=
"command")
426 && (arg_string !=
"datalong") && (arg_string !=
"datalong2") && (arg_string !=
"dataint") && (arg_string !=
"posx")
427 && (arg_string !=
"posy") && (arg_string !=
"posz") && (arg_string !=
"orientation"))
429 handler->
SendSysMessage(
"|cffff33ffERROR: No valid argument present.|r");
434 std::string arg_str_2 = arg_2;
435 arg_3 = strtok(NULL,
" ");
439 handler->
SendSysMessage(
"|cffff33ffERROR: No additional argument present.|r");
443 if (arg_str_2 ==
"setid")
445 uint32 newid = atoi(arg_3);
446 handler->
PSendSysMessage(
"%s%s|r|cff00ffff%u|r|cff00ff00%s|r|cff00ffff%u|r",
"|cff00ff00",
"Wp Event: Wypoint scipt guid: ", newid,
" id changed: ",
id);
465 handler->
SendSysMessage(
"|cffff33ffERROR: You have selected an non existing waypoint script guid.|r");
469 if (arg_str_2 ==
"posx")
473 stmt->
setFloat(0,
float(atof(arg_3)));
478 handler->
PSendSysMessage(
"|cff00ff00Waypoint script:|r|cff00ffff %u|r|cff00ff00 position_x updated.|r",
id);
481 else if (arg_str_2 ==
"posy")
485 stmt->
setFloat(0,
float(atof(arg_3)));
490 handler->
PSendSysMessage(
"|cff00ff00Waypoint script: %u position_y updated.|r",
id);
493 else if (arg_str_2 ==
"posz")
497 stmt->
setFloat(0,
float(atof(arg_3)));
502 handler->
PSendSysMessage(
"|cff00ff00Waypoint script: |r|cff00ffff%u|r|cff00ff00 position_z updated.|r",
id);
505 else if (arg_str_2 ==
"orientation")
509 stmt->
setFloat(0,
float(atof(arg_3)));
514 handler->
PSendSysMessage(
"|cff00ff00Waypoint script: |r|cff00ffff%u|r|cff00ff00 orientation updated.|r",
id);
517 else if (arg_str_2 ==
"dataint")
519 WorldDatabase.PExecute(
"UPDATE waypoint_scripts SET %s='%u' WHERE guid='%u'", arg_2, atoi(arg_3),
id);
521 handler->
PSendSysMessage(
"|cff00ff00Waypoint script: |r|cff00ffff%u|r|cff00ff00 dataint updated.|r",
id);
526 std::string arg_str_3 = arg_3;
528 WorldDatabase.PExecute(
"UPDATE waypoint_scripts SET %s='%s' WHERE guid='%u'", arg_2, arg_str_3.c_str(),
id);
531 handler->
PSendSysMessage(
"%s%s|r|cff00ffff%u:|r|cff00ff00 %s %s|r",
"|cff00ff00",
"Waypoint script:",
id, arg_2,
"updated.");
542 char* show_str = strtok((
char*)args,
" ");
548 std::string show = show_str;
551 if ((show !=
"delay") && (show !=
"action") && (show !=
"action_chance")
552 && (show !=
"move_flag") && (show !=
"del") && (show !=
"move") && (show !=
"wpadd")
559 char* arg_str = NULL;
571 handler->
SendSysMessage(
"|cffff33ffERROR: You must select a waypoint.|r");
594 std::string maxDiff =
"0.01";
614 Field* fields = result->Fetch();
617 }
while (result->NextRow());
621 arg_str = strtok((
char*)NULL,
" ");
624 if (show !=
"del" && show !=
"move" && arg_str == NULL)
632 handler->
PSendSysMessage(
"|cff00ff00DEBUG: wp modify del, PathID: |r|cff00ffff%u|r", pathid);
637 wpCreature->CombatStop();
638 wpCreature->DeleteFromDB();
639 wpCreature->AddObjectToRemoveList();
662 handler->
PSendSysMessage(
"|cff00ff00DEBUG: wp move, PathID: |r|cff00ffff%u|r", pathid);
674 wpCreature->CombatStop();
675 wpCreature->DeleteFromDB();
676 wpCreature->AddObjectToRemoveList();
688 wpCreature2->
SetPhased(phase,
false,
true);
717 const char* text = arg_str;
722 WorldDatabase.PExecute(
"UPDATE waypoint_data SET %s=NULL WHERE id='%u' AND point='%u'", show_str, pathid, point);
727 std::string text2 = text;
729 WorldDatabase.PExecute(
"UPDATE waypoint_data SET %s='%s' WHERE id='%u' AND point='%u'", show_str, text2.c_str(), pathid, point);
742 char* show_str = strtok((
char*)args,
" ");
747 char* guid_str = strtok((
char*)NULL,
" ");
776 pathid = atoi((
char*)guid_str);
779 std::string show = show_str;
809 Field* fields = result->Fetch();
817 handler->
PSendSysMessage(
"|cff00ff00Show info: for current point: |r|cff00ffff%u|r|cff00ff00, Path ID: |r|cff00ffff%u|r", point, pathid);
818 handler->
PSendSysMessage(
"|cff00ff00Show info: delay: |r|cff00ffff%u|r", delay);
819 handler->
PSendSysMessage(
"|cff00ff00Show info: Move flag: |r|cff00ffff%u|r", flag);
820 handler->
PSendSysMessage(
"|cff00ff00Show info: Waypoint event: |r|cff00ffff%u|r", ev_id);
821 handler->
PSendSysMessage(
"|cff00ff00Show info: Event chance: |r|cff00ffff%u|r", ev_chance);
822 }
while (result->NextRow());
842 handler->
PSendSysMessage(
"|cff00ff00DEBUG: wp on, PathID: |cff00ffff%u|r", pathid);
853 bool hasError =
false;
856 Field* fields = result2->Fetch();
877 }
while (result2->NextRow());
889 Field* fields = result->Fetch();
909 wpCreature->
SetPhased(phase,
false,
true);
934 }
while (result->NextRow());
936 handler->
SendSysMessage(
"|cff00ff00Showing the current creature's path.|r");
942 handler->
PSendSysMessage(
"|cff00ff00DEBUG: wp first, GUID: %u|r", pathid);
955 Field* fields = result->Fetch();
995 handler->
PSendSysMessage(
"|cff00ff00DEBUG: wp last, PathID: |r|cff00ffff%u|r", pathid);
1007 Field* fields = result->Fetch();
1026 creature->
SetPhased(phase,
false,
true);
1057 bool hasError =
false;
1060 Field* fields = result->Fetch();
1080 }
while (result->NextRow());
1098 handler->
PSendSysMessage(
"|cffff33ffDEBUG: wpshow - no valid command found|r");
@ LANG_WAYPOINT_CHANGED_NO
@ LANG_WAYPOINT_ARGUMENTREQ
@ LANG_WAYPOINT_VP_NOTFOUND
@ LANG_WAYPOINT_NOTFOUNDLAST
@ LANG_WAYPOINT_VP_NOTCREATED
@ LANG_WAYPOINT_NOTREMOVED
@ LANG_WAYPOINT_NOTFOUNDDBPROBLEM
@ LANG_WAYPOINT_NOTFOUNDSEARCH
@ LANG_WAYPOINT_NOTCREATED
@ LANG_WAYPOINT_CREATSELECTED
@ LANG_WAYPOINT_VP_ALLREMOVED
@ LANG_WAYPOINT_VP_SELECT
uint64 MAKE_NEW_GUID(uint32 l, uint32 e, uint32 h)
Skyfire::AutoPtr< PreparedResultSet, Skyfire::Mutex > PreparedQueryResult
@ WORLD_SEL_WAYPOINT_DATA_POS_LAST_BY_ID
@ WORLD_SEL_WAYPOINT_DATA_BY_WPGUID
@ WORLD_DEL_WAYPOINT_DATA
@ WORLD_UPD_WAYPOINT_SCRIPT_O
@ WORLD_INS_WAYPOINT_DATA
@ WORLD_SEL_WAYPOINT_DATA_POS_FIRST_BY_ID
@ WORLD_INS_CREATURE_ADDON
@ WORLD_SEL_CREATURE_ADDON_BY_GUID
@ WORLD_UPD_WAYPOINT_DATA_POINT
@ WORLD_UPD_WAYPOINT_SCRIPT_Z
@ WORLD_UPD_WAYPOINT_DATA_POSITION
@ WORLD_UPD_CREATURE_MOVEMENT_TYPE
@ WORLD_SEL_WAYPOINT_DATA_BY_POS
@ WORLD_UPD_CREATURE_ADDON_PATH
@ WORLD_DEL_CREATURE_ADDON
@ WORLD_UPD_WAYPOINT_SCRIPT_X
@ WORLD_INS_WAYPOINT_SCRIPT
@ WORLD_SEL_WAYPOINT_DATA_POS_BY_ID
@ WORLD_SEL_CREATURE_BY_ID
@ WORLD_DEL_WAYPOINT_SCRIPT
@ WORLD_SEL_WAYPOINT_DATA_WPGUID_BY_ID
@ WORLD_SEL_WAYPOINT_SCRIPTS_MAX_ID
@ WORLD_SEL_WAYPOINT_DATA_ALL_BY_WPGUID
@ WORLD_UPD_WAYPOINT_DATA_WPGUID
@ WORLD_SEL_WAYPOINT_SCRIPT_BY_ID
@ WORLD_UPD_WAYPOINT_DATA_ALL_WPGUID
@ WORLD_SEL_WAYPOINT_SCRIPT_ID_BY_GUID
@ WORLD_SEL_WAYPOINT_DATA_MAX_ID
@ WORLD_SEL_WAYPOINT_DATA_MAX_POINT
@ WORLD_UPD_WAYPOINT_SCRIPT_Y
@ WORLD_UPD_WAYPOINT_SCRIPT_ID
WorldSession * GetSession()
Creature * getSelectedCreature()
void PSendSysMessage(const char *format,...) ATTR_PRINTF(2
void SetSentErrorMessage(bool val)
virtual void SendSysMessage(const char *str)
CommandScript(const char *name)
uint32 GetDBTableGUIDLow() const
virtual void DeleteFromDB()
uint32 GetWaypointPath() const
void SetDisplayId(uint32 modelId) OVERRIDE
void UpdateWaypointID(uint32 wpID)
void SetObjectScale(float scale) OVERRIDE
bool Create(uint32 guidlow, Map *map, uint32 Entry, uint32 vehId, uint32 team, float x, float y, float z, float ang, const CreatureData *data=NULL)
bool LoadCreatureFromDB(uint32 guid, Map *map, bool addToMap=true)
void SetDefaultMovementType(MovementGeneratorType mgt)
void LoadPath(uint32 pathid)
char const * GetCString() const
uint8 GetSpawnMode() const
Creature * GetCreature(uint64 guid)
uint32 GetGUIDLow() const
void setFloat(const uint8 index, const float value)
void setString(const uint8 index, const std::string &value)
void setUInt32(const uint8 index, const uint32 value)
void setUInt8(const uint8 index, const uint8 value)
void setInt32(const uint8 index, const int32 value)
void CombatStop(bool includingCast=false)
bool SetPhased(uint32 id, bool update, bool apply) OVERRIDE
MotionMaster * GetMotionMaster()
uint32 GetDisplayId() const
std::set< uint32 > const & GetPhases() const
void AddObjectToRemoveList()
void MonsterSay(const char *text, Language language, WorldObject const *target)
Player * GetPlayer() const
static bool HandleWpEventCommand(ChatHandler *handler, const char *args)
static bool HandleWpLoadCommand(ChatHandler *handler, const char *args)
static bool HandleWpReloadCommand(ChatHandler *handler, const char *args)
static bool HandleWpModifyCommand(ChatHandler *handler, const char *args)
static bool HandleWpUnLoadCommand(ChatHandler *handler, const char *)
static bool HandleWpShowCommand(ChatHandler *handler, const char *args)
std::vector< ChatCommand > GetCommands() const OVERRIDE
static bool HandleWpAddCommand(ChatHandler *handler, const char *args)
void AddSC_wp_commandscript()
WorldDatabaseWorkerPool WorldDatabase
Accessor to the world database.
@ RBAC_PERM_COMMAND_WP_SHOW
@ RBAC_PERM_COMMAND_WP_MODIFY
@ RBAC_PERM_COMMAND_WP_UNLOAD
@ RBAC_PERM_COMMAND_WP_LOAD
@ RBAC_PERM_COMMAND_WP_ADD
@ RBAC_PERM_COMMAND_WP_EVENT
@ RBAC_PERM_COMMAND_WP_RELOAD
float GetPositionZ() const
float GetOrientation() const
float GetPositionX() const
float GetPositionY() const