Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

how can i make multie game leaderstats billboards?

Asked by 4 years ago

I want to make a billboard for leaders stats, but i want to make more then one, like one for coins and one for gold and so on......

no i have already a billboard ready and i did copy a script that was with it in the tutorial. but when i run it the billboard stays empty, not even my own name come on it.

so here is the code with out error outputs :

wait(15)

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("1593724860-CoinsLeaderboard")

--Get the data store with key "Leaderboard"



wait(10)

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 = ps:GetGamePointBalance(plr.UserId)--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)

                        if oldVal == nil or 0 then

                            local AValue = plr.leaderstats.Coins.Value + plr.Bank.BankCoins.Value

                            oldVal = AValue

                        end

                        --Set new value

                        return tonumber(w)

                    end)

                end)

            end

        end

    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 = 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(10)

end

I dont know what is wrong, And how can i say the point = coins or gold or what ever?

0
I did change some stuff and i putted now back to original but still not working, get no name or what ever User#27824 0 — 4y
0
lul 171 lines Psudar 882 — 4y

1 answer

Log in to vote
0
Answered by 4 years ago

Changed but still not working and this is how it should be in tutorial,

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 = ps:GetGamePointBalance(plr.UserId)--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
Ad

Answer this question