NumberValue changing incorrectly

Hello! So, I’ve been working on my project and everything was going fine until I’ve added a streak system.

Problem: When I click on the correct flag, the value changes, but instead of adding +1, a random numebr is added.

Changing streak happens in every first line of each if inside of :MouseButton1Click.

Code:

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local DataBase = ReplicatedStorage.CountryInfos.Database
local GUI = script.Parent
local Background = GUI.Background
local RoundFrame = Background.Round
local TweenService = game:GetService("TweenService")

local Country1 = RoundFrame.Country1
local Country2 = RoundFrame.Country2

local Shadow1 = RoundFrame.Shadow1
local Shadow2 = RoundFrame.Shadow2

local TweenInfos = TweenInfo.new(1.5,Enum.EasingStyle.Quad)

local RoundIn = TweenService:Create(RoundFrame,TweenInfos,{Position = UDim2.new(0.5, 0,0.5, 0)})
local RoundOut = TweenService:Create(RoundFrame,TweenInfo.new(2,Enum.EasingStyle.Quad),{Position = UDim2.new(-0.5, 0,0.5, 0)})

--
local RNG = Random.new()
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local DatabaseChildren = DataBase:GetChildren()

-- Functions

db = false

streak = 0
--

function round()

	-- Round SetUp

	RoundFrame.Position = UDim2.new(1.5, 0,0.5, 0)
	RoundFrame.CenterLine.MainText.Text = "VS"

	-- Get Random Country

	local Country1Choose = DatabaseChildren[RNG:NextInteger(1, #DatabaseChildren)]
	local Country2Choose = DatabaseChildren[RNG:NextInteger(1, #DatabaseChildren)]

	while Country1Choose == Country2Choose do
		Country2Choose = DatabaseChildren[RNG:NextInteger(1, #DatabaseChildren)]
		--task.wait()
	end

	print(Country1Choose)
	print(Country2Choose)

	-- Update Country Info

	Country1.CountryName.Value = Country1Choose.CountryName.Value
	Country1.CountrySize.Value = Country1Choose.CountrySize.Value
	Country1.CountryFlag.Value = Country1Choose.Flag.Value

	Country2.CountryName.Value = Country2Choose.CountryName.Value
	Country2.CountrySize.Value = Country2Choose.CountrySize.Value
	Country2.CountryFlag.Value = Country2Choose.Flag.Value

	-- Update Country

	Country1.CountryNameText.Text = Country1.CountryName.Value
	Country1.Flag.Image = "rbxassetid://"..Country1.CountryFlag.Value
	Country1.FlagFake.Image = "rbxassetid://"..Country1.CountryFlag.Value

	Country2.CountryNameText.Text = Country2.CountryName.Value
	Country2.Flag.Image = "rbxassetid://"..Country2.CountryFlag.Value
	Country2.FlagFake.Image = "rbxassetid://"..Country2.CountryFlag.Value

	-- Round

	RoundIn:Play()

	Country1.Flag.MouseButton1Click:Connect(function()
		if db == false then
			db = true
			if Country1.CountrySize.Value > Country2.CountrySize.Value then
				print("correct")
				streak += 1
				--
				RoundFrame.CenterLine.MainText.Streak.StreakNumber.Text = streak
				RoundFrame.CenterLine.MainText.Text = ""

				TweenService:Create(RoundFrame.CenterLine.MainText.True,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 0}):Play()
				wait(1.5)
				TweenService:Create(RoundFrame.CenterLine.MainText.True,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 1}):Play()
				wait(0.5)
				TweenService:Create(RoundFrame.CenterLine.MainText.Streak,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 0}):Play()
				wait(0.7)
				TweenService:Create(RoundFrame.CenterLine.MainText.Streak.StreakNumber,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 0}):Play()
				wait(3)
				TweenService:Create(RoundFrame.CenterLine.MainText.Streak,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 1}):Play()
				TweenService:Create(RoundFrame.CenterLine.MainText.Streak.StreakNumber,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 1}):Play()
				wait(2)

				RoundOut:Play()
				wait(1.5)
				streak = streak+1
				round()
			elseif Country1.CountrySize.Value < Country2.CountrySize.Value then
				print("wrong")
				streak = 0

				RoundFrame.CenterLine.MainText.Streak.StreakNumber.Text = streak
				--

				RoundFrame.CenterLine.MainText.Text = ""

				TweenService:Create(RoundFrame.CenterLine.MainText.False,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 0}):Play()
				wait(1.5)
				TweenService:Create(RoundFrame.CenterLine.MainText.False,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 1}):Play()
				wait(0.5)
				TweenService:Create(RoundFrame.CenterLine.MainText.Streak,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 0}):Play()
				wait(0.7)
				TweenService:Create(RoundFrame.CenterLine.MainText.Streak.StreakNumber,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 0}):Play()
				wait(3)
				TweenService:Create(RoundFrame.CenterLine.MainText.Streak,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 1}):Play()
				TweenService:Create(RoundFrame.CenterLine.MainText.Streak.StreakNumber,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 1}):Play()
				wait(2)

				RoundOut:Play()
				wait(1.5)
				streak = 0
				round()
			end
			wait(3)
			db = false
		end
	end)

	Country2.Flag.MouseButton1Click:Connect(function()
		if db == false then
			if Country2.CountrySize.Value > Country1.CountrySize.Value then
				print("correct")
				streak += 1

				RoundFrame.CenterLine.MainText.Streak.StreakNumber.Text = streak
				--

				RoundFrame.CenterLine.MainText.Text = ""

				TweenService:Create(RoundFrame.CenterLine.MainText.True,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 0}):Play()
				wait(1.5)
				TweenService:Create(RoundFrame.CenterLine.MainText.True,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 1}):Play()
				wait(0.5)
				TweenService:Create(RoundFrame.CenterLine.MainText.Streak,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 0}):Play()
				wait(0.7)
				TweenService:Create(RoundFrame.CenterLine.MainText.Streak.StreakNumber,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 0}):Play()
				wait(3)
				TweenService:Create(RoundFrame.CenterLine.MainText.Streak,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 1}):Play()
				TweenService:Create(RoundFrame.CenterLine.MainText.Streak.StreakNumber,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 1}):Play()
				wait(2)

				RoundOut:Play()
				wait(1.5)
				streak = streak+1
				round()
			elseif Country2.CountrySize.Value < Country1.CountrySize.Value then
				print("wrong")
				streak = 0

				RoundFrame.CenterLine.MainText.Streak.StreakNumber.Text = streak
				--

				RoundFrame.CenterLine.MainText.Text = ""

				TweenService:Create(RoundFrame.CenterLine.MainText.False,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 0}):Play()
				wait(1.5)
				TweenService:Create(RoundFrame.CenterLine.MainText.False,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 1}):Play()
				wait(0.5)
				TweenService:Create(RoundFrame.CenterLine.MainText.Streak,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 0}):Play()
				wait(0.7)
				TweenService:Create(RoundFrame.CenterLine.MainText.Streak.StreakNumber,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 0}):Play()
				wait(3)
				TweenService:Create(RoundFrame.CenterLine.MainText.Streak,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 1}):Play()
				TweenService:Create(RoundFrame.CenterLine.MainText.Streak.StreakNumber,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 1}):Play()
				wait(2)

				RoundOut:Play()
				wait(1.5)
				streak = 0
				round()
			end
		end	
	end)
