![[No Key!] Auto Farm,Server Esp,Bat Aura and More !](https://scriptblox.com/images/sb/118055952211055-1787099484543.png)
Keyless

local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local player = Players.LocalPlayer
local mouse = player:GetMouse()
local selectedPlot
local collectibleObjects = {}
local autoCollectEnabled = false
local autoCollectThread
local collectDelay = 1 / 80 -- default 80 teleports/sec
-- Speed lock state
local speedEnabled = false
local savedWalkSpeed = 16
local speedWatcher = nil
local LOCK_SPEED = 250
-- Weld-based teleport state
local teleportAnchor = nil
local teleportWeld = nil
-- Position saved when AutoCollect is turned on
local savedReturnCFrame = nil
-- Auto Lock state
local autoLockEnabled = false
local autoLockThread = nil
-- Minimise state
local minimised = false
local EXPANDED_HEIGHT = 340 -- increased to fit the new Auto Lock row
local MINI_HEIGHT = 42
-- ─── GUI ─────────────────────────────────────────────────────────────────────
local gui = Instance.new("ScreenGui")
gui.Name = "PlotChooser"
gui.ResetOnSpawn = false
gui.Parent = player:WaitForChild("PlayerGui")
local frame = Instance.new("Frame")
frame.Size = UDim2.fromOffset(350, 120)
frame.Position = UDim2.fromScale(0.5, 0.08)
frame.AnchorPoint = Vector2.new(0.5, 0)
frame.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
frame.BorderSizePixel = 0
frame.ClipsDescendants = true
frame.Parent = gui
local frameCorner = Instance.new("UICorner")
frameCorner.CornerRadius = UDim.new(0, 10)
frameCorner.Parent = frame
local frameStroke = Instance.new("UIStroke")
frameStroke.Color = Color3.fromRGB(90, 90, 90)
frameStroke.Thickness = 1
frameStroke.Parent = frame
local title = Instance.new("TextLabel")
title.Name = "Title"
title.Size = UDim2.new(1, -20, 0, 60)
title.Position = UDim2.fromOffset(10, 10)
title.BackgroundTransparency = 1
title.Font = Enum.Font.GothamBold
title.TextSize = 24
title.TextColor3 = Color3.new(1, 1, 1)
title.TextWrapped = true
title.Text = "Choose Your Plot"
title.Parent = frame
local cancel = Instance.new("TextButton")
cancel.Size = UDim2.fromOffset(90, 32)
cancel.Position = UDim2.new(1, -100, 1, -36)
cancel.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
cancel.BorderSizePixel = 0
cancel.TextColor3 = Color3.new(1, 1, 1)
cancel.Font = Enum.Font.GothamBold
cancel.TextSize = 14
cancel.Text = "Cancel"
cancel.Parent = frame
local cancelCorner = Instance.new("UICorner")
cancelCorner.CornerRadius = UDim.new(0, 8)
cancelCorner.Parent = cancel
local cancelStroke = Instance.new("UIStroke")
cancelStroke.Color = Color3.fromRGB(90, 90, 90)
cancelStroke.Parent = cancel
-- ─── Fade-out & destroy ───────────────────────────────────────────────────────
local function unloadScript()
autoCollectEnabled = false
speedEnabled = false
autoLockEnabled = false
if speedWatcher then
speedWatcher:Disconnect()
speedWatcher = nil
end
local character = player.Character
local humanoid = character and character:FindFirstChildOfClass("Humanoid")
if humanoid and humanoid.Parent then
humanoid.WalkSpeed = savedWalkSpeed
humanoid.PlatformStand = false
end
if teleportWeld then
teleportWeld:Destroy()
teleportWeld = nil
end
if character then
local hrp = character:FindFirstChild("HumanoidRootPart")
if hrp then
local att = hrp:FindFirstChild("_CollectAtt1")
if att then att:Destroy() end
end
local anchor = character:FindFirstChild("_CollectAnchor")
if anchor then anchor:Destroy() end
end
teleportAnchor = nil
local FADE_TIME = 0.2
local fadeInfo = TweenInfo.new(FADE_TIME, Enum.EasingStyle.Linear)
TweenService:Create(frame, fadeInfo, { BackgroundTransparency = 1 }):Play()
for _, obj in ipairs(frame:GetDescendants()) do
if obj:IsA("TextLabel") or obj:IsA("TextButton") or obj:IsA("TextBox") then
TweenService:Create(obj, fadeInfo,
{ TextTransparency = 1, BackgroundTransparency = 1 }):Play()
elseif obj:IsA("Frame") then
TweenService:Create(obj, fadeInfo, { BackgroundTransparency = 1 }):Play()
elseif obj:IsA("UIStroke") then
TweenService:Create(obj, fadeInfo, { Transparency = 1 }):Play()
end
end
task.wait(FADE_TIME)
gui:Destroy()
end
-- ─── Plot-selection helpers ───────────────────────────────────────────────────
local highlights = {}
local finished = false
local clickConnection
local function cleanup()
for _, highlight in pairs(highlights) do
if highlight then highlight:Destroy() end
end
highlights = {}
if clickConnection then
clickConnection:Disconnect()
end
end
-- ─── Weld-based teleport helpers ─────────────────────────────────────────────
local function createAnchorPart(character)
local hrp = character:FindFirstChild("HumanoidRootPart")
if not hrp then return nil end
local part = Instance.new("Part")
part.Name = "_CollectAnchor"
part.Size = Vector3.new(0.1, 0.1, 0.1)
part.Transparency = 1
part.CanCollide = false
part.CanTouch = false
part.CanQuery = false
part.Anchored = true
part.CFrame = hrp.CFrame
part.Parent = character
return part
end
local function attachAnchorToHRP(anchorPart, hrp)
local att0 = Instance.new("Attachment")
att0.Name = "_CollectAtt0"
att0.Position = Vector3.zero
att0.Parent = anchorPart
local att1 = Instance.new("Attachment")
att1.Name = "_CollectAtt1"
att1.Position = Vector3.zero
att1.Parent = hrp
local w = Instance.new("WeldConstraint")
w.Name = "_CollectWeld"
w.Part0 = anchorPart
w.Part1 = hrp
w.Parent = anchorPart
anchorPart.Anchored = false
return w
end
local function cleanupAnchor(character)
if teleportWeld then
teleportWeld:Destroy()
teleportWeld = nil
end
if character then
local hrp = character:FindFirstChild("HumanoidRootPart")
if hrp then
local att1 = hrp:FindFirstChild("_CollectAtt1")
if att1 then att1:Destroy() end
end
end
if teleportAnchor and teleportAnchor.Parent then
teleportAnchor:Destroy()
end
teleportAnchor = nil
end
local function teleportTo(targetCFrame)
if not teleportAnchor or not teleportAnchor.Parent then return end
teleportAnchor.Anchored = true
teleportAnchor.CFrame = targetCFrame
task.wait()
teleportAnchor.Anchored = false
end
-- ─── Speed lock ──────────────────────────────────────────────────────────────
local function startSpeedWatcher()
if speedWatcher then speedWatcher:Disconnect() end
local character = player.Character
local humanoid = character and character:FindFirstChildOfClass("Humanoid")
if not humanoid then return end
speedWatcher = humanoid:GetPropertyChangedSignal("WalkSpeed"):Connect(function()
if not speedEnabled then return end
local current = humanoid.WalkSpeed
if current ~= LOCK_SPEED then
savedWalkSpeed = current
humanoid.WalkSpeed = LOCK_SPEED
end
end)
end
local function stopSpeedWatcher()
if speedWatcher then
speedWatcher:Disconnect()
speedWatcher = nil
end
end
-- ─── Collectible object list ──────────────────────────────────────────────────
local function buildCollectibleObjects()
table.clear(collectibleObjects)
if selectedPlot and selectedPlot:FindFirstChild("Objects") then
for _, object in ipairs(selectedPlot.Objects:GetChildren()) do
local objectGui = object:FindFirstChild("ObjectGui")
if objectGui then
local frameObj = objectGui:FindFirstChild("Frame")
if frameObj then
local amount = frameObj:FindFirstChild("Amount")
if amount and amount:IsA("TextLabel") then
if not string.find(amount.Text, "s") then
table.insert(collectibleObjects, object)
end
end
end
end
end
end
print("Collectible Objects Found:", #collectibleObjects)
end
-- ─── Auto-collect loop ────────────────────────────────────────────────────────
local function startAutoCollect()
if autoCollectThread then return end
-- Rebuild collectibles fresh each time AutoCollect is enabled
buildCollectibleObjects()
autoCollectThread = task.spawn(function()
local startCharacter = player.Character
local startHRP = startCharacter and startCharacter:FindFirstChild("HumanoidRootPart")
savedReturnCFrame = startHRP and startHRP.CFrame or nil
while autoCollectEnabled do
local character = player.Character
local hrp = character and character:FindFirstChild("HumanoidRootPart")
local humanoid = character and character:FindFirstChildOfClass("Humanoid")
if hrp and humanoid then
if not teleportAnchor or not teleportAnchor.Parent then
cleanupAnchor(character)
teleportAnchor = createAnchorPart(character)
if teleportAnchor then
teleportWeld = attachAnchorToHRP(teleportAnchor, hrp)
humanoid.PlatformStand = true
end
end
for _, object in ipairs(collectibleObjects) do
if not autoCollectEnabled then break end
local primary = object:FindFirstChild("Primary")
if primary and primary:IsA("BasePart") then
teleportTo(primary.CFrame)
task.wait(collectDelay)
else
task.wait(0.03)
end
end
end
task.wait(0.05)
end
local character = player.Character
local humanoid = character and character:FindFirstChildOfClass("Humanoid")
cleanupAnchor(character)
if humanoid and humanoid.Parent then
humanoid.PlatformStand = false
end
if savedReturnCFrame then
local hrp = character and character:FindFirstChild("HumanoidRootPart")
if hrp then
hrp.CFrame = savedReturnCFrame
savedReturnCFrame = nil
end
end
autoCollectThread = nil
end)
end
-- ─── Auto Lock loop ───────────────────────────────────────────────────────────
local function startAutoLock()
if autoLockThread then return end
autoLockThread = task.spawn(function()
while autoLockEnabled do
-- Safety: bail out if no plot selected
if not selectedPlot then
task.wait(0.1)
continue
end
-- Locate the transparency sentinel and the pad to re-lock with
local lockRings = selectedPlot:FindFirstChild("LockRings")
local lockPlot = selectedPlot:FindFirstChild("LockPlot")
local entrance1 = lockRings and lockRings:FindFirstChild("Entrance1")
local pad = lockPlot and lockPlot:FindFirstChild("Pad")
-- If the plot is currently unlocked (Entrance1 is invisible), re-lock it
if entrance1 and pad
and entrance1:IsA("BasePart")
and pad:IsA("BasePart")
and entrance1.Transparency == 1
then
local character = player.Character
local hrp = character and character:FindFirstChild("HumanoidRootPart")
if hrp then
-- Save the pad's original state so we can restore it exactly
local originalCFrame = pad.CFrame
local originalCanCollide = pad.CanCollide
-- Disable collision so the teleport doesn't push the player around
pad.CanCollide = false
local ok, err = pcall(function()
-- Move the pad onto the player
pad.CFrame = hrp.CFrame
task.wait(0.15)
-- Move the pad back (total round-trip ≈ 0.3 s)
pad.CFrame = originalCFrame
task.wait(0.15)
end)
if not ok then
warn("AutoLock pad teleport error:", err)
end
-- Always restore collision regardless of errors
pad.CanCollide = originalCanCollide
end
end
task.wait(0.1) -- poll interval
end
autoLockThread = nil
end)
end
-- ─── Main menu ────────────────────────────────────────────────────────────────
local function createMainMenu()
-- Fade out the plot-selection title
for _, obj in ipairs(frame:GetChildren()) do
if obj:IsA("TextLabel") then
TweenService:Create(obj, TweenInfo.new(0.35, Enum.EasingStyle.Linear),
{ TextTransparency = 1, TextStrokeTransparency = 1 }):Play()
task.delay(0.35, function()
if obj and obj.Parent then obj:Destroy() end
end)
end
end
task.wait(0.35)
cancel.Text = "Close"
-- ── Minimise button (created before expansion so it sits at the top) ──────
local minBtn = Instance.new("TextButton")
minBtn.Name = "MinimiseBtn"
minBtn.Size = UDim2.fromOffset(24, 24)
minBtn.Position = UDim2.fromOffset(8, 6)
minBtn.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
minBtn.BorderSizePixel = 0
minBtn.TextColor3 = Color3.new(1, 1, 1)
minBtn.Font = Enum.Font.GothamBold
minBtn.TextSize = 16
minBtn.Text = "−"
minBtn.ZIndex = 10
minBtn.Parent = frame
local minBtnCorner = Instance.new("UICorner")
minBtnCorner.CornerRadius = UDim.new(0, 6)
minBtnCorner.Parent = minBtn
local minBtnStroke = Instance.new("UIStroke")
minBtnStroke.Color = Color3.fromRGB(90, 90, 90)
minBtnStroke.Parent = minBtn
-- Expand the frame now
frame.AnchorPoint = Vector2.new(1, 0)
TweenService:Create(frame, TweenInfo.new(0.45, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {
Size = UDim2.fromOffset(350, EXPANDED_HEIGHT),
Position = UDim2.new(1, -20, 0, 20),
}):Play()
task.wait(0.45)
cancel.Position = UDim2.new(1, -100, 1, -36)
-- ── Shared helpers ────────────────────────────────────────────────────────
local function makeLabel(text, yPos)
local lbl = Instance.new("TextLabel")
lbl.BackgroundTransparency = 1
lbl.Size = UDim2.new(1, -100, 0, 40)
lbl.Position = UDim2.fromOffset(15, yPos)
lbl.Font = Enum.Font.Gotham
lbl.TextSize = 18
lbl.TextColor3 = Color3.new(1, 1, 1)
lbl.TextXAlignment = Enum.TextXAlignment.Left
lbl.Text = text
lbl.Parent = frame
return lbl
end
local function makeSwitch(yPos)
local sw = Instance.new("TextButton")
sw.AutoButtonColor = false
sw.Text = ""
sw.Size = UDim2.fromOffset(52, 28)
sw.Position = UDim2.new(1, -70, 0, yPos)
sw.BackgroundColor3 = Color3.fromRGB(55, 55, 55)
sw.BorderSizePixel = 0
sw.Parent = frame
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(1, 0)
corner.Parent = sw
local knob = Instance.new("Frame")
knob.Size = UDim2.fromOffset(22, 22)
knob.Position = UDim2.fromOffset(3, 3)
knob.BackgroundColor3 = Color3.fromRGB(230, 230, 230)
knob.BorderSizePixel = 0
knob.Parent = sw
local knobCorner = Instance.new("UICorner")
knobCorner.CornerRadius = UDim.new(1, 0)
knobCorner.Parent = knob
return sw, knob
end
local function animateSwitch(sw, knob, state)
if state then
TweenService:Create(sw, TweenInfo.new(0.2, Enum.EasingStyle.Quad),
{ BackgroundColor3 = Color3.fromRGB(0, 200, 70) }):Play()
TweenService:Create(knob, TweenInfo.new(0.2, Enum.EasingStyle.Quad),
{ Position = UDim2.fromOffset(27, 3) }):Play()
else
TweenService:Create(sw, TweenInfo.new(0.2, Enum.EasingStyle.Quad),
{ BackgroundColor3 = Color3.fromRGB(55, 55, 55) }):Play()
TweenService:Create(knob, TweenInfo.new(0.2, Enum.EasingStyle.Quad),
{ Position = UDim2.fromOffset(3, 3) }):Play()
end
end
-- ── Row offsets ───────────────────────────────────────────────────────────
-- Offset labels/switches down by 36px to leave room for the minimise bar
local ROW_OFFSET = 36
-- ── Row 1 (y=10): AutoCollect ─────────────────────────────────────────────
makeLabel("AutoCollect", 10 + ROW_OFFSET)
local acSwitch, acKnob = makeSwitch(16 + ROW_OFFSET)
local function updateAutoCollect(state)
autoCollectEnabled = state
animateSwitch(acSwitch, acKnob, state)
if state then
startAutoCollect()
end
end
acSwitch.MouseButton1Click:Connect(function()
updateAutoCollect(not autoCollectEnabled)
end)
-- ── Row 2 (y=60): Teleports/sec ──────────────────────────────────────────
local tpsLabel = Instance.new("TextLabel")
tpsLabel.BackgroundTransparency = 1
tpsLabel.Size = UDim2.fromOffset(140, 30)
tpsLabel.Position = UDim2.fromOffset(15, 65 + ROW_OFFSET)
tpsLabel.Font = Enum.Font.Gotham
tpsLabel.TextSize = 15
tpsLabel.TextColor3 = Color3.fromRGB(180, 180, 180)
tpsLabel.TextXAlignment = Enum.TextXAlignment.Left
tpsLabel.Text = "Teleports/sec"
tpsLabel.Parent = frame
local inputBox = Instance.new("TextBox")
inputBox.Size = UDim2.fromOffset(90, 28)
inputBox.Position = UDim2.new(1, -110, 0, 63 + ROW_OFFSET)
inputBox.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
inputBox.BorderSizePixel = 0
inputBox.Font = Enum.Font.GothamBold
inputBox.TextSize = 15
inputBox.TextColor3 = Color3.new(1, 1, 1)
inputBox.PlaceholderText = "80"
inputBox.Text = "80"
inputBox.ClearTextOnFocus = false
inputBox.Parent = frame
local inputCorner = Instance.new("UICorner")
inputCorner.CornerRadius = UDim.new(0, 6)
inputCorner.Parent = inputBox
local inputStroke = Instance.new("UIStroke")
inputStroke.Color = Color3.fromRGB(90, 90, 90)
inputStroke.Parent = inputBox
inputBox.FocusLost:Connect(function()
local raw = tonumber(inputBox.Text)
if raw and raw > 0 then
raw = math.clamp(raw, 0.1, 100)
collectDelay = 1 / raw
inputBox.Text = tostring(raw)
else
inputBox.Text = tostring(math.round(1 / collectDelay * 10) / 10)
end
end)
-- ── Row 3 (y=110): Speed ─────────────────────────────────────────────────
makeLabel("Speed", 110 + ROW_OFFSET)
local spSwitch, spKnob = makeSwitch(116 + ROW_OFFSET)
local function updateSpeed(state)
speedEnabled = state
animateSwitch(spSwitch, spKnob, state)
local character = player.Character
local humanoid = character and character:FindFirstChildOfClass("Humanoid")
if not humanoid then return end
if state then
savedWalkSpeed = humanoid.WalkSpeed
humanoid.WalkSpeed = LOCK_SPEED
startSpeedWatcher()
else
stopSpeedWatcher()
humanoid.WalkSpeed = savedWalkSpeed
end
end
spSwitch.MouseButton1Click:Connect(function()
updateSpeed(not speedEnabled)
end)
player.CharacterAdded:Connect(function(newChar)
newChar:WaitForChild("Humanoid", 10)
if speedEnabled then
local hum = newChar:FindFirstChildOfClass("Humanoid")
if hum then
hum.WalkSpeed = LOCK_SPEED
startSpeedWatcher()
end
end
end)
-- ── Row 4 (y=160): Collect stolen ────────────────────────────────────────
makeLabel("Collect stolen", 160 + ROW_OFFSET)
local collectStolenBtn = Instance.new("TextButton")
collectStolenBtn.Size = UDim2.fromOffset(90, 28)
collectStolenBtn.Position = UDim2.new(1, -110, 0, 163 + ROW_OFFSET)
collectStolenBtn.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
collectStolenBtn.BorderSizePixel = 0
collectStolenBtn.Font = Enum.Font.GothamBold
collectStolenBtn.TextSize = 14
collectStolenBtn.TextColor3 = Color3.new(1, 1, 1)
collectStolenBtn.Text = "Click me"
collectStolenBtn.AutoButtonColor = false
collectStolenBtn.Parent = frame
local collectStolenCorner = Instance.new("UICorner")
collectStolenCorner.CornerRadius = UDim.new(0, 8)
collectStolenCorner.Parent = collectStolenBtn
local collectStolenStroke = Instance.new("UIStroke")
collectStolenStroke.Color = Color3.fromRGB(90, 90, 90)
collectStolenStroke.Parent = collectStolenBtn
collectStolenBtn.MouseButton1Click:Connect(function()
if not selectedPlot then return end
local teleportPart = selectedPlot:FindFirstChild("Teleport")
if not teleportPart or not teleportPart:IsA("BasePart") then
warn("Plot.Teleport not found or is not a BasePart")
return
end
local character = player.Character
local hrp = character and character:FindFirstChild("HumanoidRootPart")
if hrp then
hrp.CFrame = teleportPart.CFrame
end
end)
collectStolenBtn.MouseButton1Down:Connect(function()
TweenService:Create(collectStolenBtn, TweenInfo.new(0.08, Enum.EasingStyle.Linear),
{ BackgroundColor3 = Color3.fromRGB(25, 25, 25) }):Play()
end)
collectStolenBtn.MouseButton1Up:Connect(function()
TweenService:Create(collectStolenBtn, TweenInfo.new(0.12, Enum.EasingStyle.Linear),
{ BackgroundColor3 = Color3.fromRGB(45, 45, 45) }):Play()
end)
-- ── Row 5 (y=210): Auto Lock ──────────────────────────────────────────────
makeLabel("Auto lock", 210 + ROW_OFFSET)
local alSwitch, alKnob = makeSwitch(216 + ROW_OFFSET)
local function updateAutoLock(state)
autoLockEnabled = state
animateSwitch(alSwitch, alKnob, state)
if state then
startAutoLock()
end
end
alSwitch.MouseButton1Click:Connect(function()
updateAutoLock(not autoLockEnabled)
end)
-- ── Minimise toggle ───────────────────────────────────────────────────────
local function getMinimisableDescendants()
local list = {}
for _, obj in ipairs(frame:GetDescendants()) do
if obj ~= minBtn
and not minBtn:IsAncestorOf(obj)
and obj ~= cancel
and not cancel:IsAncestorOf(obj)
and (obj:IsA("TextLabel") or obj:IsA("TextButton")
or obj:IsA("TextBox") or obj:IsA("Frame")
or obj:IsA("UIStroke"))
then
table.insert(list, obj)
end
end
return list
end
minBtn.MouseButton1Click:Connect(function()
minimised = not minimised
local tweenInfo = TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
if minimised then
for _, obj in ipairs(getMinimisableDescendants()) do
if obj:IsA("TextLabel") or obj:IsA("TextButton") or obj:IsA("TextBox") then
TweenService:Create(obj, tweenInfo,
{ TextTransparency = 1, BackgroundTransparency = 1 }):Play()
elseif obj:IsA("Frame") then
TweenService:Create(obj, tweenInfo,
{ BackgroundTransparency = 1 }):Play()
elseif obj:IsA("UIStroke") then
TweenService:Create(obj, tweenInfo,
{ Transparency = 1 }):Play()
end
end
task.delay(0.2, function()
TweenService:Create(frame, tweenInfo,
{ Size = UDim2.fromOffset(350, MINI_HEIGHT) }):Play()
end)
minBtn.Text = "+"
else
TweenService:Create(frame, tweenInfo,
{ Size = UDim2.fromOffset(350, EXPANDED_HEIGHT) }):Play()
task.delay(0.2, function()
for _, obj in ipairs(getMinimisableDescendants()) do
if obj:IsA("TextLabel") or obj:IsA("TextButton") or obj:IsA("TextBox") then
TweenService:Create(obj, tweenInfo,
{ TextTransparency = 0, BackgroundTransparency = obj.BackgroundTransparency == 1
and (obj:IsA("TextLabel") and 1 or 0) or obj.BackgroundTransparency }):Play()
elseif obj:IsA("Frame") then
TweenService:Create(obj, tweenInfo,
{ BackgroundTransparency = 0 }):Play()
elseif obj:IsA("UIStroke") then
TweenService:Create(obj, tweenInfo,
{ Transparency = 0 }):Play()
end
end
end)
minBtn.Text = "−"
end
end)
-- Initialise all switches to off
updateAutoCollect(false)
updateSpeed(false)
updateAutoLock(false)
end
-- ─── Plot selection ───────────────────────────────────────────────────────────
for _, plot in ipairs(workspace.Plots:GetChildren()) do
local lockHitbox = plot:FindFirstChild("LockHitbox")
if lockHitbox and lockHitbox:IsA("BasePart") then
local highlight = Instance.new("Highlight")
highlight.Adornee = lockHitbox
highlight.FillColor = Color3.fromRGB(0, 170, 255)
highlight.FillTransparency = 0.6
highlight.OutlineColor = Color3.fromRGB(255, 255, 255)
highlight.OutlineTransparency = 0
highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
highlight.Parent = lockHitbox
highlights[lockHitbox] = highlight
end
end
clickConnection = mouse.Button1Down:Connect(function()
if finished then return end
local target = mouse.Target
if not target then return end
if highlights[target] then
finished = true
selectedPlot = target.Parent
cleanup()
task.spawn(createMainMenu)
end
end)
cancel.MouseButton1Click:Connect(function()
finished = true
cleanup()
task.spawn(unloadScript)
end)
chat is this good?