From newfeatures2001:
PHP Code:
- New script command: move dx,dy,time,options;
dx - delta x
dy - delta y
time - time in seconds
options - cachingmode (0,1 or 2) + blockcheck (4 or 0) +
informmewhendone (8 or 0) + applydirection (16 or 0)
This moves the npc without needing you to update the
position of the npc 'manually' by changing x and y.
To move an npc 10 tiles to the right, then 10 tiles to
the left and again, just do following:
if (created) {
while (true) {
move 10,0,4,0;
sleep 4;
move -10,0,4,0;
sleep 4;
}
}
This moves the npc 10 tiles to the right, then waits 4
seconds, then moves it 10 tiles to the left, then waits
4 seconds, and repeats this endlessly.
The good thing is that this also works with server-side
npcs and makes them look like they are moved on client-side.
There are also nice options to makes things very simple:
- cachingmode:
- 0: previous movements will be finished immediatelly
- 1: movements will be cached, the previous movements
will only be finished when the cache is too large
(distance to go >5);
this caching can be used on server-side npcs to
make the movement look like non-laggy even when
there are little delays sometimes
- 2: the movement will just be appended to the movement
list; you can add up to 100 movements
- blockcheck: add 4 to the options when you want the
npc to stop when there is a wall blocking the npc
- informmewhendone: if you add 8 to the options then the
script will be called with a 'movementfinished' flag
when the the npc has stopped walking; catch this event
with
if (movementfinished) {...}
if you want to do something when the npc has stopped
(e.g. walking in a different direction)
- applydirection: add 16 to the options if you want the
game to automatically set the direction of the npc
depending on the movement direction (can be good
when using movement caching)
While the first two parameters ARE the delta, they also give a destination, so when they are reached the NPC will stop. Option 8, like it says, simply sends the event 'movementfinished'.