CCCPaste

My New Leaderstats Lobby

local TeleportService = game:GetService("TeleportService")
local SaveCurrency = game:GetService("DataStoreService"):GetDataStore("Rounds")
local SaveCurrency2 = game:GetService("DataStoreService"):GetDataStore("Wins")
local SavesCurrency3 = game:GetService("DataStoreService"):GetDataStore("Coins")
local SavesCurrency4 = game:GetService("DataStoreService"):GetDataStore("Lives")
local SaveRole = game:GetService("DataStoreService"):GetDataStore("Role")
local SaveTags = game:GetService("DataStoreService"):GetDataStore("Tag")

game.Players.PlayerAdded:Connect(function(player)
	local Folder = Instance.new("Folder",player)
	Folder.Name = "leaderstats"

	local Currency = Instance.new("NumberValue",Folder)
	Currency.Name = "Rounds"
	Currency.Value = SaveCurrency:GetAsync(player.UserId) or 0

	local Currency2 = Instance.new("NumberValue",Folder)
	Currency2.Name = "Wins"
	Currency2.Value = SaveCurrency2:GetAsync(player.UserId) or 0
	
	local Currency3 = Instance.new("NumberValue",player)
	Currency3.Name = "Coins"
	Currency3.Value = SavesCurrency3:GetAsync(player.UserId) or 0
	
	local Currency4 = Instance.new("NumberValue",player)
	Currency4.Name = "Lives"
	Currency4.Value = SavesCurrency4:GetAsync(player.UserId) or 0

end)

game.Players.PlayerRemoving:Connect(function(player)
	SaveCurrency:SetAsync(player.UserId,player.leaderstats.Rounds.Value)
	SaveCurrency2:SetAsync(player.UserId,player.leaderstats.Wins.Value)
	SavesCurrency3:SetAsync(player.UserId,player.Coins.Value)
	SavesCurrency4:SetAsync(player.UserId,player.Lives.Value)
end)

game.Players.PlayerAdded:Connect(function(player)

	local PreviousData = SaveTags:GetAsync(player.UserId)
	local Tag
	local previousData2 = SaveRole:GetAsync(player.UserId)
	local Role

	if PreviousData ~= nil then
		Tag = PreviousData
	else
		Tag = player.Tag.Value
	end
	
	if previousData2 ~= nil then
		Role = previousData2
	else
		Role = player.Role.Value
	end

	local TagValue = Instance.new("StringValue", player)
	TagValue.Name = "Tag"
	TagValue.Value = Tag
	
	local RoleValue = Instance.new("StringValue", player)
	RoleValue.Name = "Role"
	RoleValue.Value = Role

end)

game:BindToClose(function()
	for i,player in pairs(game.Players:GetPlayers()) do
		local value = player.Tag.Value
		SaveTags:SetAsync(player.UserId, value)
		local value2 = player.Role.Value
		SaveRole:SetAsync(player.UserId, value2)
		print("Saved data for "..player.Name)
	end
end)

game.Players.PlayerRemoving:Connect(function(player)
	local value = player.Tag.Value
	local value2 = player.Role.Value
	
	if value ~= nil then
		print("Found data to save for "..player.Name.."!")
		SaveTags:SetAsync(player.UserId, value)
		SaveRole:SetAsync(player.UserId, value2)
		print("Saved data for "..player.Name)
	else
		print("Did not manage to find data to save for "..player.Name.."!")
	end
end)