首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Roblox数据存储不更新数据

Roblox数据存储不更新数据
EN

Stack Overflow用户
提问于 2019-02-06 04:25:01
回答 1查看 375关注 0票数 1

在过去的几天里,我一直被数据没有保存的问题所困扰,我的代码没有给出任何错误,从我所看到的来看,它应该可以工作。代码如下:

代码语言:javascript
运行
复制
local DataStore = game:GetService("DataStoreService"):GetDataStore("PlayerStats001")


-- Function to make the leaderstats
function onPlayerJoin(player)

    local Leaderstats = Instance.new("Folder", player)
    Leaderstats.Name = ("leaderstats")

    local leadermoney = Instance.new("IntValue", Leaderstats)
    leadermoney.Name = ("Money")


    local leaderrescues = Instance.new("IntValue", Leaderstats)
    leaderrescues.Name = ("Rescues")


    local key = "player-" .. player.userId

    local savePoints = {}
    savePoints = DataStore:GetAsync(key)

    if savePoints then
        print("Old leaderstats")
        -- Has been to game before, save format = {money, rescues}
        leadermoney.Value = savePoints[1]
        leaderrescues.Value = savePoints[2]
    else
        print("New leaderstats")
        leadermoney.Value = 25000
        leaderrescues.Value = 0
        local valuesToSave = {leadermoney.Value, leaderrescues.Value}
        DataStore:SetAsync(key, valuesToSave)
    end

end

-- Saves player data
function save(player)
    print("Started save")
    local key = "player-" .. player.userId
    local valuesToSave = {player.leaderstats:FindFirstChild("Money").Value , player.leaderstats:FindFirstChild("Rescues").Value}
    DataStore:SetAsync(key, valuesToSave)
    print("Finished save", valuesToSave[1], valuesToSave[2])
end

function playerLeaves(player)
    save()
end

-- Runs the save function if a client requests a save
game.Lighting.RemoteEvents.Save.OnServerEvent:Connect(save)

-- Runs the playerLeaves function if a player leaves
game.Players.PlayerRemoving:Connect(save)

-- Runs the onPlayerJoin function when a player joins
game.Players.PlayerAdded:Connect(onPlayerJoin)

当我运行它时(我在starter GUI中有一个本地脚本,它可以工作):

代码语言:javascript
运行
复制
function autoSaveRequester()
    print("Started auto save function.")
    while wait(15) do
        print("Finnished wait")
        game.Lighting.RemoteEvents.Save:FireServer()
    end
end

spawn(autoSaveRequester)

它输出的值与我更改之前的值相同,而不是新的值,如果有任何帮助,我们将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2019-02-21 19:17:22

因为这一行,你的代码不能工作;

代码语言:javascript
运行
复制
game.Players.PlayerRemoving:Connect(save)

您可以直接跳转到save函数,而不是PlayerRemoving,并且不指定播放器。

将该行更新为:

代码语言:javascript
运行
复制
game.Players.PlayerRemoving:Connect(playerLeaves)

如果这对你有帮助,一定要投票支持!如果这回答了你的问题,别忘了按下勾!

如果你还需要什么,请在下面留言。

罗斯。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54542486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档