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

Ordered Data Store Not Accepting Request When Saving Data? [SOLVED]

Asked by
LuaDLL 253 Moderation Voter
2 years ago
Edited 2 years ago

I'm making this hangout game and I'm currently working on a leaderboard for how much time people have that shows the top 3.

Heres a Image of what the leaderboard looks like, Gyazo Image

It doesn't even save the players data to the data store because of a http error.

Code:

local Model = workspace:WaitForChild("TOP_TIMES")
local First = Model:WaitForChild("First")
local Second = Model:WaitForChild("Second")
local Third = Model:WaitForChild("Third")
local First_Obj = {First:WaitForChild("PName"), First:WaitForChild("PTime")}
local Second_Obj = {Second:WaitForChild("PName"), Second:WaitForChild("PTime")}
local Third_Obj = {Third:WaitForChild("PName"), Third:WaitForChild("PTime")}

local Characters = Model:WaitForChild("Characters")
local First_Position = Characters:WaitForChild("First").PrimaryPart.Position
local Second_Position = Characters:WaitForChild("Second").PrimaryPart.Position
local Third_Position = Characters:WaitForChild("Third").PrimaryPart.Position

Characters:ClearAllChildren()

local Ordered_Data_Store = game:GetService("DataStoreService"):GetOrderedDataStore("ORDERED_TIME_DATA")
local Data_Key = "~~~"

local Players = game:GetService("Players")

function GET_TOP_THREE()
    print("GETTING TOP THREE")
    local Ascending = false
    local PageSize = 3
    local Pages = Ordered_Data_Store:GetSortedAsync(Ascending, PageSize)
    local Top_Three = Pages:GetCurrentPage()
    print("TOP THREE: ")
    for i,v in pairs(Top_Three) do
        print("I: "..i)
        print("V: "..v)
    end
    return Top_Three
end

function LOAD_TOP_THREE()
    print("LOADING TOP THREE")
    local TOP_THREE = GET_TOP_THREE()

    if #Characters:GetChildren() > 0 then
        Characters:ClearAllChildren()
    end

    for rank, data in pairs(TOP_THREE) do
        print("RANK: "..rank)
        print("DATA: "..data)
        local User_ID = data[1]
        local Player_Time = data[2]
        if rank == 1 then
            print("IS RANK 1")
            First_Obj[1].UI.TextLabel.Text = Players:GetNameFromUserIdAsync(User_ID)
            First_Obj[2].UI.TextLabel.Text = Player_Time
            -- LOAD CHARACTER IN
            local Humanoid_Desc = Players:GetHumanoidDescriptionFromUserId(User_ID)
            local Character_Model = Players:CreateHumanoidModelFromDescription(Humanoid_Desc, Enum.HumanoidRigType.R15)
            Character_Model:WaitForChild("Humanoid").DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None
            Character_Model:WaitForChild("Humanoid").MaxHealth = math.huge()
            for _,v in pairs(Character_Model:GetChildren()) do
                if v:IsA("BasePart") then
                    v.Anchored = true
                end
            end
            Character_Model.Parent = Characters
            Character_Model:SetPrimaryPartCFrame(First_Position)
        elseif rank == 2 then
            print("IS RANK 2")
            Second_Obj[1].UI.TextLabel.Text = Players:GetNameFromUserIdAsync(User_ID)
            Second_Obj[2].UI.TextLabel.Text = Player_Time
            -- LOAD CHARACTER IN
            local Humanoid_Desc = Players:GetHumanoidDescriptionFromUserId(User_ID)
            local Character_Model = Players:CreateHumanoidModelFromDescription(Humanoid_Desc, Enum.HumanoidRigType.R15)
            Character_Model:WaitForChild("Humanoid").DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None
            Character_Model:WaitForChild("Humanoid").MaxHealth = math.huge()
            for _,v in pairs(Character_Model:GetChildren()) do
                if v:IsA("BasePart") then
                    v.Anchored = true
                end
            end
            Character_Model.Parent = Characters
            Character_Model:SetPrimaryPartCFrame(Second_Position)
        elseif rank == 3 then
            print("IS RANK 3")
            Third_Obj[1].UI.TextLabel.Text = Players:GetNameFromUserIdAsync(User_ID)
            Third_Obj[2].UI.TextLabel.Text = Player_Time
            -- LOAD CHARACTER IN
            local Humanoid_Desc = Players:GetHumanoidDescriptionFromUserId(User_ID)
            local Character_Model = Players:CreateHumanoidModelFromDescription(Humanoid_Desc, Enum.HumanoidRigType.R15)
            Character_Model:WaitForChild("Humanoid").DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None
            Character_Model:WaitForChild("Humanoid").MaxHealth = math.huge()
            for _,v in pairs(Character_Model:GetChildren()) do
                if v:IsA("BasePart") then
                    v.Anchored = true
                end
            end
            Character_Model.Parent = Characters
            Character_Model:SetPrimaryPartCFrame(Third_Position)
        end
    end
end

Players.PlayerRemoving:Connect(function(Player)
    local leaderstats = Player:FindFirstChild("leaderstats")
    local Player_Time = leaderstats:FindFirstChild("Time")
    print("PLAYER TIME: "..Player_Time.Value)

    Ordered_Data_Store:SetAsync(Player.UserId, Player_Time.Value)
end)

Players.PlayerAdded:Connect(function(Player)
    local leaderstats = Player:WaitForChild("leaderstats")
    local Player_Time = leaderstats:WaitForChild("Time")
    print("PLAYER TIME: "..Player_Time.Value)

    Ordered_Data_Store:SetAsync(Player.UserId, Player_Time.Value)
end)

LOAD_TOP_THREE()

while wait(60) do
    LOAD_TOP_THREE()
end

Error: 502: API Services rejected request with error. HTTP 400 (Bad Request)

The error is from when it does SetAsync to save the data

And I don't know what the problem is with that.

Any help is appreciated :)

Answer this question