Roblox Lua中的数据存储

Roblox Lua中的数据存储,lua,roblox,Lua,Roblox,因此,我目前正试图获得一个保存脚本,以配合鼠标点击事件游戏。它应该可以保存玩家的点击次数(点数)。问题是,它似乎根本没有节约。排行榜/鼠标单击事件正常工作,没有输出/脚本分析错误,脚本位于ServerScriptService中 代码如下: local DataStoreService = game:GetService("DataStoreService") classData = DataStoreService:GetDataStore("PlayClass") pointData = D

因此,我目前正试图获得一个保存脚本,以配合鼠标点击事件游戏。它应该可以保存玩家的点击次数(点数)。问题是,它似乎根本没有节约。排行榜/鼠标单击事件正常工作,没有输出/脚本分析错误,脚本位于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("Loading Success!")
    end
    local success, err = pcall(function()
        classData:GetAsync("Player_"..player.UserId)
    end
    )
    if success then
        print("Loading Success!")
    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 ("Saving Success!")
    end
    local success, err = pcall(function()
        classData:SetAsync("Player_"..player.UserId, PlayerClass.Value)
    end
    )
    if success then
        print("Saving Success!")
    end
end)
localdatastoreservice=game:GetService(“DataStoreService”)
classData=DataStoreService:GetDataStore(“PlayClass”)
pointData=DataStoreService:GetDataStore(“播放点”)
游戏.玩家.玩家添加:连接(功能(玩家)
本地成功,err=pcall(函数()
pointData:GetAsync(“播放器”...Player.UserId)
结束
)
如果成功的话
打印(“加载成功!”)
结束
本地成功,err=pcall(函数()
classData:GetAsync(“Player”..Player.UserId)
结束
)
如果成功的话
打印(“加载成功!”)
结束
本地leaderstats=Instance.new(“文件夹”,播放器)
leaderstats.Name=“leaderstats”
本地点=Instance.new(“IntValue”,leaderstats)
Points.Name=“Points”
本地类=Instance.new(“StringValue”,leaderstats)
Class.Name=“Class”
Class.Value=“想要的”
PlayerClass=player.leaderstats.Class
PlayerPoints=player.leaderstats.Points
(完)
工作区:WaitForChild(“签名”)
workspace.Part.ClickDetector.MouseClick:Connect(函数(播放器)
workspace.Sign.Value.Value=workspace.Sign.Value.Value+1
workspace.Sign.SurfaceGui.Sign.Text=workspace.Sign.Value.Value
PlayerPoints.Value=workspace.Sign.Value.Value
如果播放点数。值<49
然后
PlayerClass.Value=“Wannabe”
结束
如果播放点数.值>49
然后
PlayerClass.Value=“初学者”
结束
如果播放点数.值>124
然后
PlayerClass.Value=“新手”
结束
如果播放点数值>249
然后
PlayerClass.Value=“中级”
结束
如果播放点数值>374
然后
PlayerClass.Value=“Pro”
结束
如果播放点数.值>499
然后
PlayerClass.Value=“上帝”
结束
结束
)
game.Players.PlayerRemoving:连接(函数(播放器)
本地成功,err=pcall(函数()
pointData:SetAsync(“播放器”...Player.UserId,PlayerPoints.Value)
结束
)
如果成功的话
打印(“保存成功!”)
结束
本地成功,err=pcall(函数()
classData:SetAsync(“Player”...Player.UserId,PlayerClass.Value)
结束
)
如果成功的话
打印(“保存成功!”)
结束
(完)
它打印加载成功,但不打印保存成功。
编辑:我尝试添加else语句以查看错误,但它仍然无法打印任何内容。

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

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

…它将向您显示错误。从你的评论来看,我不确定你是否这样做过。而且,我并不是每次都在输出中得到错误。在我的例子中,错误是:“403:如果未启用API访问,则无法从studio写入数据存储。”启用后,“保存成功”显示得很好。

如果添加else语句,可以打印出err变量并查看出错的原因。因此,当我添加错误消息时,它仍然不会打印任何内容。哦,好的。我是以“警告(错误)”的方式来做的,只是因为一个人在视频中就是这样做的。我会试试看是否有效。与警告(错误)为我工作。它是否进入该事件处理程序?你是否试着在那个函数的开始打印?打印(游戏。播放器。Player删除:Connect(函数(播放器))?我只是尝试在代码的中间放置一个随机打印函数,然后打印出来。