Jump to content

Contraption Workshop Script Property Unknown Type


Recommended Posts

This is probably a noob question because I am new to this, I got most of it figured out I trying to overhaul and create some new auto builders I am mostly copying the base scripts and just making minor changes to fit my needs. The problem I have when I try and create a new one is adding the properties I get the:



Papyrus Compiler Version 2.8.0.4 for Fallout 4


Copyright © ZeniMax Media. All rights reserved.


Starting 1 compile threads for 1 files...


Compiling "Fragments:Terminals:TERM__components"...


C:\Users\Fred\AppData\Local\Temp\PapyrusTemp\Fragments\Terminals\TERM__components.psc(89,31): unknown type dlc05:dlc05initscript


No output generated for Fragments:Terminals:TERM__components, compilation failed.




Batch compile of 1 files finished. 0 succeeded, 1 failed.


Failed on Fragments:Terminals:TERM__components



unknown type error I am sure it is something stupid I am missing somewhere but would greatly appreciate a point in the right direction


Link to comment
Share on other sites

You have included the "import" as part of the type name as if "DLC05" was part of the namespace. Each folder in Data/Scripts/Source/ is an import which is used by the compiler. The namespacing starts at the root of each import which is included in the type name.

Open your source code and define the property like this.

DLC05InitScript Property InitScript Auto Const Mandatory


I will take a guess and say that you probably attempted to define the property like I did above already but got an unknown type error from the compiler. This is because you need to tell the compiler explicitly which scripts to import during compilation. The creation kit already comes with some sensible settings that will work for vanilla stuff but now that you want to work with additional scripts you need to import them.

You should create a CreationKitCustom.ini file in your root game directory to override the creation kits default settings.

CreationKitCustom.ini
[General]
bAllowMultipleMasterLoads=1
bUseMyGamesDirectory=1
bAllowMultipleEditors=1
bMaximize Editor=1

[Papyrus]
sScriptSourceFolder = ".\Data\Scripts\Source\AugustasGreen"
sAdditionalImports = "$(source);.\Data\Scripts\Source\DLC05;.\Data\Scripts\Source\Base"
sAutoFillNamespaceDefault1 = "MyMod01"
sAutoFillNamespaceDefault2 = "MyMod02"
sAutoFillNamespaceDefault3 = "MyMod03"
sAutoFillNamespaceDefault4 = "MyMod04"
sAutoFillNamespaceDefault5 = "MyMod05"


The "sScriptSourceFolder" value is your own import folder. Scripts inside this folder are the ones you intend to create PEX files for.
The "sAdditionalImports" are other import folders containing the script sources that are required to compile the scripts contained in "sScriptSourceFolder".

For example if one day you decided that you would like to use F4SE functions you would need to import the F4SE folder as well.

[General]
bAllowMultipleMasterLoads=1
bUseMyGamesDirectory=1
bAllowMultipleEditors=1
bMaximize Editor=1

[Papyrus]
sScriptSourceFolder = ".\Data\Scripts\Source\AugustasGreen"
sAdditionalImports = "$(source);.\Data\Scripts\Source\F4SE;.\Data\Scripts\Source\DLC05;.\Data\Scripts\Source\Base"
sAutoFillNamespaceDefault1 = "MyMod01"
sAutoFillNamespaceDefault2 = "MyMod02"
sAutoFillNamespaceDefault3 = "MyMod03"
sAutoFillNamespaceDefault4 = "MyMod04"
sAutoFillNamespaceDefault5 = "MyMod05"


Take note that imports listed on the left will override imports on the right if both imports contain scripts of the same type. This is in fact what F4SE does because it overrides scripts in the "Base" import with new versions containing F4SE functions.

Link to comment
Share on other sites

Awesome thank you I knew i was missing something don't have time to test it tonight but i will tomorrow what you said is exactly what the problem is though makes perfect sense when your aware of it :-)

 

I am enjoying making this mod I hope to get good enough with the scripting to help others

Link to comment
Share on other sites

  • 9 months later...

You have included the "import" as part of the type name as if "DLC05" was part of the namespace. Each folder in Data/Scripts/Source/ is an import which is used by the compiler. The namespacing starts at the root of each import which is included in the type name.

 

Open your source code and define the property like this.

DLC05InitScript Property InitScript Auto Const Mandatory

 

I will take a guess and say that you probably attempted to define the property like I did above already but got an unknown type error from the compiler. This is because you need to tell the compiler explicitly which scripts to import during compilation. The creation kit already comes with some sensible settings that will work for vanilla stuff but now that you want to work with additional scripts you need to import them.

 

You should create a CreationKitCustom.ini file in your root game directory to override the creation kits default settings.

CreationKitCustom.ini
[General]
bAllowMultipleMasterLoads=1
bUseMyGamesDirectory=1
bAllowMultipleEditors=1
bMaximize Editor=1

[Papyrus]
sScriptSourceFolder = ".\Data\Scripts\Source\AugustasGreen"
sAdditionalImports = "$(source);.\Data\Scripts\Source\DLC05;.\Data\Scripts\Source\Base"
sAutoFillNamespaceDefault1 = "MyMod01"
sAutoFillNamespaceDefault2 = "MyMod02"
sAutoFillNamespaceDefault3 = "MyMod03"
sAutoFillNamespaceDefault4 = "MyMod04"
sAutoFillNamespaceDefault5 = "MyMod05"

 

The "sScriptSourceFolder" value is your own import folder. Scripts inside this folder are the ones you intend to create PEX files for.

The "sAdditionalImports" are other import folders containing the script sources that are required to compile the scripts contained in "sScriptSourceFolder".

 

For example if one day you decided that you would like to use F4SE functions you would need to import the F4SE folder as well.

[General]
bAllowMultipleMasterLoads=1
bUseMyGamesDirectory=1
bAllowMultipleEditors=1
bMaximize Editor=1

[Papyrus]
sScriptSourceFolder = ".\Data\Scripts\Source\AugustasGreen"
sAdditionalImports = "$(source);.\Data\Scripts\Source\F4SE;.\Data\Scripts\Source\DLC05;.\Data\Scripts\Source\Base"
sAutoFillNamespaceDefault1 = "MyMod01"
sAutoFillNamespaceDefault2 = "MyMod02"
sAutoFillNamespaceDefault3 = "MyMod03"
sAutoFillNamespaceDefault4 = "MyMod04"
sAutoFillNamespaceDefault5 = "MyMod05"

 

Take note that imports listed on the left will override imports on the right if both imports contain scripts of the same type. This is in fact what F4SE does because it overrides scripts in the "Base" import with new versions containing F4SE functions.

 

You have no idea how much I'd want to appreciate for this instruction !!!

 

I'm not the original poster but I still want to thank you for solving my issue as well. I try to merge multiple mods (Better Manufacturing, Helmet Forge, and Curved Conveyors) by using FO4Edit. Before I found this thread, I had successfully integrated everything except pex script files (I try to redirect original script file from Fragments\\Terminals\\ to BetterManufacturing\\Fragments\\Terminals\\). No matter how I corrected the reference in FO4Edit, the script doesn't works (Such as Messing Up Terminal Console Menu or Losting Animation of conveyors). Eventually I discovered that pex files has its own direction line at header part(using PexInspector), thus you see I had to spent more times to learn how to decompile & re-compile the stuff......

 

I found there are so few 3rd-party tools & tutorial for Fallout 4 than Skyrim while it is weird because these 2 games are actually based on same engine & Papyrus Language.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...