Difference between revisions of "WD2 ScriptHook: Script Table"

From Nomad DB
(Created page with "Every Script has its own ''Script Table''. It returns a Lua table that can be used for two things: # Storing variables for the Script # Callback / E...")
 
Line 3: Line 3:
 
# Callback / Event Handlers
 
# Callback / Event Handlers
 
Using the Event Handlers is also the only way to properly unregister event listeners from the Game's event system.
 
Using the Event Handlers is also the only way to properly unregister event listeners from the Game's event system.
 +
<noinclude>
 +
We strongly recommend not using global variables or functions in Scripts, since these won't be properly garbage collected and could cause conflicts with other Scripts.
 +
== Script() in Action ==
 +
This example illustrates how you can avoid using global variables & functions and how the Script() function can be used instead.
 +
==== main.lua ====
 +
<syntaxhighlight lang="lua">
 +
local script = Script()
 +
script.my_variable = 1234
 +
 +
function script:PrintMyVariable()
 +
print(self.my_variable)
 +
end
 +
 +
include("test.lua")
 +
</syntaxhighlight>
  
<noinclude>
+
==== test.lua ====
 +
<syntaxhighlight lang="lua">
 +
-- Prints 1234 twice
 +
print(Script().my_variable)
 +
print(Script():PrintMyVariable())
 +
</syntaxhighlight>
  
 
</noinclude>
 
</noinclude>
 +
 +
== Event Handlers ==
 +
To-Do
 +
 +
== Related Pages ==
 +
* [[WD2 ScriptHook: Scripts]]
 +
 +
[[Category:WD2 ScriptHook Lua]]

Revision as of 12:48, 15 April 2020

Every Script has its own Script Table. It returns a Lua table that can be used for two things:

  1. Storing variables for the Script
  2. Callback / Event Handlers

Using the Event Handlers is also the only way to properly unregister event listeners from the Game's event system.

We strongly recommend not using global variables or functions in Scripts, since these won't be properly garbage collected and could cause conflicts with other Scripts.

Script() in Action

This example illustrates how you can avoid using global variables & functions and how the Script() function can be used instead.

main.lua

local script = Script()
script.my_variable = 1234

function script:PrintMyVariable()
	print(self.my_variable)
end

include("test.lua")

test.lua

-- Prints 1234 twice
print(Script().my_variable)
print(Script():PrintMyVariable())


Event Handlers

To-Do

Related Pages