我正在尝试制作一款游戏,排行榜数据应该保存,但没有保存。这是serverscriptservice中的代码:
local DataStoreService = game:GetService("DataStoreService")
local statsDS = DataStoreService:GetDataStore("statsDS")
local SAVE_INTERVAL = 60 -- Save data every 60 seconds (1 minute)
-- Helper function to save player data
local function savePlayerData(player)
local leaderstats = player:FindFirstChild("leaderstats")
if leaderstats then
local Clicks = leaderstats:FindFirstChild("Clicks")
local Time = leaderstats:FindFirstChild("Time")
if Clicks and Time then
local data = {Clicks.Value, Time.Value}
local playerUserId = "Player" .. player.UserId
local success, errorMessage = pcall(function()
statsDS:SetAsync(playerUserId, data)
end)
if success then
print("Saved data for " .. player.Name)
else
warn("Error saving data for " .. player.Name .. ": " .. errorMessage)
end
end
end
end
game.Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local Clicks = Instance.new("IntValue")
Clicks.Name = "Clicks"
Clicks.Parent = leaderstats
local Time = Instance.new("IntValue")
Time.Name = "Time"
Time.Parent = leaderstats
local playerUserId = "Player" .. player.UserId
local data = statsDS:GetAsync(playerUserId)
if data then
Clicks.Value = data[1]
Time.Value = data[2]
end
player:WaitForChild("leaderstats")
player:WaitForChild("leaderstats"):WaitForChild("Clicks")
local lastSaveTime = tick()
local saveTimer
saveTimer = game:GetService("RunService").Heartbeat:Connect(function()
if tick() - lastSaveTime >= SAVE_INTERVAL then
lastSaveTime = tick()
savePlayerData(player)
end
if not player:IsDescendantOf(game) then
-- Player left the game
saveTimer:Disconnect()
savePlayerData(player)
end
end)
end)
game.Players.PlayerRemoving:Connect(function(player)
savePlayerData(player)
end)
我原本希望在离开并重新加入时保存数据,但它被重置为 0
我尝试以各种方式修改代码,但没有任何效果,而且大多数只会让情况变得更糟。
这是一款游戏,其中有一个按钮,您单击它,它会增加点击价值,而时间仅显示您在游戏中花费的时间。下面的代码应该保存它,以便它在服务器之间工作,但它永远不会工作。总是重置。我不知道还需要添加什么来修复它。
您在 Studio 中运行游戏吗?如果是这样,默认情况下,Roblox 会禁用 Studio 对数据存储的访问,仅建议在您的游戏未上线时禁用此功能。如果您想禁用此功能,可以在
Game Settings
选项卡下的 Home
中执行此操作。否则,您可以从 Roblox 播放器测试游戏,所有数据存储都应按预期运行。