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
Opening cabinet
Topsu Offline
Junior Member

Posts: 12
Threads: 3
Joined: Mar 2012
Reputation: 0
#1
Opening cabinet

I have a problem:

When I walk into Script6 (area) enemy6 spawns into cabinet, but doesnt get out. It looks like this:

My script:

PHP Code: (Select All)
////////////////////////////
// Run when entering map
void OnEnter()
{
SetLanternDisabled(false);
SetEntityCallbackFunc("tinderbox", "OnPickup");
AddEntityCollideCallback("Player", "script1", "SetMessage1", true, 1);
AddEntityCollideCallback("Player", "script3", "easterown", true, 1);
AddEntityCollideCallback("Player", "script5", "collideenemy4", true, 1);
AddEntityCollideCallback("Player", "script6", "collideenemy6", true, 1);
AddEntityCollideCallback("Player", "Check1area", "check1", true, 1);
AddEntityCollideCallback("Player", "Check2area", "check2", true, 1);
SetEntityPlayerInteractCallback("door2", "Collide", true);
SetEntityConnectionStateChangeCallback("lever", "func_shelf");
AddEntityCollideCallback("Player", "startenemy5", "collideenemy5", true, 1);
}

void collideenemy6(string &in asParent, string &in asChild, int alState)
{
    
ClearEnemyPatrolNodes("enemy6");
    
SetEntityActive("enemy6", true);
    
SetSwingDoorLocked("cabinet", false, true);
    
AddTimer("timer123", 0.7f, "startenemy6");
    
StartPlayerLookAt("cabinet", 3, 4, "StopPlayerLookAt");
    
AddEnemyPatrolNode("enemy6", "PathNodeArea_6", 0, "");
}

void startenemy6(string &in asTimer)
{
    
ClearEnemyPatrolNodes("enemy6");
    
SetEntityActive("enemy6", true);
    
ShowEnemyPlayerPosition("enemy6");
    
AddEntityCollideCallback("enemy6", "noticeenemy6", "notenemy6", true, 1);
}

void collideenemy4(string &in asParent, string &in asChild, int alState)
{
    
ClearEnemyPatrolNodes("enemy4");
    
SetEntityActive("enemy4", true);
    
AddEnemyPatrolNode("enemy4", "PathNodeArea_2", 0, "");
    
AddEnemyPatrolNode("enemy4", "PathNodeArea_3", 0, "");
    
AddEntityCollideCallback("enemy4", "fadeenemy4", "Fadeenemy4", true, 1);
}

void collideenemy5(string &in asParent, string &in asChild, int alState)
{
    
ClearEnemyPatrolNodes("enemy5");
    
SetEntityActive("enemy5", true);
    
AddEnemyPatrolNode("enemy5", "PathNodeArea_4", 0, "");
    
AddEnemyPatrolNode("enemy5", "PathNodeArea_5", 0, "");
    
AddEntityCollideCallback("enemy5", "fadeenemy5", "Fadeenemy5", true, 1);
    
}

void Fadeenemy5(string &in asParent, string &in asChild, int alState)
{
    
SetEntityActive("enemy5", false);
}

void Fadeenemy4(string &in asParent, string &in asChild, int alState)
{
    
SetEntityActive("enemy4", false);
}

void Collide(string &in asEntity)
{
    
SetEntityPlayerInteractCallback("door1", "Collide2", true);
}

void Collide2(string &in asEntity)
{
//    ClearEnemyPatrolNodes("enemy2");
//    SetEntityActive("enemy2", true);
    
AddEnemyPatrolNode("enemy2", "PathNodeArea_1", 0, "");
    
AddEntityCollideCallback("enemy2", "script4", "Collideenemy2", true, 1);
}

void Collideenemy2(string &in asParent, string &in asChild, int alState)
{
    
SetPropHealth("door2", 50);
    
ShowEnemyPlayerPosition("enemy2");
}

void check1(string &in asParent, string &in asChild, int alState)
{
    
CheckPoint ("Check1", "Check1", "CheckPoint01", "Misc", "DeathHint2");
}

void check2(string &in asParent, string &in asChild, int alState)
{
    
CheckPoint ("Check2", "Check1", "CheckPoint01", "Misc", "DeathHint1");
}

void CheckPoint01(string &in asName, int alCount)
{
    
SetPlayerHealth(RandFloat(80,90));
    
SetPlayerSanity(RandFloat(40,60));
    
SetPlayerMoveSpeedMul(1);
    
SetPlayerRunSpeedMul(1);
    
SetPlayerCrouching(false);
    
}

void easterown(string &in asParent, string &in asChild, int alState)
{
    
AddTimer("eastern", 3.0f, "easterr");
}

