为什么硬币只在第一次加入游戏时保存?

我正在 Roblox 中制作障碍赛。我有一个用于保存排行榜值(即硬币和检查点)的数据存储。我所拥有的 Data Store 位于 ServerScriptService 中。

问题在于,当玩家第一次加入游戏时,他们完成了游戏的前五个关卡并获得了 2 枚硬币。下一次他们加入游戏时,他们仍然在第 5 关,而且从上一局游戏中仍然拥有 2 枚硬币。但是,如果他们现在玩游戏(即第二次登录游戏),并且假设他们到达第 10 关并有 4 枚硬币,则流程应该进行如下:如果玩家现在离开游戏,并在重新加入游戏时,他们应该到达第 10 关并且应该有 4 枚硬币。

但是发生的是,他们不在第 10 关,而且他们的硬币是 2 枚。就像他们的进度在第一次游戏时一样。

为什么这个数据存储不会在玩家第三次登录游戏时更新排行榜上的值?等等?

下面是位于 ServerScriptService 中的完整数据存储所包含的脚本:

local DataStoreService = game:GetService("DataStoreService")
local myDataStore = DataStoreService:GetDataStore("myDataStore")

game.Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder", player)
leaderstats.Name = "leaderstats"

local Checkpoint = Instance.new("IntValue", leaderstats)
Checkpoint.Name = "Checkpoint"
Checkpoint.Value = 1

local coins = Instance.new("IntValue", leaderstats)
coins.Name = "Coins"
coins.Value = 0

--Checkpoint Section
player.CharacterAdded:Connect(function(character)

    repeat wait() until player.character ~= nil
    local checkpoint = game.Workspace.Checkpoints:FindFirstChild(Checkpoint.Value)
    character:WaitForChild("HumanoidRootPart").CFrame = CFrame.new(checkpoint.Position +
Vector3.new(0, 2, 0))

end)

-- Data Store Section

local playerUserId = "Player_"..player.UserId
print(playerUserId)

-- Load Data

local data
local success, errormessage = pcall(function()
     data = myDataStore:GetAsync(playerUserId)

end)

if success then
    if data then
    coins.Value = data.Coins
    Checkpoint.Value = data.Checkpoint
    -- Set our data equal to the current Coins
    end
end

end)

game.Players.PlayerRemoving:Connect(function(player)
local playerUserId = "Player_"..player.UserId

local data = {

Coins = player.leaderstats.Coins.Value;
Checkpoint = player.leaderstats.Checkpoint.Value;

}

local success, errormessage = pcall(function()
    myDataStore:SetAsync(playerUserId, data)
end)

    if success then
        print("Data successfully saved!")
    else
        print("There was an error saving the data!")
        warn(errormessage)
    end

end)

请帮帮我,因为我真的需要答案。

谢谢

点赞
用户13585303
用户13585303

我也遇到过这种情况,我想你是在 Roblox Studio 中测试游戏吧。在 Studio 中,有时会出现错误。尝试发布游戏,然后检查是否可以正常工作。

2020-05-21 12:35:31