
Key Required Verified

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Workspace = game:GetService("Workspace")
local player = Players.LocalPlayer
local function firstValidChild(container, name, validate)
for _, child in ipairs(container:GetChildren()) do
if child.Name == name then
if not validate or validate(child) then
return child
end
end
end
return nil
end
local function getTargetPart()
local rooms = firstValidChild(Workspace, "Rooms", function(c)
return c:FindFirstChild("EndRoom") ~= nil
end)
if not rooms then return nil end
local endRoom = firstValidChild(rooms, "EndRoom", function(c)
return c:FindFirstChild("Elevator1") ~= nil
end)
if not endRoom then return nil end
local elevator1 = firstValidChild(endRoom, "Elevator1", function(c)
return c:FindFirstChild("ExitSign") ~= nil
end)
if not elevator1 then return nil end
local exitSign = firstValidChild(elevator1, "ExitSign", nil)
if not exitSign then return nil end
if not (exitSign:IsA("BasePart") or exitSign:IsA("Model")) then return nil end
return exitSign
end
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "TeleportLoopGui"
screenGui.ResetOnSpawn = false
screenGui.Parent = player:WaitForChild("PlayerGui")
local frame = Instance.new("Frame")
frame.Size = UDim2.new(0, 220, 0, 75)
frame.Position = UDim2.new(0, 20, 0, 20)
frame.BackgroundColor3 = Color3.fromRGB(15, 15, 15)
frame.BackgroundTransparency = 0.4
frame.BorderSizePixel = 0
frame.ClipsDescendants = true
frame.Parent = screenGui
local frameStroke = Instance.new("UIStroke")
frameStroke.Color = Color3.fromRGB(255, 255, 255)
frameStroke.Transparency = 0.85
frameStroke.Thickness = 1
frameStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
frameStroke.Parent = frame
local dragArea = Instance.new("Frame")
dragArea.Name = "DragArea"
dragArea.Size = UDim2.new(1, 0, 0, 25)
dragArea.Position = UDim2.new(0, 0, 0, 0)
dragArea.BackgroundTransparency = 1
dragArea.Parent = frame
local titleLabel = Instance.new("TextLabel")
titleLabel.Size = UDim2.new(1, -70, 0, 20)
titleLabel.Position = UDim2.new(0, 10, 0, 5)
titleLabel.BackgroundTransparency = 1
titleLabel.Text = "FARMER"
titleLabel.TextColor3 = Color3.fromRGB(220, 220, 220)
titleLabel.Font = Enum.Font.GothamMedium
titleLabel.TextSize = 13
titleLabel.TextXAlignment = Enum.TextXAlignment.Left
titleLabel.Parent = frame
local function createBtn(text, pos)
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(0, 20, 0, 20)
btn.Position = pos
btn.BackgroundTransparency = 1
btn.Text = text
btn.TextColor3 = Color3.fromRGB(150, 150, 150)
btn.Font = Enum.Font.GothamMedium
btn.TextSize = (text == "X" and 14 or 18)
btn.AutoButtonColor = false
btn.Parent = frame
return btn
end
local minimizeButton = createBtn("-", UDim2.new(1, -45, 0, 5))
local closeButton = createBtn("X", UDim2.new(1, -25, 0, 5))
local isMonster = (player.Team and player.Team.Name == "Monster")
local button = Instance.new("TextButton")
button.Size = UDim2.new(1, -20, 0, 36)
button.Position = UDim2.new(0, 10, 0, 28)
button.BackgroundColor3 = isMonster and Color3.fromRGB(255, 255, 50) or Color3.fromRGB(255, 50, 50)
button.BackgroundTransparency = 0.85
button.Text = isMonster and "LOOP: STOPPED" or "LOOP: OFF"
button.TextColor3 = isMonster and Color3.fromRGB(200, 200, 50) or Color3.fromRGB(255, 120, 120)
button.Font = Enum.Font.GothamMedium
button.TextSize = 13
button.AutoButtonColor = false
button.Active = not isMonster
button.Parent = frame
local buttonStroke = Instance.new("UIStroke")
buttonStroke.Color = isMonster and Color3.fromRGB(255, 255, 50) or Color3.fromRGB(255, 50, 50)
buttonStroke.Transparency = 0.6
buttonStroke.Thickness = 1
buttonStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
buttonStroke.Parent = button
local dragging, dragStart, startPos = false, nil, nil
dragArea.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
local objects = UserInputService:GetGuiObjectsAtPosition(input.Position)
for _, obj in pairs(objects) do
if obj == closeButton or obj == minimizeButton then return end
end
dragging = true
dragStart = input.Position
startPos = frame.Position
end
end)
UserInputService.InputChanged:Connect(function(input)
if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then
local delta = input.Position - dragStart
local screenSize = screenGui.AbsoluteSize
local frameSize = frame.AbsoluteSize
local startX = (startPos.X.Scale * screenSize.X) + startPos.X.Offset
local startY = (startPos.Y.Scale * screenSize.Y) + startPos.Y.Offset
local clampedX = math.clamp(startX + delta.X, 0, screenSize.X - frameSize.X)
local clampedY = math.clamp(startY + delta.Y, 0, screenSize.Y - frameSize.Y)
frame.Position = UDim2.new(0, clampedX, 0, clampedY)
end
end)
UserInputService.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end
end)
local isMinimized = false
minimizeButton.MouseButton1Click:Connect(function()
isMinimized = not isMinimized
if isMinimized then
minimizeButton.Text = "+"
frame.Size = UDim2.new(0, 220, 0, 30)
button.Visible = false
else
minimizeButton.Text = "-"
button.Visible = true
frame.Size = UDim2.new(0, 220, 0, 75)
end
end)
local looping = false
local connection = nil
local function startLoop()
looping = true
button.Text = "LOOP: ON"
button.BackgroundColor3 = Color3.fromRGB(50, 255, 100)
button.TextColor3 = Color3.fromRGB(120, 255, 150)
buttonStroke.Color = Color3.fromRGB(50, 255, 100)
connection = RunService.Heartbeat:Connect(function()
local character = player.Character
if not character then return end
local hrp = character:FindFirstChild("HumanoidRootPart")
if not hrp then return end
local targetPart = getTargetPart()
if not targetPart then return end
local ok, err = pcall(function()
local targetCFrame = targetPart:IsA("BasePart") and targetPart.CFrame or targetPart:GetPivot()
hrp.CFrame = targetCFrame * CFrame.new(5, -8, 0)
end)
end)
end
local function stopLoop()
looping = false
button.Text = "LOOP: OFF"
button.BackgroundColor3 = Color3.fromRGB(255, 50, 50)
button.TextColor3 = Color3.fromRGB(255, 120, 120)
buttonStroke.Color = Color3.fromRGB(255, 50, 50)
if connection then
connection:Disconnect()
connection = nil
end
end
button.MouseButton1Click:Connect(function()
if isMonster then return end
if looping then stopLoop() else startLoop() end
end)
closeButton.MouseButton1Click:Connect(function()
stopLoop()
screenGui:Destroy()
end)No comments yet for this script.


