![]() |
Script is just... broken? - 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: Script is just... broken? (/thread-5060.html) Pages:
1
2
|
Script is just... broken? - Kyle - 10-15-2010 I tried getting these two things in it to work, but it just seems broken. And by the way, I was attempting to replace a "needle" for a "key". I worked with both of these scripts on my other custom story and it work perfectly. Also for some reason, it won't set the lamp oil to 0... ![]() The entities in my game are: CastleDoor, CastleDoor2, and Needle. Code: void Onstart() { AddUseItemCallback("" , "Needle" , "CastleDoor2" , "UsedNeedleOnDoor" , false); AddEntityCollideCallback("Player" , "ScriptArea_1" , "Collide01" , true , 1); SetPlayerLampOil(0); } void Collide01(string &in asParent , string &in asChild , int alState) { SetSwingDoorClosed("CastleDoor" , true , true); GiveSanityDamage(10 , true); } void UsedNeedleOnDoor(string &in asItem , string &in asEntity) { PlaySoundAtEntity("UnlockSound" , "unlock_door.snt" , asEntity , 0.0f , false); SetSwingDoorLocked(asEntity , false , true); SetLevelDoorLocked(asEntity , false); } void OnEnter() { } void OnLeave() { } Code: <LANGUAGE> <RESOURCES> </RESOURCES> <CATEGORY Name="CustomStoryMain"> <Entry Name="Description">You awaken in a castle, not knowing of where you are. Some dark presence is following you, yet you cannot stop it.[br][br]You are alone...</Entry> </CATEGORY> <CATEGORY Name="Inventory"> <Entry Name="ItemName_Needle">Sewing Needle</Entry> <Entry Name="ItemDesc_Needle">A simple needle that could be used to pick a lock.</Entry> </CATEGORY> </LANGUAGE> RE: Script is just... broken? - DamnNoHtml - 10-15-2010 void OnStart () Not void Onstart () Also, sounds like a wonderfully unoriginal story from that description -_- RE: Script is just... broken? - Kyle - 10-15-2010 I know, I'm gonna change it later. I just wanted to quickly put something in.... ![]() RE: Script is just... broken? - SLi78 - 10-15-2010 Have you tried Code: SetPlayerLampOil(0.0f); RE: Script is just... broken? - Chilton - 10-15-2010 (10-15-2010, 05:11 PM)SLi78 Wrote: Have you triedIt does not work that way at all... F segmas represent time, not quantity i believe Itd be nice if we knew if the issue was resolved though... RE: Script is just... broken? - Entih - 10-15-2010 No, a number like '0.0f' represents that it is a floating point value, IE uses a decimal. It is the proper notation in C++ when working with float values, and by extension this script, though this script is far less... strict... on the f's usage it seems. I still use it for all float values though. The lamp oil function does take a float, from 0 to 100 percent, so using 0.0f may actually make it work, though 0 should have worked just as well. EDIT: Yeah, just tested it, the script is not much of a stickler. The lamp oil function works with just standard old 0 just the same as 0.0f. RE: Script is just... broken? - Kyle - 10-15-2010 It's okay guys, it worked when I fixed the script. I also got another problem... I looked in the script functions and couldn't find the right one that made something happen when you, in this case, read a note that you pick up. So I just tried as a last resort to use another scripting callback. void OnStart() { PreloadSound("00_laugh.snt"); AddEntityCollideCallback("Player" , "note_scroll_1" , "Collapse" , true , 1); AddUseItemCallback("" , "Needle" , "CastleDoor2" , "UsedNeedleOnDoor" , false); AddEntityCollideCallback("Player" , "ScriptArea_1" , "Collide01" , true , 1); SetPlayerLampOil(0); } void Collide01(string &in asParent , string &in asChild , int alState) { SetSwingDoorClosed("CastleDoor" , true , true); GiveSanityDamage(10 , true); } void UsedNeedleOnDoor(string &in asItem , string &in asEntity) { PlaySoundAtEntity("UnlockSound" , "unlock_door.snt" , asEntity , 0.0f , false); SetSwingDoorLocked(asEntity , false , true); SetLevelDoorLocked(asEntity , false); } void Collapse(string &in asParent , string&in asCild , int alState) { SetEntityActive("wooden_board01_1" , true); SetEntityActive("rock_debris01_1" , true); SetEntityActive("rock_debris03_1" , true); PlaySoundAtEntity("LaughSound" , "00_laugh.snt" , "Player" , 0 , true); } void OnEnter() { } void OnLeave() { } RE: Script is just... broken? - Entih - 10-16-2010 If you want something to trigger when you pick up the note, a standard interact callback should work fine. At least in theory such would work fine, haven't tested. RE: Script is just... broken? - Kyle - 10-16-2010 (10-16-2010, 02:37 AM)Entih Wrote: If you want something to trigger when you pick up the note, a standard interact callback should work fine. At least in theory such would work fine, haven't tested. Nope, it wouldn't work. It would require a function to cause the other events... unless if you got any other bright ideas... ![]() RE: Script is just... broken? - Entih - 10-16-2010 I found a semi-alternative, based on how they did it in the game in the Archives. Use the item 'diary_paper_01'. It has a diary pickup callback, apparently (info on the callback function parameters pop up if you hover the mouse over it). Sadly, it also appears to be that the diary paper uses a bit of a different methodology for the text and name entries, being "Diary_<TEXTENTRYNAME>_Name<INDEXNUMBER>" and "Diary_..._Text...", with index meaning which numbered 'entry' it was, starting at 1. Have not used the diary versus note especially, myself, I cannot say just how any of this works. |