-- 全局防挂机检测 60秒检测一次
SetTimer(60,function()
local plyList = GetAllPlayerList()
for _,pid in pairs(plyList) do
local p = GetPlayerObj(pid)
if p and p:IsOnline() then
-- 获取玩家无操作时长(秒)
local AfkTime = tonumber(p:GetVar("AFK_TIME")) or 0
AfkTime = AfkTime + 60
p:SetVar("AFK_TIME",AfkTime)
-- 5分钟无操作弹出验证
if AfkTime >= 300 and p:GetVar("IS_CHECK_AFK") ~= "1" then
p:SetVar("IS_CHECK_AFK","1")
p:ShowDialog("真人验证", "检测到您长时间挂机,请点击确定完成验证!超时将被强制下线!","立即验证")
-- 30秒超时踢人
SetTimer(30,function()
if p:GetVar("IS_CHECK_AFK") == "1" then
p:KickPlayer()
SendAllMsg("【系统】玩家【"..p:GetName().."】挂机验证超时,已强制下线!")
end
end)
end
end
end
end)
-- 玩家操作重置挂机时间(移动/点击/交易触发)
function OnPlayerAction(Player)
Player:SetVar("AFK_TIME",0)
Player:SetVar("IS_CHECK_AFK","0")
end
-- 验证通过奖励
function OnClickAfkCheck(self)
self:SetVar("AFK_TIME",0)
self:SetVar("IS_CHECK_AFK","0")
self:AddGold(200)
self:SendMsg("真人验证通过!奖励200元宝,请勿长期挂机!")
end
|