Hey, im a beginner and Im trying to make button that has a toggle feature in my gui and when it toggles it goes in loop which i already made but it only goes 1 time. But i dont want it to go one time, i want it to go on loop. Also i dont want the loop to end unless the player presses it again and makes it in-active or de-activate (Sorry for bad English and maybe lack of explaining). I know you can just repeat the same code over and over like this (Down Below) . But its too messy and takes up a TON of space. (Original Code Down Below)
Messy Code:
local toggle = false
TButton.MouseButton1Click:Connect(function()
if not toggle then
toggle = true
TButton.Text = "Target People/Person (ACTIVE)" -- Changes Text
wait()
---------------------------
local plrText = AnchorP1 -- TextBox
local player = game:GetService("Players"):FindFirstChild(plrText.Text)
if player then
local char = player.Character or player.CharacterAdded:Wait()
if char then
for _,part in pairs(char:GetChildren()) do
if part.Name == "Head" then
part.Anchored = true -- [trying to loop]
part.Position = game.Players.LocalPlayer.Character.LowerTorso.Position + Vector3.new(0, 0, 0) -- [trying to loop]
wait(0.25)
part.Position = game.Players.LocalPlayer.Character.LowerTorso.Position + Vector3.new(0, 0, 0) -- [trying to loop]
wait(0.25)
part.Position = game.Players.LocalPlayer.Character.LowerTorso.Position + Vector3.new(0, 0, 0) -- [trying to loop]
wait(0.25)
part.Position = game.Players.LocalPlayer.Character.LowerTorso.Position + Vector3.new(0, 0, 0) -- [trying to loop]
wait(0.25)
part.Position = game.Players.LocalPlayer.Character.LowerTorso.Position + Vector3.new(0, 0, 0) -- [trying to loop]
wait(0.25)
part.Position = game.Players.LocalPlayer.Character.LowerTorso.Position + Vector3.new(0, 0, 0) -- [trying to loop]
wait(0.25)
part.Position = game.Players.LocalPlayer.Character.LowerTorso.Position + Vector3.new(0, 0, 0) -- [trying to loop]
wait(0.25)
part.Position = game.Players.LocalPlayer.Character.LowerTorso.Position + Vector3.new(0, 0, 0) -- [trying to loop]
wait(0.25)
part.Position = game.Players.LocalPlayer.Character.LowerTorso.Position + Vector3.new(0, 0, 0) -- [trying to loop]
wait(0.25)
part.Position = game.Players.LocalPlayer.Character.LowerTorso.Position + Vector3.new(0, 0, 0) -- [trying to loop]
end
end
end
end
---------------------------
else
toggle = false
TButton.Text = "Target People/Person (IN-ACTIVE)" -- Changes Text
wait()
---------------------------
local plrText = AnchorP1 -- TextBox
local player = game:GetService("Players"):FindFirstChild(plrText.Text)
if player then
local char = player.Character or player.CharacterAdded:Wait()
if char then
for _,part in pairs(char:GetChildren()) do
if part.Name == "Head" then
part.Anchored = false -- [DONT need to loop]
end
end
end
end
---------------------------
end
end)
Original Code:
local toggle = false
TButton.MouseButton1Click:Connect(function()
if not toggle then
toggle = true
TButton.Text = "Target People/Person (ACTIVE)" -- Changes Text
wait()
---------------------------
local plrText = AnchorP1 -- TextBox
local player = game:GetService("Players"):FindFirstChild(plrText.Text)
if player then
local char = player.Character or player.CharacterAdded:Wait()
if char then
for _,part in pairs(char:GetChildren()) do
if part.Name == "Head" then
part.Anchored = true -- [trying to loop]
part.Position = game.Players.LocalPlayer.Character.LowerTorso.Position + Vector3.new(0, 0, 0) -- [trying to loop]
end
end
end
end
---------------------------
else
toggle = false
TButton.Text = "Target People/Person (IN-ACTIVE)" -- Changes Text
wait()
---------------------------
local plrText = AnchorP1 -- TextBox
local player = game:GetService("Players"):FindFirstChild(plrText.Text)
if player then
local char = player.Character or player.CharacterAdded:Wait()
if char then
for _,part in pairs(char:GetChildren()) do
if part.Name == "Head" then
part.Anchored = false -- [DONT need to loop]
end
end
end
end
---------------------------
end
end)
Thanks!

1 comment
thank you so much this helped alot!