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

Why is my datastore2 function throttling even when it doesn't in console?

Asked by 3 years ago

The console gives me a throttle message and tells me to call it less. This functions managing these datastores have not been changed in a while and they've always worked but for some reason recently, it stopped working but only in my scripts. When I try to spam call it in the console like this it works perfectly fine and doesn't throttle

require(game.ServerScriptService._v2_GameManager._v2_PlayerManager._v2_PlayerDataManager)
:Get(game.Players.second_120, {"Wins", "WeeklyWins", "WinStreak", "Kills", "RoundsPlayed", "Coins", "Diamonds", "Level", "Experience", "GunSkins", "NameTags", "GunTypes", "Daily Reset"})

However, for some reason when I call my datastore functions like these two it throttles:

function PlayerDataManager:Get(player, statsRequested, statsRequestedDefaultOverrides)
    print("Getting datastores")
    print(statsRequested)

    local statValues = {} -- table to be returned

    for i, statRequestedName in ipairs(statsRequested) do
            -- see if it is a valid stat
            if table.find(validStatsNames, statRequestedName) == nil then
                debug.traceback("Invalid stat requested. Requested for: " .. statRequestedName .. ", which is not a valid stat. Valid stats are: " .. table.concat(validStatsNames) .. ". Traceback: ")
            end

            -- Get stat object
            local statRequested = validStats[table.find(validStatsNames, statRequestedName)]

        -- Do stuff with datastore
        print("start ds2 get")
            local RequestedDataStore = DataStore2(statRequested.Name, player)
        if statsRequestedDefaultOverrides == nil then
                table.insert(statValues, i, RequestedDataStore:Get(statRequested.Default))
            else
                table.insert(statValues, i, RequestedDataStore:Get(statsRequestedDefaultOverrides[i]))
        end
        print("end ds2 get")
    end

    print("Got datastores")

    return statValues
end

function PlayerDataManager:Increment(player, statsToIncrement, manualUpdate)
    print("Increment datastore")
    local statValues = {} -- table to be returned

    for i, statToIncrement in ipairs(statsToIncrement) do
            -- see if it is a valid stat
            if table.find(validStatsNames, statToIncrement.Name) == nil then
                debug.traceback("Invalid stat. Requested to change: " .. statToIncrement.Name .. ", which is not a valid stat. Valid stats are: " .. table.concat(validStatsNames) .. ". Traceback: ")
        end


            -- Get stat object
        local statRequested = validStats[table.find(validStatsNames, statToIncrement.Name)]

        print(statRequested)

            -- Do stuff with datastore
            local RequestedDataStore = DataStore2(statRequested.Name, player)
            RequestedDataStore:Increment(statToIncrement.Increment, statRequested.Default)

            -- Post-inc functions
            --table.insert(statValues, i, {Name=statRequested.Name, Value=(RequestedDataStore:Get(statRequested.Default))})

            print("incremented " .. statToIncrement.Name .. " by " .. statToIncrement.Increment)
            if table.find(replicatedStatsNames, statToIncrement.Name) ~= nil then
                ServerStorage.Players[player.Name][statToIncrement.Name].Value = RequestedDataStore:Get(statRequested.Default)
            end
    end

    PostDataUpdate(player, statValues, manualUpdate)

    print("Increments finished")

    return statValues -- return in case we need the new value of the data
end

For example, the console tells me it's throttling when I call the get function from here

    -- Get all player data
    local playerData = PlayerDataManager:Get(player, {"Coins", "Diamonds", "Level", "Experience", "GunSkins", "NameTags", "GunTypes", "Daily Reset"})
    print(playerData)

    -- Load currency to gui
    local playerGui = player.PlayerGui:WaitForChild("Lobby GUI")
    -- Coins
    ServerStorage.Players[player.Name].Coins.Value = playerData[1]
    playerGui["CurrencyUI"]["Coin UI"]["Coin Value"].Text = playerData[1]
    playerGui["CurrencyUI"]["Coin UI"]["Coin Value Background"].Text = playerData[1]
    -- Diamonds
    ServerStorage.Players[player.Name].Diamonds.Value = playerData[2]
    playerGui["CurrencyUI"]["Diamond UI"]["Diamond Value"].Text = playerData[2]
    playerGui["CurrencyUI"]["Diamond UI"]["Diamond Value Background"].Text = playerData[2]


    --Load Experience
    game.ReplicatedStorage.v2.GUIEvents.GetLevelFromExperience.OnServerInvoke = LevelTable.GetLevel
    game.ReplicatedStorage.v2.GUIEvents.GetRewardFromLevel.OnServerInvoke = LevelTable.CheckForReward

    ReplicatedStorage.v2.GUIEvents.UpdateVisuals:FireClient(player, {{Name="Experience", Value=playerData[4]}})

    -- Load inventory
    -- stuff
    AccessoryPurchaseManager:Load(player, {playerData[5], playerData[6], playerData[7]})

Answer this question