Improve the LuaController

Changes:
  * Stops code after a certain number of instructions.
  * Allows functions, due to instruction counting.
  * Allows loops and goto with non-JIT Lua (LuaJIT doesn't count looping as an instruction, allowing infinite loops), due to instruction counting.
  * Removes string matching functions as they can be slow.
  * Adds some safe functions.
  * Limits the amount of printing that can be done (to prevent console flooding).
  * Code cleanup.
  * More...
This commit is contained in:
ShadowNinja
2014-08-06 22:54:17 -04:00
parent d325292291
commit bd1766e448
3 changed files with 439 additions and 370 deletions

View File

@ -638,7 +638,7 @@ function yc_update_real_portstates(pos, node, rulename, newstate)
end
local n = meta:get_int("real_portstates") - 1
if n < 0 then
legacy_update_ports(pos)
mesecon.legacy_update_ports(pos)
n = meta:get_int("real_portstates") - 1
end
local L = {}
@ -663,7 +663,7 @@ function yc_get_real_portstates(pos) -- determine if ports are powered (by itsel
local L = {}
local n = meta:get_int("real_portstates") - 1
if n < 0 then
return legacy_update_ports(pos)
return mesecon.legacy_update_ports(pos)
end
for _, index in ipairs({"a", "b", "c", "d"}) do
L[index] = ((n%2) == 1)