require("luaScript.Extension.MathExt") -- 给evalServerScript使用的函数环境 ServerScriptEnv = {} ServerScriptEnv.__index = ServerScriptEnv; --根据对指定的条件计算结果为 TRUE 或 FALSE,返回不同的结果。 function ServerScriptEnv.ternary(logical_test , value_if_true , value_if_false) if logical_test then return value_if_true else return value_if_false end end ServerScriptEnv.Math = Math; -- 实现三元表达式 IF = ServerScriptEnv.ternary; -- 执行字符串,并返回这个字符串计算后的值,相当于javascript的eval -- @str 脚本,这个脚本只能调用ServerScriptEnv和env里定义的函数与变量 -- @env 供脚本使用的环境变量,必须是一个table -- @return 返回脚本计算完毕后的值 function evalServerScript(str , env) if type(str) == "string" then local e if type(env) == "table" then e = env; setmetatable(e , ServerScriptEnv); else e = ServerScriptEnv end local ret , err = load("return " .. str , "" , "t" , e); if ret == nil then error("解析公式出错" .. str .. " 错误信息:" .. err); else return ret(); end else error("is not a string") end end function emptyFunction() print("空函数调用"); end