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
Troubles with monster
thaniels Offline
Junior Member

Posts: 32
Threads: 4
Joined: May 2013
Reputation: 0
#1
Troubles with monster

Hello dear forum,

I am having some trouble making my monster listen to me.

The situation I am dealing with is that I have a monster that is behind a door, what i want to achieve is to make the monster inactive (but visible) until the player hits a particular script area, the thing that is happening right now is that the monster is active regardless of me adding a script making him inactive at the start of the level, and activating him when the player has set a few steps inside the hallway where the monster is hiding in the mist. I have a timer of 15 seconds before the monster should actually become active and attack the player

Can anyone have a look at my script and see if they can find the reason I could be having this trouble with my monster?

Also, if i have this in my script:
if(ScriptDebugOn()) {

}

where do i put my code, i have been looking all over the internet but i can't seem to an find and answer which actually answers my question, where does my code go? between the {}? I have no idea Sad

[code] void OnStart()
  {
    AddEntityCollideCallback("Player", "script_slam", "DoorClose", true, 1);  
    AddEntityCollideCallback("Player", "Sir?", "Hello", true, 1);
    AddEntityCollideCallback("Myboi", "MonsterPlzStahp2", "Stahp", true, 1);
    AddEntityCollideCallback("Player", "DisableMonster", "QuietYou", true, 1);
  }
  void OnEnter()
    {
    }

    //===========================================
    // This runs when the player leaves the map
    void OnLeave()
    {
    }
    
    void QuietYou(string& asName, bool abDisabled)
    {
    SetEnemyDisableTriggers("Myboi", false);
    }
    
    void DoorDelay(string& asName, float afTime, string& asFunction)
    {
    AddTimer("WaitForIt", 4, "DoorClose");
    }

    void DoorClose(string &in asParent, string &in asChild, int alState)
{
SetSwingDoorClosed("mansion_4", true, true);
PlaySoundAtEntity("", "react_breath_slow.snt", "Player", 0, false);  
PlaySoundAtEntity("", "react_scare", "Player", 0, false);  PlaySoundAtEntity("", "close_door.snt", "Player", 0, false);
GiveSanityDamage(5.0f, true);
}

void Hello(string &in asParent, string &in asChild, int alState)
{
PlaySoundAtEntity("NothingScaryYet", "enemy_hallucination_disappear.snt", "Player", 0, false);
AddTimer("Conversation", 15, "Attack");
}


void Attack(string& asName, bool abDisabled)
{
SetEnemyDisableTriggers("Myboi", true);
AddEnemyPatrolNode("Myboi", "MoveHerePlease1", 0, "");
}

void Stahp(string &in asParent, string &in asChild, int alState)
    {
    SetEntityActive("Myboi", false);
    }
[/code]


Attached Files
.txt   hotel_001.txt (Size: 1.51 KB / Downloads: 125)
(This post was last modified: 06-07-2013, 05:01 PM by thaniels.)
06-07-2013, 04:51 PM
Find
VeNoMzTeamHysterical Offline
Member

Posts: 240
Threads: 36
Joined: Dec 2012
Reputation: 3
#2
RE: Troubles with monster

(06-07-2013, 04:51 PM)thaniels Wrote: Hello dear forum,

I am having some trouble making my monster listen to me.

The situation I am dealing with is that I have a monster that is behind a door, what i want to achieve is to make the monster inactive (but visible) until the player hits a particular script area, the thing that is happening right now is that the monster is active regardless of me adding a script making him inactive at the start of the level, and activating him when the player has set a few steps inside the hallway where the monster is hiding in the mist. I have a timer of 15 seconds before the monster should actually become active and attack the player

Can anyone have a look at my script and see if they can find the reason I could be having this trouble with my monster?

Also, if i have this in my script:
if(ScriptDebugOn()) {

}

where do i put my code, i have been looking all over the internet but i can't seem to an find and answer which actually answers my question, where does my code go? between the {}? I have no idea Sad

