在ROBLOX Studio中启用在客户端放置块并启用过滤

时间:2018-03-21 17:40:28

标签: lua roblox

我试图让我的迷你游戏位置与Filtering Enabled一起工作(客户端做的任何事情就像创建一个部分并不影响任何服务器端)。目前唯一被打破的是一个小游戏。

小游戏的游戏玩法包括玩家放下块以阻止因减压而被吸入太空。

块的放置是在客户端完成的,所以很明显它在启用Filtering Enabled时无法正常工作。我尝试通过一个远程事件来解决这个问题,每当玩家试图放置一个块时,其中的参数是被放置的块以及放置它的CFrame。但是,每次我通过本地服务器测试时,它都会告诉我参数' part'是零,即使我确实给了它。

以下是相关脚本的相关代码: 服务器脚本:

pBEvent.OnServerEvent:connect(function(player,partToPlace,position)
    partToPlace.Parent=sp.Blocks
    partToPlace.CFrame=position
    wait()
    partToPlace:MakeJoints()
    partToPlace.Anchored=false
end)

本地脚本:

m.Button1Down:connect(function()
    if m.Target and m.Target.Name == script.Parent.Parent.Name and amount.Value > 0 and db == false or m.Target.Name == "Part" and db == false and amount.Value > 0 then
        db = true 
        amount.Value = amount.Value - 1
        local lastpos = drag.CFrame
        local dragc = drag:Clone()
        dragc.Anchored = true

        dragc.Name = game.Players.LocalPlayer.Name

        dragc.Transparency = 0
        dragc.ff:Destroy()
        event:FireServer(dragc,lastpos)
    end
end)

1 个答案:

答案 0 :(得分:3)

您正在将dragc传递给服务器,该服务器是拖动的克隆,但代码中不存在拖动。尝试克隆m.Target:

m.Button1Down:connect(function()
    if m.Target and m.Target.Name == script.Parent.Parent.Name and amount.Value > 0 and db == false or m.Target.Name == "Part" and db == false and amount.Value > 0 then
        db = true 
        amount.Value = amount.Value - 1
        local lastpos = m.Target.CFrame
        local dragc = m.Target:Clone()
        dragc.Anchored = true

        dragc.Name = game.Players.LocalPlayer.Name

        dragc.Transparency = 0
        dragc.ff:Destroy()
        event:FireServer(dragc,lastpos)
    end
 end)