CCCPaste

Role leaderstats (Lobby and Main)

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)