Talk:Script File Structure

Revision as of 03:13, 28 October 2018 by imported>Scrivener07 (→‎Fragments)

Imports with global function via inheritance

I may have found a quirk when importing global functions from another script. If the global functions you're importing are from a parent via inheritance, the compiler cannot resolve the global function.

Papyrus

Scriptname MyNamespace:ObjectBase

Function MyGlobalFunction() Global
	{Global Function}
EndFunction


Scriptname MyNamespace:Object extends MyNamespace:ObjectBase
import MyNamespace:ObjectBase

Event OnInit()
        MyGlobalFunction() ; compiler error below
EndEvent
global function MyGlobalFunction cannot be called on an object
Error while trying to typecheck script MyNamespace:Object: Index (zero based) must be greater than or equal to zero and less than the size of theNo output generated for MyNamespace\Object.psc, compilation failed.

The error above goes away and can be imported if the globals are relocated to a script outside the `Objects` inheritance.

Scriptname MyNamespace:Other

Function MyGlobalFunction() Global
	{Global Function}
EndFunction


Scriptname MyNamespace:Object extends MyNamespace:ObjectBase
import MyNamespace:Other

Event OnInit()
        MyGlobalFunction()
EndEvent

Scrivener07 (talk) 2017-08-06T16:13:12 (EDT)

Fragments

It appears you can't import functions into a fragment. :/ --Rasikko (talk) 2018-10-28T01:56:55 (EDT)

But you can still import them using the standard syntax (ScriptName.Scriptfunction) --Rasikko (talk) 2018-10-28T03:13:29 (EDT)
Return to "Script File Structure" page.