Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua 为什么硬币只保存玩家第一次加入游戏的时间?_Lua_Roblox - Fatal编程技术网

Lua 为什么硬币只保存玩家第一次加入游戏的时间?

Lua 为什么硬币只保存玩家第一次加入游戏的时间?,lua,roblox,Lua,Roblox,所以我正在用Roblox做一个obby。我有一个用于保存排行榜价值的数据存储,即硬币和检查点。我拥有的数据存储在ServerScriptService中 问题是,当玩家第一次加入游戏时,他们完成了游戏的前5个关卡,得到2枚硬币。下一次他们加入游戏时,他们仍然处于5级,并且他们仍然拥有上一场游戏的2枚硬币。但是如果他们现在玩游戏(即第二次登录游戏),假设他们达到10级并拥有4枚硬币,那么这个过程应该是这样的,如果玩家现在离开游戏,当他们重新加入时,他们应该达到10级并拥有4枚硬币 但是发生的事情是

所以我正在用Roblox做一个obby。我有一个用于保存排行榜价值的数据存储,即硬币和检查点。我拥有的数据存储在ServerScriptService中

问题是,当玩家第一次加入游戏时,他们完成了游戏的前5个关卡,得到2枚硬币。下一次他们加入游戏时,他们仍然处于5级,并且他们仍然拥有上一场游戏的2枚硬币。但是如果他们现在玩游戏(即第二次登录游戏),假设他们达到10级并拥有4枚硬币,那么这个过程应该是这样的,如果玩家现在离开游戏,当他们重新加入时,他们应该达到10级并拥有4枚硬币

但是发生的事情是,他们不在10级,他们没有4枚硬币,他们仍然在5级,他们的硬币是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)
请帮忙,因为我真的需要答案


谢谢

这也发生在我身上,我想你是在Roblox Studio测试游戏。在Studio中,有时会出现错误。尝试发布游戏,然后检查它是否有效