Frictional Games Forum (read-only)

Full Version: Can't make an unlockable door
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I've been trying all the solutions I can but nothing works! Here's my script.

void OnStart()
{
AddUseItemCallback("", "CSBedroomKey", "CSBedroomDoor", "UseKeyOnCSBedroomDoor", true);
}
void FUNCTION(string &in asItem, string &in asEntity)
{
SetSwingDoorLocked(asEntity, false, true);
PlaySoundAtEntity("", "unlock_door", asEntity, 0, false);
RemoveItem(asItem);
}
You need to rename your FUNCTION parameter to match the one in your UseItem Callback. In this case, you need to name your function like this:

PHP Code:
void UseKeyOnCSBedroomDoor(string &in asItemstring &in asEntity)
{
SetSwingDoorLocked(asEntityfalsetrue);
PlaySoundAtEntity("""unlock_door"asEntity0false);
RemoveItem(asItem);


Provided your key and door names are correct in your map, then this script should work correctly now. Smile
(01-22-2018, 06:17 PM)Romulator Wrote: [ -> ]You need to rename your FUNCTION parameter to match the one in your UseItem Callback. In this case, you need to name your function like this:

PHP Code:
void UseKeyOnCSBedroomDoor(string &in asItemstring &in asEntity)
{
SetSwingDoorLocked(asEntityfalsetrue);
PlaySoundAtEntity("""unlock_door"asEntity0false);
RemoveItem(asItem);


Provided your key and door names are correct in your map, then this script should work correctly now. Smile

So in other words, remove the FUNCTION part?

(01-23-2018, 01:13 AM)1402News Wrote: [ -> ]
(01-22-2018, 06:17 PM)Romulator Wrote: [ -> ]You need to rename your FUNCTION parameter to match the one in your UseItem Callback. In this case, you need to name your function like this:

PHP Code:
void UseKeyOnCSBedroomDoor(string &in asItemstring &in asEntity)
{
SetSwingDoorLocked(asEntityfalsetrue);
PlaySoundAtEntity("""unlock_door"asEntity0false);
RemoveItem(asItem);


Provided your key and door names are correct in your map, then this script should work correctly now. Smile

So in other words, remove the FUNCTION part?

Actually, I've tried it with the function saying FUNCTION and the door still wouldn't unlock.
(01-22-2018, 06:17 PM)Romulator Wrote: [ -> ]You need to rename your FUNCTION parameter to match the one in your UseItem Callback. In this case, you need to name your function like this:

PHP Code:
void UseKeyOnCSBedroomDoor(string &in asItemstring &in asEntity)
{
SetSwingDoorLocked(asEntityfalsetrue);
PlaySoundAtEntity("""unlock_door"asEntity0false);
RemoveItem(asItem);


Provided your key and door names are correct in your map, then this script should work correctly now. Smile
I attempted it. It doesn't work. It still says "Cannot use item this way".
Can you screenshot the names of the objects in your level editor and upload them to https://imgur.com and link them here?
(01-23-2018, 04:27 PM)1402News Wrote: [ -> ]
(01-22-2018, 06:17 PM)Romulator Wrote: [ -> ]You need to rename your FUNCTION parameter to match the one in your UseItem Callback. In this case, you need to name your function like this:

PHP Code:
void UseKeyOnCSBedroomDoor(string &in asItemstring &in asEntity)
{
SetSwingDoorLocked(asEntityfalsetrue);
PlaySoundAtEntity("""unlock_door"asEntity0false);
RemoveItem(asItem);


Provided your key and door names are correct in your map, then this script should work correctly now. Smile
I attempted it. It doesn't work. It still says "Cannot use item this way".

As far as I know you've flipped the two string parameters? I could be wrong but the function is programmed to have the entity first, then the item parameter. This won't help your current issue but it would help later on I imagine since your code is dependant on the parameters.

Code:
void UseKeyOnCSBedroomDoor(string &in asEntity, string &in asItem)
{
SetSwingDoorLocked(asEntity, false, true);
PlaySoundAtEntity("", "unlock_door", asEntity, 0, false);
RemoveItem(asItem);
}
No, the item comes first.

[Image: uGyZChQ.png]