Roblox-FE零件创建者脚本不起作用

时间:2018-11-10 17:11:01

标签: lua filtering roblox

我正在用Roblox制作FE游戏,并且工具中的FE代码存在问题。我可以得到帮助吗?

工具内部:

script.Parent.Activated:Connect(function()
game:GetService("ReplicatedStorage"):FindFirstChild('TS'):FireServer(game.Players.LocalPlayer)
end)

事件脚本中

local eventplace = game:GetService("ReplicatedStorage")
eventplace:FindFirstChild('TS').OnServerEvent:connect(function(player)
local rangeball = Instance.new('Part',workspace)
    local rangemesh = Instance.new("SpecialMesh",rangeball)
    rangemesh.MeshType = Enum.MeshType.Sphere
    rangeball.Size = Vector3.new(7,7,7)
    player.Character.Humanoid.WalkSpeed = 0
    rangeball.Parent = workspace
end)

1 个答案:

答案 0 :(得分:0)

您之前是否在ReplicatedStorage中创建了远程“ TS”?

另外,另一件事:

使用:FireServer()时,将自动传递玩家/客户端参数,因此无需执行:FireServer(game.Players.LocalPlayer),因为远程事件将接收两个参数,这两个都是客户/玩家。

您在工具中使用的脚本是LocalScript。您应该改用非本地语言(或脚本)。

还有

当您在本地脚本中使用game.Players.LocalPlayer时,攻击者可以在本地更改game.Players的名称,结果会破坏您的脚本。

要解决此问题,您需要变量。

在工具脚本中:

local tool = script.Parent;

tool.Activated:connect(function();
    local rangeball = Instance.new("Part", workspace); -- Since you put ', workspace' the Part will automatically be child of the Workspace. If you did Instance.new("Part", workspace.idk) it will set the parent of the part to workspace.idk, and if workspace.idk doens't exist, it will throw out a error.
    rangeball.Shape = "Sphere"; -- We can just use 'Shape' property to replace sphere meshes!
    -- No need to do 'rangeball.Parent = workspace' because with simply doing 'Instance.new("Part", workspace)' you do the same function because Instance.new takes two arguments (class, parent)!
    pcall(function() -- We use 'pcall()' here to prevent errors.
        tool.Parent.Humanoid.WalkSpeed = 0; -- Set the Player's WalkSpeed.
    end);
end);

使用该代码,您可以自由删除事件脚本!

如果要使用事件,请确保事件脚本位于ServerScriptService内,这样可以更安全并正确运行。请记住,脚本只能在ReplicatedFirst,ServerScriptService,Workspace和其他几个脚本中运行。

希望我的回答对您有所帮助。

还有最后一件事,欢迎堆栈溢出!