Frictional Games Forum (read-only)
My boolean functions are messing up the script - 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 (https://www.frictionalgames.com/forum/forum-35.html)
+--- Thread: My boolean functions are messing up the script (/thread-8369.html)



My boolean functions are messing up the script - willochill - 06-01-2011

I copied and pasted the script i wrote for a map below. for some reason when i introduce a boolean function and say if(blabbity blah(blah) == true), then the function works fine but if i use if(blabbity blah(blah) == false), the function stops working altogether. what am i doing wrong?
void OnStart()
{
AddEntityCollideCallback("Player", "AreaActivateGrunt", "Func01", false, 1);
AddEntityCollideCallback("servant_grunt_1", "AreaDisableGrunt", "Func02", false, 1);
SetEntityPlayerInteractCallback("bone_saw_2", "GiveSanityAndAlertGrunt", false);
AddEntityCollideCallback("servant_grunt_2", "AreaDisableSecondGrunt", "DisableSecondGrunt", false, 1);
if (GetEntityExists("servant_grunt_2") == false)
{
AddEntityCollideCallback("Player", "AreaDeadManInCloset", "LookAtDeadMan", true, 1);
}
if (HasItem("bone_saw_2") == false)
{
AddEntityCollideCallback("Player", "AreaSave_1", "AutoSaveStudy", true, 1);
}
AddUseItemCallback("", "studykey", "mansion_3", "UnlockStudyHallway", true);
SetEntityPlayerInteractCallback("mansion_3", "AddQuestGetKey", false);

PlayMusic("00_creak.ogg", true, 1.0f, 0, 0, true);
}
void Func01(string &in asParent, string &in asChild, int alState)
{
if (HasItem("lantern_1") == true)
{
SetEntityActive("servant_grunt_1", true);
RemoveEntityCollideCallback("Player", "AreaActivateGrunt");
AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_1", 0.0f, "");
AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_3", 0.0f, "");
AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_6", 0.0f, "");
AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_7", 4.0f, "");
AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_8", 0.0f, "");
AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_9", 0.0f, "");
AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_10", 0.0f, "");
AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_11", 2.0f, "");
AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_12", 0.0f, "");
AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_13", 0.0f, "");
AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_14", 0.0f, "");
AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_15", 2.0f, "");
AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_16", 0.0f, "");
AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_17", 2.0f, "");
AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_18", 0.0f, "");
AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_20", 0.0f, "");
AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_21", 2.0f, "");
}
}

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

void UnlockStudyHallway(string &in asItem, string &in asEntity)
{
SetSwingDoorLocked("mansion_3", false, true);
PlaySoundAtEntity("", "unlock_door", "mansion_3", 0, false);
RemoveItem("studykey");
}
void GiveSanityAndAlertGrunt(string &in AsEntity)
{
SetPlayerSanity(100);
PlaySoundAtEntity("DanielSanityGain", "ui_sanity_gain", "Player", 0.0f, false);
AddTimer("TimerActivateSecondGrunt", 3.0f, "ActivateSecondGrunt");
}
void ActivateSecondGrunt(string &in asTimer)
{
SetEntityActive("servant_grunt_2", true);
StopSound("DanielSanityGain", 0);
AddEnemyPatrolNode("servant_grunt_2", "PathNodeArea_4", 0.0f, "");
AddEnemyPatrolNode("servant_grunt_2", "PathNodeArea_5", 0.0f, "");
AddEnemyPatrolNode("servant_grunt_2", "PathNodeArea_19", 0.0f, "");
AddEnemyPatrolNode("servant_grunt_2", "PathNodeArea_22", 4.0f, "");
AddEnemyPatrolNode("servant_grunt_2", "PathNodeArea_23", 0.0f, "");
AddEnemyPatrolNode("servant_grunt_2", "PathNodeArea_24", 0.0f, "");
AddEnemyPatrolNode("servant_grunt_2", "PathNodeArea_25", 0.0f, "");
AddEnemyPatrolNode("servant_grunt_2", "PathNodeArea_26", 0.0f, "");
AddEnemyPatrolNode("servant_grunt_2", "PathNodeArea_27", 0.0f, "");
}
void DisableSecondGrunt(string &in asParent, string &in asChild, int alState)
{
SetEntityActive("servant_grunt_2", false);
}
void LookAtDeadMan(string &in asParent, string &in asChild, int alState)
{
StartPlayerLookAt("corpse_male_1", 0.5f, 0.5f, "");
AddTimer ("TimerStopLookDeadMan", 2.0f, "StopLookDeadMan");
GiveSanityDamage(15, true);
PlayMusic("04_event_stairs", false, 1, 0.25f, 0, false);
AddTimer("reacttocorpse", 0.5f, "TimerPlayerReactToCorpse");
}
void TimerPlayerReactToCorpse(string &in asTimer)
{
PlaySoundAtEntity("scarecorpse", "react_breath", "Player", 0.1f, false);
}
void StopLookDeadMan(string &in asTimer)
{
StopPlayerLookAt();
}
void AddQuestGetKey(string &in asEntity)
{
AddQuest("QuestStudyHallway", "Quest_1");
}
void AutoSaveStudy(string &in asParent, string &in asChild, int alState)
{
AutoSave();
}




RE: My boolean functions are messing up the script - Kyle - 06-01-2011

You should really indent it and also put it into code form. :/

For code form, [*code] at the beginning of the script and [*/code] at the end. Remove asterisks.


RE: My boolean functions are messing up the script - willochill - 06-01-2011

well is indenting gonna make a difference in my script? i need a solution to my problem lol


RE: My boolean functions are messing up the script - Kyle - 06-01-2011

(06-01-2011, 12:50 AM)willochill Wrote: well is indenting gonna make a difference in my script? i need a solution to my problem lol

Indenting is a good thing. It can help you find errors, bugs, and makes it look neater. So you should do it.

But I guess I'll have to... -_-

Code:
void OnStart()
{
     AddEntityCollideCallback("Player", "AreaActivateGrunt", "Func01", false, 1);
     AddEntityCollideCallback("servant_grunt_1", "AreaDisableGrunt", "Func02", false, 1);
     SetEntityPlayerInteractCallback("bone_saw_2", "GiveSanityAndAlertGrunt", false);
     AddEntityCollideCallback("servant_grunt_2", "AreaDisableSecondGrunt", "DisableSecondGrunt", false, 1);
     if (GetEntityExists("servant_grunt_2") == false)
     {
          AddEntityCollideCallback("Player", "AreaDeadManInCloset", "LookAtDeadMan", true, 1);
     }
     if (HasItem("bone_saw_2") == false)
     {
          AddEntityCollideCallback("Player", "AreaSave_1", "AutoSaveStudy", true, 1);
     }
     AddUseItemCallback("", "studykey", "mansion_3", "UnlockStudyHallway", true);
     SetEntityPlayerInteractCallback("mansion_3", "AddQuestGetKey", false);

     PlayMusic("00_creak.ogg", true, 1.0f, 0, 0, true);
}
void Func01(string &in asParent, string &in asChild, int alState)
{
     if (HasItem("lantern_1") == true)
     {
          SetEntityActive("servant_grunt_1", true);
          RemoveEntityCollideCallback("Player", "AreaActivateGrunt");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_1", 0.0f, "");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_3", 0.0f, "");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_6", 0.0f, "");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_7", 4.0f, "");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_8", 0.0f, "");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_9", 0.0f, "");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_10", 0.0f, "");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_11", 2.0f, "");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_12", 0.0f, "");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_13", 0.0f, "");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_14", 0.0f, "");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_15", 2.0f, "");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_16", 0.0f, "");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_17", 2.0f, "");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_18", 0.0f, "");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_20", 0.0f, "");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_21", 2.0f, "");
     }
}
void Func02(string &in asParent, string &in asChild, int alState)
{
     SetEntityActive("servant_grunt_1", false);
}
void UnlockStudyHallway(string &in asItem, string &in asEntity)
{
     SetSwingDoorLocked("mansion_3", false, true);
     PlaySoundAtEntity("", "unlock_door", "mansion_3", 0, false);
     RemoveItem("studykey");
}
void GiveSanityAndAlertGrunt(string &in AsEntity)
{
     SetPlayerSanity(100);
     PlaySoundAtEntity("DanielSanityGain", "ui_sanity_gain", "Player", 0.0f, false);
     AddTimer("TimerActivateSecondGrunt", 3.0f, "ActivateSecondGrunt");
}
void ActivateSecondGrunt(string &in asTimer)
{
     SetEntityActive("servant_grunt_2", true);
     StopSound("DanielSanityGain", 0);
     AddEnemyPatrolNode("servant_grunt_2", "PathNodeArea_4", 0.0f, "");
     AddEnemyPatrolNode("servant_grunt_2", "PathNodeArea_5", 0.0f, "");
     AddEnemyPatrolNode("servant_grunt_2", "PathNodeArea_19", 0.0f, "");
     AddEnemyPatrolNode("servant_grunt_2", "PathNodeArea_22", 4.0f, "");
     AddEnemyPatrolNode("servant_grunt_2", "PathNodeArea_23", 0.0f, "");
     AddEnemyPatrolNode("servant_grunt_2", "PathNodeArea_24", 0.0f, "");
     AddEnemyPatrolNode("servant_grunt_2", "PathNodeArea_25", 0.0f, "");
     AddEnemyPatrolNode("servant_grunt_2", "PathNodeArea_26", 0.0f, "");
     AddEnemyPatrolNode("servant_grunt_2", "PathNodeArea_27", 0.0f, "");
}
void DisableSecondGrunt(string &in asParent, string &in asChild, int alState)
{
     SetEntityActive("servant_grunt_2", false);
}
void LookAtDeadMan(string &in asParent, string &in asChild, int alState)
{
     StartPlayerLookAt("corpse_male_1", 0.5f, 0.5f, "");
     AddTimer ("TimerStopLookDeadMan", 2.0f, "StopLookDeadMan");
     GiveSanityDamage(15, true);
     PlayMusic("04_event_stairs", false, 1, 0.25f, 0, false);
     AddTimer("reacttocorpse", 0.5f, "TimerPlayerReactToCorpse");
}
void TimerPlayerReactToCorpse(string &in asTimer)
{
     PlaySoundAtEntity("scarecorpse", "react_breath", "Player", 0.1f, false);
}
void StopLookDeadMan(string &in asTimer)
{
     StopPlayerLookAt();
}
void AddQuestGetKey(string &in asEntity)
{
     AddQuest("QuestStudyHallway", "Quest_1");
}
void AutoSaveStudy(string &in asParent, string &in asChild, int alState)
{
     AutoSave();
}