void easterr(string &in asTimer)
{
    
SetEntityActive("enemy3", true);
    
ShowEnemyPlayerPosition("enemy3");
    
StartPlayerLookAt("enemy3", 3, 4, "StopPlayerLookAt");
    
AddTimer("sanitytimer", 0.5f, "sanitydamage");
    
SetPlayerHealth(50);
    
SetPlayerMoveSpeedMul(0);
    
SetPlayerRunSpeedMul(0);
    
SetDeathHint("Misc", "DeathHint1");
}

void sanitydamage(string &in asTimer)
{
    
GiveSanityDamage(100, true);
    
PlaySoundAtEntity("react", "react_scare.snt", "Player", 0.0f, false);
    
SetPlayerCrouching(true);
}


void func_shelf(string &in asEntity, int alState)
{
    if (
alState == 1)
    {
    
SetMoveObjectState("shelf",1.0f);
    
PlaySoundAtEntity("", "quest_completed.snt", "shelf_move_1", 0, false);
        return;
    }
}




void SetMessage1(string& asTextCategory, string& asTextEntry, float afTime)
{
SetMessage("Sergej", "Mutter1", 0);
}

void OnPickup(string &in asItem, string &in asEntity)
{
    
SetLanternDisabled(false);
    
RemoveItem("tinderbox");
    
SetMessage("Sergej", "Mutter2", 0);
}
 
////////////////////////////
// Run when leaving map
void OnLeave()
{
 
} 

Also I have the cabinet locked until you walk in to the area.
05-25-2012, 01:06 PM
Find
Putmalk Offline
Senior Member

Posts: 290
Threads: 13
Joined: Apr 2012
Reputation: 15
#2
RE: Opening cabinet

Is the cabinet named "cabinet"?

You unlock the cabinet but the grunt can't open it himself. You need to open the cabinet itself (try SetMoveObjectState("cabinet", 1);.

On another note, move your Callbacks in the onEnter() function to onStart(). Completely worthless and wasteful to have them in OnEnter. OnStart is where you want them.

05-25-2012, 01:11 PM
Find
Topsu Offline
Junior Member

Posts: 12
Threads: 3
Joined: Mar 2012
Reputation: 0
#3
RE: Opening cabinet

(05-25-2012, 01:11 PM)Putmalk Wrote: Is the cabinet named "cabinet"?

You unlock the cabinet but the grunt can't open it himself. You need to open the cabinet itself (try SetMoveObjectState("cabinet", 1);.

On another note, move your Callbacks in the onEnter() function to onStart(). Completely worthless and wasteful to have them in OnEnter. OnStart is where you want them.
SetMoveObjectState("cabinet", 1); didnt work. :/

Now it looks like:

PHP Code: (Select All)
void OnStart()
{
SetLanternDisabled(false);
SetEntityCallbackFunc("tinderbox", "OnPickup");
AddEntityCollideCallback("Player", "script1", "SetMessage1", true, 1);
AddEntityCollideCallback("Player", "script3", "easterown", true, 1);
AddEntityCollideCallback("Player", "script5", "collideenemy4", true, 1);
AddEntityCollideCallback("Player", "script6", "collideenemy6", true, 1);
AddEntityCollideCallback("Player", "Check1area", "check1", true, 1);
AddEntityCollideCallback("Player", "Check2area", "check2", true, 1);
SetEntityPlayerInteractCallback("door2", "Collide", true);
SetEntityConnectionStateChangeCallback("lever", "func_shelf");
AddEntityCollideCallback("Player", "startenemy5", "collideenemy5", true, 1);
}

void collideenemy6(string &in asParent, string &in asChild, int alState)
{
    
ClearEnemyPatrolNodes("enemy6");
    
SetSwingDoorLocked("cabinet", false, true);
    
AddTimer("timer123", 0.7f, "startenemy6");
    
StartPlayerLookAt("cabinet", 3, 4, "StopPlayerLookAt");
    
AddEnemyPatrolNode("enemy6", "PathNodeArea_6", 0, "");
}

void startenemy6(string &in asTimer)
{
    
SetMoveObjectState("cabinet", 1);
    
ClearEnemyPatrolNodes("enemy6");
    
SetEntityActive("enemy6", true);
    
ShowEnemyPlayerPosition("enemy6");
    
AddEntityCollideCallback("enemy6", "noticeenemy6", "notenemy6", true, 1);
}

void collideenemy4(string &in asParent, string &in asChild, int alState)
{
    
ClearEnemyPatrolNodes("enemy4");
    
SetEntityActive("enemy4", true);
    
AddEnemyPatrolNode("enemy4", "PathNodeArea_2", 0, "");
    
AddEnemyPatrolNode("enemy4", "PathNodeArea_3", 0, "");
    
AddEntityCollideCallback("enemy4", "fadeenemy4", "Fadeenemy4", true, 1);
}

void collideenemy5(string &in asParent, string &in asChild, int alState)
{
    
ClearEnemyPatrolNodes("enemy5");
    
SetEntityActive("enemy5", true);
    
AddEnemyPatrolNode("enemy5", "PathNodeArea_4", 0, "");
    
AddEnemyPatrolNode("enemy5", "PathNodeArea_5", 0, "");
    
AddEntityCollideCallback("enemy5", "fadeenemy5", "Fadeenemy5", true, 1);
    
}

