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

DataStores and Changing (So Much Confusion!) How do I do this?

Asked by 8 years ago

Hello, everyone. I am having a lot of trouble. So, I have a working DataStore with preset Data in it.. so, I am trying to make a PlayerList, Chat GUI, etc. based on the saved Data that the player has, such as the RankId (their In-Game Chat/PlayerList logo). But, when I try things ingame to make the logo change based on their Experience, it doesn't work out. Here is my code.. I don't know what to do. D;

function onPlayerEntered(newPlayer)
        --Clone Data--
        local vs = script:WaitForChild("Data"):clone()
        vs.Parent = newPlayer
        --Setup Intial Data--
        local Stats = vs:GetChildren()
        local S1 = {}
        for i=1,#Stats do
            local n = Stats[i].Name
            S1[n] = Stats[i].Value
        end
        --Get Data--
        if newPlayer.Name ~= "Player" then
            local DataStore = game:GetService("DataStoreService"):GetDataStore(newPlayer.userId)
            if DataStore:GetAsync("Stats") == nil then
                DataStore:SetAsync("Stats", S1)
            end
            S1 = DataStore:GetAsync("Stats")
        end
        --Safely Load Data--
        local vv = vs:GetChildren()
        for i=1,#vv do
            local n = vv[i].Name
            --print(S1[n])
            if S1[n] ~= nil then
                vv[i].Value = S1[n]
            end
        end
end

game.Players.PlayerAdded:connect(onPlayerEntered)

for _,player in pairs(game.Players:GetChildren()) do
    onPlayerEntered(player)
end

game.Players.PlayerRemoving:connect(function(p)
    --Save Data--
    local DataStore = game:GetService("DataStoreService"):GetDataStore(p.userId)
    local stats = p.Data:GetChildren()
    local s1 = {}
    for i=1,#stats do
        local n = stats[i].Name
        s1[n] = stats[i].Value
    end
    DataStore:SetAsync("Stats",s1)
    --print("Saved "..p.Name)
end)

That is just saving the Data. I tried adding stuff in there to get my goal, but failed. Here is another script I made to try configuring the Data:

function onPlayerEntered(newPlayer)
    local vs = script.Parent.Parent.Parent:WaitForChild("Data")
            if vs.Data.Inormation.Experience.Value >= 0 and vs.Data.Inormation.Experience.Value < 500 then
                vs.Data.Information.Level.Value = 0
                vs.Data.Information.RankName.Value = "Serf"
                vs.Data.Information.RankId.Value = 336513453
            end
end

game.Players.PlayerAdded:connect(onPlayerEntered)

for _,player in pairs(game.Players:GetChildren()) do
    onPlayerEntered(player)
end

Please help. I know what I am saying is confusing.. but I don't know how to explain it.

Answer this question