Jump to content
  • We are looking for staff for the Wiki area!
    If interested please
    click here and select "Documentation Team"

  • Adding Waypoints


    HOW TO CREATE WAYPOINTS - get things moving

    A short Introduction how a path is handled

     

    PREREQUISITES

    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

    .npc follow

     

    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

    .reload all

    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

    .npc move 

    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.


    User Feedback

    Recommended Comments

    GJ! I would like to add few remarks. All this is checked on Zero.

    • ".wp show on" (this is the actual command to show the path) takes as an argument the (db) GUID of the mob, or else the mob must be selected ingame. The visual WPs are temporary summons and will cease in 5 minutes, so they're never added to the "world.creature" table. Nothing to worry about, ".wp show off" is optional.
    • Subcommands "wp show first", "wp show last", "wp show info" can be useful too. Try "wp show info" with selected visual WP.
    • Looking within the game at the first path as an example,

    SELECT * FROM creature_movement WHERE id=97 ORDER BY POINT ASC;

    we find it containing 3-5 times more WPs than is actually required for such a simple path. The necessary points are the ones with some actions defined (in this case, the first and the last ones having a wait time). Between these two ii is enough to have 2-3 other points. Remember that extra WPs add not only the server load, but also network traffic, so avoid it as much as possible.

    Please feel free to remove this comment when/if the most substantial parts of it will be incorporated in the main text.

    Link to comment
    Share on other sites


    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use