IntValue的值改变但未显示

我在Roblox Studio中编写割草游戏脚本时遇到了一个问题。每当我割草时,IntValue的值就会加1。当它被分配到拾取物体并将点数直接分配到玩家的库存文件夹时,它的工作方式很好:

local trawa = script.Parent

local function collect(otherPart)
    local player = game.Players:FindFirstChild(otherPart.Parent.Name)
    if player then
        local trawaType = trawa.Name
        local trawaStat = player.Inventory:FindFirstChild(trawaType)
        if trawaStat then
            trawa:Destroy()
            trawaStat.Value = trawaStat.Value + 1
        end
    end
end

trawa.Touched:Connect(collect)

所以这个脚本很好用,但这不是我想要的方式。我希望分数能够在割草后直接分配,而不是在我收集掉落物品之后。所以我更改了上面的脚本,以便将分数分配给工具的库存文件夹,然后将其复制到玩家的库存文件夹中。

local trawa = script.Parent

local function onTouch(otherPart)
    local tool = otherPart.Parent
    if tool:IsA('Tool') and tool.Kosa.Value == true then
        trawa.Parent = nil

        local trawaType = trawa.Name
        local trawaStat = tool.Inventory:FindFirstChild(trawaType)
        trawaStat.Value = trawaStat.Value + 1


        print(trawaStat.Value)


        wait(3)
        trawa.Parent = workspace

    end
end

trawa.Touched:Connect(onTouch)

该值确实会改变,因为当我打印它时,它会增加,但它未在属性中更改,并且其他脚本没有识别它,因为它没有复制到玩家的库存文件夹。接下来这是ServerScriptService中应该将分数从工具转移到玩家的脚本:

local starter = game:GetService("StarterPack")
local tool = starter:FindFirstChildWhichIsA('Tool')
local player = game:GetService("Players").LocalPlayer

function points(player)
    player.Inventory.Trawa2.Value = player.Inventory.Trawa2.Value + tool.Inventory.Trawa2.Value
    tool.Inventory.Trawa2.Value = 0


end

tool.Inventory.Trawa2.Changed:Connect(points)

将IntValue改为NumberValue并不能解决问题。

点赞
用户16250859
用户16250859

使用一个带有 RemoteEvent 的本地脚本,在服务器脚本中运行它,本地脚本是客户端的,所以它们不会保存到服务器,但如果在服务器上运行,就会保存。

如果你想了解更多关于 RemoteEvent 的信息,请点击这个链接。 https://roblox.fandom.com/wiki/Class:RemoteEvent

2021-06-17 08:53:15