Players able to get more than 1 win?

The title basically says the problem, so sometimes players are able to get more than 1 win, even though I added a check to see if they already won.
how_momentum

I have already put in a check to see if they already won, but it sometimes doesn’t work for some reason. Here is the script responsible for the wins and data:

local datastore = require(game.ServerScriptService.DataStore2)
local dv = 0
game.Players.PlayerAdded:Connect(function(plr)
	local pds = datastore("towersval1",plr)
	local pdstogs = datastore("TogsVal1",plr)
	local pdstoof = datastore("ToofVal1",plr)
	
	local leaderstats = Instance.new("Folder",plr)
	leaderstats.Name = "leaderstats"

	local Towers = Instance.new("IntValue",leaderstats)
	Towers.Name = "Towers"

	local ToGS = Instance.new("IntValue",plr)
	ToGS.Name = "ToGS"

	local ToOF = Instance.new("IntValue",plr)
	ToOF.Name = "ToOF"
	
	local function PU(UV)
		Towers.Value = pds:Get(UV)
	end
	PU(dv)
	pds:OnUpdate(PU)
	local function PUToGS(UVToGS)
		ToGS.Value = pdstogs:Get(UVToGS)
	end
	PUToGS(dv)
	pdstogs:OnUpdate(PUToGS)
	local function PUToOF(UVToOF)
		ToOF.Value = pdstoof:Get(UVToOF)
	end
	PUToOF(dv)
	pdstoof:OnUpdate(PUToOF)
end)

workspace.ToGSWinpad.Touched:Connect(function(hit)
	local player = game.Players:GetPlayerFromCharacter(hit.Parent)
	local db = false
	local tele = game.Workspace.WinTele
	local pdstogs = datastore("TogsVal1",player)
	local pds = datastore("towersval1",player)
	if not db then
		db = true
		if player.ToGS.Value == 1 then
			print("imagine")
			player:LoadCharacter()
		else
			pdstogs:Set(1,dv)
			pds:Increment(1,dv)
			player:LoadCharacter()
		end
		wait(1)
		db = false
	end
end)
workspace.Towers.ToOF.ToOFWinpad.Touched:Connect(function(hit)
	local player = game.Players:GetPlayerFromCharacter(hit.Parent)
	local db = false
	local tele = game.Workspace.WinTele
	local pdstoof = datastore("ToofVal1",player)
	local pds = datastore("towersval1",player)
	if not db then
		db = true
		if player.ToOF.Value == 1 then
			print("imagine")
			player:LoadCharacter()
		else
			pdstoof:Set(1,dv)
			pds:Increment(1,dv)
			player:LoadCharacter()
		end
		wait(1)
		db = false
	end
end)