*py escape farm script
Key Required

*py escape farm script

Monster Runners [Alpha]jbd4444jbd4444 103 views 447 executesUpdated Aug 15, 2026
Unrated
00
Lua Script•214 lines (7140 chars)
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)

Features & Information

made over a month ago but forgot release kicks u out of game after 4 simultaneous escapes so if u wanna farm js spam click loop button

Community Comments (0)

No comments yet for this script.

More Scripts for Monster Runners [Alpha]