My datastore for my skin colors that I want to be changed throughout a GUI seems to be working, but it has a few issues. One issue is that when the Finish button is clicked in the GUI, it fires a RemoteEvent serverside, and in that script on the server event, it changes a string value's value in the player, which is the player's skin color, but the DataStore doesn't seem to recognize or doesn't seem to be updating.
My datastore script:
local DataStore = game:GetService("DataStoreService"):GetDataStore("CharacterGUI") local function saveSkin(plr) local key = "plr-"..plr.UserId local folder = Instance.new("Folder") folder.Parent = plr folder.Name = "SkinData" local skinc = Instance.new("StringValue") skinc.Parent = folder skinc.Name = "SkinColor" local CharDataFunc = pcall(function() CharData = DataStore:GetAsync(key) end) if CharData then skinc.Value = CharData[1] print("Data found") print(skinc.Value) for i,v in pairs (CharData) do print(v) end local skincolor = CharData[1] for i, v in pairs (CharData) do local char = plr.Character for b, c in pairs (char:GetChildren()) do if c.ClassName == "Part" then print("Color changing") c.BrickColor = BrickColor.new(CharData[1]) print(c.BrickColor) end end end elseif not CharData then local skincolors = {"Brown","Light orange"} skinc.Value = skincolors[1] DataStore:SetAsync(key,skincolors) print(skinc.Value) print("Data not existant") end end game.Players.PlayerAdded:Connect(function(plr) saveSkin(plr) local key = "plr-"..plr.UserId plr.SkinData.SkinColor.Changed:Connect(function() DataStore:GetAsync(key) print(DataStore:GetAsync(key)) end) local char = plr.Character local plrinplrs = game.Players:FindFirstChild(plr.Name) if plrinplrs ~= nil then game.Players[plr.Name].CanLoadCharacterAppearance = false game.Players[plr.Name]:ClearCharacterAppearance() end plr.Character.Humanoid.Died:Connect(function() plr:LoadCharacter() local char = plr.Character local skindata = DataStore:GetAsync(key) for i, v in pairs (char:GetChildren()) do if v.ClassName == "Part" then print("Color changing while dead") v.BrickColor = BrickColor.new(skindata[1]) print(v.BrickColor) end end end) end)
My script that occurs when the Finish button is clicked:
local DataStore = game:GetService("DataStoreService"):GetDataStore("CharacterGUI") script.Parent.OnServerEvent:Connect(function(plr,skincolorval) local skinc = plr.SkinData.SkinColor skinc.Value = skincolorval local key = "plr-"..plr.UserId DataStore:SetAsync(key,{skinc.Value}) DataStore:GetAsync(key) local dg = DataStore:GetAsync(key) for d, a in pairs (dg) do if d == 1 then print("1") print(a) end for k, c in pairs (plr.Character:GetChildren()) do if c:IsA("BasePart") then c.BrickColor = BrickColor.new(dg[1]) print("finish button color") print(c.BrickColor) end end end end)