RE: Scripting mess!
it should be, you only use { } to encapsulate functions (everything in your script that begins with a void). You also had some ; after AddUseItemCallback that should not be there. I did not try the script so not sure it works, but I think I fixed all the errors.
void Onstart()
{
AddUseItemCallback("", "Stair_Key", "Stair_Door", "KeyOnDoor", TRUE);
AddUseItemCallback("", "Guest_Room_Key", "Guest_Room_Door", "UsedKeyOnGuestRoomDoor", TRUE);
AddUseItemCallback("", "Secret_Key", "Secret_Door", "UsedKeyOnSecretDoor", TRUE);
}
void KeyOnDoor(string &in asItem, string &in asEntity)
{
SetSwingDoorLocked("Stair_door", false, true);
PlaySoundAtEntity("", "unlock_door.snt", "Stair_door", 0.0f, false);
RemoveItem("Stair_Key");
}
void UsedKeyOnGuestRoomDoor(string &in asItem, string &in asEntity)
{
SetSwingDoorLocked("Guest_Room_Door", false, true);
PlaySoundAtEntity("", "unlock_door", "Guest_Room_Door", 0, false);
RemoveItem("Guest_Room_Key");
}
void UsedKeyOnSecretDoor(string &in asItem, string &in asEntity)
{
SetSwingDoorLocked("Secret_Door", false, true);
PlaySoundAtEntity("", "unlock_door", "Secret_Door", 0, false);
RemoveItem("Secret_Key");
}
You can rewrite it like this and only use one function:
void Onstart()
{
AddUseItemCallback("", "Stair_Key", "Stair_Door", "KeyOnDoor", TRUE);
AddUseItemCallback("", "Guest_Room_Key", "Guest_Room_Door", "KeyOnDoor", TRUE);
AddUseItemCallback("", "Secret_Key", "Secret_Door", "KeyOnDoor", TRUE);
}
void KeyOnDoor(string &in asItem, string &in asEntity)
{
SetSwingDoorLocked(asEntity, false, true);
PlaySoundAtEntity("", "unlock_door.snt", asEntity, 0.0f, false);
RemoveItem(asItem);
}
See all the use item on an entity that you setup in OnStart calls the same function (KeyOnDoor). Then by using asEntity and asItem, it will work for all doors and keys as the value of those variables are what you specified them to be in the AddUseItemCallback.
|