end

round()

If anything is unclear, please let me know. Thanks.

What numbers specifically are being printed?

Is it because MouseButton1Click doesn’t have a debounce, so if it gets clicked a couple of times the function runs a couple of times?

I’ve tried doing that, sadly it didn’t work.

@ComplicatedParadigm Example of what happens. The value should be changed to 4, but it changed to 7.

What gets printed in your Output window?

No errors, it prints the new value, which is also what the numbervalue is changed to.

Actually, I’ve managed to find a fix.

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local DataBase = ReplicatedStorage.CountryInfos.Database
local GUI = script.Parent
local Background = GUI.Background
local RoundFrame = Background.Round
local TweenService = game:GetService("TweenService")

local Country1 = RoundFrame.Country1
local Country2 = RoundFrame.Country2

local Shadow1 = RoundFrame.Shadow1
local Shadow2 = RoundFrame.Shadow2

local TweenInfos = TweenInfo.new(1.5,Enum.EasingStyle.Quad)

local RoundIn = TweenService:Create(RoundFrame,TweenInfos,{Position = UDim2.new(0.5, 0,0.5, 0)})
local RoundOut = TweenService:Create(RoundFrame,TweenInfo.new(2,Enum.EasingStyle.Quad),{Position = UDim2.new(-0.5, 0,0.5, 0)})

--
local RNG = Random.new()
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local DatabaseChildren = DataBase:GetChildren()

-- Functions

db = false

streak = 0

