防止利用服务器问题(人物为 NIL)

我一直在尝试创建一个防止利用系统,但是一个不能通过漏洞禁用的系统。当我尝试看看任何人形的属性是否改变时,使用(function param1)。Character.Humanoid 我在开发者控制台中得到一个错误(游戏中而不是命令行下方)显示 'attempt to index nil with humanoid'

代码

game.Players.PlayerAdded:Connect(function(p)
while true do
    if p.Character.Humanoid.Health > 100 or p.Character.Humanoid.MaxHealth > 100 then
        p:Kick("Potential Exploiting Detected. [Exploit Protection: Changing Health]")
    end

        if p.Character.Humanoid.WalkSpeed > 16 then
        p:Kick("Potential Exploiting Detected. [Exploit Protection: Increasing Speed]")
    end

    if p.Character.Humanoid.JumpPower > 50 then
        p:Kick("Potential Exploiting Detected. [Exploit Protection: Increasing Jump-Power]")
    end

    if p.Team ~= game:GetService("Teams")["Miners"] then
        p:Kick("Potential Exploiting Detected. [Exploit Protection: Putting Self on a Team]")
    end
    wait(1);
end
end)
点赞
用户2858170
用户2858170

为什么你希望 p.Character 除了 nil 以外的任何值?

根据 Roblox 手册:

Character

... 最初, 这个属性的值是 nil, 之后当玩家的角色第一次生成时被设置。使用 Player.CharacterAdded 事件来检测玩家的角色何时正确加载

当一个玩家被添加后它还没有一个角色。此外, 在永不停止的循环中运行此代码,即使玩家已被踢出游戏也没有太多意义。

2021-05-10 07:03:18
用户14628101
用户14628101

当玩家加入游戏时,将调用 PlayerAdded 事件。当他们加入游戏时,角色尚未加载,因此将被设置为 nil。为了在角色加载后运行您的代码,请使用以下代码:

game.Players.PlayerAdded:Connect(function(p)
  p.CharacterAdded:Connect(function(c)
    -- TODO
  end)
end)
2021-05-14 10:42:25