[code] void OnStart()
  {
    AddEntityCollideCallback("Player", "script_slam", "DoorClose", true, 1);  
    AddEntityCollideCallback("Player", "Sir?", "Hello", true, 1);
    AddEntityCollideCallback("Myboi", "MonsterPlzStahp2", "Stahp", true, 1);
    AddEntityCollideCallback("Player", "DisableMonster", "QuietYou", true, 1);
  }
  void OnEnter()
    {
    }

    //===========================================
    // This runs when the player leaves the map
    void OnLeave()
    {
    }
    
    void QuietYou(string& asName, bool abDisabled)
    {
    SetEnemyDisableTriggers("Myboi", false);
    }
    
    void DoorDelay(string& asName, float afTime, string& asFunction)
    {
    AddTimer("WaitForIt", 4, "DoorClose");
    }

    void DoorClose(string &in asParent, string &in asChild, int alState)
{
SetSwingDoorClosed("mansion_4", true, true);
PlaySoundAtEntity("", "react_breath_slow.snt", "Player", 0, false);  
PlaySoundAtEntity("", "react_scare", "Player", 0, false);  PlaySoundAtEntity("", "close_door.snt", "Player", 0, false);
GiveSanityDamage(5.0f, true);
}

void Hello(string &in asParent, string &in asChild, int alState)
{
PlaySoundAtEntity("NothingScaryYet", "enemy_hallucination_disappear.snt", "Player", 0, false);
AddTimer("Conversation", 15, "Attack");
}


void Attack(string& asName, bool abDisabled)
{
SetEnemyDisableTriggers("Myboi", true);
AddEnemyPatrolNode("Myboi", "MoveHerePlease1", 0, "");
}

void Stahp(string &in asParent, string &in asChild, int alState)
    {
    SetEntityActive("Myboi", false);
    }
[/code]
Is the monster not attacking or what?
What is the problem with the monster?

And Scriptdebug is not easy i can tell you i got it in my script looks like this.

void OnStart(){
   SetLocalVarInt("CellarDoorOpen", 0);          
   SetLocalVarInt("FirstTimeCellar", 1);
}

void EnterCellar(string &in asEntity) // Teleport Player Into The Cellar.
{    
        if(GetLocalVarInt("CellarDoorOpen") != 1)
    {        
        SetMessage("Messages", "DoorLocked", 0);      
        return;    
    }        

        TeleportPlayer("InsideCellar");        
        if(GetLocalVarInt("FirstTimeCellar") == 1)
    {        
         SetMessage("Messages", "EnteringTheCellar", 0);        
         SetLocalVarInt("FirstTimeCellar", 0);
    }
}
Also if you want the monster to attack you, it should be this Func.

ShowEnemyPlayerPosition("MonsterName");


When you add this script the monster is instant seeing the player and chase him.

If you got any question i like to hear them.

http://www.frictionalgames.com/forum/thread-21719.html
Evil Awaking Work In Progress!
Hours Spend 472.
(This post was last modified: 06-07-2013, 06:54 PM by VeNoMzTeamHysterical.)
06-07-2013, 06:46 PM
Website Find
CarnivorousJelly Offline
Posting Freak

Posts: 1,196
Threads: 41
Joined: Dec 2012
Reputation: 80
#3
RE: Troubles with monster

Actually, try this script:
PHP Code: (Select All)
SetEnemyDisableTriggers(stringasNamebool abX); 

string& asName = enemy's name (eg brute_01)
bool abX = true will prevent the enemy from attacking the player, but it will not be set to inactive (non-existent and invisible) false will make it behave like a normal enemy.

While the ShowEnemyPlayerPosition function isn't entirely incorrect. It will do exactly what it says and, well, show the enemy where the player is no matter what. This means that, no matter how skilled you are at avoiding the gaze of the enemy and no matter how many doors you put between yourself and the enemy, it will know exactly where you are.

Also, I noticed you're using a .txt file. Save it as a .hps or it won't actually let you apply it to the map (at least, not in my past experience)

[Image: quote_by_rueppells_fox-d9ciupp.png]
(This post was last modified: 06-07-2013, 07:26 PM by CarnivorousJelly.)
06-07-2013, 07:21 PM
Find
thaniels Offline
Junior Member

Posts: 32
Threads: 4
Joined: May 2013
Reputation: 0
#4
RE: Troubles with monster

(06-07-2013, 06:46 PM)VeNoMzTeamHysterical Wrote:
(06-07-2013, 04:51 PM)thaniels Wrote: Hello dear forum,

I am having some trouble making my monster listen to me.