function round()

	-- Round SetUp

	db = false
	RoundFrame.Position = UDim2.new(1.5, 0,0.5, 0)
	RoundFrame.CenterLine.MainText.Text = "VS"


	-- Get Random Country

	local Country1Choose = DatabaseChildren[RNG:NextInteger(1, #DatabaseChildren)]
	local Country2Choose = DatabaseChildren[RNG:NextInteger(1, #DatabaseChildren)]

	while Country1Choose == Country2Choose do
		Country2Choose = DatabaseChildren[RNG:NextInteger(1, #DatabaseChildren)]
		--task.wait()
	end

	print(Country1Choose)
	print(Country2Choose)

	-- Update Country Info

	Country1.CountryName.Value = Country1Choose.CountryName.Value
	Country1.CountrySize.Value = Country1Choose.CountrySize.Value
	Country1.CountryFlag.Value = Country1Choose.Flag.Value

	Country2.CountryName.Value = Country2Choose.CountryName.Value
	Country2.CountrySize.Value = Country2Choose.CountrySize.Value
	Country2.CountryFlag.Value = Country2Choose.Flag.Value

	-- Update Country

	Country1.CountryNameText.Text = Country1.CountryName.Value
	Country1.Flag.Image = "rbxassetid://"..Country1.CountryFlag.Value
	Country1.FlagFake.Image = "rbxassetid://"..Country1.CountryFlag.Value

	Country2.CountryNameText.Text = Country2.CountryName.Value
	Country2.Flag.Image = "rbxassetid://"..Country2.CountryFlag.Value
	Country2.FlagFake.Image = "rbxassetid://"..Country2.CountryFlag.Value

	-- Round

	RoundIn:Play()

	Country1.Flag.MouseButton1Click:Connect(function()
		if db == false then
			db = true
			if Country1.CountrySize.Value > Country2.CountrySize.Value then

				print("correct")
				streak += 1
				--
				RoundFrame.CenterLine.MainText.Streak.StreakNumber.Text = streak
				RoundFrame.CenterLine.MainText.Text = ""

				TweenService:Create(RoundFrame.CenterLine.MainText.True,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 0}):Play()
				wait(1.5)
				TweenService:Create(RoundFrame.CenterLine.MainText.True,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 1}):Play()
				wait(0.5)
				TweenService:Create(RoundFrame.CenterLine.MainText.Streak,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 0}):Play()
				wait(0.7)
				TweenService:Create(RoundFrame.CenterLine.MainText.Streak.StreakNumber,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 0}):Play()
				wait(3)
				TweenService:Create(RoundFrame.CenterLine.MainText.Streak,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 1}):Play()
				TweenService:Create(RoundFrame.CenterLine.MainText.Streak.StreakNumber,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 1}):Play()
				wait(1)

				RoundOut:Play()
				wait(1)

				round()


			else

				print("wrong")
				streak = 0

				RoundFrame.CenterLine.MainText.Streak.StreakNumber.Text = streak
				--

				RoundFrame.CenterLine.MainText.Text = ""

				TweenService:Create(RoundFrame.CenterLine.MainText.False,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 0}):Play()
				wait(1.5)
				TweenService:Create(RoundFrame.CenterLine.MainText.False,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 1}):Play()
				wait(0.5)
				TweenService:Create(RoundFrame.CenterLine.MainText.Streak,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 0}):Play()
				wait(0.7)
				TweenService:Create(RoundFrame.CenterLine.MainText.Streak.StreakNumber,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 0}):Play()
				wait(3)
				TweenService:Create(RoundFrame.CenterLine.MainText.Streak,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 1}):Play()
				TweenService:Create(RoundFrame.CenterLine.MainText.Streak.StreakNumber,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 1}):Play()
				wait(1)

				RoundOut:Play()
				wait(1)
				streak = 0
				round()

			end
		end
	end)

	Country2.Flag.MouseButton1Click:Connect(function()
		if db == false then
			db = true
			if Country2.CountrySize.Value > Country1.CountrySize.Value then

				print("correct")
				streak += 1

				RoundFrame.CenterLine.MainText.Streak.StreakNumber.Text = streak
				--

				RoundFrame.CenterLine.MainText.Text = ""

				TweenService:Create(RoundFrame.CenterLine.MainText.True,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 0}):Play()
				wait(1.5)
				TweenService:Create(RoundFrame.CenterLine.MainText.True,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 1}):Play()
				wait(0.5)
				TweenService:Create(RoundFrame.CenterLine.MainText.Streak,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 0}):Play()
				wait(0.7)
				TweenService:Create(RoundFrame.CenterLine.MainText.Streak.StreakNumber,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 0}):Play()
				wait(3)
				TweenService:Create(RoundFrame.CenterLine.MainText.Streak,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 1}):Play()
				TweenService:Create(RoundFrame.CenterLine.MainText.Streak.StreakNumber,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 1}):Play()
				wait(1)

				RoundOut:Play()
				wait(1)

				round()

			else

				print("wrong")
				streak = 0

				RoundFrame.CenterLine.MainText.Streak.StreakNumber.Text = streak
				--

				RoundFrame.CenterLine.MainText.Text = ""

				TweenService:Create(RoundFrame.CenterLine.MainText.False,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 0}):Play()
				wait(1.5)
				TweenService:Create(RoundFrame.CenterLine.MainText.False,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 1}):Play()
				wait(0.5)
				TweenService:Create(RoundFrame.CenterLine.MainText.Streak,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 0}):Play()
				wait(0.7)
				TweenService:Create(RoundFrame.CenterLine.MainText.Streak.StreakNumber,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 0}):Play()
				wait(3)
				TweenService:Create(RoundFrame.CenterLine.MainText.Streak,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 1}):Play()
				TweenService:Create(RoundFrame.CenterLine.MainText.Streak.StreakNumber,TweenInfo.new(0.25,Enum.EasingStyle.Quad),{TextTransparency = 1}):Play()
				wait(1)

				RoundOut:Play()
				wait(1)
				streak = 0
				round()

			end
		else return
		end	

	end)
end

round()