Roblox Lua中的DataStore

目前我正在努力创建一个可以通过鼠标单击事件保存数据的脚本。它应该保存玩家点击(积分)的数量。问题是,似乎根本没有保存。排行榜/鼠标点击事件可以正常工作,没有输出/脚本分析错误,并且脚本位于ServerScriptService中。

这是代码:

local DataStoreService = game:GetService("DataStoreService")
classData = DataStoreService:GetDataStore("PlayClass")
pointData = DataStoreService:GetDataStore("PlayPoints")

game.Players.PlayerAdded:Connect(function(player)
    local success, err = pcall(function()
        pointData:GetAsync("Player_"..player.UserId)
    end
    )
    if success then
        print("加载成功!")
    end
    local success, err = pcall(function()
        classData:GetAsync("Player_"..player.UserId)
    end
    )
    if success then
        print("加载成功!")
    end

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

    local Points = Instance.new("IntValue", leaderstats)
    Points.Name = "Points"

    local Class = Instance.new("StringValue", leaderstats)
    Class.Name = "Class"
    Class.Value = "Wannabe"
    PlayerClass = player.leaderstats.Class
    PlayerPoints = player.leaderstats.Points
end)

workspace:WaitForChild("Sign")

workspace.Part.ClickDetector.MouseClick:Connect(function(player)
    workspace.Sign.Value.Value = workspace.Sign.Value.Value + 1
    workspace.Sign.SurfaceGui.SIGN.Text = workspace.Sign.Value.Value
    PlayerPoints.Value = workspace.Sign.Value.Value

    if PlayerPoints.Value < 49
    then
        PlayerClass.Value = "Wannabe"
    end

    if PlayerPoints.Value > 49
    then
        PlayerClass.Value = "Beginner"
    end

    if PlayerPoints.Value > 124
    then
        PlayerClass.Value = "Novice"
    end

    if PlayerPoints.Value > 249
    then
        PlayerClass.Value = "Intermediate"
    end

    if PlayerPoints.Value > 374
    then
        PlayerClass.Value = "Pro"
    end

    if PlayerPoints.Value > 499
    then
        PlayerClass.Value = "God"
    end

end
)

game.Players.PlayerRemoving:Connect(function(player)
    local success, err = pcall(function()
        pointData:SetAsync("Player_"..player.UserId, PlayerPoints.Value)
    end
    )
    if success then
        print ("保存成功!")
    end
    local success, err = pcall(function()
        classData:SetAsync("Player_"..player.UserId, PlayerClass.Value)
    end
    )
    if success then
        print("保存成功!")
    end
end)

它会打印"加载成功!",但不会打印"保存成功!"。 编辑:我试着添加一个else语句来查看错误,但仍然没有打印任何东西。

点赞
用户1296374
用户1296374

我可以复制您的问题,使用空白游戏、部件和脚本。正如 Kylaaa 在他的评论中提到的,如果您这样做:

if success then
    print ("Saving Success!")
else
    print (err)
end

……它会将错误显示出来。从您的评论中,我不确定您是否以那种方式尝试过它。此外,我没有在每次输出中都出现错误。在我的情况下,错误是:“403:如果未启用 API 访问,则无法从工作室写入 DataStore。”启用后,“保存成功”正常显示。

2020-05-01 00:29:53