RE: My boolean functions are messing up the script - willochill - 06-01-2011

well thanks for indenting it but it didnt really help make the script work.. lol
it's neater and nicer though
any other suggestions to help with the problem?


RE: My boolean functions are messing up the script - Kyle - 06-01-2011

(06-01-2011, 03:27 AM)willochill Wrote: well thanks for indenting it but it didnt really help make the script work.. lol
it's neater and nicer though
any other suggestions to help with the problem?

So what exactly ISN'T working?


RE: My boolean functions are messing up the script - willochill - 06-01-2011

this is what isn't working:
in void OnStart(),
Code:
if (GetEntityExists("servant_grunt_2") == false)
{
AddEntityCollideCallback("Player", "AreaDeadManInCloset", "LookAtDeadMan", true, 1);
}
AND:
Code:
if (HasItem("bone_saw_2") == false)
{
AddEntityCollideCallback("Player", "AreaSave_1", "AutoSaveStudy", true, 1);
}
for both of these basically the if statement before it basically just eliminates the entire function. dunno why.
and yes they are indented in my script lol


RE: My boolean functions are messing up the script - Kyle - 06-01-2011

You should add debug messages if you create a dev environment.

If you did already, use this to check if something is working or not:

AddDebugMessage(string& asString, bool abCheckForDuplicates);