void Fadeenemy5(string &in asParent, string &in asChild, int alState)
{
    
SetEntityActive("enemy5", false);
}

void Fadeenemy4(string &in asParent, string &in asChild, int alState)
{
    
SetEntityActive("enemy4", false);
}

void Collide(string &in asEntity)
{
    
SetEntityPlayerInteractCallback("door1", "Collide2", true);
}

void Collide2(string &in asEntity)
{
//    ClearEnemyPatrolNodes("enemy2");
//    SetEntityActive("enemy2", true);
    
AddEnemyPatrolNode("enemy2", "PathNodeArea_1", 0, "");
    
AddEntityCollideCallback("enemy2", "script4", "Collideenemy2", true, 1);
}

void Collideenemy2(string &in asParent, string &in asChild, int alState)
{
    
SetPropHealth("door2", 50);
    
ShowEnemyPlayerPosition("enemy2");
}

void check1(string &in asParent, string &in asChild, int alState)
{
    
CheckPoint ("Check1", "Check1", "CheckPoint01", "Misc", "DeathHint2");
}

void check2(string &in asParent, string &in asChild, int alState)
{
    
CheckPoint ("Check2", "Check1", "CheckPoint01", "Misc", "DeathHint1");
}

void CheckPoint01(string &in asName, int alCount)
{
    
SetPlayerHealth(RandFloat(80,90));
    
SetPlayerSanity(RandFloat(40,60));
    
SetPlayerMoveSpeedMul(1);
    
SetPlayerRunSpeedMul(1);
    
SetPlayerCrouching(false);
    
}

void easterown(string &in asParent, string &in asChild, int alState)
{
    
AddTimer("eastern", 3.0f, "easterr");
}

void easterr(string &in asTimer)
{
    
SetEntityActive("enemy3", true);
    
ShowEnemyPlayerPosition("enemy3");
    
StartPlayerLookAt("enemy3", 3, 4, "StopPlayerLookAt");
    
AddTimer("sanitytimer", 0.5f, "sanitydamage");
    
SetPlayerHealth(50);
    
SetPlayerMoveSpeedMul(0);
    
SetPlayerRunSpeedMul(0);
    
SetDeathHint("Misc", "DeathHint1");
}

void sanitydamage(string &in asTimer)
{
    
GiveSanityDamage(100, true);
    
PlaySoundAtEntity("react", "react_scare.snt", "Player", 0.0f, false);
    
SetPlayerCrouching(true);
}


void func_shelf(string &in asEntity, int alState)
{
    if (
alState == 1)
    {
    
SetMoveObjectState("shelf",1.0f);
    
PlaySoundAtEntity("", "quest_completed.snt", "shelf_move_1", 0, false);
        return;
    }
}




void SetMessage1(string& asTextCategory, string& asTextEntry, float afTime)
{
SetMessage("Sergej", "Mutter1", 0);
}

void OnPickup(string &in asItem, string &in asEntity)
{
    
SetLanternDisabled(false);
    
RemoveItem("tinderbox");
    
SetMessage("Sergej", "Mutter2", 0);
}
 
////////////////////////////
// Run when leaving map
void OnLeave()
{
 
} 
05-25-2012, 01:55 PM
Find
Putmalk Offline
Senior Member

Posts: 290
Threads: 13
Joined: Apr 2012
Reputation: 15
#4
RE: Opening cabinet

Oh? SetObjectMoveState didn't work? Hm, okay. That wasn't a set in stone solution, I just wanted to see if it would work.

You might be able to use SetSwingDoorClosed("cabinet", false, true); function. Or you might be able to provide a force on the cabinet to make it open use AddPropForce("cabinet", int x, int y, int z, "world");.

We are trying to get the doors to open, right? So the grunt can charge out? (just double checking).

05-25-2012, 02:00 PM
Find
Topsu Offline
Junior Member

Posts: 12
Threads: 3
Joined: Mar 2012
Reputation: 0
#5
RE: Opening cabinet

(05-25-2012, 02:00 PM)Putmalk Wrote: Oh? SetObjectMoveState didn't work? Hm, okay. That wasn't a set in stone solution, I just wanted to see if it would work.

You might be able to use SetSwingDoorClosed("cabinet", false, true); function. Or you might be able to provide a force on the cabinet to make it open use AddPropForce("cabinet", int x, int y, int z, "world");.

We are trying to get the doors to open, right? So the grunt can charge out? (just double checking).
Yup, thats what we are trying. Smile

And SetSwingDoorClosed("cabinet", false, true);

worked, thank you.
(This post was last modified: 05-25-2012, 02:33 PM by Topsu.)
05-25-2012, 02:25 PM
Find




Users browsing this thread: 1 Guest(s)