ProyectV
Junior Member
Posts: 19
Threads: 6
Joined: Apr 2014
Reputation:
0
WHAT IS WRONG?!!!!!!!!!!!!!
Okay, my problem: the map dosen't change the level. My script:
Spoiler below!
void OnStart()
{
}
void OnEnter()
{
AddEntityCollideCallback("enemy_suitor_alois_1","ScriptArea_1", "DestroyDoor", true, 1);
AddEntityCollideCallback("enemy_suitor_alois_1","ScriptArea_2", "ChasePatch", true, 1);
AddEntityCollideCallback("enemy_suitor_alois_1","ScriptArea_3", "DestroyDoor2", true, 1);
AddEntityCollideCallback("Player","ScriptArea_4", "Scare1", true, 1);
AddEntityCollideCallback("prison_2", "ScriptArea_5","ScareCell", true, 1);
AddEntityCollideCallback("Player", "ScriptArea_7","ScareCell2", true, 1);
AddEntityCollideCallback("enemy_suitor_alois_1","PathNodeArea_1", "ErasePatrol", true, 1);
AddLocalVarInt("EventScare1", 0);
AddTimer("", 48.0f, "UnlockCell");
PlayMusic("23_amb02.ogg", true, 0.6f, 4.0f, 0, true);
Again(0.0f);
}
void Again(float eSpeed1)
{
if(GetPlayerHealth() > 0)
{
return;
}
AddTimer("", eSpeed1, "ChangeLevel");
GivePlayerDamage(110, "Claws", true, true);
StartScreenShake(0.01f, 0.5f, 0.5f, 1.0f);
PlayGuiSound("attack_claw.snt", 0.7f);
SetGlobalVarInt("DejaVu", 1);
}
void ChangeLevel(string &in asTimer)
{
ChangeMap("Cuartos Esclavos.map", "PlayerStartArea_1", "22_end.snt", "");
}
void Again(string &in asName)
{
if(GetGlobalVarInt("DejaVu")== 1)
{
SetMessage("", "", 0.0f);
}
}
void UnlockCell(string &in asTimer)
{
SetSwingDoorLocked("prison_1", false, true);
}
void Puzzle1(string &in asEntity, int alState)
{
if(GetLeverState("lever01")== 1
&& GetLeverState("lever02")== -1
&& GetLeverState("lever04")== -1
&& GetLeverState("lever05")== 1
&& GetLeverState("lever06")== 1
&& GetPlayerSanity() >50)
{
SetLeverStuckState("lever01", 1, true);
SetLeverStuckState("lever02", -1, true);
SetLeverStuckState("lever04", -1, true);
SetLeverStuckState("lever05", 1, true);
SetLeverStuckState("lever06", 1, true);
SetLocalVarInt("EventScare1", 1);
SetEntityActive("ScriptArea_4", true);
SetLevelDoorLocked("cellar_wood01_slow_2", false);
PlayMusic("02_puzzle.ogg", false, 1.5f, 2.0f, 0, false);
GiveSanityBoost();
}
else if(GetLeverState("lever01")== 1
&& GetLeverState("lever02")== -1
&& GetLeverState("lever04")== -1
&& GetLeverState("lever05")== 1
&& GetLeverState("lever06")== 1
&& GetPlayerSanity() <50)
{
SetLeverStuckState("lever01", 1, true);
SetLeverStuckState("lever02", -1, true);
SetLeverStuckState("lever04", -1, true);
SetLeverStuckState("lever05", 1, true);
SetLeverStuckState("lever06", 1, true);
SetLevelDoorLocked("cellar_wood01_slow_2", false);
SetEntityActive("enemy_suitor_alois_1", true);
AddTimer("", 1.0f, "Pursuit");
PlayMusic("att_suitor.ogg", true, 3.0f, 0.0f, 1, false);
}
}
void Pursuit(string &in asTimer)
{
ShowEnemyPlayerPosition("enemy_suitor_alois_1");
AddTimer("", 1.0f, "Pursuit");
}
void DestroyDoor(string &in asParent, string &in asChild, int alState)
{
if(GetLocalVarInt("EventScare1")== 0)
{
SetPropHealth("cellar_wood01_slow_4",0.0f);
PlaySoundAtEntity("", "break_wood.snt", "ScriptArea_1", 0, false);
}
}
void ChasePatch(string &in asParent, string &in asChild, int alState)
{
SetEntityActive("enemy_suitor_alois_1", false);
SetEntityActive("enemy_suitor_alois_2", true);
ShowEnemyPlayerPosition("enemy_suitor_alois_2");
}
void DestroyDoor2(string &in asParent, string &in asChild, int alState)
{
if(GetLocalVarInt("EventScare1")== 0)
{
SetPropHealth("cellar_wood01_slow_3",0.0f);
PlaySoundAtEntity("", "break_wood.snt", "ScriptArea_1", 0, false);
}
}
void Scare1(string &in asParent, string &in asChild, int alState)
{
if(GetLocalVarInt("EventScare1")== 1)
{
CreateParticleSystemAtEntity("","ps_dust_whirl","ScriptArea_9", false);
PlaySoundAtEntity("", "general_wind_whirl", "ScriptArea_9", 5.0f, false);
PlaySoundAtEntity("", "scare_loon_single", "ScriptArea_9", 1.0f, false);
PlayMusic("20_event_darkness", false, 0.8f, 2.0f, 10, true);
PlayMusic("12_amb", true, 0.6f, 2.0f, 0, true);
AddTimer("", 1.0f, "LightsOut");
}
}
void LightsOut(string &in asTimer)
{
PlaySoundAtEntity("", "general_wind_whirl", "ScriptArea_4", 5.0f, false);
SetLampLit("torch_static01_7", false, true);
SetLampLit("torch_static01_5", false, true);
SetLampLit("torch_static01_6", false, true);
SetLampLit("torch_static01_4", false, true);
SetLampLit("torch_static01_9", false, true);
SetLampLit("torch_static01_8", false, true);
SetLampLit("candle_floor_small_2", false, true);
SetLampLit("candle_floor_small_1", false, true);
SetLampLit("candle_floor_small_7", false, true);
SetLampLit("candle_floor_small_5", false, true);
SetEntityActive("enemy_suitor_alois_1", true);
AddEnemyPatrolNode("enemy_suitor_alois_1", "PathNodeArea_1", RandFloat(5.0f, 10.0f), "");
AddEnemyPatrolNode("enemy_suitor_alois_1", "PathNodeArea_29", RandFloat(5.0f, 10.0f), "");
AddEnemyPatrolNode("enemy_suitor_alois_1", "PathNodeArea_9", RandFloat(5.0f, 10.0f), "");
AddEnemyPatrolNode("enemy_suitor_alois_1", "PathNodeArea_8", RandFloat(5.0f, 10.0f), "");
GiveSanityDamage(20.0f, true);
}
void ErasePatrol(string &in asParent, string &in asChild, int alState)
{
ClearEnemyPatrolNodes("enemy_suitor_alois_1");
}
void ScareCell(string &in asParent, string &in asChild, int alState)
{
StartPlayerLookAt("ScriptArea_6", 10.0f, 10.0f, "");
FadeSepiaColorTo(0.0f, 2.0f);
FadeRadialBlurTo(0.0f, 2.0f);
GiveSanityDamage(20.0f, true);
PlaySoundAtEntity("", "ui_insanity_touch.snt", "ScriptArea_4", 0, false);
PlaySoundAtEntity("", "react_pant.snt", "Player", 0, false);
AddTimer("", 2.0f, "StopLook");
}
void ScareCell2(string &in asParent, string &in asChild, int alState)
{
StartPlayerLookAt("ScriptArea_8", 1.0f, 3.0f, "");
GiveSanityDamage(20.0f, true);
PlaySoundAtEntity("", "general_wind_whirl.snt", "ScriptArea_8", 0, false);
CreateParticleSystemAtEntity("", "ps_dust_whirl.ps", "ScriptArea_8", false);
PlaySoundAtEntity("", "react_pant.snt", "Player", 0, false);
SetLampLit("torch_static01_3", false, true);
AddTimer("", 2.0f, "StopLook2");
}
void StopLook(string &in asTimer)
{
StopPlayerLookAt();
}
void StopLook2(string &in asTimer)
{
StopPlayerLookAt();
}
void OnLeave()
{
StopSound("att_suitor.ogg", 0.0f);
}
(This post was last modified: 06-06-2014, 02:32 AM by ProyectV .)
06-06-2014, 02:31 AM
Daemian
Posting Freak
Posts: 1,129
Threads: 42
Joined: Dec 2012
Reputation:
49
RE: WHAT IS WRONG?!!!!!!!!!!!!!
Add a debug message to see if the function is working.
06-06-2014, 03:59 AM
Romulator
Not Tech Support ;-)
Posts: 3,628
Threads: 63
Joined: Jan 2013
Reputation:
195
RE: WHAT IS WRONG?!!!!!!!!!!!!!
You seem to have two Again voids. Change one of them and adjust your code to reflect that.
I also believe you're not expressing your code somehow on what eSpeed1 is, therefore while it is being passed into the void, you don't have a time set for the timer to occur. Is there a reason why you cannot simply just add a collide function or generate a random float and set that to be eSpeed1?
Discord: Romulator#0001
06-06-2014, 07:15 AM
PutraenusAlivius
Posting Freak
Posts: 4,713
Threads: 75
Joined: Dec 2012
Reputation:
119
RE: WHAT IS WRONG?!!!!!!!!!!!!!
(06-06-2014, 07:15 AM) Romulator Wrote: I also believe you're not expressing your code somehow on what eSpeed1 is, therefore while it is being passed into the void, you don't have a time set for the timer to occur. Is there a reason why you cannot simply just add a collide function or generate a random float and set that to be eSpeed1?
You could just define what eSpeed1 is in the
OnStart OnEnter, or just you know, use regular syntax.
"Veni, vidi, vici."
"I came, I saw, I conquered."
06-06-2014, 08:41 AM
Mudbill
Muderator
Posts: 3,881
Threads: 59
Joined: Apr 2013
Reputation:
179
RE: WHAT IS WRONG?!!!!!!!!!!!!!
If I read it correctly, this is what happens:
When you enter this level, it immediately calls Again(0.0f);
This function checks the health of the player, and if the player has more than 0, it cancels out the rest of the script. This could be the problem.
If the player is dead when he enters this level (I don't see how that's possible), the rest is ran. There's a lot of dead code right here, because since you input 0.0f in the Again parameter, the timer for changing the level is also 0.0f (instantly). The sound and screen shake never get time to do anything. If the script gets this far, the player is also dealt 110 damage (if the player is dead, why must you torture him so? ;_;). A variable is ticked and the map is changed right away.
It's a very strange series of events you have here. I'm not sure what you intended with it.
(This post was last modified: 06-06-2014, 01:12 PM by Mudbill .)
06-06-2014, 01:11 PM
ProyectV
Junior Member
Posts: 19
Threads: 6
Joined: Apr 2014
Reputation:
0
RE: WHAT IS WRONG?!!!!!!!!!!!!!
(06-06-2014, 01:11 PM) Mudbill Wrote: It's a very strange series of events you have here. I'm not sure what you intended with it. What i'm trying to do is, if you die on the game you'll have to start over from the begining like an infinte loop that will break if you survive
(This post was last modified: 06-07-2014, 02:08 AM by ProyectV .)
06-07-2014, 02:07 AM
PutraenusAlivius
Posting Freak
Posts: 4,713
Threads: 75
Joined: Dec 2012
Reputation:
119
RE: WHAT IS WRONG?!!!!!!!!!!!!!
void OnStart () { Again ( 0.0f ); } void Again ( float eSpeed1 ) { if( GetPlayerHealth () > 0 ) { return; } AddTimer ( "" , eSpeed1 , "ChangeLevel" ); GivePlayerDamage ( 110 , "Claws" , true , true ); StartScreenShake ( 0.01f , 0.5f , 0.5f , 1.0f ); PlayGuiSound ( "attack_claw.snt" , 0.7f ); SetGlobalVarInt ( "DejaVu" , 1 ); } void ChangeLevel ( string & in asTimer ) { ChangeMap ( "Cuartos Esclavos.map" , "PlayerStartArea_1" , "22_end.snt" , "" ); } void Again ( string & in asName ) { if( GetGlobalVarInt ( "DejaVu" )== 1 ) { SetMessage ( "" , "" , 0.0f ); } }
I think the engine is confused which one to call. Also what is eSpeed1?
"Veni, vidi, vici."
"I came, I saw, I conquered."
06-07-2014, 03:04 AM
ProyectV
Junior Member
Posts: 19
Threads: 6
Joined: Apr 2014
Reputation:
0
RE: WHAT IS WRONG?!!!!!!!!!!!!!
(06-07-2014, 03:04 AM) SomethingRidiculous Wrote: void OnStart () { Again ( 0.0f ); } void Again ( float eSpeed1 ) { if( GetPlayerHealth () > 0 ) { return; } AddTimer ( "" , eSpeed1 , "ChangeLevel" ); GivePlayerDamage ( 110 , "Claws" , true , true ); StartScreenShake ( 0.01f , 0.5f , 0.5f , 1.0f ); PlayGuiSound ( "attack_claw.snt" , 0.7f ); SetGlobalVarInt ( "DejaVu" , 1 ); } }
I think the engine is confused which one to call. Also what is eSpeed1?
0.0f = eSpeed1
again(0.0f);
void again(float eSpeed1)
06-07-2014, 03:30 AM
PutraenusAlivius
Posting Freak
Posts: 4,713
Threads: 75
Joined: Dec 2012
Reputation:
119
RE: WHAT IS WRONG?!!!!!!!!!!!!!
(06-07-2014, 03:30 AM) ProyectV Wrote: (06-07-2014, 03:04 AM) SomethingRidiculous Wrote: void OnStart () { Again ( 0.0f ); } void Again ( float eSpeed1 ) { if( GetPlayerHealth () > 0 ) { return; } AddTimer ( "" , eSpeed1 , "ChangeLevel" ); GivePlayerDamage ( 110 , "Claws" , true , true ); StartScreenShake ( 0.01f , 0.5f , 0.5f , 1.0f ); PlayGuiSound ( "attack_claw.snt" , 0.7f ); SetGlobalVarInt ( "DejaVu" , 1 ); } }
I think the engine is confused which one to call. Also what is eSpeed1?
0.0f = eSpeed1
again(0.0f);
void again(float eSpeed1)
What I meant is what is eSpeed1. eSpeed1 is definitely not a default string so it's unrecognizeable.
"Veni, vidi, vici."
"I came, I saw, I conquered."
06-07-2014, 03:39 AM
Mudbill
Muderator
Posts: 3,881
Threads: 59
Joined: Apr 2013
Reputation:
179
RE: WHAT IS WRONG?!!!!!!!!!!!!!
eSpeed1 is defined as a float in the parameter of Again. The other Again that uses a string parameters does not conflict with the float one. Only constructors with the same parameters can conflict. For example, you can make OnStart("Answer") and OnStart(42) and neither of them will cause any issues for the normal OnStart() with no parameters.
@OP
So you're trying to reset the level if the player dies? I don't think OnEnter is called again when you respawn. You should use the CheckPoint script. It has a callback for when the player dies and where to respawn them.
CheckPoint ( string & asName , string & asStartPos , string & asCallback , string & asDeathHintCat , string & asDeathHintEntry );
(This post was last modified: 06-07-2014, 12:39 PM by Mudbill .)
06-07-2014, 12:36 PM