Frictional Games Forum (read-only)

Full Version: PathNodes [SOLVED]
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Does anyone know how pathnodes work, or have an instruction video on them? I'm trying to make my monster follow a certain path, but I don't know how to make it follow the pathnodes I have placed.
void zombieactive (string &in asParent , string &in asChild , int alState)
{
SetEntityActive("zombiee", true);
AddEnemyPatrolNode("zombiee", "zombiee2", 2, "");
AddEnemyPatrolNode("zombiee", "zombiee3", 0, "");
}

Once the function zombieactive is called, my monster called "zombiee" will be set to active and start walking to the pathnode "zombiee2", wait two seconds then move to the pathnode "zombiee3".
(05-02-2011, 04:31 PM)Roenlond Wrote: [ -> ]void zombieactive (string &in asParent , string &in asChild , int alState)
{
SetEntityActive("zombiee", true);
AddEnemyPatrolNode("zombiee", "zombiee2", 2, "");
AddEnemyPatrolNode("zombiee", "zombiee3", 0, "");
}

Once the function zombieactive is called, my monster called "zombiee" will be set to active and start walking to the pathnode "zombiee2", wait two seconds then move to the pathnode "zombiee3".

Okay, it works, but now there's another problem. The monster doesn't despawn after following the path, how do I do that?
To elaborate a bit further on what Roenlond said, the first entry is the name of the monster. The second is the name of the path node area, which I tend to leave as their default but if you choose to rename it that is also fine. The third entry is the amount of time in seconds the monster will stand still at the path node area once reaching it. The fourth is for an animation you want it to play while being stopped, but I have not seen many people do it, since in general the player will avoid looking at the monster.

But at any rate, yes, what Roenlond said is completely true and it will work, provided you alter the names to your own.
(05-02-2011, 04:48 PM)Karai16 Wrote: [ -> ]
(05-02-2011, 04:31 PM)Roenlond Wrote: [ -> ]void zombieactive (string &in asParent , string &in asChild , int alState)
{
SetEntityActive("zombiee", true);
AddEnemyPatrolNode("zombiee", "zombiee2", 2, "");
AddEnemyPatrolNode("zombiee", "zombiee3", 0, "");
}

Once the function zombieactive is called, my monster called "zombiee" will be set to active and start walking to the pathnode "zombiee2", wait two seconds then move to the pathnode "zombiee3".

Okay, it works, but now there's another problem. The monster doesn't despawn after following the path, how do I do that?

Add another area for the monster to collide with. Then create a new function that is called when the monster enters it, which will SetEntityActive("monster", false);. You can also use FadeEnemyToSmoke if you want, I tend to use the latter because if the player is looking at the monster, it disappears like it was a hallucination rather than just vanishing instantly.
(05-02-2011, 04:50 PM)Anxt Wrote: [ -> ]
(05-02-2011, 04:48 PM)Karai16 Wrote: [ -> ]
(05-02-2011, 04:31 PM)Roenlond Wrote: [ -> ]void zombieactive (string &in asParent , string &in asChild , int alState)
{
SetEntityActive("zombiee", true);
AddEnemyPatrolNode("zombiee", "zombiee2", 2, "");
AddEnemyPatrolNode("zombiee", "zombiee3", 0, "");
}

Once the function zombieactive is called, my monster called "zombiee" will be set to active and start walking to the pathnode "zombiee2", wait two seconds then move to the pathnode "zombiee3".

Okay, it works, but now there's another problem. The monster doesn't despawn after following the path, how do I do that?

Add another area for the monster to collide with. Then create a new function that is called when the monster enters it, which will SetEntityActive("monster", false);. You can also use FadeEnemyToSmoke if you want, I tend to use the latter because if the player is looking at the monster, it disappears like it was a hallucination rather than just vanishing instantly.

Precisely. I tend to use FadeEnemyToSmoke as well since it gives a much better looking disappearance. You typically use "Player" as the entity that should collide with a scriptarea, but in this case you will need to remember to change it to whatever you have named your monster.
Code:
void OnStart()
{
    SetEntityPlayerInteractCallback("TowerKey", "Activatebrute", true);
    AddEntityCollideCallback("servant_brute_1", "ScriptArea_1", "DespawnBrute", true, 1);
}


void Activatebrute(string &in asEntity)
{
SetEntityActive("servant_brute_1", true);
AddEnemyPatrolNode("servant_brute_1", "PathNodeArea_1", 1, "");
AddEnemyPatrolNode("servant_brute_1", "PathNodeArea_2", 0, "");
AddEnemyPatrolNode("servant_brute_1", "PathNodeArea_3", 3, "");
AddEnemyPatrolNode("servant_brute_1", "PathNodeArea_4", 3, "");
}


void DespawnBrute(string &in asEntity)
{
FadeEnemyToSmoke("servant_brute_1", false);
}
right now this is my code, it works, except for the FadeEnemyToSmoke part. When the brute collides with the scriptarea, it doesn't disappear, and keeps on patrolling along the path.
EntityCollideCallbacks needs to be like:
void Func(string &in asParent, string &in asChild, int alState)
(05-02-2011, 06:22 PM)Karai16 Wrote: [ -> ]
Code:
void OnStart()
{
    SetEntityPlayerInteractCallback("TowerKey", "Activatebrute", true);
    AddEntityCollideCallback("servant_brute_1", "ScriptArea_1", "DespawnBrute", true, 1);
}


void Activatebrute(string &in asEntity)
{
SetEntityActive("servant_brute_1", true);
AddEnemyPatrolNode("servant_brute_1", "PathNodeArea_1", 1, "");
AddEnemyPatrolNode("servant_brute_1", "PathNodeArea_2", 0, "");
AddEnemyPatrolNode("servant_brute_1", "PathNodeArea_3", 3, "");
AddEnemyPatrolNode("servant_brute_1", "PathNodeArea_4", 3, "");
}


void DespawnBrute(string &in asEntity)
{
FadeEnemyToSmoke("servant_brute_1", false);
}
right now this is my code, it works, except for the FadeEnemyToSmoke part. When the brute collides with the scriptarea, it doesn't disappear, and keeps on patrolling along the path.

Code:
void DespawnBrute(string &in asParent , string &in asChild , int alState)
{
FadeEnemyToSmoke("servant_brute_1", false);
}

Try that.
Thank y'all alot! I got it working. Now there's only one more thing I need to get working before I can finish my little testing map.!