During the process of creating this new child plugin, which is still a work in progress, I am running into all sorts of errors. Basically learning by doing things wrong and quickly learning about limitations. I'm going to document some of those errors below in case others happen upon this page in a future google search.
TL;DR when dealing with mods that depend on others, read the Inter-mod Communication wiki page for options.
Error 1: const type zombiewalkerutil may not be used to define script variables or properties
I have a ZombieWalkersUtil script in my main mod that has some global utility methods I'd like to use in the new mod. I tried to declare a property with the type being the script name, which apparently isn't allowed.
I then changed the property type to "Script Object" which is allowed. The problem is, when you go to assign a value, the list is empty for me so I can't chose any script let alone the one I want.
Solution: I'm not sure this is allowed
Error 2: type mismatch while assigning to a var (cast missing or types unrelated)
Since this is declaring Global functions, I figured I'd try out the special utility method made to call them: Utility.CallGlobalFunction.
In my case, this looked like it was going to work until Papyrus got grumpy with one of my script parameters in the Var array. Either it doesn't like int[] params, or I am doing something wrong. I tried explicitly casting as an int[] but that didn't help. The other parameters (eg. FormList, int) didn't seem to throw any errors.
Eventually I ended up giving up and rewriting a portion of the script inline where I needed to use it (for now). Maybe someone stumbling upon this post can provide some guidance on what parameter types are allowed.
Solution: maybe int[] parameter types aren't allowed?
Error 3: Cannot open store for class "ZombieWalkerFH_QuestPlayerScript", missing file?
The errors above came from a Quest initialization script where the scripts associated with the quest could not be read/bound. This resulted in an abrupt game crash. I eventually realized the error resulted from me violating the undocumented naming conventions for ba2 files.
Solution:
- File -> Create Archive
- for each filename, you must follow this convention (including spaces): {modname} - {type}.ba2
Example expected naming convention for main archive. Note mod filename is "walkers-farharbor.esp" |
Error 4: Property ZombieListOfLists on script ZombieWalkersFH_QuestScript attached to ZombieWalkersFH_Quest (0800D291) cannot be bound because <nullptr form> (08016D3B) is not the right type
This error occurred after I fixed Error 3 above. I'm a Java programmer professionally and like others in my field, NullPointerExceptions sometimes haunt me. Now I guess they officially haunt me in Fallout too.
The ZombieListOfLists property above was setup to point to a FormList in my base Zombie Walkers mod. You can see the id value (08016D3B) is present but it isn't happy because apparently the game knows the file is not provided directly by my Far Harbor plugin.
Solutions?: It was at this point that I realized I am probably doing this wrong. After some reading, it seems there are a couple options:
The ZombieListOfLists property above was setup to point to a FormList in my base Zombie Walkers mod. You can see the id value (08016D3B) is present but it isn't happy because apparently the game knows the file is not provided directly by my Far Harbor plugin.
Solutions?: It was at this point that I realized I am probably doing this wrong. After some reading, it seems there are a couple options:
- you can use Inter-mod Communication which seems like the correct way to go
- HACK: you can"esmify" a plugin to a master temporarily in order to link a plugin to it to override/depend on files from that master. See Using FO4Edit or How Do I Esmify An ESP File? for a hackish approach.
0 comments: