在 ROBLOX Studio 中启用过滤的情况下在客户端放置块
Placing blocks client-side with filtering enabled in ROBLOX Studio
我正在尝试让我的迷你游戏场所在启用过滤的情况下工作(在客户端完成的任何操作,例如创建部件,都不会影响服务器端)。目前唯一坏掉的是一个小游戏。
迷你游戏的玩法包括玩家放下方块以防止因减压而被吸进 space。
块的放置是在客户端完成的,因此显然它不能在启用过滤的情况下正常工作。我已经尝试通过一个远程事件来解决这个问题,每次玩家尝试放置一个块时都会调用该事件,参数是被放置的块和它被放置的 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)
您将 dragc 传递给服务器,它是 drag 的克隆,但代码中不存在 drag。尝试克隆 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)
我正在尝试让我的迷你游戏场所在启用过滤的情况下工作(在客户端完成的任何操作,例如创建部件,都不会影响服务器端)。目前唯一坏掉的是一个小游戏。
迷你游戏的玩法包括玩家放下方块以防止因减压而被吸进 space。
块的放置是在客户端完成的,因此显然它不能在启用过滤的情况下正常工作。我已经尝试通过一个远程事件来解决这个问题,每次玩家尝试放置一个块时都会调用该事件,参数是被放置的块和它被放置的 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)
您将 dragc 传递给服务器,它是 drag 的克隆,但代码中不存在 drag。尝试克隆 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)