Well basically I want to optimize the following script so that the following warn does not come out “The data store request was added to the queue. If the request queue fills up, more requests will be dropped.” This warning is sent to me when I finish playing in the studio, but I really don’t know how to prevent it from coming out.
local Players = game:GetService("Players")
local DataStoreService = game:GetService("DataStoreService")
local SaveDataStore = DataStoreService:GetDataStore("SaveData")
local function SavePlayerData(player)
local success, errormsg = pcall(function()
wait(1)
local SaveData = {}
for i, Folder in pairs(player.NivelAndExp:GetChildren()) do
SaveData[Folder.Name] = Folder.Value
end
SaveDataStore:SetAsync(player.UserId, SaveData)
end)
if not success then
return errormsg
end
end
Players.PlayerAdded:Connect(function(player)
local Folder = Instance.new("Folder")
Folder.Name = "NivelAndExp"
Folder.Parent = player
local level = Instance.new("IntValue")
level.Name = "Nivel"
level.Value = 0
level.Parent = Folder
local experience = Instance.new("IntValue")
experience.Name = "Total XP"
experience.Value = 0
experience.Parent = Folder
local Data = SaveDataStore:GetAsync(player.UserId)
if Data then
for i, Folder in pairs(Folder:GetChildren()) do
Folder.Value = Data[Folder.Name]
end
else
print(player.Name .. " No tiene datos.")
end
local expToLevelUp
local expForPreviousLevel = 0
while wait(1) do
local PlayerGui = player:FindFirstChild("PlayerGui")
if PlayerGui then
local MenuDeMapa = PlayerGui:WaitForChild("MenuDeMapa")
if level.Value < 1 then
expToLevelUp = 100
else
expToLevelUp = math.floor(level.Value ^ 1.3) * 200 + math.floor(level.Value ^ 4)
end
if experience.Value >= expToLevelUp then
level.Value = level.Value + 1
end
expForPreviousLevel = math.floor((level.Value - 1) ^ 1.3) * 200 + math.floor((level.Value - 1) ^ 4)
local expDifference = expToLevelUp - expForPreviousLevel
local expDifference2 = experience.Value - expForPreviousLevel
MenuDeMapa.Nivel.Bar:TweenSize(UDim2.new(MenuDeMapa.Nivel.BarBackground.Size.X.Scale * (expDifference2 / expDifference), 0, MenuDeMapa.Nivel.BarBackground.Size.Y.Scale, 0), Enum.EasingDirection.InOut, Enum.EasingStyle.Quint, 0.001)
MenuDeMapa.Nivel.Experience.Text = expDifference2 .. "/" .. expDifference
MenuDeMapa.Nivel.Level.Text = "Nivel: " .. level.Value
end
end
end)
Players.PlayerRemoving:Connect(function(player)
local errormsg = SavePlayerData(player)
if errormsg then
warn(errormsg)
end
end)
game:BindToClose(function()
for i, player in pairs(Players:GetPlayers()) do
local errormsg = SavePlayerData(player)
if errormsg then
warn(errormsg)
end
end
wait(1)
end)