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

Why isn't the GUI Value saving part of my datastore working [NOT FIXED!] [EASY]?

Asked by
Vid_eo 126
5 years ago
Edited 5 years ago

I have a DataStore that saves money and values that represent GUIs being enabled. When I manually changed the Values in ReplicatedStorage (which are then duplicated to a folder in the Client), it saves/loads, but when I don't, it doesn't.

SCRIPT:

local DataStoreService = game:GetService("DataStoreService")
local ds = DataStoreService:GetDataStore("danceSave")
local ds2 = DataStoreService:GetDataStore("MoneySave")

game:GetService("Players").PlayerAdded:Connect(function(Player) --When the player joins the game, load value.

    local Stats = Instance.new('Folder')
    Stats.Name = "leaderstats"

    local Money = Instance.new('NumberValue', Stats)
    Money.Name = "Money"

    Stats.Parent = Player

    local plrDanceFolder = Instance.new('Folder')
    plrDanceFolder.Name = "danceFolder"

    plrDanceFolder.Parent = Player

    for i,v in pairs (game.ReplicatedStorage.danceValues:GetChildren()) do
        if v:IsA("BoolValue") then
            v:Clone().Parent = plrDanceFolder
        end
    end


    --load data
    local moneyData;
    local dancesData;

    local CanSave = Instance.new('BoolValue', Player)

    CanSave.Name = "CanSaveData"
    CanSave.Value = true

    local DataFetchSuccess, ErrorMessage = pcall(function()
        moneyData = ds2:GetAsync(tostring(Player.UserId))
        dancesData = ds:GetAsync(tostring(Player.UserId))
    end)
    if DataFetchSuccess then 
        if moneyData ~= nil then --This could be where the problem is
            print("Money save found")
            Money.Value = moneyData
        else
        print("No money save found.")
            Money.Value = 0 -- Where money value is changed to 0
        end
        --print(Money.Value)
        print("k")
        if dancesData ~= nil then
            print("k")
            print(dancesData)
            for i,v in pairs(dancesData) do
                local Dance = plrDanceFolder:FindFirstChild(v)
                if dancesData then
                    Dance.Value = true
                    print("lel")
                    game.ReplicatedStorage:WaitForChild("Remotes").loadAnimEvent:FireClient(Player)
                end         
            end
        end
    else
        Player.CanSaveData.Value = false
        Player:Kick("Your data failed to load! Please rejoin.")
    end
end)

game:GetService("Players").PlayerRemoving:Connect(function(Player) -- When the player leaves the game, data must save.
    if Player.CanSaveData.Value == false then return end --There could also be a problem with saving the money

    local moneyData = Player.leaderstats.Money.Value
    local dancesToSave = {}

    print(moneyData)
    print(dancesToSave)

    for i,v in pairs (Player.danceFolder:GetChildren()) do
        if v:IsA("BoolValue") and v.Value == true then
            table.insert(dancesToSave, v.Name)
            print(v.Name)
        end
    end

    local DataWriteSuccess, ErrorMessage = pcall(function()
        print("Saving "..Player.Name.."s stats")
        ds:SetAsync(tostring(Player.UserId), dancesToSave)
        print("ok0")
        ds2:SetAsync(tostring(Player.UserId), moneyData)
        print("ok")
    end)

    if not DataWriteSuccess then
        local Retry_Count = 0

        while Retry_Count < 6 do
            wait(60)
            local Succeed, Error = pcall(function()
        print("Attempting to save "..Player.Name.."'s stats.")
                ds:SetAsync(tostring(Player.UserId), dancesToSave)
                ds2:SetAsync(tostring(Player.UserId), moneyData)
            end)
            if Succeed then print("Saved "..Player.Name.."'s stats") break end
            Retry_Count = Retry_Count + 1
        end
    end
end)


Local Script (RemoteEvent):

local loadAnimEvent = game:GetService("ReplicatedStorage"):WaitForChild("Remotes"):WaitForChild("loadAnimEvent")

loadAnimEvent.OnClientEvent:connect(function(plr)
    print("dances loadin'")
    local plr = game.Players.LocalPlayer
    for i,e in pairs (plr.danceFolder:GetChildren()) do
        if e:IsA("BoolValue") and e.Value == true then
            print(e)
            for i,v in pairs (plr.PlayerGui.Dances:GetChildren()) do
                print("yeet")
                if v:IsA("TextButton") and v.Name == e.Name then
                    e.Value = true
                    v:Clone().Parent = plr.PlayerGui.dancesGui.dancesFrame.danceFrame.danceScrolling
                end
            end
        end
    end
end)

I feel like the error is possibly coming from the values being replicated from ReplicatedStorage -- I don't think so, though.

0
if you think we gonna go through 124 lines of ur script then u got us all the way f___ed up User#1007 6 — 5y

Answer this question