Facebook Twitter YouTube Frictional Games | Forum | Privacy Policy | Dev Blog | Dev Wiki | Support | Gametee


Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Force player to follow enemy until it disappear help.
GoreGrinder99 Offline
Member

Posts: 166
Threads: 47
Joined: Feb 2013
Reputation: 1
#1
Force player to follow enemy until it disappear help.

I have a script where when the player interacts with a certain entity it spawns a monster and it heads towards its only patrol node and disappears. What I want is to have the player look directly at the monster when it spawns and follow it until it hits its marker and disappears. I'm assuming this is the script fr it but not sure what to do.

void StartPlayerLookAt(string& asEntityName, float afSpeedMul, float afMaxSpeed, string& asAtTargetCallback);
void StopPlayerLookAt();

-Grind to the Gore-
(This post was last modified: 08-17-2013, 11:36 PM by GoreGrinder99.)
07-21-2013, 05:23 PM
Find
ClayPigeon Offline
Member

Posts: 214
Threads: 13
Joined: Mar 2012
Reputation: 8
#2
RE: Force player to follow enemy until it disappear help.

void OnStart()
{    
    AddEntityCollideCallback("MonsterEntity", "Area", "StopLook", false, 1);
}

void OnMonsterSpawns // Change this to whenever the enemy spawns
{    
    StartPlayerLookAt("MonsterEntity", 1.0f, 1.5f, "LookedAt");
}

void LookedAt()
{    
    StartPlayerLookAt("MonsterEntity", 1.0f, 1.0f, "LookedAt");
}

void StopLook(string &in par, string &in chi, int state)
{  
    StopPlayerLookAt();
}
(This post was last modified: 07-21-2013, 05:47 PM by ClayPigeon.)
07-21-2013, 05:46 PM
Find
Rapture Offline
Posting Freak

Posts: 1,078
Threads: 79
Joined: May 2011
Reputation: 30
#3
RE: Force player to follow enemy until it disappear help.

StartPlayerLookAt("Grunt_0", 1, 2.4f, "");

Snip from the wiki...
asEntityName - the entity to look at
afSpeedMul - how fast should the player look at the entity
afMaxSpeed - maximum speed allowed
asAtTargetCallback - function to call when player looks at target

So for "asEntityName", change this to what the enemy's name is, in the Properties on the right side under "General > Name" tab.

For "afSpeedMul", you can use numerical values, but if you want floating points (e.g. = 1.3), add a "f" to the end, like "1.3f".

"afMaxSpeed" same as above stated.

"asAtTargetCallback" If you want a function called (When the entity is in your cross-hairs) like it says. I can't remember what the parameters are needed for the function, for it to work correctly. Anyone else know?


StopPlayerLookAt();

