OnInit
Revision as of 15:34, 14 February 2012 by imported>Cipscis (→Notes: Quest OnInit firing twice and how to get around it)
Member of: Any and all scripts.
Event called when the script has been created and all its properties have been initialized.
Syntax
Event OnInit()
Example
; This is within the "empty" state
Event OnInit() ; This event will run once, when the script is initialized
RegisterForUpdate(2)
GotoState ("polling")
EndEvent
State polling
Event OnUpdate()
if (myQuest.GetStage() == 10)
Debug.Trace("Got what we needed, so stop polling!")
UnregisterForUpdate()
GotoState ("active") ; Switch to a state that doesn't use OnUpdate()
endif
EndEvent
EndState
State active
; Do nothing in here
EndState
Parameters
None
Notes
- Until OnInit has finished running, your script will not receive any events, and other scripts that try to call functions or access properties on your script will be paused until the event finishes. The only exceptions are when the functions are being called from another script inside its OnInit event, or inside a property set function being set by the master file.
- OnInit is called at the following times:
- For Quests and Aliases: On game startup, and again whenever the quest starts, due to the quest being reset.
- For other base objects like Topic Infos, Perks, etc that have scripts that run on the base object: At game start
- For persistent refs: At game start
- For non-persistent refs: When the ref is loaded the first time
- OnInit is called again when an object is reset. All your variables and properties will be reset before OnInit is called.
- For Quests and Aliases this will happen when your quest starts. This means that a quest and alias will see OnInit twice before it starts the first time (game startup, and on reset). This should not cause any problems unless you are manipulating something outside the quest that doesn't reset in your OnInit.
- For references this happens when the cell resets.
If a Quest is set to run on game startup and doesn't have the "Run Once" flag ticked, its OnInit event will fire twice when it starts. Ticking the "Run Once" flag, however, prevents the Quest from being reset when it starts, so in this case its OnInit event will only fire once.
See Also
None