Access script instance globally

This sample demonstrates global access to an instance of a Papyrus Struct. A Papyrus Struct is a reference type, meaning DataStruct::Text and DataStruct::Number should update as references do.

It requires that you bind the script to some start game enabled quest.

  • Replace 0x00000000 with the “Form ID” of the Quest you bind this script to.
  • Replace MyPlugin.esp with your actual plugin name.
ScriptName MyQuestScript extends Quest

Struct DataStruct
    string Text = ""
    int Number = 0
EndStruct

DataStruct Property Data Auto

Event OnInit()
    Data = new DataStruct
    Data.Text = "Hello World!"
    Data.Number = 42
EndEvent

MyQuestScript Function Get() Global
    Quest qust = Game.GetFormFromFile(0x00000000, "MyPlugin.esp") as Quest
    if (qust)
        return qust as MyQuestScript
        EndIf
    EndIf

    ; Something went wrong..
    return  none
EndFunction

DataStruct Function GetData() Global
    MyQuestScript script = MyQuestScript.Get()
    if (script)
        return script.Data
    EndIf

    ; Something went wrong..
    return  none
EndFunction