Frictional Games Forum (read-only)
I need help with a 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 - Development (https://www.frictionalgames.com/forum/forum-38.html)
+---- Forum: Development Support (https://www.frictionalgames.com/forum/forum-39.html)
+---- Thread: I need help with a script (/thread-22350.html)



I need help with a script - Neelke - 08-07-2013

Got a script here where the problem is Unexpected end of file. Usually a missing bracket or something. But I can't find it. Can someone find it for me?

//-----------------------------------------

///////////////////////////////////////////
// THE HUNGRY WORM
////////////////////////////////////////////

//------------------------------------------

//Use meat to feed the worm
void UseMeatOnDoor(string &in asItem, string &in asEntity)
{
RemoveItem(asItem);
SetEntityActive("fresh_meat_static", true);

PlaySoundAtEntity("meetworm", "worm_distant.snt", "Player", 0.0f, true);
AddTimer("", 5.0f, "TimerWormEatFlesh");
}
//The Worm is hungry
void TimerWormEatFlesh(string &in asTimer)
{
AddLocalVarInt("Worm", 1); //What step to play in the event
float fEventSpeed = 0.5f; //The default time between steps in an event

switch(GetLocalVarInt("Worm")) {
case 1:
PlaySoundAtEntity("meetworm", "worm_distant.snt", "Player", 0.0f, true);
float fEventSpeed = 2.0f;
break;
case 2:
SetEntityActive("hungry_worm", true);
float fEventSpeed = 3.3f;
break;
case 3:
SetEntityActive("hungry_worm", false);
break;
}

if(GetLocalVarInt("Worm") < 3) AddTimer("", fEventSpeed, "TimerWormEatFlesh");
}
//Some stuff to make sure he doesn't go through objects
void CollideBoardWorm(string &in asParent, string &in asChild, int alState)
{
SetPropHealth("wooden_boards_block_1", 0);
}
void CollideBreakDoor(string &in asParent, string &in asChild, int alState)
{
SetEntityActive("fresh_meat_static", false);
SetPropHealth("cellar_wood01_3", 0);
}
//If player feels like standing in the way of the worm
void CollideWormPlayer(string &in asParent, string &in asChild, int alState)
{
FadeOut(0.5f)
AddTimer("", 5.0f, "TimerPlayerEaten");

CheckPoint("", "PlayerStartArea_2", "JustInCase", "Hints", "PlayerEaten");
}
void TimerPlayerEaten(string &in asTimer)
{
//Kill player without making a sound
DisableDeathStartSound();
AddPlayerHealth(-200);
}
void JustInCase(string &in asParent, string &in asChild, int alState)
{
//Not sure if everything works as it should if you die
SetEntityActive("cellar_wood01_3", false);
SetEntityActive("hungry_worm", false);
SetEntityActive("fresh_meat_static", false);
}
//-----------------------------------------

///////////////////////////////////////////
// LABORATORY PUZZLE
////////////////////////////////////////////

//------------------------------------------

//Start off with placing the chemical container on the burner
void ContainerOnBurner(string &in asItem, string &in asEntity)
{
SetEntityActive("container_1", true);
RemoveItem(asItem);
PlaySoundAtEntity("", "puzzle_place_jar", "special_burner", 0.0f, true);
SetLocalVarInt("ContainerPlaced", 1);

//Allow the player to attach the acid bottle now
SetEntityActive("StickyArea_1", true);
}
//Attach the bottle
void PourAcidBottle(string &in asStickyArea, string &in asBodyName)
{
PlaySoundAtEntity("water_s", "25_water_stream", "special_burner", 1.0f, false);
AddTimer("", 2.0f, "TimerDetach");
SetLocalVarInt("MixCombined", 1);
SetEntityActive("StickyArea_2", true);
}
void TimerDetach(string &in asTimer)
{
StopSound("water_s", 3.0f);
DetachFromStickyArea("StickyArea_1");
AddAttachedPropToProp("acid_machine_bottle_grab", "StickyArea_2", "acid_machine_bottle01.ent", float afPosX, float afPosY, 0, float afRotX, 90.0f, float afRotZ);
}
//Cook the mixture together
void TurnSpecialBurner(string &in asEntityName, int alState)
{
if(alState == 1)
{
PlaySoundAtEntity("bruner_on","26_burner_ignite.snt", "AreaBurner", 0, false);

CreateParticleSystemAtEntity("burnerfire", "ps_fire_lab_burner.ps", "AreaBurner", true);

PlaySoundAtEntity("burnerfire","26_burner_loop.snt", "AreaBurner", 1, true);

AddTimer("burnerfullspeed",2, "TimerBurnerFullSpeed");
}
else if(alState == -1)
{
PlaySoundAtEntity("bruner_off","26_burner_ignite.snt", "AreaBurner", 0.15f, false);

DestroyParticleSystem("burnerfire");
StopSound("burnerfire", 1);

RemoveTimer("burnerfullspeed");

SetLocalVarInt("BurnerReady", 0);
}

AddDebugMessage("Burner state: "+ alState, false);
}
void TimerBurnerFullSpeed(string &in asTimer)
{
SetLocalVarInt("BurnerReady", 1);

//Check if the other stuff above is completed
CheckCompleteSubstance();
}

//------------------------------------------

void CheckCompleteSubstance()
{
if(GetLocalVarInt("BurnerReady")==1 && GetLocalVarInt("ContainerPlaced")==1 && GetLocalVarInt("MixCombined")==1 && GetLocalVarInt("SubstanceCompleted")==0){
SetLocalVarInt("SubstanceCompleted", 1);

PlaySoundAtEntity("bloodboil","puzzle_boil.snt", "container_1", 1, false);

AddTimer("boileffectdone", 3, "TimerBoilEffectDone");
}

void TimerBoilEffectDone(string &in asTimer)
{
StopSound("bloodboil",1);
SetPropActiveAndFade("complete_substance", true, 0.5);
AddTimer("fadeoutblood", 0.3, "TimerBoilEffectFadeOutUseless");

PlaySoundAtEntity("boildone","puzzle_acid", "container_1", 0, false);
}
void TimerBoilEffectFadeOutUseless(string &in asTimer)
{
SetPropActiveAndFade("container_1", false, 0.5);
}
//Picking up the complete substance will enable the player to pull the machinery lever
void PickSubstance(string &in asEntity, string &in asType)
{
GiveSanityBoostSmall();
}

//------------------------------------------

//Put complete substance in the machinery, putting it there before hand will give error message
void UseNormalContainer(string &in asItem, string &in asEntity)
{
SetMessage("Ch03Lvl18", "SubstanceNotMade", 0);
}
void UseSubstance(string &in asItem, string &in asEntity)
{
RemoveItem(asItem);
SetEntityActive("substance_notdone", true);
PlaySoundAtEntity("", "puzzle_place_jar", "AreaUseSubstance", 0.0f, true);
SetLocalVarInt("EnableLever", 1);
SetLeverStuckState("lever", 0, false);
}

//-----------------------------------------

///////////////////////////////////////////
// MACHINERY PUZZLE
////////////////////////////////////////////

//------------------------------------------

//First start off with placing stone inside the machinery
void AttachStone(string &in asStickyArea, string &in asBodyName)
{
SetEntityActive("AreaRemoveStone", true);
}
void CollideSubstanceStone(string &in asParent, string &in asChild, int alState)
{
SetEntityActive("stone_substance", false);
AddTimer("", 3.3, "TimerBoilStone");
}
void TimerBoilStone(string &in asTimer)
{
SetEntityActive("stone_substance_burn", true);
SetLocalVarInt("StoneInMachinery", 1);
}

//Pull the lever to activate the fire
void ActivateFire(string &in asEntityName, int alState)
{
if(alState == 1)
{
AddTimer("machinefullspeed",2, "TimerMachineFullSpeed");
}
else if(alState == -1)
{
//Nothing needed, hopefully
}
}
void TimerMachineFullSpeed(string &in asTimer)
{
CheckStone();
}

//------------------------------------------

void CheckStone()
{
if(GetLocalVarInt("EnableLever")==1 && GetLocalVarInt("StoneInMachinery")==1 && GetLocalVarInt("FireUsed")==0){
SetLocalVarInt("FireUsed", 1);

for(int i=1;i<=6; ++i) CreateParticleSystemAtEntity("fire", "ps_fire_smoke_epoxy.ps", "AreaFire"+i, true);

for(int i=1;i<=6; ++i) PlaySoundAtEntity("fire", "general_fire_burning", "AreaFire"+i, 0.0f, true);

AddTimer("finishitoff",3, "TimerCompleteSubstance");
}
}
void TimerCompleteSubstance(string &in asTimer)
{
SetPropActiveAndFade("stone_substance_burn", true, 0.5f);
SetEntityActive("substance_notdone", false);
SetEntityAcitve("substance_done", true);

//So that you can pick the substance up, otherwise it's stuck there forever
SetEntityActive("AreaUseSubstance", false);
}
//Picking it up will make the worm hungry
void PickSubstance(string &in asItem, string &in asEntity)
{
SetEntityActive("AreaTriggerWormEvent", true);
}

//-----------------------------------------

///////////////////////////////////////////
// MISCS
////////////////////////////////////////////

//------------------------------------------
//Pick the note about the worm
void PickWormNote(string &in asEntity, string &in asType)
{
PlayMusic("05_paper_transformation.ogg", false, 0.7f, 0, 10, false);
}
//Interact with machine lever, without having things completed
void InteractTooQuick(string &in asEntity)
{
SetMessage("Ch03Lvl18", "TooQuick", 0);
}

////////////////////////////
// Run first time starting map
void OnStart()
{
SetMapDisplayNameEntry("Ravine");

//Use Item
AddUseItemCallback("", "fresh_meat", "cellar_wood01_3", "UseMeatOnDoor", true);
AddUseItemCallback("", "container", "special_burner", "ContainerOnBurner", true);

//Collide Callback
AddEntityCollideCallback("Player", "hungry_worm", "CollideWormPlayer", false, 0);
for(int i=1;i<=4; ++i) AddEntityCollideCallback("Player", "rockworm_attack_static_"+i, "CollideWormPlayerExt", false, 0);
AddEntityCollideCallback("hungry_worm", "AreaBreakPlanks_2", "CollideBoardWorm", false, 0);
AddEntityCollideCallback("hungry_worm", "AreaBreakDoor", "CollideBreakDoor", false, 0);
}
////////////////////////////
// Run when entering map
void OnEnter()
{
PlayMusic("22_amb", true, 1, 5, 0, true);
}

////////////////////////////
// Run when leaving map
void OnLeave()
{

}


RE: I need help with a script - PutraenusAlivius - 08-07-2013

Line 53 must've been
FadeOut(0.5f);

I'm not sure, but Line 102 is wrong.
AddAttachedPropToProp("acid_machine_bottle_grab", "StickyArea_2", "acid_machine_bottle01.ent", float afPosX, float afPosY, 0, float afRotX, 90.0f, float afRotZ);


RE: I need help with a script - Neelke - 08-07-2013

Nevermind, fixed it. Really hard to see. Look at row 244.