Frictional Games Forum (read-only)
[SCRIPT] Multiple Keys - 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] Multiple Keys (/thread-13493.html)



Multiple Keys - BadCoverMan - 02-21-2012

Hello, I had just one key and everything was fine. Then when I tried to have a second key and second locked door, neither of them worked anymore. Here's the script. Any help would be much appreciated. I'm very new to scripting as well so I apologize if it's a really stupid mistake.

Spoiler below!

////////////////////////////
// Run when entering map
void OnEnter()
{
AddUseItemCallback("", "LockedDoorKey1", "LockedDoor_1", "UsedLockedDoorKey1", true);
}

void UsedLockedDoorKey1(string &in asItem, string &in asEntity)
{
AddUseItemCallback("", "SecondFloorKey", "LockedDoor_2", "UsedSecondFloorKey", true);
}

void UsedSecondFloorKey(string &in asItem, string &in asEntity)
{
SetSwingDoorLocked("LockedDoor_1", false, true);
PlaySoundAtEntity("", "unlock_door", "LockedDoor_1", 0, false);
RemoveItem("LockedDoorKey1");

SetSwingDoorLocked("LockedDoor_2", false, true);
PlaySoundAtEntity("", "unlock_door", "LockedDoor_2", 0, false);
RemoveItem("SecondFloorKey");
}




RE: Multiple Keys - BallisticDK - 02-21-2012

it needs to be like this

////////////////////////////
// Run when entering map
void OnEnter()
{
AddUseItemCallback("", "LockedDoorKey1", "LockedDoor_1", "UsedLockedDoorKey1", true);
AddUseItemCallback("", "LockedDoorKey2", "LockedDoor_2", "UsedLockedDoorKey2", true);
}

void UsedLockedDoorKey1(string &in asItem, string &in asEntity)
{
AddUseItemCallback("", "SecondFloorKey", "LockedDoor_2", "UsedSecondFloorKey", true);
}

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


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


1 AddUseItemCallback per door. i made that fail to, im also new to Scripting, <for Hardcore Scripters. do not flame me if there is an easyer way, im just saying how i do it >


RE: Multiple Keys - BadCoverMan - 02-21-2012

(02-21-2012, 08:10 PM)BallisticDK Wrote: it needs to be like this

Spoiler below!

////////////////////////////
// Run when entering map
void OnEnter()
{
AddUseItemCallback("", "LockedDoorKey1", "LockedDoor_1", "UsedLockedDoorKey1", true);
AddUseItemCallback("", "LockedDoorKey2", "LockedDoor_2", "UsedLockedDoorKey2", true);
}

void UsedLockedDoorKey1(string &in asItem, string &in asEntity)
{
AddUseItemCallback("", "SecondFloorKey", "LockedDoor_2", "UsedSecondFloorKey", true);
}

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


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


1 AddUseItemCallback per door. i made that fail to, im also new to Scripting, <for Hardcore Scripters. do not flame me if there is an easyer way, im just saying how i do it >
It didn't work. Sad




RE: Multiple Keys - Ninami - 02-21-2012

////////////////////////////
// Run when entering map
void OnEnter()
{
AddUseItemCallback("", "LockedDoorKey1", "LockedDoor_1", "UsedLockedDoorKey1", true);
AddUseItemCallback("", "SecondFloorKey", "LockedDoor_2", "UsedSecondFloorKey", true);
}

void UsedLockedDoorKey1(string &in asItem, string &in asEntity)
{
SetSwingDoorLocked("LockedDoor_1", false, true);
PlaySoundAtEntity("", "unlock_door.snt", "LockedDoor_1", 0, false);
RemoveItem("LockedDoorKey1");
}

void UsedSecondFloorKey(string &in asItem, string &in asEntity)
{
SetSwingDoorLocked("LockedDoor_2", false, true);
PlaySoundAtEntity("", "unlock_door.snt", "LockedDoor_2", 0, false);
RemoveItem("SecondFloorKey");
}


Try this


RE: Multiple Keys - BadCoverMan - 02-21-2012

(02-21-2012, 08:27 PM)Ninami Wrote: ////////////////////////////
// Run when entering map
void OnEnter()
{
AddUseItemCallback("", "LockedDoorKey1", "LockedDoor_1", "UsedLockedDoorKey1", true);
AddUseItemCallback("", "SecondFloorKey", "LockedDoor_2", "UsedSecondFloorKey", true);
}

void UsedLockedDoorKey1(string &in asItem, string &in asEntity)
{
SetSwingDoorLocked("LockedDoor_1", false, true);
PlaySoundAtEntity("", "unlock_door.snt", "LockedDoor_1", 0, false);
RemoveItem("LockedDoorKey1");
}

void UsedSecondFloorKey(string &in asItem, string &in asEntity)
{
SetSwingDoorLocked("LockedDoor_2", false, true);
PlaySoundAtEntity("", "unlock_door.snt", "LockedDoor_2", 0, false);
RemoveItem("SecondFloorKey");
}


Try this
Thank you very much. Worked perfectly.





RE: Multiple Keys - Ninami - 02-21-2012

No problem!

Just remember to have all the "AddUseItemCallback" functions in the "void OnEnter" and have one for each door.

And also I changed the sound, you need to have "unlock_door.snt" with the ".snt" for it to work.