Example:

AddDebugMessage("The player doesn't have the item.", false);

Try this:

Code:
void OnStart()
{
     AddEntityCollideCallback("Player", "AreaActivateGrunt", "Func01", false, 1);
     AddEntityCollideCallback("servant_grunt_1", "AreaDisableGrunt", "Func02", false, 1);
     SetEntityPlayerInteractCallback("bone_saw_2", "GiveSanityAndAlertGrunt", false);
     AddEntityCollideCallback("servant_grunt_2", "AreaDisableSecondGrunt", "DisableSecondGrunt", false, 1);
     if (GetEntityExists("servant_grunt_2") == false)
     {
          AddDebugMessage("servant_grunt_2 does not exist.", false);
          AddEntityCollideCallback("Player", "AreaDeadManInCloset", "LookAtDeadMan", true, 1);
     }
     if (HasItem("bone_saw_2") == false)
     {
          AddDebugMessage("Player doesn't have bone_saw_2.", false);
          AddEntityCollideCallback("Player", "AreaSave_1", "AutoSaveStudy", true, 1);
     }
     AddUseItemCallback("", "studykey", "mansion_3", "UnlockStudyHallway", true);
     SetEntityPlayerInteractCallback("mansion_3", "AddQuestGetKey", false);

     PlayMusic("00_creak.ogg", true, 1.0f, 0, 0, true);
}
void Func01(string &in asParent, string &in asChild, int alState)
{
     if (HasItem("lantern_1") == true)
     {
          SetEntityActive("servant_grunt_1", true);
          RemoveEntityCollideCallback("Player", "AreaActivateGrunt");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_1", 0.0f, "");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_3", 0.0f, "");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_6", 0.0f, "");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_7", 4.0f, "");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_8", 0.0f, "");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_9", 0.0f, "");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_10", 0.0f, "");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_11", 2.0f, "");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_12", 0.0f, "");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_13", 0.0f, "");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_14", 0.0f, "");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_15", 2.0f, "");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_16", 0.0f, "");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_17", 2.0f, "");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_18", 0.0f, "");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_20", 0.0f, "");
          AddEnemyPatrolNode("servant_grunt_1", "PathNodeArea_21", 2.0f, "");
     }
}
void Func02(string &in asParent, string &in asChild, int alState)
{
     SetEntityActive("servant_grunt_1", false);
}
void UnlockStudyHallway(string &in asItem, string &in asEntity)
{
     SetSwingDoorLocked("mansion_3", false, true);
     PlaySoundAtEntity("", "unlock_door", "mansion_3", 0, false);
     RemoveItem("studykey");
}
void GiveSanityAndAlertGrunt(string &in AsEntity)
{
     SetPlayerSanity(100);
     PlaySoundAtEntity("DanielSanityGain", "ui_sanity_gain", "Player", 0.0f, false);
     AddTimer("TimerActivateSecondGrunt", 3.0f, "ActivateSecondGrunt");
}
void ActivateSecondGrunt(string &in asTimer)
{
     SetEntityActive("servant_grunt_2", true);
     StopSound("DanielSanityGain", 0);
     AddEnemyPatrolNode("servant_grunt_2", "PathNodeArea_4", 0.0f, "");
     AddEnemyPatrolNode("servant_grunt_2", "PathNodeArea_5", 0.0f, "");
     AddEnemyPatrolNode("servant_grunt_2", "PathNodeArea_19", 0.0f, "");
     AddEnemyPatrolNode("servant_grunt_2", "PathNodeArea_22", 4.0f, "");
     AddEnemyPatrolNode("servant_grunt_2", "PathNodeArea_23", 0.0f, "");
     AddEnemyPatrolNode("servant_grunt_2", "PathNodeArea_24", 0.0f, "");
     AddEnemyPatrolNode("servant_grunt_2", "PathNodeArea_25", 0.0f, "");
     AddEnemyPatrolNode("servant_grunt_2", "PathNodeArea_26", 0.0f, "");
     AddEnemyPatrolNode("servant_grunt_2", "PathNodeArea_27", 0.0f, "");
}
void DisableSecondGrunt(string &in asParent, string &in asChild, int alState)
{
     SetEntityActive("servant_grunt_2", false);
}
void LookAtDeadMan(string &in asParent, string &in asChild, int alState)
{
     AddDebugMessage("LookAtDeadMan function has been called.", false);
     StartPlayerLookAt("corpse_male_1", 0.5f, 0.5f, "");
     AddTimer ("TimerStopLookDeadMan", 2.0f, "StopLookDeadMan");
     GiveSanityDamage(15, true);
     PlayMusic("04_event_stairs", false, 1, 0.25f, 0, false);
     AddTimer("reacttocorpse", 0.5f, "TimerPlayerReactToCorpse");
}
void TimerPlayerReactToCorpse(string &in asTimer)
{
     PlaySoundAtEntity("scarecorpse", "react_breath", "Player", 0.1f, false);
}
void StopLookDeadMan(string &in asTimer)
{
     StopPlayerLookAt();
}
void AddQuestGetKey(string &in asEntity)
{
     AddQuest("QuestStudyHallway", "Quest_1");
}
void AutoSaveStudy(string &in asParent, string &in asChild, int alState)
{
     AutoSave();
     AddDebugMessage("AutoSaveStudy function has been called.", false);
}