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

When I try to use points it's always 0, even though the value in the datastore is 4. Why?

Asked by 5 years ago

When I try to use points it's always 0, even though the value in the datastore is 4.

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
print("oof "..game.DataStoreService:GetOrderedDataStore("TotalCoins"):GetSortedAsync(false,1):GetCurrentPage()[1].value)
local dataStoreService = game:GetService("DataStoreService")
--The data store service
local dataStore = dataStoreService:GetOrderedDataStore("TotalCoins")
--Get the data store with key "Leaderboard"
print(dataStore.className)
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)
--                      --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)
    --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
        print(b.value)
        print(b.key .. " is ranked #" .. a .. " with " .. 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
        print(username .. points .. image)
    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
        local strokecolor = Color3.fromRGB(150,150,150)
        if number == 1 then
            color = Color3.new(1,1,0)--1st place color
            strokecolor = Color3.fromRGB(150,150,0)
        elseif number == 2 then
            color = Color3.new(0.9,0.9,0.9)--2nd place color
            strokecolor = Color3.new(0.45,0.45,0.45)
        elseif number == 3 then
            color = Color3.fromRGB(166, 112, 0)--3rd place color
            strokecolor = Color3.fromRGB(83,56,0)
        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.Image.Place.TextStrokeColor3 = strokecolor
        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.Value.TextStrokeColor3 = strokecolor
        new.PName.TextColor3 = color--Set the place color (Gold = 1st)
        new.PName.TextStrokeColor3 = strokecolor
        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

Answer this question