Need help to fix terminal counting up 2x as fast

The Problem When capping terminal, it successfully changes team, as well as count up, but when another player on the same team caps term back for the second time, it counts up twice as fast as if the first players cap is being counted as well.

The issue The counter needs to remain as a 1 second timer, not 2x faster.

I had this made for me, not the biggest scripter so any help would be greatly appreciated!

Leaving the scripts and a video of the problem below that control rotation and capping terminal.

Thanks for reading and helping! :slight_smile:

External Media
local HardpointFolder = game.Workspace:WaitForChild("Hardpoints")
local Hardpoints = {HardpointFolder.Point_1,HardpointFolder.Point_2,HardpointFolder.Point_3}
local CanCaptures = {Hardpoints[1].CanCapture,Hardpoints[2].CanCapture,Hardpoints[3].CanCapture}
local Queue = {Hardpoints[1].Queue,Hardpoints[2].Queue,Hardpoints[3].Queue}
local Point_1Pos1 = Hardpoints[1].Position - (Hardpoints[1].Position/2)
local Point_1Pos2 = Hardpoints[1].Position + (Hardpoints[1].Position/2)
local Point_1Region = Region3.new(Hardpoints[1].Position-(Hardpoints[1].Size/2),Hardpoints[1].Position+(Hardpoints[1].Size/2))
local Point_2Pos1 = Hardpoints[2].Position - (Hardpoints[2].Position/2)
local Point_2Pos2 = Hardpoints[2].Position + (Hardpoints[2].Position/2)
local Point_2Region = Region3.new(Hardpoints[2].Position-(Hardpoints[2].Size/2),Hardpoints[2].Position+(Hardpoints[2].Size/2))
local Point_3Pos1 = Hardpoints[3].Position - (Hardpoints[3].Position/2)
local Point_3Pos2 = Hardpoints[3].Position + (Hardpoints[3].Position/2)
local Point_3Region = Region3.new(Hardpoints[3].Position-(Hardpoints[3].Size/2),Hardpoints[3].Position+(Hardpoints[3].Size/2))
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ChangePosition = ReplicatedStorage.ChangePosition
local TerminalSettings = ReplicatedStorage.TerminalSettings
local TeamA = TerminalSettings.Team1.Value
local TeamB = TerminalSettings.Team2.Value
function _G.MakeClear(Part)
	HardpointFolder.Changer.Disabled = true
	Part.Queue.Value = false
	Part.CanCapture.Value = false
	Part.BrickColor = BrickColor.new("Dark stone grey")
	wait(.2)
	Part.CanCapture.Value = true
	Part.Queue.Value = true
	HardpointFolder.Changer.Disabled = false
end
function PointPos(Part)
	if Part.Name == "Point_1" then
		Point_1Pos1 = Hardpoints[1].Position - (Hardpoints[1].Position/2)
		Point_1Pos2 = Hardpoints[1].Position + (Hardpoints[1].Position/2)
		_G.MakeClear(Part)
		Point_1Region = Region3.new(Hardpoints[1].Position-(Hardpoints[1].Size/2),Hardpoints[1].Position+(Hardpoints[1].Size/2))
	elseif Part.Name == "Point_2" then
		Point_2Pos1 = Hardpoints[2].Position - (Hardpoints[2].Position/2)
		Point_2Pos2 = Hardpoints[2].Position + (Hardpoints[2].Position/2)
		_G.MakeClear(Part)
		Point_2Region = Region3.new(Hardpoints[2].Position-(Hardpoints[2].Size/2),Hardpoints[2].Position+(Hardpoints[2].Size/2))
	elseif Part.Name == "Point_3" then
		Point_3Pos1 = Hardpoints[3].Position - (Hardpoints[3].Position/2)
		Point_3Pos2 = Hardpoints[3].Position + (Hardpoints[3].Position/2)
		_G.MakeClear(Part)
		Point_3Region = Region3.new(Hardpoints[3].Position-(Hardpoints[3].Size/2),Hardpoints[3].Position+(Hardpoints[3].Size/2))
	end
