| 
		
	
		| GoreGrinder99   Member
 
 Posts: 166
 Threads: 47
 Joined: Feb 2013
 Reputation: 
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 |  |  
	
		| ClayPigeon   Member
 
 Posts: 214
 Threads: 13
 Joined: Mar 2012
 Reputation: 
8
 | 
			| 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 |  |  
	
		| Rapture   Posting Freak
 
 Posts: 1,078
 Threads: 79
 Joined: May 2011
 Reputation: 
30
 | 
			| 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 atafSpeedMul - 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 |  |  
	
		| GoreGrinder99   Member
 
 Posts: 166
 Threads: 47
 Joined: Feb 2013
 Reputation: 
1
 | 
			| 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 |  |  
	
		| ClayPigeon   Member
 
 Posts: 214
 Threads: 13
 Joined: Mar 2012
 Reputation: 
8
 | 
			| 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 |  |  
	
		| GoreGrinder99   Member
 
 Posts: 166
 Threads: 47
 Joined: Feb 2013
 Reputation: 
1
 | 
			| 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 |  |  
	
		| Your Computer   SCAN ME!
 
 Posts: 3,456
 Threads: 32
 Joined: Jul 2011
 Reputation: 
235
 | 
			| 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.
			 
 
				
(This post was last modified: 07-21-2013, 06:45 PM by Your Computer.)
 |  |  
	| 07-21-2013, 06:44 PM |  |  
	
		| ClayPigeon   Member
 
 Posts: 214
 Threads: 13
 Joined: Mar 2012
 Reputation: 
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 |  |  
	
		| GoreGrinder99   Member
 
 Posts: 166
 Threads: 47
 Joined: Feb 2013
 Reputation: 
1
 | 
			| 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 |  |  
	
		| Adrianis   Senior Member
 
 Posts: 620
 Threads: 6
 Joined: Feb 2012
 Reputation: 
27
 | 
			| 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 |  |  |