Ok so I have a serverScriptService script called "Data" and its meant to load your data right? heres the first version of it Version 1
local DataStore = game:GetService("DataStoreService"):GetDataStore("HahaisdeadSave39") local replicatedStorage = game:GetService("ReplicatedStorage") local saveRemote = replicatedStorage:WaitForChild("Save") --creating data game.Players.PlayerAdded:Connect(function(player) wait() local SpinSystem = player.PlayerGui:WaitForChild("SpinSystem") local folder = Instance.new("Folder", player) folder.Name = "Data" local hasgame = Instance.new("BoolValue", folder) hasgame.Name = "HasGame" local hair = Instance.new("StringValue", folder) hair.Name = "Hair" local outfit = Instance.new("StringValue", folder) outfit.Name = "Outfit" local accessory = Instance.new("StringValue", folder) accessory.Name = "Accessory" local Gender = Instance.new("StringValue", folder) Gender.Name = "Gender" local blood = Instance.new("StringValue", folder) blood.Name = "Blood" local spins = Instance.new("IntValue", folder) spins.Name = "Spins" --visibiliy of spin button variable ------------------------------------------------------------------------------------------------------------------------SAME HERE local success, errormsg = pcall(function() local getData = DataStore:GetAsync(player.UserId) for i, v in pairs(getData) do if i == 1 then hasgame.Value = getData[i] elseif i == 2 then hair.Value = getData[i] elseif i == 3 then outfit.Value = getData[i] elseif i == 4 then accessory.Value = getData[i] elseif i == 5 then blood.Value = getData[i] elseif i == 6 then spins.Value = getData[i] end end end) ----------------------------------------------OR --local success, errormsg = pcall(function() --return DataStore:GetAsync(player.UserId) --end) ---------------------------------------------------------------------------------------------- if success then print("Successfully loaded "..player.Name.."'s data!") elseif not success then -- FIRST TIME JOINING -- hasgame.Value = false print("hasgame has been changed to false") hair.Value = "Men Hair" print("hair value has been changed to men hair") outfit.Value = "Luffy's outfit" print("outfit has been changed to luffys outfit") accessory.Value = "Shades" print("accessory has been changed to shades") Gender.Value = "Male" print("gender has been changed to none") blood.Value = "Burgundy" print("blood has been set to burgundy") spins.Value = 8 error("Something went wrong while loading the data of "..player.Name..": "..errormsg) end end) saveRemote.OnServerEvent:Connect(function(player, val) DataStore:SetAsync(player.UserId, val) print("Successfully saved "..player.Name.."'s data!") end)
Now this makes the GUI work perfectly fine except it doesnt load the data properly and therefore the data doesnt stay
my friend suggested that this part here was bad
local success, errormsg = pcall(function() local getData = DataStore:GetAsync(player.UserId) for i, v in pairs(getData) do if i == 1 then hasgame.Value = getData[i] elseif i == 2 then hair.Value = getData[i] elseif i == 3 then outfit.Value = getData[i] elseif i == 4 then accessory.Value = getData[i] elseif i == 5 then blood.Value = getData[i] elseif i == 6 then spins.Value = getData[i] end end end)
so instead i was given this which did solve the problem and got rid of the error
local DataStore = game:GetService("DataStoreService"):GetDataStore("HahaisdeadSave39") local replicatedStorage = game:GetService("ReplicatedStorage") local saveRemote = replicatedStorage:WaitForChild("Save") --creating data game.Players.PlayerAdded:Connect(function(player) wait() local SpinSystem = player.PlayerGui:WaitForChild("SpinSystem") local folder = Instance.new("Folder", player) folder.Name = "Data" local hasgame = Instance.new("BoolValue", folder) hasgame.Name = "HasGame" local hair = Instance.new("StringValue", folder) hair.Name = "Hair" local outfit = Instance.new("StringValue", folder) outfit.Name = "Outfit" local accessory = Instance.new("StringValue", folder) accessory.Name = "Accessory" local Gender = Instance.new("StringValue", folder) Gender.Name = "Gender" local blood = Instance.new("StringValue", folder) blood.Name = "Blood" local spins = Instance.new("IntValue", folder) spins.Name = "Spins" --visibiliy of spin button variable ------------------------------------------------------------------------------------------------------------------------SAME HERE ----------------------------------------------OR local success, errormsg = pcall(function() --return DataStore:GetAsync(player.UserId) end) ---------------------------------------------------------------------------------------------- if success then print("Successfully loaded "..player.Name.."'s data!") elseif not success then -- FIRST TIME JOINING -- hasgame.Value = false print("hasgame has been changed to false") hair.Value = "Men Hair" print("hair value has been changed to men hair") outfit.Value = "Luffy's outfit" print("outfit has been changed to luffys outfit") accessory.Value = "Shades" print("accessory has been changed to shades") Gender.Value = "Male" print("gender has been changed to none") blood.Value = "Burgundy" print("blood has been set to burgundy") spins.Value = 8 error("Something went wrong while loading the data of "..player.Name..": "..errormsg) end end) saveRemote.OnServerEvent:Connect(function(player, val) DataStore:SetAsync(player.UserId, val) print("Successfully saved "..player.Name.."'s data!") end)
its this part right here that replaces the other part
local success, errormsg = pcall(function() --return DataStore:GetAsync(player.UserId) end)
This is version 2 now yeah it gets rid of the error but it doesnt make loading the data possible and since my GUI relies on data it doesnt work properly
I really dont know what other alternatives I can do
I wanna stick with version 1 because it actually makes the GUI work and load up the save