bayuMIR/Mirserver/Mir200/Envir/Extension/UtilServer/Sys.lua
2026-06-12 00:25:44 +08:00

235 lines
4.6 KiB
Lua

Sys = {}
Sys.EventCfg = {}
--* 获取新建玩家数量 设置运行机器人或者系统任务
function Sys.calcNewHuman(actor)
local _newHuman = Sys.getint(VarCfg.sys.int["新建玩家人数"]) or 0
if _newHuman < ConstCfg.botstartHuman then
Sys.addint(VarCfg.sys.int["新建玩家人数"], 1)
return
else
if Sys.getint(VarCfg.sys.int["开区时间戳"]) == 0 then
Sys.setint(VarCfg.sys.int["开区时间戳"], os.time())
end
end
end
GameEvent.add(EventCfg.onNewHuman, function(actor)
Sys.calcNewHuman(actor)
end, Sys)
--------------* 普通变量-----------------
---* 设置系统普通str变量
function Sys.setstr(key, nValue,itype)
SetSysStr(key, nValue,itype or 0)
---* 修改变量触发事件
if Sys.EventCfg[key] then
GameEvent.push(Sys.EventCfg[key])
end
end
---* 设置系统普通int变量
function Sys.setint(key, nValue,itype)
SetSysInt(key, nValue,itype or 0)
---* 修改变量触发事件
if Sys.EventCfg[key] then
GameEvent.push(Sys.EventCfg[key])
end
end
---* 设置系统int变量+值
function Sys.addint(key, nValue,itype)
SetSysInt(key, Sys.getint(key) + nValue,itype or 0)
---* 修改变量触发事件
if Sys.EventCfg[key] then
GameEvent.push(Sys.EventCfg[key])
end
end
---* 获取系统普通str变量
function Sys.getstr(key)
return GetSysStr(key)
end
---* 获取系统普通int变量
function Sys.getint(key)
return GetSysInt(key)
end
--------------* 临时变量-----------------
---* 设置系统临时str变量
function Sys.settempstr(key, nValue)
SetSysTempStr(key, nValue)
---* 修改变量触发事件
if Sys.EventCfg[key] then
GameEvent.push(Sys.EventCfg[key])
end
end
---* 设置系统临时int变量
function Sys.settempint(key, nValue)
SetSysTempInt(key, nValue)
---* 修改变量触发事件
if Sys.EventCfg[key] then
GameEvent.push(Sys.EventCfg[key])
end
end
---* 设置系统临时int变量+值
function Sys.additempint(key, nValue)
SetSysTempInt(key, Sys.gettempint(key) + nValue)
---* 修改变量触发事件
if Sys.EventCfg[key] then
GameEvent.push(Sys.EventCfg[key])
end
end
---* 获取系统临时str变量
function Sys.gettempstr(key)
return GetSysTempStr(key)
end
---* 获取系统临时int变量
function Sys.gettempint(key)
return GetSysTempInt(key)
end
--------------------------* 期限变量------------------------------
---* 设置系统期限str变量
---* 系统对象
---* 变量名
---* 值
---* 时间戳 可空 默认明天0点过期
---@param key any
---@param value any
---@param time any
function Sys.setTLstr(key, value, time)
SetSysTLStr(key, value, time or DateOBJ.getTomorrowZero())
---* 修改变量触发事件
if Sys.EventCfg[key] then
GameEvent.push(Sys.EventCfg[key])
end
end
---* 设置系统期限int变量
---* 系统对象
---* 变量名
---* 值
---* 时间戳 可空 默认明天0点过期
---@param key any
---@param value any
---@param time any
function Sys.setTLint(key, value, time)
SetSysTLInt(key, value, time or DateOBJ.getTomorrowZero())
---* 修改变量触发事件
if Sys.EventCfg[key] then
GameEvent.push(Sys.EventCfg[key])
end
end
---* 获取系统期限str变量
function Sys.getTLstr(key)
local value, time = GetSysTLStr(key)
return value
end
---* 获取系统期限int变量
function Sys.getTLint(key)
local value, time = GetSysTLInt(key)
return value
end
-------------------- 键值类 ---------------------------
function Sys.setkeycount(var, key, value)
if var == nil then
return false
end
if key == nil then
return false
end
local tempvar = Sys.getstr(var)
local data = tempvar and json2tblex(tempvar) or {}
if not data[key] then
data["J_" .. key] = value
else
data["J_" .. key] = value
end
Sys.setstr(var, tbl2json(data))
end
----* 获取键值对
function Sys.getkeycount(var, key)
if var == nil then
return false
end
if key == nil then
return false
end
local tempvar = Sys.getstr(var)
local data = tempvar and json2tblex(tempvar) or {}
return data["J_"..key] or nil
end
-- 获取键值返回键值表
function Sys.getkeytbl(var)
if var == nil then
return false
end
local tempvar = Sys.getstr(var)
local data = tempvar and json2tblex(tempvar) or {}
local newData = {}
for key, value in pairs(data or {}) do
newData[key:gsub("J_", "")] = value
end
return newData
end
function Sys.delcountkey(var, key)
if var == nil then
return false
end
if key == nil then
return false
end
local tempvar = Sys.getstr(var)
local data = tempvar and json2tblex(tempvar) or {}
if data["J_"..key] then
data["J_"..key] = nil
end
Sys.setstr(var, tbl2json(data))
end
return Sys