The situation I am dealing with is that I have a monster that is behind a door, what i want to achieve is to make the monster inactive (but visible) until the player hits a particular script area, the thing that is happening right now is that the monster is active regardless of me adding a script making him inactive at the start of the level, and activating him when the player has set a few steps inside the hallway where the monster is hiding in the mist. I have a timer of 15 seconds before the monster should actually become active and attack the player

Can anyone have a look at my script and see if they can find the reason I could be having this trouble with my monster?

Also, if i have this in my script:
if(ScriptDebugOn()) {

}

where do i put my code, i have been looking all over the internet but i can't seem to an find and answer which actually answers my question, where does my code go? between the {}? I have no idea Sad

[code] void OnStart()
  {
    AddEntityCollideCallback("Player", "script_slam", "DoorClose", true, 1);  
    AddEntityCollideCallback("Player", "Sir?", "Hello", true, 1);
    AddEntityCollideCallback("Myboi", "MonsterPlzStahp2", "Stahp", true, 1);
    AddEntityCollideCallback("Player", "DisableMonster", "QuietYou", true, 1);
  }
  void OnEnter()
    {
    }

    //===========================================
    // This runs when the player leaves the map
    void OnLeave()
    {
    }
    
    void QuietYou(string& asName, bool abDisabled)
    {
    SetEnemyDisableTriggers("Myboi", false);
    }
    
    void DoorDelay(string& asName, float afTime, string& asFunction)
    {
    AddTimer("WaitForIt", 4, "DoorClose");
    }

    void DoorClose(string &in asParent, string &in asChild, int alState)
{
SetSwingDoorClosed("mansion_4", true, true);
PlaySoundAtEntity("", "react_breath_slow.snt", "Player", 0, false);  
PlaySoundAtEntity("", "react_scare", "Player", 0, false);  PlaySoundAtEntity("", "close_door.snt", "Player", 0, false);
GiveSanityDamage(5.0f, true);
}

void Hello(string &in asParent, string &in asChild, int alState)
{
PlaySoundAtEntity("NothingScaryYet", "enemy_hallucination_disappear.snt", "Player", 0, false);
AddTimer("Conversation", 15, "Attack");
}


void Attack(string& asName, bool abDisabled)
{
SetEnemyDisableTriggers("Myboi", true);
AddEnemyPatrolNode("Myboi", "MoveHerePlease1", 0, "");
}

void Stahp(string &in asParent, string &in asChild, int alState)
    {
    SetEntityActive("Myboi", false);
    }
[/code]
Is the monster not attacking or what?
What is the problem with the monster?

And Scriptdebug is not easy i can tell you i got it in my script looks like this.

void OnStart(){
   SetLocalVarInt("CellarDoorOpen", 0);          
   SetLocalVarInt("FirstTimeCellar", 1);
}

void EnterCellar(string &in asEntity) // Teleport Player Into The Cellar.
{    
        if(GetLocalVarInt("CellarDoorOpen") != 1)
    {        
        SetMessage("Messages", "DoorLocked", 0);      
        return;    
    }        

        TeleportPlayer("InsideCellar");        
        if(GetLocalVarInt("FirstTimeCellar") == 1)
    {        
         SetMessage("Messages", "EnteringTheCellar", 0);        
         SetLocalVarInt("FirstTimeCellar", 0);
    }
}
Also if you want the monster to attack you, it should be this Func.

ShowEnemyPlayerPosition("MonsterName");


When you add this script the monster is instant seeing the player and chase him.

If you got any question i like to hear them.

the problem with the monster is, that is should only be activated after the player has walked into a certain trigger area, the problem now is, it is already active and is directly going towards the player once the door is opened. I want the monster to remain inactive for a small period of time before it becomes active and heads towards the player

(06-07-2013, 07:21 PM)Kiandra Wrote: Actually, try this script:
PHP Code: (Select All)
SetEnemyDisableTriggers(stringasNamebool abX); 

string& asName = enemy's name (eg brute_01)
bool abX = true will prevent the enemy from attacking the player, but it will not be set to inactive (non-existent and invisible) false will make it behave like a normal enemy.

While the ShowEnemyPlayerPosition function isn't entirely incorrect. It will do exactly what it says and, well, show the enemy where the player is no matter what. This means that, no matter how skilled you are at avoiding the gaze of the enemy and no matter how many doors you put between yourself and the enemy, it will know exactly where you are.

