Frictional Games Forum (read-only)
If and else, need help! - Printable Version

+- Frictional Games Forum (read-only) (https://www.frictionalgames.com/forum)
+-- Forum: Amnesia: The Dark Descent (https://www.frictionalgames.com/forum/forum-6.html)
+--- Forum: Custom Stories, TCs & Mods - Development (https://www.frictionalgames.com/forum/forum-38.html)
+---- Forum: Development Support (https://www.frictionalgames.com/forum/forum-39.html)
+---- Thread: If and else, need help! (/thread-18205.html)



If and else, need help! - Alento - 09-08-2012

Hey all!

Look at this code:


void tangenterA(string &in asEntity)
{
PlaySoundAtEntity("", "pianoA.snt", "tangent_a",0, false );
AddLocalVarInt("tangent", 1);
AddTimer("Recheck", 0.1f, "CheckTangent");
}

void tangenterB(string &in asEntity)
{
PlaySoundAtEntity("", "pianoB.snt", "tangent_b",0, false );
SetEntityActive("wrong5", true);
ShowEnemyPlayerPosition("wrong5");
}

void tangenterC(string &in asEntity)
{
if (GetLocalVarInt("tangent") == 1)
{
AddLocalVarInt("tangent", 1);
AddTimer("Recheck2", 0.1f, "CheckTangent");
}
else if (GetLocalVarInt("tangent") == 0)
{
SetEntityActive("wrong1",true);
ShowEnemyPlayerPosition("wrong1");
SetPropHealth("blowdoor1", 0);
}

PlaySoundAtEntity("", "pianoC.snt", "tangent_c",0, false );

}

void tangenterD(string &in asEntity)
{
if (GetLocalVarInt("tangent") == 2)
{
AddLocalVarInt("tangent", 1);
AddTimer("Recheck3", 0.1f, "CheckTangent");

}
else if (GetLocalVarInt("tangent") == 0)
{
SetEntityActive("wrong2",true);
ShowEnemyPlayerPosition("wrong2");
SetPropHealth("blowdoor2", 0);

}
PlaySoundAtEntity("", "pianoD.snt", "tangent_d",0, false );
}

void tangenterE(string &in asEntity)
{
PlaySoundAtEntity("", "pianoE.snt", "tangent_e",0, false );
SetEntityActive("wrong3", true);
ShowEnemyPlayerPosition("wrong3");
SetPropHealth("blowdoor3", 0);
}

void tangenterF(string &in asEntity)
{
PlaySoundAtEntity("", "pianoF.snt", "tangent_f",0, false );
SetEntityActive("wrong4", true);
ShowEnemyPlayerPosition("wrong4");
SetPropHealth("musicdoor", 0);
}
You get what I want?
Okey, I've got x numbers of "tones", A,B,C,D,E and F.
What i want, is, when you hit A, you will get one var. and IF you have 1 var, and you hit C, you will get another, if you don't have 1 var when you hit C, monster will spawn, and same for D.

BUT, if you hit A,C and then D. You complete the task, and door will be unlocked.

this is like the doors are like:


void CheckTangent(string &in asTimer)
{
if (GetLocalVarInt("tangent") == 0)
{
SetSwingDoorLocked("DDoor1", true, true);
SetSwingDoorLocked("DDoor2", true, true);
SetSwingDoorLocked("DDoor3", true, true);
}
else if (GetLocalVarInt("Tangent") == 3)
{
SetSwingDoorLocked("DDoor1", false, true);
SetSwingDoorLocked("DDoor2", false, true);
SetSwingDoorLocked("DDoor3", false, true);
GiveSanityBoostSmall();
}
}
If something is blurry or something, let me know, and please help me, my brain is a mess right now....
Thanks! Smile

PS! "tangent" and "tangenter" is like "key" - piano keys in english.


RE: If and else, need help! - Theforgot3n1 - 09-08-2012

What is blurry for me, is where the problem lies. Shouldn't it work by your scripting?

All I can recommend is that you change your script to the bold texts I've modified. Post any problems that arise.

void tangenterA(string &in asEntity)
{
if(GetLocalVarInt("tangent") == 0)
{

AddLocalVarInt("tangent", 1);
AddTimer("Recheck", 0.1f, "CheckTangent");
}
else if (GetLocalVarInt("tangent") != 0)
{
SetEntityActive("wrong0", true);
ShowEnemyPlayerPosition("wrong0");
}

PlaySoundAtEntity("", "pianoA.snt", "tangent_a",0, false );
}



void tangenterB(string &in asEntity)

{
PlaySoundAtEntity("", "pianoB.snt", "tangent_b",0, false );
SetEntityActive("wrong5", true);
ShowEnemyPlayerPosition("wrong5");
}



void tangenterC(string &in asEntity)
{
if (GetLocalVarInt("tangent") == 1)
{
AddLocalVarInt("tangent", 1);
AddTimer("Recheck2", 0.1f, "CheckTangent");
}
else if (GetLocalVarInt("tangent") != 1)
{
SetEntityActive("wrong1",true);
ShowEnemyPlayerPosition("wrong1");
SetPropHealth("blowdoor1", 0);
}
PlaySoundAtEntity("", "pianoC.snt", "tangent_c",0, false );
}



void tangenterD(string &in asEntity)
{
if (GetLocalVarInt("tangent") == 2)
{
AddLocalVarInt("tangent", 1);
AddTimer("Recheck3", 0.1f, "CheckTangent");
}
//could be changed to just a simple "else", since either you hit it on '2' or you don't.
else if (GetLocalVarInt("tangent") != 2)
{
SetEntityActive("wrong2",true);
ShowEnemyPlayerPosition("wrong2");
SetPropHealth("blowdoor2", 0);
}
PlaySoundAtEntity("", "pianoD.snt", "tangent_d",0, false );
}

void tangenterE(string &in asEntity)
{
PlaySoundAtEntity("", "pianoE.snt", "tangent_e",0, false );
SetEntityActive("wrong3", true);
ShowEnemyPlayerPosition("wrong3");
SetPropHealth("blowdoor3", 0);
}

void tangenterF(string &in asEntity)
{
PlaySoundAtEntity("", "pianoF.snt", "tangent_f",0, false );
SetEntityActive("wrong4", true);
ShowEnemyPlayerPosition("wrong4");
SetPropHealth("musicdoor", 0);
}

And btw, I didn't double check all the possible minor issues that might crash stuff, if that's your current problem.

As mentioned in a comment, you can also change the "else if (GetLocalVarInt("tangent") != 2)" (and all the other ones) to just "else".


RE: If and else, need help! - Alento - 09-08-2012

(09-08-2012, 08:38 AM)Theforgot3n1 Wrote: What is blurry for me, is where the problem lies. Shouldn't it work by your scripting?

All I can recommend is that you change your script to the bold texts I've modified. Post any problems that arise.

void tangenterA(string &in asEntity)
{
if(GetLocalVarInt("tangent") == 0)
{

AddLocalVarInt("tangent", 1);
AddTimer("Recheck", 0.1f, "CheckTangent");
}
else if (GetLocalVarInt("tangent") != 0)
{
SetEntityActive("wrong0", true);
ShowEnemyPlayerPosition("wrong0");
}

PlaySoundAtEntity("", "pianoA.snt", "tangent_a",0, false );
}



void tangenterB(string &in asEntity)

{
PlaySoundAtEntity("", "pianoB.snt", "tangent_b",0, false );
SetEntityActive("wrong5", true);
ShowEnemyPlayerPosition("wrong5");
}



void tangenterC(string &in asEntity)
{
if (GetLocalVarInt("tangent") == 1)
{
AddLocalVarInt("tangent", 1);
AddTimer("Recheck2", 0.1f, "CheckTangent");
}
else if (GetLocalVarInt("tangent") != 1)
{
SetEntityActive("wrong1",true);
ShowEnemyPlayerPosition("wrong1");
SetPropHealth("blowdoor1", 0);
}
PlaySoundAtEntity("", "pianoC.snt", "tangent_c",0, false );
}



void tangenterD(string &in asEntity)
{
if (GetLocalVarInt("tangent") == 2)
{
AddLocalVarInt("tangent", 1);
AddTimer("Recheck3", 0.1f, "CheckTangent");
}
//could be changed to just a simple "else", since either you hit it on '2' or you don't.
else if (GetLocalVarInt("tangent") != 2)
{
SetEntityActive("wrong2",true);
ShowEnemyPlayerPosition("wrong2");
SetPropHealth("blowdoor2", 0);
}
PlaySoundAtEntity("", "pianoD.snt", "tangent_d",0, false );
}

void tangenterE(string &in asEntity)
{
PlaySoundAtEntity("", "pianoE.snt", "tangent_e",0, false );
SetEntityActive("wrong3", true);
ShowEnemyPlayerPosition("wrong3");
SetPropHealth("blowdoor3", 0);
}

void tangenterF(string &in asEntity)
{
PlaySoundAtEntity("", "pianoF.snt", "tangent_f",0, false );
SetEntityActive("wrong4", true);
ShowEnemyPlayerPosition("wrong4");
SetPropHealth("musicdoor", 0);
}

And btw, I didn't double check all the possible minor issues that might crash stuff, if that's your current problem.

As mentioned in a comment, you can also change the "else if (GetLocalVarInt("tangent") != 2)" (and all the other ones) to just "else".
Oh, so you mean that my scripting is right?
Well I'm glad to hear that Big Grin but the doors won't open.. :/

*EDIT* I've got it now! Smile it works! Smile thanks for the help Smile