Difference between revisions of "ContentDesigner:Creating Movement"

Line 36: Line 36:
  
 
Taking a closer look at this code we can see there are a few different ways of using the MovementLoopAddLocation() function. Here is breakdown of those lines.
 
Taking a closer look at this code we can see there are a few different ways of using the MovementLoopAddLocation() function. Here is breakdown of those lines.
 +
  
 
The first MovementLoopAddLocation() ends the parameters just after the delay. The function name is optional and is not used throughout most of this code. This line looks like this...
 
The first MovementLoopAddLocation() ends the parameters just after the delay. The function name is optional and is not used throughout most of this code. This line looks like this...
 
  MovementLoopAddLocation(NPC, -407.46, -60.48, 174.23, 2, 8)
 
  MovementLoopAddLocation(NPC, -407.46, -60.48, 174.23, 2, 8)
 
If the MovementLoopAddLocation() parameters are compared to the parameters guide listed above we can see that -407.46 is the X coords, -60.48 is the y coords, 174.23 is the z coords. We can also see that our speed is set to 2. This should be the average walk speed, and that is what we want to have this NPC do. If we wanted the NPC to run we would set this to 4. If the NPC is to chase something then set this to 6. We end with the delay parameter. This is measured in seconds. So our friend here will pause at this location for 8 seconds before moving to the next location.
 
If the MovementLoopAddLocation() parameters are compared to the parameters guide listed above we can see that -407.46 is the X coords, -60.48 is the y coords, 174.23 is the z coords. We can also see that our speed is set to 2. This should be the average walk speed, and that is what we want to have this NPC do. If we wanted the NPC to run we would set this to 4. If the NPC is to chase something then set this to 6. We end with the delay parameter. This is measured in seconds. So our friend here will pause at this location for 8 seconds before moving to the next location.
 +
  
 
The next line uses math.random() to set the delay.
 
The next line uses math.random() to set the delay.
 
  MovementLoopAddLocation(NPC, -420.76, -60.86, 180.15, 2, math.random(5, 15))
 
  MovementLoopAddLocation(NPC, -420.76, -60.86, 180.15, 2, math.random(5, 15))
 
It is easy to see that ''math.random(5, 15)'' is telling us that 5 seconds is the lowest number to choose from and to go as high as 15 seconds. Now it will make each NPC different than the next when moving from point to point. On thing to keep in mind is when an NPC is spawned and math.random() chooses the number to use for the delay it will keep using that number until the end of that spawns life cycle. Do instance he is killed.
 
It is easy to see that ''math.random(5, 15)'' is telling us that 5 seconds is the lowest number to choose from and to go as high as 15 seconds. Now it will make each NPC different than the next when moving from point to point. On thing to keep in mind is when an NPC is spawned and math.random() chooses the number to use for the delay it will keep using that number until the end of that spawns life cycle. Do instance he is killed.
 +
  
 
The third MovementLoopAddLocation() does not have a delay. It stops just after speed.
 
The third MovementLoopAddLocation() does not have a delay. It stops just after speed.
 
  MovementLoopAddLocation(NPC, -425.42, -61.32, 186.58, 2)
 
  MovementLoopAddLocation(NPC, -425.42, -61.32, 186.58, 2)
 
This will cause the NPC to go to this location and keep moving instead of pausing. This is helpful if the NPC needs to make a turn but does not stop. It is safe to say you can put s 0 in for the delay and it will do the same thing.
 
This will cause the NPC to go to this location and keep moving instead of pausing. This is helpful if the NPC needs to make a turn but does not stop. It is safe to say you can put s 0 in for the delay and it will do the same thing.
 +
  
 
The last MovementLoopAddLocation() has a function name used on the parameters.
 
The last MovementLoopAddLocation() has a function name used on the parameters.
 
  MovementLoopAddLocation(NPC, -406.82, -60.56, 174.38, 2, math.random(5, 15), "Comment")
 
  MovementLoopAddLocation(NPC, -406.82, -60.56, 174.38, 2, math.random(5, 15), "Comment")
