Hello Devs, I am making a Donation GUI with the leaderboard and it is working fine but there is a small mistake in it that is, the buttons are visible but the leaderboard isn't visible on the client-side but it is visible on the server-side. I know it can be fixed with a remote event but I am still unable to do that. Looking for your help.
-- Server Script Service--
local donateAmounts = {500, 1000, 2000, 5000, 10000}
local ids = {1210650430, 1210650616, 1210650734, 1210650846, 1210650846}
local mps = game:GetService("MarketplaceService")
local stg = game:GetService("StarterGui")
local dss = game:GetService("DataStoreService")
local ods = dss:GetOrderedDataStore("Donators")
for i, amount in pairs(donateAmounts) do
local donateButton = script:WaitForChild("DonateButton"):Clone()
donateButton.Text = amount .. " Robux"
donateButton.Parent = stg:WaitForChild("DonateGUI").MainFrame.DonateFrame.DonateList
end
game.ReplicatedStorage.DonateRE.OnServerEvent:Connect(function(plr, button)
local amount = string.gsub(button.Text, " Robux", "")
local id = ids[table.find(donateAmounts, tonumber(amount))]
mps:PromptProductPurchase(plr, id)
end)
mps.ProcessReceipt = function(purchaseInfo)
local amount = mps:GetProductInfo(purchaseInfo.ProductId, Enum.InfoType.Product).PriceInRobux
local success, err = pcall(function()
local totalDonated = ods:GetAsync(purchaseInfo.PlayerId) or 0
ods:SetAsync(purchaseInfo.PlayerId, totalDonated + amount)
end)
return success and Enum.ProductPurchaseDecision.PurchaseGranted or Enum.ProductPurchaseDecision.NotProcessedYet
end
while task.wait(5) do
for i, child in pairs(stg:WaitForChild("DonateGUI").MainFrame.LeaderboardHolder.LeaderboardList:GetChildren()) do
if child:IsA("Frame") then
child:Destroy()
print("DELETED CHILD THAT IS A FRAME: " .. tostring(child.Name))
end
end
local pages = ods:GetSortedAsync(false, 100)
local top = pages:GetCurrentPage()
for rank, data in ipairs(top) do
local username = game.Players:GetNameFromUserIdAsync(data.key)
local donated = data.value
local leaderboardFrame = script:WaitForChild("LeaderboardFrame"):Clone()
leaderboardFrame.Rank.Text = "#" .. rank
leaderboardFrame.Username.Text = username
leaderboardFrame.Amount.Text = donated
leaderboardFrame.Parent = stg.DonateGUI.MainFrame.LeaderboardHolder.LeaderboardList
if leaderboardFrame == nil then
warn("LEADERBOARD FRAME IS NIL")
end
print(tostring(donated))
print(tostring(username))
print(tostring(rank))
end
end
-- StarterGUI button Handler--
local donateList = script.Parent.MainFrame.DonateFrame.DonateList
function handleDonateButton(button)
button.MouseButton1Click:Connect(function()
game.ReplicatedStorage.DonateRE:FireServer(button)
end)
end
for i, child in pairs(donateList:GetChildren()) do
if child:IsA("TextButton") then
handleDonateButton(child)
end
end
donateList.ChildAdded:Connect(handleDonateButton)
Here is the place game you can check it and please fix it https://www.roblox.com/games/8802804169/Donation-GUI-V2 Copy and paste link in another tab.

4 comments
Can you please instead of giving us the game and pretty much asking us to fix it for you, quite possibly could you just show us the code, also the directories and what goes wrong?
Yes I agree with you but the code is big and also I tried fixing it many times and I know I have to use remote event for this but I am not unable to code it in right way.
Yeah but can you please do so anyways? if you need more help then add me on discord: Ante#6969
Username is invalid but I seriously need help :( I am stuck at final moment.