Key Required Verified
lazy autofarm
Lua Script•324 lines (11134 chars)
-- FE2 Master Controller: Fixed Round-1 Immediate Startup Check
-- Fixes: Instantly detects and runs on Round 1 even if executed mid-round
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RunService = game:GetService("RunService")
local LocalPlayer = Players.LocalPlayer
local PlayerGui = LocalPlayer:WaitForChild("PlayerGui")
local Remote = ReplicatedStorage:WaitForChild("Remote")
local StartClientMapTimer = Remote:WaitForChild("StartClientMapTimer")
-- ============================================================================
-- MASTER GUI DASHBOARD
-- ============================================================================
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "FE2_MasterControllerGui_FixedRound1"
screenGui.ResetOnSpawn = false
screenGui.Parent = PlayerGui
local mainFrame = Instance.new("Frame")
mainFrame.Name = "MainFrame"
mainFrame.Size = UDim2.new(0, 280, 0, 130)
mainFrame.Position = UDim2.new(0.02, 0, 0.35, 0)
mainFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 28)
mainFrame.BackgroundTransparency = 0.15
mainFrame.BorderSizePixel = 0
mainFrame.Active = true
mainFrame.Draggable = true
mainFrame.Parent = screenGui
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 8)
corner.Parent = mainFrame
local stroke = Instance.new("UIStroke")
stroke.Color = Color3.fromRGB(60, 60, 80)
stroke.Thickness = 1.5
stroke.Parent = mainFrame
local titleLabel = Instance.new("TextLabel")
titleLabel.Name = "Title"
titleLabel.Size = UDim2.new(1, -20, 0, 25)
titleLabel.Position = UDim2.new(0, 10, 0, 6)
titleLabel.BackgroundTransparency = 1
titleLabel.Text = "âš¡ FE2 Master Controller"
titleLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
titleLabel.TextSize = 13
titleLabel.Font = Enum.Font.GothamBold
titleLabel.TextXAlignment = Enum.TextXAlignment.Left
titleLabel.Parent = mainFrame
local statusLabel = Instance.new("TextLabel")
statusLabel.Name = "StatusText"
statusLabel.Size = UDim2.new(1, -20, 0, 32)
statusLabel.Position = UDim2.new(0, 10, 0, 32)
statusLabel.BackgroundTransparency = 1
statusLabel.Text = "Status: Idle / Waiting for round..."
statusLabel.TextColor3 = Color3.fromRGB(200, 200, 215)
statusLabel.TextSize = 11
statusLabel.Font = Enum.Font.GothamMedium
statusLabel.TextXAlignment = Enum.TextXAlignment.Left
statusLabel.TextWrapped = true
statusLabel.Parent = mainFrame
local voteStatusLabel = Instance.new("TextLabel")
voteStatusLabel.Name = "VoteStatusText"
voteStatusLabel.Size = UDim2.new(1, -20, 0, 22)
voteStatusLabel.Position = UDim2.new(0, 10, 0, 66)
voteStatusLabel.BackgroundTransparency = 1
voteStatusLabel.Text = "Map Vote: Auto-Voter Active"
voteStatusLabel.TextColor3 = Color3.fromRGB(241, 196, 15)
voteStatusLabel.TextSize = 11
voteStatusLabel.Font = Enum.Font.GothamMedium
voteStatusLabel.TextXAlignment = Enum.TextXAlignment.Left
voteStatusLabel.Parent = mainFrame
local countLabel = Instance.new("TextLabel")
countLabel.Name = "CountText"
countLabel.Size = UDim2.new(1, -20, 0, 22)
countLabel.Position = UDim2.new(0, 10, 0, 92)
countLabel.BackgroundTransparency = 1
countLabel.Text = "Buttons Found: 0"
countLabel.TextColor3 = Color3.fromRGB(150, 150, 170)
countLabel.TextSize = 11
countLabel.Font = Enum.Font.Gotham
countLabel.TextXAlignment = Enum.TextXAlignment.Left
countLabel.Parent = mainFrame
-- ============================================================================
-- MODULE 1: ALERT & ESCAPE CONFIRMATION LISTENER
-- ============================================================================
local escapedConfirmed = false
local function checkTextForEscape(text)
if type(text) == "string" and string.find(text, "Escaped") then
escapedConfirmed = true
statusLabel.Text = "Status: Escaped Confirmed by Server!"
end
end
-- Hook Remote.Alert
local remoteAlert = Remote:FindFirstChild("Alert")
if remoteAlert and remoteAlert:IsA("RemoteEvent") then
remoteAlert.OnClientEvent:Connect(function(text)
checkTextForEscape(text)
end)
end
-- Hook CL_MAIN_GameScript.Alert
local playerScripts = LocalPlayer:FindFirstChild("PlayerScripts")
local gameScript = playerScripts and playerScripts:FindFirstChild("CL_MAIN_GameScript")
local bindableAlert = gameScript and gameScript:FindFirstChild("Alert")
if bindableAlert and bindableAlert:IsA("BindableEvent") then
bindableAlert.Event:Connect(function(text)
checkTextForEscape(text)
end)
end
-- ============================================================================
-- MODULE 2: BACKGROUND AUTO MAP VOTER
-- ============================================================================
local newMapVoteRemote = Remote:FindFirstChild("NewMapVote")
if newMapVoteRemote and newMapVoteRemote:IsA("RemoteEvent") then
newMapVoteRemote.OnClientEvent:Connect(function(mapPayload, isVotable)
if not (mapPayload and mapPayload.mapData) then return end
local myUserId = tostring(LocalPlayer.UserId)
local existingVote = mapPayload.pVotes and mapPayload.pVotes[myUserId]
if existingVote and existingVote.voteCount and existingVote.voteCount > 0 then
return
end
local targetMap = nil
for _, mapInfo in ipairs(mapPayload.mapData) do
if mapInfo.displayMap and not mapInfo.cooldown and not mapInfo.locked then
targetMap = mapInfo
break
end
end
if not targetMap then
for _, mapInfo in ipairs(mapPayload.mapData) do
if mapInfo.displayMap and not mapInfo.cooldown then
targetMap = mapInfo
break
end
end
end
if targetMap then
local updVoteRemote = Remote:FindFirstChild("UpdMapVote")
if updVoteRemote and updVoteRemote:IsA("RemoteEvent") then
updVoteRemote:FireServer(targetMap.ID, 0)
voteStatusLabel.Text = "Map Vote: Voted " .. tostring(targetMap.name)
end
end
end)
end
-- ============================================================================
-- MODULE 3: MAP SCANNER & TOUCHINTEREST SPAMMER
-- ============================================================================
local function scanAndAddNewButtons(map, buttonList, knownSet)
if not map then return 0 end
local newlyAddedCount = 0
for _, desc in ipairs(map:GetDescendants()) do
if desc:IsA("BasePart") then
local hasTouchInterest = desc:FindFirstChildOfClass("TouchInterest") ~= nil or desc:FindFirstChild("TouchInterest") ~= nil
if hasTouchInterest and not knownSet[desc] then
local nameLower = desc.Name:lower()
local parentNameLower = desc.Parent and desc.Parent.Name:lower() or ""
local isExcluded = nameLower:find("exit") or nameLower:find("spawn") or nameLower:find("air") or parentNameLower:find("airtank") or parentNameLower:find("exit")
if not isExcluded then
knownSet[desc] = true
table.insert(buttonList, desc)
newlyAddedCount = newlyAddedCount + 1
end
end
end
end
return newlyAddedCount
end
local function waitForMapLoad()
local timeout = tick() + 4
while tick() < timeout do
local multiplayer = workspace:FindFirstChild("Multiplayer")
local map = multiplayer and multiplayer:FindFirstChild("Map")
if map and #map:GetChildren() > 0 then
task.wait(0.5)
return map
end
task.wait(0.1)
end
return nil
end
local function isExitActive(exitPart)
if not (exitPart and exitPart:IsDescendantOf(workspace)) then
return false
end
local locatorGui = PlayerGui:FindFirstChild("LocatorGui")
local locater = locatorGui and locatorGui:FindFirstChild("Locater")
if locater and locater.Visible then
local line = locater:FindFirstChild("Line")
if line and line:IsA("BasePart") and line.Size.X > 0 then
local beamTargetPos = (line.CFrame * CFrame.new(line.Size.X * 0.5, 0, 0)).Position
if (beamTargetPos - exitPart.Position).Magnitude <= 15 then
return true
end
end
end
return false
end
local function findExitRegion(map)
if not map then return nil end
for _, desc in ipairs(map:GetDescendants()) do
if (desc.Name == "ExitRegion" or desc.Name == "ExitBlock") and desc:IsA("BasePart") then
return desc
end
end
return nil
end
-- ============================================================================
-- MAIN ROUND CONTROLLER
-- ============================================================================
local currentRoundID = 0
local function startRoundLogic()
currentRoundID = currentRoundID + 1
local myRoundID = currentRoundID
escapedConfirmed = false
statusLabel.Text = "Status: Waiting for map models..."
local map = waitForMapLoad()
local buttons = {}
local knownSet = {}
scanAndAddNewButtons(map, buttons, knownSet)
countLabel.Text = string.format("Buttons Found: %d", #buttons)
statusLabel.Text = string.format("Status: Spamming %d buttons...", #buttons)
-- LOOP 1: Background Button Scanner
task.spawn(function()
while currentRoundID == myRoundID and not escapedConfirmed do
task.wait(0.3)
if map and map.Parent then
local newlyDiscovered = scanAndAddNewButtons(map, buttons, knownSet)
if newlyDiscovered > 0 then
countLabel.Text = string.format("Buttons Found: %d", #buttons)
statusLabel.Text = string.format("Status: Spamming %d buttons...", #buttons)
end
end
end
end)
-- LOOP 2: Remote Spammer & Repeat Escape Controller
task.spawn(function()
local pressedRemote = Remote:FindFirstChild("PressedMapButton")
local survivedRemote = Remote:FindFirstChild("Survived")
local escapeAttemptActive = false
while currentRoundID == myRoundID and not escapedConfirmed and task.wait(1/60) do
-- A. Spam PressedMapButton on ALL discovered button hitboxes
if pressedRemote and pressedRemote:IsA("RemoteEvent") then
for i = 1, #buttons do
local btnPart = buttons[i]
if btnPart and btnPart.Parent and btnPart:IsDescendantOf(workspace) then
pressedRemote:FireServer(btnPart)
end
end
end
-- B. Repeat Escape Attempts once Exit becomes active
if not escapedConfirmed and not escapeAttemptActive then
local exitPart = findExitRegion(map)
if exitPart and isExitActive(exitPart) then
escapeAttemptActive = true
statusLabel.Text = "Status: Attempting Escape..."
-- REPEAT ATTEMPT LOOP
task.spawn(function()
while currentRoundID == myRoundID and not escapedConfirmed do
if survivedRemote then
pcall(function()
if survivedRemote:IsA("RemoteFunction") then
local result = survivedRemote:InvokeServer(LocalPlayer)
if result == true then
escapedConfirmed = true
statusLabel.Text = "Status: Escaped Confirmed!"
end
elseif survivedRemote:IsA("RemoteEvent") then
survivedRemote:FireServer(LocalPlayer)
end
end)
end
task.wait(0.1) -- Retries escape every 0.1s
end
end)
end
end
end
end)
end
-- Connect to Map Timer for subsequent rounds
StartClientMapTimer.OnClientEvent:Connect(startRoundLogic)
-- STARTUP CHECK (Ensures Round 1 runs immediately if executed mid-round)
local existingMap = workspace:FindFirstChild("Multiplayer") and workspace.Multiplayer:FindFirstChild("Map")
if existingMap and #existingMap:GetChildren() > 0 then
task.spawn(startRoundLogic)
endFeatures & Information
presses buttons, escapes, force votes, lazy bruh
Community Comments (0)
No comments yet for this script.
