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! ![]()
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)