【发布时间】:2018-01-06 10:48:57
【问题描述】:
在我的游戏中,我有一个本地枪支脚本,可以触发远程事件来改变玩家的健康状况。问题是黑客可以触发远程事件并改变玩家的健康状况。我该如何阻止这种情况发生?这是远程事件:
script.CHealth.OnServerEvent:connect(function(player,humanoid,amnt)
humanoid.Health = humanoid.Health - amnt
end)
这就是它的名字:
game.Workspace.RemoteEvents.CHealth:FireServer(humanoid,60)
【问题讨论】:
-
可能你应该在服务器端做一些额外的检查来确定那个字符是否可以减少另一个字符的生命值。例如,如果它们彼此相距太远,则应拒绝此操作。通常,客户端向服务器发送如下消息:“我正在朝那个方向射击”,然后服务器完成所有其他工作:检查谁在火线上以及当前武器可以造成多少生命值(服务器也可以给这个事件添加随机性)。
-
一般来说,永远不要相信客户。您应该在服务器上进行损坏计算和光线。因此,您应该有一个发射弹丸的事件,而不是一个伤害玩家的事件。让服务器完成安全关键的工作 - 否则没有办法。