--[[ SaferLua [safer_lua] ==================== Copyright (C) 2018-2020 Joachim Stolberg LGPLv2.1+ See LICENSE.txt for more information Example demo code ]]-- -- demo function 1 local function output(self, s) print(self.meta.name, s) end -- demo function 2 local function add(self, param1, param2) return param1 + param2 end -- for Lua interpreter errors local function error(pos, s) print("[Safer Lua] "..(s or "")) end -- init function code block local init = [[ -- init code here sum = 0 $output("Hello world!") ]] -- loop function code block local loop = [[ -- loop code here sum = $add(1, sum) $output(sum) ]] -- runtime environment local env = { output = output, add = add, } -- runtime meta data (protected for the running Lua script) env.meta = {num = 1, name = "Joe"} -- used for ingame positions local pos = {x = 0, y = 0, z = 0} -- elapsed game time local elapsed = 1 -- compile the Lus script to byte code (only once) local code = safer_lua.init(pos, init, loop, env, error) if code then for i=1, 10 do -- execute the byte code safer_lua.run_loop(pos, elapsed, code, error) end end