Also, I noticed you're using a .txt file. Save it as a .hps or it won't actually let you apply it to the map (at least, not in my past experience)

Kiandra, i don't know if you red my code, but i am already using the SetEnemyDisableTrigger code, that is what i am trying to get working and what does not do what i want.
(This post was last modified: 06-07-2013, 07:55 PM by thaniels.)
06-07-2013, 07:51 PM
Find
Your Computer Offline
SCAN ME!

Posts: 3,456
Threads: 32
Joined: Jul 2011
Reputation: 235
#5
RE: Troubles with monster

QuietYou has the wrong callback syntax.

Tutorials: From Noob to Pro
06-07-2013, 08:23 PM
Website Find
thaniels Offline
Junior Member

Posts: 32
Threads: 4
Joined: May 2013
Reputation: 0
#6
RE: Troubles with monster

(06-07-2013, 08:23 PM)Your Computer Wrote: QuietYou has the wrong callback syntax.

please explain the callback please because im not completely sure what you mean, also could you help me with my timer it seems like every time i walk into my tigger area triggering the activity of my monster he just reacts instantly and comes at my directly instead of waiting the 15 seconds i have indicated with the timer
06-07-2013, 08:50 PM
Find
Your Computer Offline
SCAN ME!

Posts: 3,456
Threads: 32
Joined: Jul 2011
Reputation: 235
#7
RE: Troubles with monster

Entity collide callbacks are supposed to have the syntax string, string, int. However, you have string, bool for QuietYou. Timer callbacks are supposed to have the syntax string. However, Attack has string, bool and DoorClose has string, string, int.

Tutorials: From Noob to Pro
06-07-2013, 09:08 PM
Website Find
thaniels Offline
Junior Member

Posts: 32
Threads: 4
Joined: May 2013
Reputation: 0
#8
RE: Troubles with monster

Ok I have changed the syntax but the monster still doesn't wait 14 seconds before it starts moving to my location, it still happens instantly, can anyone help me?
(This post was last modified: 06-09-2013, 07:39 PM by thaniels.)
06-09-2013, 06:26 PM
Find
Adrianis Offline
Senior Member

Posts: 620
Threads: 6
Joined: Feb 2012
Reputation: 27
#9
RE: Troubles with monster

I think you have you're true/false for SetEnemyDisableTriggers the wrong way round.

Disable Triggers - true
It is true that the triggers are disabled, so the enemy doesn't react to the player

Disable Triggers - false
It is false that the triggers are disabled, so it will chase the player


Try it the other way around
void QuietYou(string& asName, bool abDisabled)
    {
    SetEnemyDisableTriggers("Myboi", true);
    }

void Attack(string& asName, bool abDisabled)
{
SetEnemyDisableTriggers("Myboi", false);
AddEnemyPatrolNode("Myboi", "MoveHerePlease1", 0, "");
}

(06-07-2013, 04:51 PM)thaniels Wrote: Also, if i have this in my script:
if(ScriptDebugOn()) {

}

where do i put my code

Yeh it goes between the { }

if (ScriptDebugOn()) {
    // code here
}

Exactly the same as code within a function, the way you show that a block of code belongs in a certain group is with { and }
Here's an example, first as you might see it, and in the second example I've marked it up with comments to show what I mean

void Function(stuff)
{
     CODE HERE
     if (x == y)
     {
            CODE HERE
     }
}

void Function(stuff)
{ // this starts the code block for Function
     CODE HERE
     if (x == y)
     { // this starts the code block for the 'if'
            CODE HERE
     }// this ends the code block for the 'if'
} // this ends the code block for Function


It's also worth remembering that it doesn't matter where you put the { and }, so long as they are there
All of these examples are valid

if (x == y)
{
   // code
}

if (x == y) {
   // code
}

if (x == y) { // code }

(This post was last modified: 06-10-2013, 12:12 AM by Adrianis.)
06-09-2013, 11:27 PM
Find
thaniels Offline
Junior Member

Posts: 32
Threads: 4
Joined: May 2013
Reputation: 0
#10
RE: Troubles with monster

Actually, No. I do want the entity to not notice the player when the player enters the QuietYou volumes and become active when i enter the attack volume, i want the entity to only after a sound file has been played to become active and go towards the player
06-10-2013, 09:05 PM
Find




Users browsing this thread: 1 Guest(s)