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

Why won't GetOrderedDataStore fetch new datastore?

Asked by 5 years ago

So this is so weird, I change my datastore name since I decided to use different data for my scores. For some reason now I can't get an ordered list for my leaderboard.

The player loads the save data just fine and it displays on the in-game leaderboard but GetOrderedDataStore won't grab anything. If I change the db name to the old one the code works just fine.

I feel I am missing a step or procedure but can't figure it out.

serverscriptservice - script file

local DataStore = game:GetService("DataStoreService")
local GameDB = DataStore:GetOrderedDataStore("TowersDB_Beta") --Data Store
--local GameDB = DataStore:GetOrderedDataStore("RoomODS") --Data Store

local function Handler()
    local Success, Err = pcall(function() --server connection error handling
        local Data = GameDB:GetSortedAsync(false, 5) --get the data from datastore(not ascending, 10 results)
        local RoomPage = Data:GetCurrentPage() --get results we created
        ----->>>>>TODO<<<<<---change to a find command instead of a direct link, might need unique name
        local frameContainer = workspace.Leaderboard.SurfaceGui.Frame:GetChildren() --visual gui spaces for leaderboard names
print("leaderboard")
        for Rank, Data in ipairs(RoomPage) do --loop through player info
            local Name = Data.key --player name
            local Wins = Data.value --player score
            print(Name .. ":: " .. Wins)

            --write values to leaderboard gui
            frameContainer[Rank].Player.Text = Name
            frameContainer[Rank].Points.Text = Wins

        end
        --print("leaderboard updated...")
    end)
    if not Success then
        error(Err) --if connection wasn't made show error
    end
end

Handler() --calls to update leaderboard gui as well

serverscriptservice - script file 2 (not all the code)

local DataStore = game:GetService("DataStoreService")
local ds = DataStore:GetDataStore("TowersDB_Beta") --get data stored

game.Players.PlayerAdded:Connect(function(player) --when player is added
print("new player...")
    local leader = Instance.new("Folder", player) --create leadstat folder inside player
    leader.Name = "leaderstats" --folder name predefined and CASESENSITIVE

--------wins---------
    local playerWins = Instance.new("IntValue", leader) --create int holder inside leaderstats folder
    playerWins.Name = "Wins" --int value name (will appear on screen leaderboard)
    playerWins.Value = ds:GetAsync(player.UserId) or 0 --get stored score for player, if no score use 0

    print("player initialized...")

playerWins.Changed:Connect(function()  --when rooms int value is changed
        print("saving score..." .. playerWins.Value)
        ds:SetAsync(player.UserId, playerWins.Value) --update time
    end)
end)

In the first script if I switch the commented db it works fine.

Answer this question