end
function _G.ChangePosition(Part)
	local Pos = {Hardpoints[1].Pos,Hardpoints[2].Pos,Hardpoints[3].Pos}
	local matp =math.random(1,#Pos)
	local rand = Pos[matp]
	if Part.Position ~= rand.Value then
		ChangePosition:FireAllClients(Part.Name,5)
		wait(6)
		TerminalSettings.CapturedTeam.Value = nil
		Part.Position = rand.Value
		PointPos(Part)
		return
	elseif Part.Position == rand.Value then
		ChangePosition:FireAllClients(Part.Name,5)
		table.remove(Pos,matp,rand)
		local rand2 = Pos[math.random(1,#Pos)]
		wait(6)
		TerminalSettings.CapturedTeam.Value = nil
		Part.Position = rand2.Value
		table.insert(Pos,matp,rand)
		PointPos(Part)
		return
	end
end
while wait() do
	if CanCaptures[2].Value == true and Queue[2].Value == true and TerminalSettings.Finished.Value == false then
		local partsInRegion_Point_2 = workspace:FindPartsInRegion3(Point_2Region,nil,math.huge)
		for _,Part in pairs(partsInRegion_Point_2) do
			if Part.Parent:FindFirstChild("Humanoid") ~= nil then
				local Player = game.Players:GetPlayerFromCharacter(Part.Parent)
				Hardpoints[2].BrickColor = BrickColor.new(tostring(Player.TeamColor))
				TerminalSettings.CapturedTeam.Value = Player.Team
			end
		end
	end
	if CanCaptures[1].Value == true and Queue[1].Value == true and TerminalSettings.Finished.Value == false then
		local partsInRegion_Point_1 = workspace:FindPartsInRegion3(Point_1Region,nil,math.huge)
		for _,Part in pairs(partsInRegion_Point_1) do
			if Part.Parent:FindFirstChild("Humanoid") ~= nil then
				local Player = game.Players:GetPlayerFromCharacter(Part.Parent)
				Hardpoints[1].BrickColor = BrickColor.new(tostring(Player.TeamColor))
				TerminalSettings.CapturedTeam.Value = Player.Team
			end
		end
	end
	if CanCaptures[3].Value == true and Queue[3].Value == true and TerminalSettings.Finished.Value == false then
		local partsInRegion_Point_3 = workspace:FindPartsInRegion3(Point_3Region,nil,math.huge)
		for _,Part in pairs(partsInRegion_Point_3) do
			if Part.Parent:FindFirstChild("Humanoid") ~= nil then
				local Player = game.Players:GetPlayerFromCharacter(Part.Parent)
				Hardpoints[3].BrickColor = BrickColor.new(tostring(Player.TeamColor))
				TerminalSettings.CapturedTeam.Value = Player.Team
			end
		end
	end
end
local ReplicatedStorage = game.ReplicatedStorage
local ChangeSettingsEvent = ReplicatedStorage.ChangeSettings
local StartEvent = ReplicatedStorage.Start
local PointEvent = ReplicatedStorage.Point
local PhaseEvent = ReplicatedStorage.Phase
local ResultEvent = ReplicatedStorage.Result
local Settings = ReplicatedStorage.Settings
local OverTimeSettings = Settings.OverTime
local Hardpoints = game.Workspace.Hardpoints
local Hardpoint = {Hardpoints.Point_1,Hardpoints.Point_2,Hardpoints.Point_3}
local ResultPointA = ReplicatedStorage.TerminalSettings.PointAResult
local ResultPointB = ReplicatedStorage.TerminalSettings.PointBResult
local EndEvent = ReplicatedStorage.End
local ChangeRateHardpoint = ReplicatedStorage.Settings.HardpointChangeRate
ChangeSettingsEvent.OnServerEvent:Connect(function(Player,Type,Amount)
	if Type == "Hardpoint" then
		Settings.Hardpoint.Value = Amount
		if Settings.Hardpoint.Value == 1 then
			Hardpoint[2].Transparency = 1
			Hardpoint[2].CanCapture.Value = false
			Hardpoint[3].Transparency = 1
			Hardpoint[3].CanCapture.Value = false
		elseif Settings.Hardpoint.Value == 2 then
			Hardpoint[2].Transparency = .5
			Hardpoint[2].CanCapture.Value = true
			Hardpoint[3].Transparency = 1
			Hardpoint[3].CanCapture.Value = false
		elseif Settings.Hardpoint.Value == 3 then
			Hardpoint[2].Transparency = .5
			Hardpoint[2].CanCapture.Value = true
			Hardpoint[3].Transparency = 0.5
			Hardpoint[3].CanCapture.Value = true
		end
		ChangeSettingsEvent:FireAllClients("Hardpoint",Amount)
	elseif Type == "MaxTime" then
		Settings.MaxTime.Value = Amount
		ReplicatedStorage.TerminalSettings.Time.Value = Amount
		ChangeSettingsEvent:FireAllClients("MaxTime",Amount)
	elseif Type == "MaxPoint" then
		Settings.MaxPoint.Value = Amount
		ChangeSettingsEvent:FireAllClients("MaxPoint",Amount)
	elseif Type == "AddTime" then
		Settings.AddTime.Value = Amount
		ChangeSettingsEvent:FireAllClients("AddTime",Amount)
	elseif Type == "SetTimer" then
		Settings.SetTimer.Value = Amount
		ChangeSettingsEvent:FireAllClients("SetTimer",Amount)
	elseif Type == "ChangeRateHardpoint" then
		Settings.HardpointChangeRate.Value = Amount
		ChangeSettingsEvent:FireAllClients("ChangeRateHardpoint",Amount)
	end
end)
local function Finish(Win3Round,Type,Amount)
	if Type == "ChangedHardpoint" then
		ReplicatedStorage.TerminalSettings:FindFirstChild("WinnerPhase"..Amount).Value = Win3Round
		Hardpoint[1].CanTouch = false
		Hardpoint[1].CanQuery = false
		Hardpoint[2].CanTouch = false
		Hardpoint[2].CanQuery = false
		Hardpoint[3].CanTouch = false
		Hardpoint[3].CanQuery = false
		ReplicatedStorage.TerminalSettings.CapturedTeam.Value = nil
		ReplicatedStorage.TerminalSettings.Finished.Value = true
		PhaseEvent:FireAllClients("Finish")
	elseif Type == nil then
		ReplicatedStorage.TerminalSettings.WinnerPhase3.Value = Win3Round
		Hardpoint[1].CanTouch = false
		Hardpoint[1].CanQuery = false
		Hardpoint[2].CanTouch = false
		Hardpoint[2].CanQuery = false
		Hardpoint[3].CanTouch = false
		Hardpoint[3].CanQuery = false
		ReplicatedStorage.TerminalSettings.CapturedTeam.Value = nil
		ReplicatedStorage.TerminalSettings.Finished.Value = true
		PhaseEvent:FireAllClients("Finish")
	end
end
local function Phase2(Win1Round)
	ReplicatedStorage.TerminalSettings.WinnerPhase1.Value = Win1Round
	ReplicatedStorage.TerminalSettings.PointA.Value = 0
	ReplicatedStorage.TerminalSettings.PointB.Value = 0
	ReplicatedStorage.TerminalSettings.CapturedTeam.Value = nil
	ReplicatedStorage.TerminalSettings.Hardpoint.Value = ReplicatedStorage.TerminalSettings.Hardpoint.Value + 1
	Hardpoint[1].CanTouch = false
	Hardpoint[1].CanQuery = false
	if OverTimeSettings.Value == false then
		ReplicatedStorage.Settings.MaxTime.Value = ReplicatedStorage.Settings.MaxTime.Value + ReplicatedStorage.Settings.AddTime.Value
	end
	if Settings.Hardpoint.Value >= 2 then
		PhaseEvent:FireAllClients("Phase2")
	end
end
local function Phase3(Win2Round)
	ReplicatedStorage.TerminalSettings.WinnerPhase2.Value = Win2Round
	ReplicatedStorage.TerminalSettings.PointA.Value = 0
	ReplicatedStorage.TerminalSettings.PointB.Value = 0
	ReplicatedStorage.TerminalSettings.CapturedTeam.Value = nil
	ReplicatedStorage.TerminalSettings.Hardpoint.Value = ReplicatedStorage.TerminalSettings.Hardpoint.Value + 1
	Hardpoint[2].CanTouch = false
	Hardpoint[2].CanQuery = false
	if OverTimeSettings.Value == false then
		ReplicatedStorage.Settings.MaxTime.Value = ReplicatedStorage.Settings.MaxTime.Value + ReplicatedStorage.Settings.AddTime.Value
	end
	PhaseEvent:FireAllClients("Phase3")
end
StartEvent.OnServerEvent:Connect(function(Player)
	StartEvent:FireAllClients()
	wait(6)
	for _,Players in pairs(game.Players:GetChildren()) do
		Players:LoadCharacter()
	end
	OverTimeSettings.Value = true
	Hardpoint[1].Queue.Value = true -- to start terminal
	ReplicatedStorage.TerminalSettings.Hardpoint.Value = ReplicatedStorage.TerminalSettings.Hardpoint.Value + 1
	ReplicatedStorage.Settings.Start.Value = true
	local settime = Settings.MaxTime
	if Settings.SetTimer.Value == true then
		for c=settime.Value,1,-1 do
			if c == 1 then
				Settings.MaxTime.Value = 0
				if OverTimeSettings.Value == true then
					ReplicatedStorage.OverTime:FireAllClients()
				end
				break
			end
			if ReplicatedStorage.TerminalSettings.Finished.Value == true then
				ReplicatedStorage.TerminalSettings.Time.Value = Settings.MaxTime.Value
				break
			end
			ReplicatedStorage.TerminalSettings.Time.Value = ReplicatedStorage.TerminalSettings.Time.Value - 1
			wait(1)
		end
	end
end)
PointEvent.OnServerEvent:Connect(function(Player,Type,HardpointVal)
	if Type == "A" and ReplicatedStorage.TerminalSettings.CapturedTeam.Value == ReplicatedStorage.TerminalSettings.Team1.Value then
		if ReplicatedStorage.TerminalSettings.PointA.Value == ReplicatedStorage.Settings.MaxPoint.Value then
			if ReplicatedStorage.TerminalSettings.Hardpoint.Value == 1 and ReplicatedStorage.TerminalSettings.Hardpoint.Value ~= Settings.Hardpoint.Value then
				Phase2(ReplicatedStorage.TerminalSettings.Team1.Value)
			elseif ReplicatedStorage.TerminalSettings.Hardpoint.Value == 2 and ReplicatedStorage.TerminalSettings.Hardpoint.Value ~= Settings.Hardpoint.Value then
				Phase3(ReplicatedStorage.TerminalSettings.Team1.Value)
			elseif ReplicatedStorage.TerminalSettings.Hardpoint.Value == 3 then
				Finish(ReplicatedStorage.TerminalSettings.Team1.Value)
			elseif ReplicatedStorage.TerminalSettings.Hardpoint.Value == Settings.Hardpoint.Value and ReplicatedStorage.Settings.Hardpoint.Value < 3 then
				Finish(ReplicatedStorage.TerminalSettings.Team1.Value,"ChangedHardpoint",HardpointVal)
			end
		else
			ReplicatedStorage.TerminalSettings.PointA.Value = ReplicatedStorage.TerminalSettings.PointA.Value + 1
		end
	elseif Type == "B" and ReplicatedStorage.TerminalSettings.CapturedTeam.Value == ReplicatedStorage.TerminalSettings.Team2.Value then
		if ReplicatedStorage.TerminalSettings.PointB.Value == ReplicatedStorage.Settings.MaxPoint.Value then
			if ReplicatedStorage.TerminalSettings.Hardpoint.Value == 1  and ReplicatedStorage.TerminalSettings.Hardpoint.Value ~= Settings.Hardpoint.Value then
				Phase2(ReplicatedStorage.TerminalSettings.Team2.Value)
			elseif ReplicatedStorage.TerminalSettings.Hardpoint.Value == 2  and ReplicatedStorage.TerminalSettings.Hardpoint.Value ~= Settings.Hardpoint.Value then
				Phase3(ReplicatedStorage.TerminalSettings.Team2.Value)
			elseif ReplicatedStorage.TerminalSettings.Hardpoint.Value == 3 then
				Finish(ReplicatedStorage.TerminalSettings.Team2.Value)
			elseif ReplicatedStorage.TerminalSettings.Hardpoint.Value == Settings.Hardpoint.Value and ReplicatedStorage.Settings.Hardpoint.Value < 3 then
				Finish(ReplicatedStorage.TerminalSettings.Team2.Value,"ChangedHardpoint",HardpointVal)
			end
		else
			ReplicatedStorage.TerminalSettings.PointB.Value = ReplicatedStorage.TerminalSettings.PointB.Value + 1
		end
	end
end)
ResultEvent.OnServerEvent:Connect(function(Player,Type)
	if Type == "A" then
		ReplicatedStorage.TerminalSettings.PointAResult.Value = ReplicatedStorage.TerminalSettings.PointAResult.Value + 1
	elseif Type == "B" then
		ReplicatedStorage.TerminalSettings.PointBResult.Value = ReplicatedStorage.TerminalSettings.PointBResult.Value + 1
	elseif Type == "Calcute" then
		local WinP1 = ReplicatedStorage.TerminalSettings.WinnerPhase1
		local WinP2 = ReplicatedStorage.TerminalSettings.WinnerPhase2
		local WinP3 = ReplicatedStorage.TerminalSettings.WinnerPhase3
		if WinP1.Value == ReplicatedStorage.TerminalSettings.Team1.Value then
			ResultPointA.Value = ResultPointA.Value + 1
		elseif WinP1.Value == ReplicatedStorage.TerminalSettings.Team2.Value then
			ResultPointB.Value = ResultPointB.Value + 1
		end
		if WinP2.Value == ReplicatedStorage.TerminalSettings.Team1.Value then
			ResultPointA.Value = ResultPointA.Value + 1
		elseif WinP2.Value == ReplicatedStorage.TerminalSettings.Team2.Value then
			ResultPointB.Value = ResultPointB.Value + 1
		end
		if WinP3.Value == ReplicatedStorage.TerminalSettings.Team1.Value then
			ResultPointA.Value = ResultPointA.Value + 1
		elseif WinP3.Value == ReplicatedStorage.TerminalSettings.Team2.Value then
			ResultPointB.Value = ResultPointB.Value + 1
		end
	end
end)
EndEvent.OnServerEvent:Connect(function()
	local TermSettings = ReplicatedStorage.TerminalSettings
	EndEvent:FireAllClients()
	Hardpoints.Changer.Disabled = true
	for _,HP in pairs(Hardpoints:GetDescendants()) do
		if HP.Name == "Queue" and HP.Value == true then
			HP.Value = false
		end
	end
	for _,HP in pairs(Hardpoints:GetChildren()) do
		if HP:IsA("Part") then
			HP.BrickColor = BrickColor.new("medium Medium stone grey")
			HP.Position = HP.Pos.Value
		end
	end
	TermSettings.Finished.Value = true
	TermSettings.Hardpoint.Value = 0
	TermSettings.CapturedTeam.Value = nil
	Settings.Start.Value = false
	TermSettings.PointA.Value = 0
	TermSettings.PointAResult.Value = 0
	TermSettings.PointB.Value = 0
	TermSettings.PointBResult.Value = 0
	TermSettings.WinnerPhase1.Value = nil
	TermSettings.WinnerPhase2.Value = nil
	TermSettings.WinnerPhase3.Value = nil
	ReplicatedStorage.ChangeSettings:FireAllClients("HardpointName",1)
	wait(1.1)
	TermSettings.Finished.Value = false
	Hardpoints.Changer.Disabled = false
end)
1 Like