| Constants
| Value
| Description
|
| PU_SLOWDOWN_DISTANCE_REACHED
| 0x00
| Character is near current goal.
|
| PU_GOAL_REACHED
| 0x01
| Character has reached the goal and will stop or choose a new goal (if wandering).
|
| PU_FAILURE_INVALID_START
| 0x02
| Character cannot navigate from the current location - e.g., the character is off the navmesh or too high above it.
|
| PU_FAILURE_INVALID_GOAL
| 0x03
| Goal is not on the navmesh and cannot be reached.
|
| PU_FAILURE_UNREACHABLE
| 0x04
| Goal is no longer reachable for some reason - e.g., an obstacle blocks the path.
|
| PU_FAILURE_TARGET_GONE
| 0x05
| Target (for llPursue or llEvade) can no longer be tracked - e.g., it left the region or is an avatar that is now more than about 30m outside the region.
|
| PU_FAILURE_NO_VALID_DESTINATION
| 0x06
| There's no good place for the character to go - e.g., it is patrolling and all the patrol points are now unreachable.
|
| PU_EVADE_HIDDEN
| 0x07
| Triggered when an llEvade character thinks it has hidden from its pursuer.
|
| PU_EVADE_SPOTTED
| 0x08
| Triggered when an llEvade character switches from hiding to running
|
| PU_FAILURE_NO_NAVMESH
| 0x09
| This is a fatal error reported to a character when there is no navmesh for the region. This usually indicates a server failure and users should file a bug report and include the time and region in which they received this message.
|
| PU_FAILURE_DYNAMIC_PATHFINDING_DISABLED
| 0x0A
| Triggered when a character enters a region with dynamic pathfinding disabled. Dynamic pathfinding can be toggled by estate managers via the 'dynamic_pathfinding' option in the Region Debug Console.
|
| PU_FAILURE_PARCEL_UNREACHABLE
| 0x0B
| Triggered when a character failed to enter a parcel because it is not allowed to enter, e.g. because the parcel is already full or because object entry was disabled after the navmesh was baked.
|
| PU_FAILURE_OTHER
| 0xF4240
| Other failure.
|
Examples
default
{
state_entry()
{
llDeleteCharacter(); // Clear any previous character behaviors
llCreateCharacter([CHARACTER_MAX_SPEED, 25, CHARACTER_DESIRED_SPEED, 15.0]);
//MAX_SPEED is @ 20 by default
llWanderWithin(llGetPos(), <10.0, 10.0, 10.0>, []);
}
path_update(integer type, list reserved)
{
if (type == 0)
{
llOwnerSay("Near");
}
else if (type == 1)
{
llOwnerSay("Stopping");
}
else if (type == 2)
{
llOwnerSay("Cannot path find from current location! Attempting to go to the center of the region.");
llNavigateTo(<128.0, 128.0, llGround(<128.0, 128.0, 0.0> - llGetPos())>, [FORCE_DIRECT_PATH, TRUE]);
}
else if (type == 3)
{
llOwnerSay("Goal not on navmesh!");
}
else if (type == 4)
{
llOwnerSay("Goal unreachable!");
}
else if (type == 5)
{
llOwnerSay("Target gone!");
}
else if (type == 6)
{
llOwnerSay("No place to go!");
}
else if (type == 7)
{
llOwnerSay("Hiding from pursuer...");
}
else if (type == 8)
{
llOwnerSay("Switched from hiding to running...");
}
else if (type == 9)
{
llOwnerSay("Region has no nav mesh..");
}
else if (type == 10)
{
llOwnerSay("Dynamic pathfinding is disabled in this region.");
}
else if (type == 11)
{
llOwnerSay("Parcel entry problem (is the parcel full?).");
}
else if (type == 1000000)
{
llOwnerSay("Hit an unspecified failure");
}
else
{
llOwnerSay("Unknown failure");
}
}
}