You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
1.3 KiB

  1. require("luaScript.Extension.MathExt")
  2. -- 给evalServerScript使用的函数环境
  3. ServerScriptEnv = {}
  4. ServerScriptEnv.__index = ServerScriptEnv;
  5. --根据对指定的条件计算结果为 TRUE 或 FALSE,返回不同的结果。
  6. function ServerScriptEnv.ternary(logical_test , value_if_true , value_if_false)
  7. if logical_test then
  8. return value_if_true
  9. else
  10. return value_if_false
  11. end
  12. end
  13. ServerScriptEnv.Math = Math;
  14. -- 实现三元表达式
  15. IF = ServerScriptEnv.ternary;
  16. -- 执行字符串,并返回这个字符串计算后的值,相当于javascript的eval
  17. -- @str 脚本,这个脚本只能调用ServerScriptEnv和env里定义的函数与变量
  18. -- @env 供脚本使用的环境变量,必须是一个table
  19. -- @return 返回脚本计算完毕后的值
  20. function evalServerScript(str , env)
  21. if type(str) == "string" then
  22. local e
  23. if type(env) == "table" then
  24. e = env;
  25. setmetatable(e , ServerScriptEnv);
  26. else
  27. e = ServerScriptEnv
  28. end
  29. local ret , err = load("return " .. str , "" , "t" , e);
  30. if ret == nil then
  31. error("解析公式出错" .. str .. " 错误信息:" .. err);
  32. else
  33. return ret();
  34. end
  35. else
  36. error("is not a string")
  37. end
  38. end
  39. function emptyFunction()
  40. print("空函数调用");
  41. end