I've recently advertised a game of mine and after about 4 weeks it's stopped getting players. A huge problem is when the server had 8+ players, my datastore saving system would keep throttling and loosing player data although I really don't think I was saving/loading that much. I used this load function once when a player loads into the game and I use the save function every 120 seconds and when a player leaves. I even removed the autosave at one point and I still got some errors. I unfortunately didn't look into seeing if I was actually going over the limit when the game had players but I highly doubt I was using that many requests unless over like 10 players were joining and leaving within a minute.
My code, it's a lot, does anything look weird about it? Thanks
LoadData = function(plr, Coins, Level, EXP)
local function CheckSAVE()
local success, msg = pcall(function()
GetData = PlayersStats:GetAsync(plr.UserId)
end)
if success then
if GetData then
Coins.Value = GetData[1]
Level.Value = GetData[2]
EXP.Value = GetData[3]
else
Coins.Value = 0
Level.Value = 1
EXP.Value = 0
end
return true
else
return false
end
end
local a = CheckSAVE() wait()
if a == false then
pcall(function()
plr:FindFirstChild("SR").Value = false
end)
wait(10)
local b = CheckSAVE() wait()
if b == false then
wait(1)
warn("Error loading "..plr.UserId.." data") wait()
plr:Kick("There was an error loading data, please rejoin or try again later!")
elseif b == true then
pcall(function()
plr:FindFirstChild("SR").Value = true
end)
end
end
end
SaveData = function(plr)
local ls = plr:FindFirstChild("leaderstats")
local saveready = plr:FindFirstChild("SR")
if ls ~= nil and saveready ~= nil then
if saveready.Value == true then
local Coins = ls:FindFirstChild("Coins")
local Level = ls:FindFirstChild("Level")
local EXP = plr:FindFirstChild("EXP")
if Coins ~= nil and Level ~= nil and EXP ~= nil then
local tableofstats = {
Coins.Value,
Level.Value,
EXP.Value
}
local function AttemptSave()
local success, msg = pcall(function()
GetData = PlayersStats:GetAsync(plr.UserId)
end)
if success then
if GetData then
pcall(function()
PlayersStats:UpdateAsync(plr.UserId, function()
return tableofstats
end)
end)
else
pcall(function()
PlayersStats:SetAsync(plr.UserId, tableofstats)
end)
end
return true
else
return false
end
end
local savetest = AttemptSave()
if savetest == false then
wait(10)
local savetest2 = AttemptSave()
end
end
end
end
end
