有没有理由说这些不起作用?
玩家加入剧本:
local DataStore = game:GetService("DataStoreService"):GetDataStore("GeneralStats")
game.Players.PlayerAdded:connect(function(player)
local stats = Instance.new("IntValue", player)
stats.Name = "leaderstats"
local points = Instance.new("IntValue", stats)
points.Name = "Points"
local credits = Instance.new("IntValue", stats)
credits.Name = "Credits"
local key = "player-"..player.userId
local savedValues = DataStore:GetAsync(key)
if savedValues then
--Save format: (points, credits)
points.Value = savedValues[1]
credits.Value = savedValues[2]
else
local ValuesToSave = {points.Value, credits.Value}
DataStore:SetAsync(key, ValuesToSave)
end
end)
播放器离开时的另一个脚本。
local DataStore = game:GetService("DataStoreService"):GetDataStore("GeneralStats")
game.Players.PlayerRemoving:connect(function(player)
local key = "player-"..player.userId
--Save key: {points, credits}
local valuesToSave = {player.leaderstats.Points.Values, player.leaderstats.Credits.Values}
DataStore:SetAsync(key, valuesToSave)
end)
这适用于我正在处理的游戏,如果您不知道,则RLua
为Roblox Lua
。
答案 0 :(得分:0)
是的,在你有机会提取数据之前,很可能会删除领导者。
我建议不要使用leaderstats作为数据的参考。最好直接在脚本上存储数据。
但是,如果你真的必须使用leadertats,请将其托管到其他地方,提取数据,然后删除它。
'(.+) ' + text + ' (.+)'
或者你可以在它们被重新定义之前在变量中定义所有这些对象。
但同样,我强烈建议不要使用leaderstats来保存数据。 Exploiters可以轻松更改数据并将值更改为高数字。