钥匙卡门放置在复制物存储时无法工作

我有一个钥匙卡门,但当我把它放入复制物存储时它无法工作(这是游戏通行证钥匙),有人能帮我吗?只有当放入起始包中才能使用,它当前正在StartGui中使用本地脚本** 这是代码:


script.Parent.Touched:Connect(function(hit)
    if hit.Parent.Name == "Clearance1" then
        script.Parent.CanCollide = false
        script.Parent.Transparency = 0.5
        wait(0.5)
        script.Parent.CanCollide = true
        script.Parent.Transparency = 0
    end
end)

原文链接 https://stackoverflow.com/questions/70389720

点赞
stackoverflow用户17727151
stackoverflow用户17727151
StarterPack 已经以某种方式复制了。

如果你使用 ReplicatedStorage,你需要将它添加到 PlayerInstance.Backpack 中。

同时,`script.Parent.Touched` 只能在服务器端使用。

如果你想要访问玩家的背包,可以使用 `game.Players.PLAYERNAME.Backpack`。

你现在的做法其实不是一个很好的主意(无意冒犯)。
我建议将物品留在 StarterPack 中。如果你真的不想留下,可以通过以下方式以编程方式实现,将物品放入他们的背包中。像这样:

-- 服务器脚本 game.Players.PlayerAdded:Connect(function(player) -- 玩家加入游戏时运行 player.CharacterAdded:Connect(function() -- 运行时,玩家会重新生成或角色会重新加载 local itemCopy = game.ReplicatedStorage.Clearance1:Clone() -- 创建物品的一个副本 itemCopy.Parent = player.Backpack -- 将物品放入玩家的背包中(库存) end) end)

这段代码的作用是:每当玩家生成时,它会克隆物品并将其放入其库存中。

现在,如果您想在用户接触门时检查他们是否拥有该物品,可以这样做:

-- 服务器脚本 script.Parent.Touched:Connect(function(part) -- 当一部分接触门时触发 local player = game.Players:GetPlayerFromCharacter(part.Parent) -- 从接触的部分获取玩家 if player and player.Backpack:FindFirstChild("Clearance1") then -- 确保玩家存在,并且他们的库存中包含通行证 script.Parent.CanCollide = false -- 让部分无法碰撞 script.Parent.Transparency = 0.5 -- 设置部分透明度 wait(0.5) -- 等待半秒钟 script.Parent.CanCollide = true -- 使部分可碰撞 script.Parent.Transparency = 0 -- 使部分不透明 end end)

```

每当部分被接触时,它都会检查它是否是一个玩家。如果是,它会检查玩家是否拥有该物品。如果是,则会运行此代码。

2021-12-21 05:11:02