mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
Upload
This commit is contained in:
80
lua/pac3/libraries/expression.lua
Normal file
80
lua/pac3/libraries/expression.lua
Normal file
@@ -0,0 +1,80 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
|
||||
local lib = {
|
||||
PI = math.pi,
|
||||
rand = math.random,
|
||||
randx = function(a, b)
|
||||
a = a or -1
|
||||
b = b or 1
|
||||
return math.Rand(a, b)
|
||||
end,
|
||||
|
||||
abs = math.abs,
|
||||
acos = math.acos,
|
||||
asin = math.asin,
|
||||
atan = math.atan,
|
||||
atan2 = math.atan2,
|
||||
ceil = math.ceil,
|
||||
cos = math.cos,
|
||||
cosh = math.cosh,
|
||||
deg = math.deg,
|
||||
exp = math.exp,
|
||||
floor = math.floor,
|
||||
frexp = math.frexp,
|
||||
ldexp = math.ldexp,
|
||||
log = math.log,
|
||||
log10 = math.log10,
|
||||
max = math.max,
|
||||
min = math.min,
|
||||
rad = math.rad,
|
||||
sin = math.sin,
|
||||
sinh = math.sinh,
|
||||
sqrt = math.sqrt,
|
||||
tanh = math.tanh,
|
||||
tan = math.tan,
|
||||
sgn = function(n) return n>0 and 1 or n<0 and -1 or 0 end,
|
||||
|
||||
clamp = math.Clamp,
|
||||
round = math.Round,
|
||||
}
|
||||
|
||||
local blacklist = {"repeat", "until", "function", "end"}
|
||||
|
||||
local function compile_expression(str, extra_lib)
|
||||
for _, word in pairs(blacklist) do
|
||||
if str:find("[%p%s]" .. word) or str:find(word .. "[%p%s]") then
|
||||
return false, string.format("illegal characters used %q", word)
|
||||
end
|
||||
end
|
||||
|
||||
local functions = {}
|
||||
|
||||
for k,v in pairs(lib) do functions[k] = v end
|
||||
|
||||
if extra_lib then
|
||||
for k,v in pairs(extra_lib) do functions[k] = v end
|
||||
end
|
||||
|
||||
functions.select = select
|
||||
str = "local IN = select(1, ...) return " .. str
|
||||
|
||||
local func = CompileString(str, "pac_expression", false)
|
||||
|
||||
if isstring(func) then
|
||||
return false, func
|
||||
else
|
||||
setfenv(func, functions)
|
||||
return true, func
|
||||
end
|
||||
end
|
||||
|
||||
return compile_expression
|
||||
Reference in New Issue
Block a user