Frictional Games Forum (read-only)
[SCRIPT] Crowbar/Key Script 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: [SCRIPT] Crowbar/Key Script Help (/thread-18271.html)



Crowbar/Key Script Help - wagiwombledog - 09-11-2012

Please Help,

My .hps has a fatal error, mostly Unexpected token "{" here is the script:


Entrance.hps

////////////////////////////
// Run when the map starts
void OnStart()
{

AddUseItemCallback("", "Waterworks Key", "Waterworks", "FUNCTION", true);

}

void FUNCTION(string &in asItem, string &in asEntity)
{
SetSwingDoorLocked(asEntity, false, true);
PlaySoundAtEntity("", "unlock_door", asEntity, 0, false);
RemoveItem(asItem);
}

{
AddUseItemCallback("", "crowbar_1", "Storage", "UsedCrowbarOnDoor", true);
AddEntityCollideCallback("crowbar_joint_1", "ScriptArea_1", "CollideAreaBreakDoor", true, 1);
}


void UsedCrowbarOnDoor(string &in asItem, string &in asEntity)
{
AddTimer("", 0.2, "TimerSwitchShovel");
RemoveItem("crowbar_1");
}


void TimerSwitchShovel(string &in asTimer)
{
PlaySoundAtEntity("","puzzle_place_jar.snt", "", 0, false);
SetEntityActive("crowbar_joint_1", true);
}


void CollideAreaBreakDoor(string &in asParent, string &in asChild, int alState)
{
AddPlayerSanity(25);
PlayMusic("10_puzzle01.ogg", false, 0.7, 0.1, 10, false);
SetSwingDoorLocked("prison_1", false, true);
AddPropImpulse("prison_1", 0, 0, -50, "World");
SetSwingDoorDisableAutoClose("prison_1", true);
SetSwingDoorClosed("prison_1", false, false);
SetMoveObjectState("prison_1", 1);
PlaySoundAtEntity("","break_wood_metal", "AreaBreakEffect", 0, false);
CreateParticleSystemAtEntity("", "ps_hit_wood", "AreaBreakEffect", false);
SetEntityActive("crowbar_joint_1", false);
SetLocalVarInt("Door", 1);
}



////////////////////////////
// Run when entering map
void OnEnter()




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

}


void DoorLockedPlayer(string &in entity)

{
if(GetSwingDoorLocked("Storage Locked") == true)
{

SetMessage("Messages", "msgname", 0);

}
}


{
if(GetSwingDoorLocked("WW Locked") == true)
{

SetMessage("Messages", "msgname", 0);

}
}

Can you see anything wrong with it?

Please help,
wagiwombledog



RE: Crowbar/Key Script Help - Adny - 09-11-2012

A few quick notes:
- All callbacks should be under OnStart
-All functions need a header (i.e. void + name + callback syntax)
-Never use spaces in a string name, always use underscores "_"

With that said, here's a revision:


void OnStart()
{
AddUseItemCallback("", "Waterworks_Key", "Waterworks", "FUNCTION", true);
AddUseItemCallback("", "crowbar_1", "Storage", "UsedCrowbarOnDoor", true);
AddEntityCollideCallback("crowbar_joint_1", "ScriptArea_1", "CollideAreaBreakDoor", true, 1);
}

void FUNCTION(string &in asItem, string &in asEntity)
{
SetSwingDoorLocked(asEntity, false, true);
PlaySoundAtEntity("", "unlock_door", asEntity, 0, false);
RemoveItem(asItem);
}

void UsedCrowbarOnDoor(string &in asItem, string &in asEntity)
{
AddTimer("", 0.2, "TimerSwitchShovel");
RemoveItem("crowbar_1");
}

void TimerSwitchShovel(string &in asTimer)
{
PlaySoundAtEntity("","puzzle_place_jar.snt", "", 0, false);
SetEntityActive("crowbar_joint_1", true);
}


void CollideAreaBreakDoor(string &in asParent, string &in asChild, int alState)
{
AddPlayerSanity(25);
PlayMusic("10_puzzle01.ogg", false, 0.7, 0.1, 10, false);
SetSwingDoorLocked("prison_1", false, true);
AddPropImpulse("prison_1", 0, 0, -50, "World");
SetSwingDoorDisableAutoClose("prison_1", true);
SetSwingDoorClosed("prison_1", false, false);
SetMoveObjectState("prison_1", 1);
PlaySoundAtEntity("","break_wood_metal", "AreaBreakEffect", 0, false);
CreateParticleSystemAtEntity("", "ps_hit_wood", "AreaBreakEffect", false);
SetEntityActive("crowbar_joint_1", false);
SetLocalVarInt("Door", 1);
}

void DoorLockedPlayer(string &in asEntity)
{
if(GetSwingDoorLocked("Storage Locked") == true)
{
SetMessage("Messages", "msgname", 0);
}
}

void DoorLockedPlayer2(string &in asEntity)
{
if(GetSwingDoorLocked("WW Locked") == true)
{
SetMessage("Messages", "msgname", 0);
}
}



////////////////////////////
// Run when entering map
void OnEnter()
{

}

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

}

I hope that helped!