The function name ''"Comment"'' will look for a function call Comment and execute that function  
+
The function name ''"Comment"'' will look for a function call Comment and execute that function. Once it completes the ''"Comment"'' function it will then resume to the delay and finally move on to start over again.
  
  

Revision as of 17:48, 14 June 2016

ContentDesigner:SpawnScripts - Creating Movement

Return to: ContentDesigner:SpawnScripts | Tutorials | Portal | Forum | Project Manager | Bug Tracker


The Creating Movement guide will show you how to get your NPC's to walk and run around. With many different combinations you can make a specific path for the NPC to follow to walking in circles if you choose.


Movement Functions

There are two functions that can be used to make an NPC move. Below you will find examples of how to use both to make an NPC move around in Norrath.

The MovementLoopAddLocation() function will allow an NPC to move along a given set of coordinates. This can be along a path, in a circle, or random locations. The below example will show a simple movement script.

There must be at least two MovementLoopAddLocation() functions in the script for this to work, and the parameters used are as follows...

NPC, x, y, z, speed, delay, function name

Note
*The delay is in seconds
*The function name is optional

Now let's see an example

function spawn(NPC)
  MovementLoopAddLocation(NPC, -407.46, -60.48, 174.23, 2, 8)
  MovementLoopAddLocation(NPC, -420.76, -60.86, 180.15, 2, math.random(5, 15))
  MovementLoopAddLocation(NPC, -425.42, -61.32, 186.58, 2)
  MovementLoopAddLocation(NPC, -424.20, -61.98, 190.47, 2, math.random(5, 15))
  MovementLoopAddLocation(NPC, -410.19, -62.87, 189.81, 2, math.random(5, 15))
  MovementLoopAddLocation(NPC, -406.82, -60.56, 174.38, 2, math.random(5, 15), "Comment")
end
function Comment(NPC) Say(NPC, "Nice day for a walk, isn't it?") end

This script contains the function spawn(NPC) and will run everything inside this block of code when the NPC spawns. This means everytime the NPC spawns it will begin the movement loop.

Taking a closer look at this code we can see there are a few different ways of using the MovementLoopAddLocation() function. Here is breakdown of those lines.


The first MovementLoopAddLocation() ends the parameters just after the delay. The function name is optional and is not used throughout most of this code. This line looks like this...

MovementLoopAddLocation(NPC, -407.46, -60.48, 174.23, 2, 8)

If the MovementLoopAddLocation() parameters are compared to the parameters guide listed above we can see that -407.46 is the X coords, -60.48 is the y coords, 174.23 is the z coords. We can also see that our speed is set to 2. This should be the average walk speed, and that is what we want to have this NPC do. If we wanted the NPC to run we would set this to 4. If the NPC is to chase something then set this to 6. We end with the delay parameter. This is measured in seconds. So our friend here will pause at this location for 8 seconds before moving to the next location.


The next line uses math.random() to set the delay.

MovementLoopAddLocation(NPC, -420.76, -60.86, 180.15, 2, math.random(5, 15))

It is easy to see that math.random(5, 15) is telling us that 5 seconds is the lowest number to choose from and to go as high as 15 seconds. Now it will make each NPC different than the next when moving from point to point. On thing to keep in mind is when an NPC is spawned and math.random() chooses the number to use for the delay it will keep using that number until the end of that spawns life cycle. Do instance he is killed.


The third MovementLoopAddLocation() does not have a delay. It stops just after speed.

MovementLoopAddLocation(NPC, -425.42, -61.32, 186.58, 2)

This will cause the NPC to go to this location and keep moving instead of pausing. This is helpful if the NPC needs to make a turn but does not stop. It is safe to say you can put s 0 in for the delay and it will do the same thing.


The last MovementLoopAddLocation() has a function name used on the parameters.

MovementLoopAddLocation(NPC, -406.82, -60.56, 174.38, 2, math.random(5, 15), "Comment")

The function name "Comment" will look for a function call Comment and execute that function. Once it completes the "Comment" function it will then resume to the delay and finally move on to start over again.



The second one MoveToLocation() will allow the NPC to move to a specific location then stop.