牛头 发表于 2026-7-7 19:21:10

真人在线验证防挂机系统

-- 全局防挂机检测 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

goodsnowv 发表于 2026-7-8 00:20:42

感谢楼主分享

我爱嘟嘟 发表于 2026-7-9 07:35:05

感谢楼主分享

707380565 发表于 2026-7-9 16:56:51

牛dddddddddddddddddddddd
页: [1]
查看完整版本: 真人在线验证防挂机系统