local TeleportService = game:GetService("TeleportService") local SaveRoles = game:GetService("DataStoreService"):GetDataStore("Role") game.Players.PlayerAdded:Connect(function(player) local PreviousData = SaveRoles:GetAsync(player.UserId) local Role if PreviousData ~= nil then Role = PreviousData else Role = script.Role.Value SaveRoles:SetAsync(player.UserId, Role) end local RoleValue = Instance.new("StringValue", player) RoleValue.Name = "Role" RoleValue.Value = Role player:WaitForChild("Role"):GetPropertyChangedSignal("Value"):Connect(function() player.Role.Value = player.Role.Value end) end) game:BindToClose(function() for i,player in pairs(game.Players:GetPlayers()) do local value = player.Role.Value SaveRoles:SetAsync(player.UserId, value) print("Saved data for "..player.Name) end end) game.Players.PlayerRemoving:Connect(function(player) local value = player.Role.Value if value ~= nil then print("Found data to save for "..player.Name.."!") SaveRoles:SetAsync(player.UserId, value) print("Saved data for "..player.Name) else print("Did not manage to find data to save for "..player.Name.."!") end end)