Will just stop any StartPlayerLookAt scripts going (As long as the StartPlayerLookAt it isn't being looped.)

///////////////
If this is gonna be a monster spawn with the player being disabled. Like if you are walking a long a hallway, and you force the player to stare at a grunt walking past. Please don't do that.

If you are on the ground hurt or something, that will be fine.
07-21-2013, 05:55 PM
Find
GoreGrinder99 Offline
Member

Posts: 166
Threads: 47
Joined: Feb 2013
Reputation: 1
#4
RE: Force player to follow enemy until it disappear help.

(07-21-2013, 05:46 PM)ClayPigeon Wrote:
void OnStart()
{    
    AddEntityCollideCallback("MonsterEntity", "Area", "StopLook", false, 1);
}

void OnMonsterSpawns // Change this to whenever the enemy spawns
{    
    StartPlayerLookAt("MonsterEntity", 1.0f, 1.5f, "LookedAt");
}

void LookedAt()
{    
    StartPlayerLookAt("MonsterEntity", 1.0f, 1.0f, "LookedAt");
}

void StopLook(string &in par, string &in chi, int state)
{  
    StopPlayerLookAt();
}

So, where do I put what exactly? I'm assuming "MonsterEntity" is the monster name, what do I put in for "Area", "StopLook, and "LookedAt"?

-Grind to the Gore-
07-21-2013, 05:56 PM
Find
ClayPigeon Offline
Member

Posts: 214
Threads: 13
Joined: Mar 2012
Reputation: 8
#5
RE: Force player to follow enemy until it disappear help.

(07-21-2013, 05:56 PM)goregrinder99 Wrote:
(07-21-2013, 05:46 PM)ClayPigeon Wrote:
void OnStart()
{    
    AddEntityCollideCallback("MonsterEntity", "Area", "StopLook", false, 1);
}

void OnMonsterSpawns // Change this to whenever the enemy spawns
{    
    StartPlayerLookAt("MonsterEntity", 1.0f, 1.5f, "LookedAt");
}

void LookedAt()
{    
    StartPlayerLookAt("MonsterEntity", 1.0f, 1.0f, "LookedAt");
}

void StopLook(string &in par, string &in chi, int state)
{  
    StopPlayerLookAt();
}

So, where do I put what exactly? I'm assuming "MonsterEntity" is the monster name, what do I put in for "Area", "StopLook, and "LookedAt"?

The code that is under OnMonsterSpawns - You said that the monster spawns when the player interacts with a certain entity.
That means, that there is a callback for that interaction. Put the line there.

What's in OnStart - Just paste it in your OnStart callback.

The other ones - Paste them anywhere in your script OUTSIDE any callback.
MonsterEntity is the name of the monster indeed, and the Area is the Script Area the the monster collides with in order to dissapear, which will stop the looking session.
07-21-2013, 06:09 PM
Find
GoreGrinder99 Offline
Member

Posts: 166
Threads: 47
Joined: Feb 2013
Reputation: 1
#6
RE: Force player to follow enemy until it disappear help.

(07-21-2013, 06:09 PM)ClayPigeon Wrote:
(07-21-2013, 05:56 PM)goregrinder99 Wrote:
(07-21-2013, 05:46 PM)ClayPigeon Wrote:
void OnStart()
{    
    AddEntityCollideCallback("MonsterEntity", "Area", "StopLook", false, 1);
}

void OnMonsterSpawns // Change this to whenever the enemy spawns
{    
    StartPlayerLookAt("MonsterEntity", 1.0f, 1.5f, "LookedAt");
}

void LookedAt()
{    
    StartPlayerLookAt("MonsterEntity", 1.0f, 1.0f, "LookedAt");
}

void StopLook(string &in par, string &in chi, int state)
{  
    StopPlayerLookAt();
}

So, where do I put what exactly? I'm assuming "MonsterEntity" is the monster name, what do I put in for "Area", "StopLook, and "LookedAt"?

The code that is under OnMonsterSpawns - You said that the monster spawns when the player interacts with a certain entity.
That means, that there is a callback for that interaction. Put the line there.

What's in OnStart - Just paste it in your OnStart callback.

The other ones - Paste them anywhere in your script OUTSIDE any callback.
MonsterEntity is the name of the monster indeed, and the Area is the Script Area the the monster collides with in order to dissapear, which will stop the looking session.

I'm sorry, I still don't get it, I'm a little slow. :\ This is my whole hps. Could you put in the follow script as it needs to be for me?

////////////////////////////
// Run first time starting map
void OnStart()
{
PlaySoundAtEntity("", "amb_idle.snt", "Player", 0, false);
SetPlayerActive(false);
SetPlayerCrouching(true);
FadeOut(0);
FadeIn(3);
AddTimer("T1", 3, "Intro");
AddTimer("T2", 6, "Intro");
AddTimer("T3", 8, "Intro");
AddTimer("T4", 10, "Intro");
AddTimer("T5", 12, "Intro");
AddEntityCollideCallback("Player", "MonsterSpawn", "SpawnMonster", true, 1);
AddUseItemCallback("", "key_tower_1", "level_wood_1", "AtticUnlock", true);
}
void Intro(string &in asTimer)
{
string x = asTimer;
if (x == "T1")
{
PlaySoundAtEntity("", "react_breath.snt", "Player", 0, false);
FadeOut(3);
}
else if (x == "T2")
{
FadeIn(3);
PlaySoundAtEntity("", "react_breath_slow.snt", "Player", 0, false);
StartPlayerLookAt("ScriptArea_1", 2, 2, "");
}
else if (x == "T3")
{
StopPlayerLookAt();
StartPlayerLookAt("ScriptArea_2", 2, 2, "");
}
else if (x == "T4")
{
PlaySoundAtEntity("", "react_sigh.snt", "Player", 0, false);
StopPlayerLookAt();
}
else if (x == "T5")
{
SetPlayerCrouching(false);
SetPlayerActive(true);
}
}
void SpawnMonster(string &in asParent, string &in asChild, int alState)
{
AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_1", 0, "");
SetEntityActive("servant_grunt_1", true);
}
void AtticUnlock(string &in asItem, string &in asDoor)
{
SetLevelDoorLocked("level_wood_1", false);
PlayGuiSound("door_sewer_unlock.snt", 100);
RemoveItem("key_tower_1");
}
////////////////////////////
// Run when entering map
void OnEnter()
{

}
////////////////////////////
// Run when leaving map
void OnLeave()
{

}

-Grind to the Gore-
07-21-2013, 06:35 PM
Find
Your Computer Offline
SCAN ME!

Posts: 3,456
Threads: 32
Joined: Jul 2011
Reputation: 235
#7
RE: Force player to follow enemy until it disappear help.

FYI: Using StartPlayerLookAt on the monster is impractical if called once. StartPlayerLookAt only cares about the entity position at the time of the call. So, even though the monster has moved away, the player would still be looking at the position the monster was at the time StartPlayerLookAt was called.

Tutorials: From Noob to Pro
(This post was last modified: 07-21-2013, 06:45 PM by Your Computer.)
07-21-2013, 06:44 PM
Website Find
ClayPigeon Offline
Member

Posts: 214
Threads: 13
Joined: Mar 2012
Reputation: 8
#8
RE: Force player to follow enemy until it disappear help.

Here:
////////////////////////////
// Run first time starting map
void OnStart()
{
PlaySoundAtEntity("", "amb_idle.snt", "Player", 0, false);
SetPlayerActive(false);
SetPlayerCrouching(true);
FadeOut(0);
FadeIn(3);
AddTimer("T1", 3, "Intro");
AddTimer("T2", 6, "Intro");
AddTimer("T3", 8, "Intro");
AddTimer("T4", 10, "Intro");
AddTimer("T5", 12, "Intro");
AddEntityCollideCallback("Player", "MonsterSpawn", "SpawnMonster", true, 1);
AddUseItemCallback("", "key_tower_1", "level_wood_1", "AtticUnlock", true);AddEntityCollideCallback("servant_grunt_1", "Area", "StopLook", false, 1);
}
void Intro(string &in asTimer)
{
string x = asTimer;
if (x == "T1")
{
PlaySoundAtEntity("", "react_breath.snt", "Player", 0, false);
FadeOut(3);
}
else if (x == "T2")
{
FadeIn(3);
PlaySoundAtEntity("", "react_breath_slow.snt", "Player", 0, false);
StartPlayerLookAt("ScriptArea_1", 2, 2, "");
}
else if (x == "T3")
{
StopPlayerLookAt();
StartPlayerLookAt("ScriptArea_2", 2, 2, "");
}
else if (x == "T4")
{
PlaySoundAtEntity("", "react_sigh.snt", "Player", 0, false);
StopPlayerLookAt();
}
else if (x == "T5")
{
SetPlayerCrouching(false);
SetPlayerActive(true);
}
}
void SpawnMonster(string &in asParent, string &in asChild, int alState)
{
AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_1", 0, "");
SetEntityActive("servant_grunt_1", true);StartPlayerLookAt("MonsterEntity", 1.0f, 1.5f, "LookedAt");
}
void AtticUnlock(string &in asItem, string &in asDoor)
{
SetLevelDoorLocked("level_wood_1", false);
PlayGuiSound("door_sewer_unlock.snt", 100);
RemoveItem("key_tower_1");
}
////////////////////////////
// Run when entering map
void OnEnter()
{

}void LookedAt()
{    
    StartPlayerLookAt("MonsterEntity", 1.0f, 1.0f, "LookedAt");
}

void StopLook(string &in par, string &in chi, int state)
{  
    StopPlayerLookAt();
}
////////////////////////////
// Run when leaving map
void OnLeave()
{

}


Just add a script area with which the monster will collide. Copy the area's name and put it instead "Area" in AddEntityCollideCallback("servant_grunt_1", "Area", "StopLook", false, 1);
07-21-2013, 07:29 PM
Find
GoreGrinder99 Offline
Member

Posts: 166
Threads: 47
Joined: Feb 2013
Reputation: 1
#9
RE: Force player to follow enemy until it disappear help.

Games loads without crashing but nothing happens. These are all the scripts towards the follow enemy function. -



AddEntityCollideCallback("servant_grunt_1", "StareArea", "StopLook", false, 1);

^The above is in the void OnStart() area.



void LookedAt()
{
StartPlayerLookAt("servant_grunt_1", 1.0f, 1.0f, "LookedAt");
}

void StopLook(string &in par, string &in chi, int state)
{
StopPlayerLookAt();
}

^-The above is not in start, enter or exit area.

I made a script area that the monster will hit after about a second after spawn and renamed the script area in the editor and in the hps.

Am I still missing something?

-Grind to the Gore-
07-21-2013, 08:28 PM
Find
Adrianis Offline
Senior Member

Posts: 620
Threads: 6
Joined: Feb 2012
Reputation: 27
#10
RE: Force player to follow enemy until it disappear help.

Not sure about this, but the callback you set in OnStart, this...
AddEntityCollideCallback("servant_grunt_1", "StareArea", "StopLook", false, 1);

When the grunt hits 'StareArea', you are calling the function StopLook, which calls to StopPlayerLookAt()
If you're intention was to start the LookAt when the grunt hits StareArea, then the line should read

AddEntityCollideCallback("servant_grunt_1", "StareArea", "LookedAt", false, 1);
Because LookedAt is the function that calls to StartPlayerLookAt

07-22-2013, 03:38 PM
Find




Users browsing this thread: 1 Guest(s)