forked from Reload/techage_modpack
71 lines
1.1 KiB
Lua
71 lines
1.1 KiB
Lua
--[[
|
|
|
|
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
|