
KeylessUniversal

-- Compact Autofarm GUI - Fixed Patterns + Walking + Convert
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local VirtualInput = game:GetService("VirtualInputManager") or game:GetService("VirtualUser")
local plr = Players.LocalPlayer
local char = plr.Character or plr.CharacterAdded:Wait()
local root = char:WaitForChild("HumanoidRootPart")
local humanoid = char:WaitForChild("Humanoid")
-- GUI (compact)
local sg = Instance.new("ScreenGui")
sg.Name = "CompactFarm"
sg.ResetOnSpawn = false
sg.Parent = plr:WaitForChild("PlayerGui")
local frame = Instance.new("Frame")
frame.Size = UDim2.new(0, 280, 0, 260)
frame.Position = UDim2.new(0.5, -140, 0.5, -130)
frame.BackgroundColor3 = Color3.fromRGB(24, 24, 32)
frame.BorderSizePixel = 0
frame.Parent = sg
Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 10)
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, 0, 0, 32)
title.BackgroundColor3 = Color3.fromRGB(34, 34, 44)
title.BorderSizePixel = 0
title.Text = "Farm + Conv"
title.TextColor3 = Color3.fromRGB(210, 220, 255)
title.Font = Enum.Font.GothamBold
title.TextSize = 15
title.Parent = frame
Instance.new("UICorner", title).CornerRadius = UDim.new(0, 10)
local status = Instance.new("TextLabel")
status.Size = UDim2.new(1, -16, 0, 20)
status.Position = UDim2.new(0, 8, 1, -28)
status.BackgroundTransparency = 1
status.Text = "Idle"
status.TextColor3 = Color3.fromRGB(160, 180, 220)
status.Font = Enum.Font.Gotham
status.TextSize = 12
status.TextXAlignment = Enum.TextXAlignment.Left
status.Parent = frame
local content = Instance.new("Frame")
content.Size = UDim2.new(1, -16, 1, -70)
content.Position = UDim2.new(0, 8, 0, 40)
content.BackgroundTransparency = 1
content.Parent = frame
local layout = Instance.new("UIListLayout")
layout.Padding = UDim.new(0, 6)
layout.SortOrder = Enum.SortOrder.LayoutOrder
layout.Parent = content
-- Toggle helper
local function Toggle(name, callback)
local f = Instance.new("Frame")
f.Size = UDim2.new(1, 0, 0, 32)
f.BackgroundColor3 = Color3.fromRGB(32, 32, 42)
f.BorderSizePixel = 0
f.Parent = content
Instance.new("UICorner", f).CornerRadius = UDim.new(0, 7)
local lbl = Instance.new("TextLabel")
lbl.Size = UDim2.new(0.7, 0, 1, 0)
lbl.BackgroundTransparency = 1
lbl.Text = name
lbl.TextColor3 = Color3.fromRGB(225, 230, 245)
lbl.Font = Enum.Font.GothamSemibold
lbl.TextSize = 13
lbl.TextXAlignment = Enum.TextXAlignment.Left
lbl.Parent = f
local tog = Instance.new("TextButton")
tog.Size = UDim2.new(0, 48, 0, 24)
tog.Position = UDim2.new(1, -56, 0.5, -12)
tog.BackgroundColor3 = Color3.fromRGB(75, 75, 90)
tog.Text = "OFF"
tog.TextColor3 = Color3.new(1,1,1)
tog.Font = Enum.Font.GothamBold
tog.TextSize = 12
tog.Parent = f
Instance.new("UICorner", tog).CornerRadius = UDim.new(0, 12)
local on = false
tog.MouseButton1Click:Connect(function()
on = not on
tog.Text = on and "ON" or "OFF"
tog.BackgroundColor3 = on and Color3.fromRGB(55, 190, 100) or Color3.fromRGB(75, 75, 90)
callback(on)
status.Text = name .. (on and " ON" or " OFF")
end)
return function() return on end
end
-- Dropdown
local function Dropdown(name, opts, def, callback)
local f = Instance.new("Frame")
f.Size = UDim2.new(1, 0, 0, 32)
f.BackgroundColor3 = Color3.fromRGB(32, 32, 42)
f.BorderSizePixel = 0
f.Parent = content
Instance.new("UICorner", f).CornerRadius = UDim.new(0, 7)
local lbl = Instance.new("TextLabel")
lbl.Size = UDim2.new(0.5, 0, 1, 0)
lbl.BackgroundTransparency = 1
lbl.Text = name
lbl.TextColor3 = Color3.fromRGB(225, 230, 245)
lbl.Font = Enum.Font.GothamSemibold
lbl.TextSize = 13
lbl.TextXAlignment = Enum.TextXAlignment.Left
lbl.Parent = f
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(0.48, 0, 0, 26)
btn.Position = UDim2.new(0.52, 0, 0.5, -13)
btn.BackgroundColor3 = Color3.fromRGB(45, 45, 58)
btn.Text = def
btn.TextColor3 = Color3.new(1,1,1)
btn.Font = Enum.Font.Gotham
btn.TextSize = 12
btn.Parent = f
Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 7)
local sel = def
local i = 1
btn.MouseButton1Click:Connect(function()
i = (i % #opts) + 1
sel = opts[i]
btn.Text = sel
callback(sel)
end)
return function() return sel end
end
-- Variables
local farmOn = false
local convOn = false
local hiveCFrame = nil
local anchorPos = nil
local pattern = "Circle"
local patternSpeed = 1.0
local patternTimer = 0
local nextRandomPos = nil
local patternOptions = {"Circle", "Square", "Zigzag", "Random"}
local patternSel = Dropdown("Pattern", patternOptions, "Circle", function(v) pattern = v end)
-- Speed cycle
local speedBtn = Instance.new("TextButton")
speedBtn.Size = UDim2.new(1, 0, 0, 32)
speedBtn.BackgroundColor3 = Color3.fromRGB(50, 90, 180)
speedBtn.BorderSizePixel = 0
speedBtn.Text = "Speed: Normal"
speedBtn.TextColor3 = Color3.new(1,1,1)
speedBtn.Font = Enum.Font.GothamSemibold
speedBtn.TextSize = 13
speedBtn.Parent = content
Instance.new("UICorner", speedBtn).CornerRadius = UDim.new(0, 7)
local speeds = {0.6, 1.0, 1.6}
local speedIdx = 2
speedBtn.MouseButton1Click:Connect(function()
speedIdx = (speedIdx % #speeds) + 1
patternSpeed = speeds[speedIdx]
speedBtn.Text = "Speed: " .. (speedIdx==1 and "Slow" or speedIdx==2 and "Normal" or "Fast")
end)
-- Toggles
farmOn = Toggle("Autofarm", function(v)
farmOn = v
patternTimer = 0
nextRandomPos = nil
if v then
anchorPos = root.Position
status.Text = "Farm ON - " .. pattern
else
humanoid:Move(Vector3.new(), false)
status.Text = "Farm OFF"
end
end)
convOn = Toggle("Convert 5min", function(v)
convOn = v
status.Text = v and "Convert ON" or "Convert OFF"
end)
-- Set Hive
local hiveBtn = Instance.new("TextButton")
hiveBtn.Size = UDim2.new(1, 0, 0, 32)
hiveBtn.BackgroundColor3 = Color3.fromRGB(70, 130, 220)
hiveBtn.BorderSizePixel = 0
hiveBtn.Text = "Set Hive (stand here)"
hiveBtn.TextColor3 = Color3.new(1,1,1)
hiveBtn.Font = Enum.Font.GothamSemibold
hiveBtn.TextSize = 13
hiveBtn.Parent = content
Instance.new("UICorner", hiveBtn).CornerRadius = UDim.new(0, 7)
hiveBtn.MouseButton1Click:Connect(function()
hiveCFrame = root.CFrame
status.Text = "Hive saved"
end)
-- Close
local close = Instance.new("TextButton")
close.Size = UDim2.new(0, 28, 0, 28)
close.Position = UDim2.new(1, -34, 0, 2)
close.BackgroundColor3 = Color3.fromRGB(190, 60, 60)
close.BorderSizePixel = 0
close.Text = "X"
close.TextColor3 = Color3.new(1,1,1)
close.Font = Enum.Font.GothamBold
close.TextSize = 16
close.Parent = frame
Instance.new("UICorner", close).CornerRadius = UDim.new(0, 8)
close.MouseButton1Click:Connect(function() sg:Destroy() end)
-- Draggable
local drag, dragStart, startPos
title.InputBegan:Connect(function(inp)
if inp.UserInputType == Enum.UserInputType.MouseButton1 then
drag = true
dragStart = inp.Position
startPos = frame.Position
end
end)
UserInputService.InputChanged:Connect(function(inp)
if drag and inp.UserInputType == Enum.UserInputType.MouseMovement then
local delta = inp.Position - dragStart
frame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end
end)
title.InputEnded:Connect(function(inp)
if inp.UserInputType == Enum.UserInputType.MouseButton1 then drag = false end
end)
-- Main loop
local lastConv = tick()
RunService.Heartbeat:Connect(function(dt)
if not root or not humanoid then return end
patternTimer = patternTimer + dt * patternSpeed
-- Convert
if convOn and hiveCFrame and tick() - lastConv > 300 then
lastConv = tick()
local returnPos = root.Position
root.CFrame = hiveCFrame + Vector3.new(0, 3, 0)
task.wait(3)
pcall(function()
VirtualInput:SendKeyEvent(true, Enum.KeyCode.E, false, game)
task.wait(0.08)
VirtualInput:SendKeyEvent(false, Enum.KeyCode.E, false, game)
end)
task.wait(60)
root.CFrame = CFrame.new(returnPos)
status.Text = "Returned after convert"
end
-- Autofarm - walking
if farmOn and anchorPos then
local center = anchorPos
local targetPos
if pattern == "Circle" then
local angle = patternTimer * 1.2
targetPos = center + Vector3.new(math.cos(angle) * 22, 0, math.sin(angle) * 22)
elseif pattern == "Square" then
local t = patternTimer % 8
if t < 2 then targetPos = center + Vector3.new(24, 0, 24 - t*24)
elseif t < 4 then targetPos = center + Vector3.new(24 - (t-2)*24, 0, -24)
elseif t < 6 then targetPos = center + Vector3.new(-24, 0, -24 + (t-4)*24)
else targetPos = center + Vector3.new(-24 + (t-6)*24, 0, 24)
end
elseif pattern == "Zigzag" then
targetPos = center + Vector3.new(math.sin(patternTimer*2.8)*30, 0, math.cos(patternTimer*1.1)*15)
elseif pattern == "Random" then
-- Stay inside 20×20 square
if not nextRandomPos or (root.Position - nextRandomPos).Magnitude < 3 then
nextRandomPos = center + Vector3.new(
math.random(-10, 10),
0,
math.random(-10, 10)
)
end
targetPos = nextRandomPos
end
if targetPos then
humanoid:MoveTo(targetPos + Vector3.new(0, 3, 0)) -- slight height offset
end
else
humanoid:Move(Vector3.new(), false)
end
end)
status.Text = "Ready – set hive first if using convert"No comments yet for this script.



