Will this warning be a problem for my leaderboards?

  1. What do i want to achieve?
    I want to make multiple leaderboards

  2. What is the issue?
    I am getting this warning:
    DataStore request was added to queue. If request queue fills, further requests will be dropped. Try sending fewer requests.Key = 1159156951

And idk if this willl affect my leaderboards also i finished the script.

This is my script if needed:

local sg = script.Parent --Surface GUI
local sample = script:WaitForChild("Sample") --Our Sample frame
local sf = sg:WaitForChild("ScrollingFrame") --The scrolling frame
local ui = sf:WaitForChild("UI") --The UI list layout

local dataStoreService = game:GetService("DataStoreService")
--The data store service
local dataStore = dataStoreService:GetOrderedDataStore("Leaderboard")
--Get the data store with key "Leaderboard"
wait()
while true do
	for i,plr in pairs(game.Players:GetChildren()) do--Loop through players
		if plr.UserId>0 then--Prevent errors
			local ps = game:GetService("PointsService")--PointsService
			local w = plr.leaderstats.OOFS.Value--Get point balance
			if w then
				pcall(function()
					--Wrap in a pcall so if Roblox is down, it won't error and break.
					dataStore:UpdateAsync(plr.UserId,function(oldVal)
						--Set new value
						return tonumber(w)
					end)
				end)
			end
		end
	end    
	
	function abbreviateNumber(n)
		local s = tostring(math.floor(n))
		return string.sub(s, 1, ((#s - 1) % 3) + 1) .. ({"", "K", "M", "B", "T", "QA", "QI", "SX", "SP", "OC", "NO", "DC", "UD", "DD", "TD", "QAD", "QID", "SXD", "SPD", "OCD", "NOD", "VG", "UVG"})[math.floor((#s - 1) / 3) + 1]
	end
	
	local smallestFirst = false--false = 2 before 1, true = 1 before 2
	local numberToShow = 100--Any number between 1-100, how many will be shown
	local minValue = 1--Any numbers lower than this will be excluded
	local maxValue = 10e30--(10^30), any numbers higher than this will be excluded
	local pages = dataStore:GetSortedAsync(smallestFirst, numberToShow, minValue, maxValue)
	--Get data
	local top = pages:GetCurrentPage()--Get the first page
	local data = {}--Store new data
	for a,b in ipairs(top) do--Loop through data
		local userid = b.key--User id
		local points = b.value--Points
		local username = "[Failed To Load]"--If it fails, we let them know
		local s,e = pcall(function()
			username = game.Players:GetNameFromUserIdAsync(userid)--Get username
		end)
		if not s then--Something went wrong
			warn("Error getting name for "..userid..". Error: "..e)
		end
		local image = game.Players:GetUserThumbnailAsync(userid, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size150x150)
		--Make a image of them
		table.insert(data,{username,points,image})--Put new data in new table
	end
	ui.Parent = script
	sf:ClearAllChildren()--Remove old frames
	ui.Parent = sf
	for number,d in pairs(data) do--Loop through our new data
		local name = d[1]
		local val = d[2]
		local image = d[3]
		local color = Color3.new(1,1,1)--Default color
		if number == 1 then
			color = Color3.new(1,1,0)--1st place color
		elseif number == 2 then
			color = Color3.new(0.9,0.9,0.9)--2nd place color
		elseif number == 3 then
			color = Color3.fromRGB(166, 112, 0)--3rd place color
		end
		local new = sample:Clone()--Make a clone of the sample frame
		new.Name = name--Set name for better recognition and debugging
		new.LayoutOrder = number--UIListLayout uses this to sort in the correct order
		new.Image.Image = image--Set the image
		new.Image.Place.Text = number--Set the place
		new.Image.Place.TextColor3 = color--Set the place color (Gold = 1st)
		new.PName.Text = name--Set the username
		new.Value.Text = tostring(abbreviateNumber(val))--Set the amount of points
		new.Value.TextColor3 = color--Set the place color (Gold = 1st)
		new.PName.TextColor3 = color--Set the place color (Gold = 1st)
		new.Parent = sf--Parent to scrolling frame
	end
	wait()
	sf.CanvasSize = UDim2.new(0,0,0,ui.AbsoluteContentSize.Y)
	--Give enough room for the frames to sit in
	wait(30)
end

Also the code is same for both leaderboards but instead of oofs the other one has Rebirths

The warning states you are sending requests too often, this can result in requests being dropped (as the warning states). More about the limits may be found here: Data Stores | Roblox Creator Documentation.

You are currently posting n (n = #players) requests every 30 seconds (which is 2n / 60 sec). Your budget is about 2n / 60 seconds, which means you are right on that limit.

Do you really need to update it every 30 seconds? Would it not be better to hook this to an event and only store those who have changed their stats?

How would i do that?

ffffffffffff

Actually, is your OOFs going to be constantly changing? In that case just slowing the save-interval down a bit should be fine, alternatively you could just save it when they leave (probably a better choice).

i would do that but this dose this mean that the player needs to rejoin the game to be able to be shown on the leaderboard?

And i also dont know how to do it

Oh, I get what you mean now. You could make the leaderboards update instantly on the server, but only fetch datastore values (as well as updating the data stores) every minute or so. Use Players | Roblox Creator Documentation if you want to detect when a player is leaving.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.