Removing Wrong Key From Inventory - 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 (https://www.frictionalgames.com/forum/forum-35.html) +--- Thread: Removing Wrong Key From Inventory (/thread-5848.html) |
Removing Wrong Key From Inventory - sixsevensix - 12-23-2010 I have run into trouble, I have made a puzzle that requires the player to go through and try different keys on a door to open it, one of the six keys are correct (this part works) and unlocks the door, the other 5 are wrong and need to be discarded, the problem I am having is creating a function general enough to work for any key that is NOT the key to the door. Is there a way to go about this without using an add item callback for each key? Code: //////////////////////////// // wrongkey function void WrongOne(string &in asItem, string &in asEntity) { if(asItem!="LanternKey"){ PlaySoundAtEntity("", "lock_door.snt", "LanternDoor", 0.0f, false); RemoveItem(asItem); } } //////////////////////////// // Run when entering map void OnEnter() { AddUseItemCallback("", "Wrong1", "LanternDoor", "WrongOne", false); } /////////// RE: Removing Wrong Key From Inventory - Dark88 - 12-23-2010 (12-23-2010, 12:07 PM)sixsevensix Wrote: I have run into trouble, I have made a puzzle that requires the player to go through and try different keys on a door to open it, one of the six keys are correct (this part works) and unlocks the door, the other 5 are wrong and need to be discarded, the problem I am having is creating a function general enough to work for any key that is NOT the key to the door. Is there a way to go about this without using an add item callback for each key? I just recently started scripting but I'm pretty sure you could name the 5 wrong keys Wrong_1, Wrong_2, etc and in the AddUseItemCallback for the entity put "Wrong_*" As for discarding the keys just don't remove item until the correct key is used then in that function run RemoveItem("Wrong_*); and RemoveItem("Right"). That should work in giving you just one general function for the wrong keys instead of 5. RE: Removing Wrong Key From Inventory - sixsevensix - 12-23-2010 (12-23-2010, 05:05 PM)Dark88 Wrote: I just recently started scripting but I'm pretty sure you could name the 5 wrong keys Wrong_1, Wrong_2, etc and in the AddUseItemCallback for the entity put "Wrong_*" As for discarding the keys just don't remove item until the correct key is used then in that function run RemoveItem("Wrong_*); and RemoveItem("Right"). Sadly this did not work, the "Wrong_*" did not recognize any of the keys when they were wrong. For discarding I want it to remove the keys as you use them, since this is a beginning puzzle I don't want the user to have to sift through tons of keys just yet. Current Code section: //////////////////////////// // wrongkey function void WrongOne(string &in asItem, string &in asEntity) { if(asItem!="LanternKey"){ PlaySoundAtEntity("", "lock_door.snt", "LanternDoor", 0.0f, false); RemoveItem("Wrong_*"); } } //////////////////////////// // Run when entering map void OnEnter() { // This addsfor right key AddUseItemCallback("", "LanternKey", "LanternDoor", "LanternComp", true); //This adds for wrong key(s) AddUseItemCallback("", "Wrong_*", "LanternDoor", "WrongOne", false); } RE: Removing Wrong Key From Inventory - Dark88 - 12-23-2010 Hmmm I'll do some experimentation and I have an idea how to get it to remove the key once its used I'll try them out on my test map and see if I can't figure something out. Edit: Alright this is what I was able to come up with. Code: void OnStart() Alright using this I was able to kind of get what you seem to be describing obviously changing and adding other things as necessary. Still requires a bunch of lines of code but it only uses 2 functions which is better than having 5 similar functions wasting space. It does require you to still create an AddUseItemCallback for each key but that's just copy and paste and a number change. |