DissidentRage Posted June 12, 2017 Share Posted June 12, 2017 I'm trying to make a potential follower who can only be unlocked after joining the Dawnguard. Unfortunately everything I'm trying to do completely fails.None of the faction ranks or character relationships are actually set up or modified when joining the Dawnguard, so that's out. (confirmed with console sniffing)The quest DLC1VQ02 which is supposed to establish the final choice between the Dawnguard and the Volkihar is devoid of useful informationThe GlobalVariable DLC1PlayingVampireLine is always zero.I have tried using DLC1VQ02.IsStageDone(190) (which is always false), I've tried troubleshooting with DLC1VQ02.IsActive() while the quest is selected (which is always false), and I've tried DLC1VQ02.GetCurrentStageID() (which always returns 0). I have the Quest declared with "Quest property DLC1VQ02 auto" and the GlobalVariable declared as "GlobalVariable property DLC1PlayingVampireLine auto" but it doesn't matter because it pretends nothing is ever done with either of these under any circumstances. Is there a reason that my script has no idea at all about anything to do with these things? Link to comment Share on other sites More sharing options...
lofgren Posted June 12, 2017 Share Posted June 12, 2017 Obvious question first: Are the properties filled? Link to comment Share on other sites More sharing options...
DissidentRage Posted June 12, 2017 Author Share Posted June 12, 2017 (edited) Yes, I've followed examples from the wiki on how to refer to quests. I have the Quest declared with "Quest property DLC1VQ02 auto" and the GlobalVariable declared as "GlobalVariable property DLC1PlayingVampireLine auto" I'm coming from a programming background so if this can be put into OOP concepts I'll probably get less hung up. With that said I have the feeling that the quest referred to in my code is a new instance of the quest instead of the one actually being used by the player. The examples seemed to imply that these references are referring to singletons but they aren't behaving like it. Edited June 12, 2017 by DissidentRage Link to comment Share on other sites More sharing options...
lofgren Posted June 12, 2017 Share Posted June 12, 2017 The fact that you didn't understand my question suggests to me that the properties are not filled. Properties declared in a script are usually empty variables (some exceptions exist). You have to open the form that the script is attached to, right click on the script, and select "Edit Properties." A new window will open. Select the property you wish to edit and then select the form you want it to point to in the drop down menu to the right. If you have used the editor IDs of the forms (and it sounds like you have), then you should also be able to click auto-fill properties and get the same result. If the properties have not been filled, the icon to the left of the script name will be a little + sign. If they have been filled, there will be a little pencil there. Link to comment Share on other sites More sharing options...
DissidentRage Posted June 12, 2017 Author Share Posted June 12, 2017 Okay, so what this does is it tells the engine explicitly what values to grab to associate with the variable labels. The auto keyword doesn't signal for the engine to grab the object or variable with the given name on its own, but that the value is going to be given from the properties window. Now that I understand this better I've done it and it works. This should be documented as a symptom so people don't waste three days trying to get a script to work. Link to comment Share on other sites More sharing options...
IsharaMeradin Posted June 13, 2017 Share Posted June 13, 2017 '<snip> This should be documented as a symptom so people don't waste three days trying to get a script to work. Bethesda has a tutorial that introduces one to Papyrus and the usage of events and properties. http://www.creationkit.com/index.php?title=Bethesda_Tutorial_Papyrus_Events_and_PropertiesIt is readily available but I suppose it can be difficult to locate when one does not know where to look or what search terms to use. Link to comment Share on other sites More sharing options...
foamyesque Posted June 17, 2017 Share Posted June 17, 2017 Okay, so what this does is it tells the engine explicitly what values to grab to associate with the variable labels. The auto keyword doesn't signal for the engine to grab the object or variable with the given name on its own, but that the value is going to be given from the properties window. Now that I understand this better I've done it and it works. This should be documented as a symptom so people don't waste three days trying to get a script to work. The Auto keyword doesn't do anything about filling it; it's unrelated to the Auto Fill function in the properties menu (which is a name and type match). What the Auto keyword signifies is that the game will automatically generate the Get() and Set() functions for the property, so that if you went "MyScript.PropertyA == true" in something else, it'd work. Link to comment Share on other sites More sharing options...
Recommended Posts