HOW TO CREATE WAYPOINTS - get things moving
A short Introduction how a path is handled
For every movement of a creature in the wow - world a definition has to be made. (Except the case a hungry one is looking at you for breakfast) The involved objects are: a db table called creature_movement, one with the little strange name db_script_string, one creature you want to teach a way and - last but not least you in the game with GM rights activated.
A SQL interface to the database is also needed - equal which you prefer. The Information created in this process later can be <recycled> and used in scripts - eg some escorts type follower or the same way some boss scripts. In any case we recommend to finish the waypoints first and to deal with scripts later.
BASICS - what do I need to know
The route is stored in creature_movement in the following way : id = the guid of the mob and point = an autoincrement counter starting at 1. According to this waypoints always are just pointing to a single creature and - changing single waypoints later is a mess.
Mostly the starting point of the route is the spawn poin. Leaving this way maybe possible but not effective. In all cases memorize the spawnpoint cause here your route starts.
Also be aware of programming waypoints needs some time and maybe a lot of running work too....
STEP 1 - cleaning up
First find your npc. You need the id and the guid of him.
.go creature <guid> may be helpful. .npc info (target the npc first) gives the needed numbers.
If youre replacing an old way perhaps save it now. Looking at the waypoints is simply done with
SELECT * FROM creature_movement WHERE id = <guid>
To erase former informations in the database you simply use
DELETE FROM creature_movement WHERE id = <guid>
Now your npc has no waypoints.
STEP 2 - The running job
Do the following : select your npc switch off his need to visit waypoints
UPDATE `creature` SET `MovementType`=1 WHERE `guid`= <guid> LIMIT 1;
select the npc then type
EXCURSION - server manners
If that looks strange - lets look at the sense behind. When you visiting the wow world just a part of it is transferred to the client and also in the core just the parts are loaded where some player action occurs. The same way not used areas are taken out of memory on client and server side. You can imagine that a circle-like area around your character. When programming long ways you could get error messages cause some parts of your way are unloaded. Cause you have to select the npc to set his ways and if you are going too far away it is automatically deselected.
OK now position yourself at the first spot and type with npc selected
.wp add <guid>
Congrats - The first waypoint has just been made.
Between 2 waypoints the npc always takes a straight line - so to make realistic curves you have to do this by setting more waypoints to simulate it.
Follow your path and set your waypoints - and dont forget less is more every waypoint is server workload so just make the neccesary.
The npc is going through the waypoint list till the end. When hes at the end restarting again with the first waypoint. That means you must set the way more or less in a circle to return to starting point - else you will see a lost creature hopping through the fields searching for the first entry with odd behavior.
Step 3 - Nothing without verification
Switch on waypoints for your companion
UPDATE `creature` SET `MovementType`=2 WHERE `guid`= <guid> LIMIT 1;
if the mob is doing nothing try typing
Now the creature should start moving and following your route. Watch one "round" to see if it all works correctly.
Step 4 - EXTRAS - cream on top
To make additional actions for your (now running) creature you have to access a single waypoint to tell him an action.
If you look into your waypoints
select * from creature_movement where id = <guid>
You see the following data fields : 5 textid, emote, spell, waittime and a script_id. And a - empty - wpguid.
EXCURSION - searching for guids
To put something into a waypoint you have to identify it. That's not that easy when you made 30 or 40. Normally waypoints just exist in the database. To work with them visually, the first step is to spawn them - yes - spawn ! Normally a waypoint has no guid.
.wp show <guid_of_your_npc>
The core generates guids for every waypoint you use atm. To optionally control it - on the right side of table
select * from creature_movement where id = <guid>
Making long distance ways it can happen that not all wps are generated - then simply walk to the other part and use the command again. Now you're able to identify every single waypoint by his guid in the database.
VERY IMPORTANT - clean up when your finished. Every spawned waypoint uses a guid - like you created a lot of mobs. When your finished type
.wp show off - to delete the waypoint dummies
STEP 5 - WAIT - for what ?
is at it says ... just standing there around doing nothing simply set the wait time - be aware that this are milliseconds ... one minute = 60000
STEP 6 - TEXT - Adding Speech
There are textid1 to textid5 to be used from 1 up. if more than one is used randomly one will be chosen. To make this far from easy - there is no text field.
Its a reference into db_script_string. And to make it just more complicated entries must be between 2000000000 and 2000010000 !!!
so you have to add your text into that table and afterwards you can tell the waypoints. just use content_default for your messages - the other fields are for translations into different languages
STEP 7 - EMOTES - clapping npcs
Simply store an emote number here reference you'll find in the dbc emote tables
STEP 8 - SPELLS AND SCRIPTS
This is going too far for a introduction. You may find Information about possible spells and scripting at other tutorials.
ADDENDUM - THE MESSY THING
To change a single waypoint entry is a challange. Ok - a position change can be easy done by
When its spawned. But inserting a new point .. you first have to create that point. Than you must free the sequence number he should use - they are a unique key so no equals allowed in the database - by rising all upper waypoints one step up and after that you can give the new one the insertion number. Works with 5 waypoints but is a challange for a long route. The other way round - to swap the gps coordinates - is also not an easy task.
So take care that the basic waypoints are all correct and working. In case of error often it will be faster to rebuild the path from scratch than playing around.