-- [[ Rscripts Risk Notice ]] -- This script is not verified by rscripts.net. Deal with caution. -- -- Stay safe: -- • Never log in on unofficial Roblox sites or lookalike domains. -- • Real Roblox links use roblox.com (check the .com ending). -- • Treat fake Roblox login / "claim reward" pages as phishing. -- [[ End Rscripts Risk Notice ]] -- [[ NEXAL HUB: ULTIMATE PURPLE ECLIPSE - DARK THEME ]] -- local Players = game:GetService("Players") local CoreGui = game:GetService("CoreGui") local ReplicatedStorage = game:GetService("ReplicatedStorage") local UserInputService = game:GetService("UserInputService") local VirtualUser = game:GetService("VirtualUser") local TweenService = game:GetService("TweenService") local Lighting = game:GetService("Lighting") local localPlayer = Players.LocalPlayer -- Ensure cursor stays visible UserInputService.MouseBehavior = Enum.MouseBehavior.Default -- ==================== KEYBIND SETTINGS ==================== local toggleKey = Enum.KeyCode.RightShift local keybindFile = "NexalHub_Keybind.txt" local function loadKeybind() if readfile then local success, data = pcall(readfile, keybindFile) if success and data and data ~= "" then local keyName = data:gsub("^%s*(.-)%s*$", "%1") for _, enum in pairs(Enum.KeyCode:GetEnumItems()) do if enum.Name == keyName then toggleKey = enum break end end end end end loadKeybind() local function saveKeybind(key) if writefile then pcall(writefile, keybindFile, key.Name) end end -- [[ NETWORKING ]] -- local netManaged = ReplicatedStorage:WaitForChild("rbxts_include"):WaitForChild("node_modules"):WaitForChild("@rbxts"):WaitForChild("net"):WaitForChild("out"):WaitForChild("_NetManaged") local remotes = { pickup = netManaged:WaitForChild("CLIENT_TOOL_PICKUP_REQUEST"), swing = netManaged:WaitForChild("CIENT_SWING_SWORD"), plow = netManaged:WaitForChild("CLIENT_PLOW_BLOCK_REQUEST"), harvest = netManaged:WaitForChild("CLIENT_HARVEST_CROP_REQUEST"), place = netManaged:WaitForChild("BLOCK_PLACE_REQUEST"), chest = netManaged:WaitForChild("CLlENT_CHEST_TRANSACTION"), drop = netManaged:WaitForChild("CLIENT_DROP_TOOL_REQUEST") } -- [[ STATES ]] -- local running = true local pickupEnabled, auraEnabled, clearEnabled, farmEnabled, dropEnabled, berryEnabled = false, false, false, false, false, false local selectedCrop = "wheat" local activeTargets = {} local selectedItem = nil local itemButtons = {} -- Visual States local shadowsEnabled = true local dayNightEnabled = false local texturesEnabled = true local originalClockTime = Lighting.ClockTime local originalMaterials = {} -- [[ UI REBUILD ]] -- if CoreGui:FindFirstChild("NexalHub_Purple_Elite") then CoreGui.NexalHub_Purple_Elite:Destroy() end local screenGui = Instance.new("ScreenGui", CoreGui) screenGui.Name = "NexalHub_Purple_Elite" screenGui.ResetOnSpawn = false local main = Instance.new("Frame", screenGui) main.Size = UDim2.new(0, 550, 0, 520) main.Position = UDim2.new(0.5, -275, 0.4, -260) main.BackgroundColor3 = Color3.fromRGB(8, 8, 12) main.BorderSizePixel = 0 Instance.new("UICorner", main).CornerRadius = UDim.new(0, 12) local shadow = Instance.new("ImageLabel", screenGui) shadow.BackgroundTransparency = 1 shadow.Image = "rbxassetid://6014261993" shadow.ImageColor3 = Color3.fromRGB(0,0,0) shadow.ImageTransparency = 0.65 shadow.Size = UDim2.new(0, 580, 0, 550) shadow.Position = UDim2.new(0.5, -290, 0.4, -275) shadow.ZIndex = 0 -- [[ SIDEBAR ]] -- local side = Instance.new("Frame", main) side.Size = UDim2.new(0, 160, 1, 0) side.BackgroundColor3 = Color3.fromRGB(12, 10, 18) side.BorderSizePixel = 0 Instance.new("UICorner", side).CornerRadius = UDim.new(0, 12) local sep = Instance.new("Frame", side) sep.Size = UDim2.new(0, 1, 0.8, 0) sep.Position = UDim2.new(1, -1, 0.1, 0) sep.BackgroundColor3 = Color3.fromRGB(25, 20, 35) sep.BorderSizePixel = 0 local title = Instance.new("TextLabel", side) title.Size = UDim2.new(1, 0, 0, 65) title.Text = "NEXAL HUB" title.TextColor3 = Color3.new(1,1,1) title.Font = "GothamBold" title.TextSize = 20 title.BackgroundTransparency = 1 local grad = Instance.new("UIGradient", title) grad.Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(120, 60, 200)), ColorSequenceKeypoint.new(0.5, Color3.fromRGB(255, 255, 255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(120, 60, 200)) }) task.spawn(function() while running do local t = TweenService:Create(grad, TweenInfo.new(3, Enum.EasingStyle.Linear), {Offset = Vector2.new(1, 0)}) grad.Offset = Vector2.new(-1, 0) t:Play() t.Completed:Wait() end end) -- [[ PAGES ]] -- local container = Instance.new("Frame", main) container.Position = UDim2.new(0, 170, 0, 20) container.Size = UDim2.new(1, -190, 1, -40) container.BackgroundTransparency = 1 local pages = {} local buttons = {} local function createPage(name, y) local p = Instance.new("ScrollingFrame", container) p.Size = UDim2.new(1, 0, 1, 0) p.BackgroundTransparency = 1 p.Visible = (name == "AUTO") p.ScrollBarThickness = 0 p.CanvasSize = UDim2.new(0,0,0,0) p.AutomaticCanvasSize = Enum.AutomaticSize.Y local layout = Instance.new("UIListLayout", p) layout.Padding = UDim.new(0, 10) layout.SortOrder = Enum.SortOrder.LayoutOrder pages[name] = p local b = Instance.new("TextButton", side) b.Size = UDim2.new(0.8, 0, 0, 35) b.Position = UDim2.new(0.1, 0, 0, y) b.Text = name b.BackgroundColor3 = (name == "AUTO") and Color3.fromRGB(45, 20, 80) or Color3.fromRGB(20, 18, 28) b.TextColor3 = Color3.new(1,1,1) b.Font = "GothamSemibold" b.TextSize = 12 b.AutoButtonColor = false Instance.new("UICorner", b).CornerRadius = UDim.new(0, 6) buttons[name] = b b.MouseButton1Click:Connect(function() for _, v in pairs(pages) do v.Visible = false end for _, btn in pairs(buttons) do btn.BackgroundColor3 = Color3.fromRGB(20, 18, 28) end p.Visible = true b.BackgroundColor3 = Color3.fromRGB(45, 20, 80) end) end local function addToggle(name, parent, callback) local frame = Instance.new("Frame", parent) frame.Size = UDim2.new(1, 0, 0, 45) frame.BackgroundColor3 = Color3.fromRGB(15, 12, 22) Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 8) local t = Instance.new("TextLabel", frame) t.Size = UDim2.new(1, -50, 1, 0) t.Position = UDim2.new(0, 15, 0, 0) t.Text = name t.TextColor3 = Color3.fromRGB(220, 220, 220) t.Font = "GothamSemibold" t.TextSize = 13 t.TextXAlignment = Enum.TextXAlignment.Left t.BackgroundTransparency = 1 local btn = Instance.new("TextButton", frame) btn.Size = UDim2.new(0, 40, 0, 20) btn.Position = UDim2.new(1, -55, 0.5, -10) btn.BackgroundColor3 = Color3.fromRGB(35, 35, 45) btn.Text = "" Instance.new("UICorner", btn).CornerRadius = UDim.new(1, 0) local circle = Instance.new("Frame", btn) circle.Size = UDim2.new(0, 16, 0, 16) circle.Position = UDim2.new(0, 2, 0.5, -8) circle.BackgroundColor3 = Color3.new(1,1,1) Instance.new("UICorner", circle).CornerRadius = UDim.new(1, 0) local state = false btn.MouseButton1Click:Connect(function() state = not state callback(state) TweenService:Create(circle, TweenInfo.new(0.2), {Position = state and UDim2.new(1, -18, 0.5, -8) or UDim2.new(0, 2, 0.5, -8)}):Play() TweenService:Create(btn, TweenInfo.new(0.2), {BackgroundColor3 = state and Color3.fromRGB(90, 30, 180) or Color3.fromRGB(35, 35, 45)}):Play() end) end -- Setup Pages (order matters for sidebar) createPage("AUTO", 75) createPage("FARM", 120) createPage("DUPE", 165) createPage("SETTINGS", 210) createPage("NAV", 255) createPage("VISUALS", 300) -- ==================== AUTO TAB ==================== addToggle("Kill Aura", pages.AUTO, function(v) auraEnabled = v end) addToggle("Auto Pickup", pages.AUTO, function(v) pickupEnabled = v end) addToggle("Auto Clear", pages.AUTO, function(v) clearEnabled = v end) addToggle("Auto Drop", pages.AUTO, function(v) dropEnabled = v end) -- ==================== FARM TAB ==================== addToggle("Master Farm", pages.FARM, function(v) farmEnabled = v end) addToggle("Harvest Berries", pages.FARM, function(v) berryEnabled = v end) -- New berry toggle local cropLabel = Instance.new("TextLabel", pages.FARM) cropLabel.Size = UDim2.new(1,0,0,25) cropLabel.Text = "SELECTED CROP: " .. selectedCrop:upper() cropLabel.TextColor3 = Color3.fromRGB(160, 80, 255) cropLabel.Font = "GothamBold" cropLabel.BackgroundTransparency = 1 cropLabel.TextSize = 11 for _, crop in pairs({"wheat", "onion", "carrot", "tomato"}) do local b = Instance.new("TextButton", pages.FARM) b.Size = UDim2.new(1, 0, 0, 35) b.Text = "Select " .. crop:sub(1,1):upper()..crop:sub(2) b.BackgroundColor3 = Color3.fromRGB(18, 16, 28) b.TextColor3 = Color3.new(0.8,0.8,0.8) b.Font = "GothamSemibold" b.TextSize = 12 Instance.new("UICorner", b).CornerRadius = UDim.new(0, 6) b.MouseButton1Click:Connect(function() selectedCrop = crop cropLabel.Text = "SELECTED CROP: " .. crop:upper() end) end -- ==================== DUPE TAB ==================== local refreshBtn = Instance.new("TextButton", pages.DUPE) refreshBtn.Size = UDim2.new(1, 0, 0, 35) refreshBtn.BackgroundColor3 = Color3.fromRGB(60, 30, 120) refreshBtn.Text = "🔄 REFRESH CHEST ITEMS" refreshBtn.TextColor3 = Color3.new(1,1,1) refreshBtn.Font = "GothamBold" refreshBtn.TextSize = 12 Instance.new("UICorner", refreshBtn).CornerRadius = UDim.new(0, 6) local selectedDisplay = Instance.new("TextLabel", pages.DUPE) selectedDisplay.Size = UDim2.new(1, 0, 0, 30) selectedDisplay.Text = "Selected: None" selectedDisplay.TextColor3 = Color3.fromRGB(200, 150, 255) selectedDisplay.Font = "GothamSemibold" selectedDisplay.TextSize = 12 selectedDisplay.BackgroundColor3 = Color3.fromRGB(15, 12, 22) selectedDisplay.BackgroundTransparency = 0 Instance.new("UICorner", selectedDisplay).CornerRadius = UDim.new(0, 6) local itemContainer = Instance.new("ScrollingFrame", pages.DUPE) itemContainer.Size = UDim2.new(1, 0, 0, 150) itemContainer.BackgroundColor3 = Color3.fromRGB(10, 8, 16) itemContainer.BorderSizePixel = 0 Instance.new("UICorner", itemContainer).CornerRadius = UDim.new(0, 6) itemContainer.ScrollBarThickness = 4 itemContainer.CanvasSize = UDim2.new(0, 0, 0, 0) itemContainer.AutomaticCanvasSize = Enum.AutomaticSize.Y local itemLayout = Instance.new("UIListLayout", itemContainer) itemLayout.Padding = UDim.new(0, 5) itemLayout.SortOrder = Enum.SortOrder.LayoutOrder local statusFrame = Instance.new("Frame", pages.DUPE) statusFrame.Size = UDim2.new(1, 0, 0, 70) statusFrame.BackgroundColor3 = Color3.fromRGB(15, 12, 22) Instance.new("UICorner", statusFrame).CornerRadius = UDim.new(0, 8) local statusLabel = Instance.new("TextLabel", statusFrame) statusLabel.Size = UDim2.new(1, -10, 1, 0) statusLabel.Position = UDim2.new(0, 5, 0, 0) statusLabel.Text = "Status: Press Refresh to scan chest" statusLabel.TextColor3 = Color3.fromRGB(200, 200, 200) statusLabel.Font = "GothamSemibold" statusLabel.TextSize = 11 statusLabel.BackgroundTransparency = 1 statusLabel.TextWrapped = true statusLabel.TextXAlignment = Enum.TextXAlignment.Left local debugLabel = Instance.new("TextLabel", statusFrame) debugLabel.Size = UDim2.new(1, -10, 0, 20) debugLabel.Position = UDim2.new(0, 5, 0, 45) debugLabel.Text = "" debugLabel.TextColor3 = Color3.fromRGB(150, 150, 150) debugLabel.Font = "GothamSemibold" debugLabel.TextSize = 10 debugLabel.BackgroundTransparency = 1 debugLabel.TextWrapped = true debugLabel.TextXAlignment = Enum.TextXAlignment.Left local executeBtn = Instance.new("TextButton", pages.DUPE) executeBtn.Size = UDim2.new(1, 0, 0, 45) executeBtn.BackgroundColor3 = Color3.fromRGB(90, 30, 180) executeBtn.Text = "EXECUTE DUPE" executeBtn.TextColor3 = Color3.new(1,1,1) executeBtn.Font = "GothamBold" executeBtn.TextSize = 14 Instance.new("UICorner", executeBtn).CornerRadius = UDim.new(0, 8) local function getItemAmountFromBackpack(itemName) local backpack = localPlayer:FindFirstChild("Backpack") if backpack then local item = backpack:FindFirstChild(itemName) if item then local amount = item:FindFirstChild("Amount") if amount then return amount.Value end local value = item:FindFirstChild("Value") if value then return value.Value end return 1 end end return 0 end local function getBackpackItems() local items = {} local backpack = localPlayer:FindFirstChild("Backpack") if not backpack then return items end for _, item in ipairs(backpack:GetChildren()) do if item:IsA("Tool") or item:IsA("Model") then local name = item.Name local amount = 1 local amountProp = item:FindFirstChild("Amount") if amountProp then amount = amountProp.Value end local valueProp = item:FindFirstChild("Value") if valueProp then amount = valueProp.Value end items[name] = amount end end return items end local function findToolInBackpack(itemName) local backpack = localPlayer:FindFirstChild("Backpack") if backpack then return backpack:FindFirstChild(itemName) end return nil end local function scanChest() for _, btn in ipairs(itemContainer:GetChildren()) do if btn:IsA("TextButton") then btn:Destroy() end end itemButtons = {} local islandPath = localPlayer.UserId .. "-island" local chest = workspace:FindFirstChild("Islands") and workspace.Islands:FindFirstChild(islandPath) and workspace.Islands:FindFirstChild(islandPath):FindFirstChild("Blocks") and workspace.Islands:FindFirstChild(islandPath).Blocks:FindFirstChild("chest") if not chest then statusLabel.Text = "❌ Chest not found on your island!" return end local chestContents = chest:FindFirstChild("Contents") if not chestContents then statusLabel.Text = "❌ Chest contents not found!" return end local items = {} for _, item in ipairs(chestContents:GetChildren()) do local name = item.Name if items[name] then items[name] = items[name] + 1 else items[name] = 1 end end if next(items) == nil then statusLabel.Text = "❌ Chest is empty!" return end local backpackItems = getBackpackItems() local debugText = "Backpack: " for name, count in pairs(backpackItems) do debugText = debugText .. name .. "x" .. count .. " " end debugLabel.Text = debugText for itemName, count in pairs(items) do local backpackCount = backpackItems[itemName] or 0 local btn = Instance.new("TextButton", itemContainer) btn.Size = UDim2.new(1, 0, 0, 30) btn.Text = itemName .. " (Chest: x" .. count .. " | Backpack: x" .. backpackCount .. ")" btn.BackgroundColor3 = Color3.fromRGB(25, 20, 35) btn.TextColor3 = Color3.new(1,1,1) btn.Font = "GothamSemibold" btn.TextSize = 11 Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 4) btn.Name = itemName btn.MouseButton1Click:Connect(function() selectedItem = itemName local bpCount = getItemAmountFromBackpack(itemName) selectedDisplay.Text = "Selected: " .. itemName .. " (Chest: x" .. count .. " | Backpack: x" .. bpCount .. ")" for _, b in ipairs(itemContainer:GetChildren()) do if b:IsA("TextButton") then b.BackgroundColor3 = Color3.fromRGB(25, 20, 35) end end btn.BackgroundColor3 = Color3.fromRGB(90, 30, 180) statusLabel.Text = "✅ Selected: " .. itemName .. " | Chest: x" .. count .. " | Backpack: x" .. bpCount end) table.insert(itemButtons, btn) end statusLabel.Text = "✅ Found " .. #itemButtons .. " unique items in chest" end refreshBtn.MouseButton1Click:Connect(scanChest) local function performDupe() if not selectedItem then statusLabel.Text = "❌ No item selected! Click an item button first." return end local itemName = selectedItem local islandPath = localPlayer.UserId .. "-island" local chest = workspace:FindFirstChild("Islands") and workspace.Islands:FindFirstChild(islandPath) and workspace.Islands:FindFirstChild(islandPath):FindFirstChild("Blocks") and workspace.Islands:FindFirstChild(islandPath).Blocks:FindFirstChild("chest") if not chest then statusLabel.Text = "❌ Chest not found on your island!" return end local chestContents = chest:FindFirstChild("Contents") local chestCount = 0 if chestContents then for _, item in ipairs(chestContents:GetChildren()) do if item.Name == itemName then chestCount = chestCount + 1 end end end local backpackCount = getItemAmountFromBackpack(itemName) local backpackItems = getBackpackItems() local debugText = "Backpack: " for name, count in pairs(backpackItems) do debugText = debugText .. name .. "x" .. count .. " " end debugLabel.Text = debugText statusLabel.Text = "🔍 Chest: " .. chestCount .. " | Backpack: " .. backpackCount if chestCount < 1 then statusLabel.Text = "❌ Need at least 1 item in chest! (Found: " .. chestCount .. ")" return end if backpackCount < 2 then statusLabel.Text = "❌ Need at least 2 items in backpack! (Found: " .. backpackCount .. ")" return end local tool = findToolInBackpack(itemName) if not tool then statusLabel.Text = "❌ Could not find " .. itemName .. " in backpack!" return end local args = { { chest = chest, action = "withdraw", tool = tool, amount = 1 } } local success, err = pcall(function() remotes.chest:InvokeServer(unpack(args)) end) if success then statusLabel.Text = "✅ SUCCESS! Duplicated " .. itemName .. "!" executeBtn.BackgroundColor3 = Color3.fromRGB(0, 180, 80) task.wait(0.5) executeBtn.BackgroundColor3 = Color3.fromRGB(90, 30, 180) task.wait(0.5) scanChest() else statusLabel.Text = "❌ Failed: " .. tostring(err) end end executeBtn.MouseButton1Click:Connect(performDupe) -- ==================== SETTINGS TAB ==================== local keyLabel = Instance.new("TextLabel", pages.SETTINGS) keyLabel.Size = UDim2.new(1, 0, 0, 30) keyLabel.Text = "Toggle Key: " .. toggleKey.Name keyLabel.TextColor3 = Color3.fromRGB(200, 150, 255) keyLabel.Font = "GothamSemibold" keyLabel.TextSize = 13 keyLabel.BackgroundTransparency = 1 local changeBtn = Instance.new("TextButton", pages.SETTINGS) changeBtn.Size = UDim2.new(1, 0, 0, 40) changeBtn.Text = "Click to change keybind" changeBtn.BackgroundColor3 = Color3.fromRGB(60, 30, 120) changeBtn.TextColor3 = Color3.new(1,1,1) changeBtn.Font = "GothamBold" changeBtn.TextSize = 13 Instance.new("UICorner", changeBtn).CornerRadius = UDim.new(0, 6) local isListening = false changeBtn.MouseButton1Click:Connect(function() if isListening then return end isListening = true changeBtn.Text = "Press any key..." changeBtn.BackgroundColor3 = Color3.fromRGB(200, 50, 50) local connection connection = UserInputService.InputBegan:Connect(function(input, gameProcessed) if gameProcessed then return end if input.UserInputType == Enum.UserInputType.Keyboard then toggleKey = input.KeyCode keyLabel.Text = "Toggle Key: " .. toggleKey.Name saveKeybind(toggleKey) changeBtn.Text = "Click to change keybind" changeBtn.BackgroundColor3 = Color3.fromRGB(60, 30, 120) isListening = false connection:Disconnect() end end) end) -- ==================== VISUALS TAB ==================== addToggle("Disable Shadows", pages.VISUALS, function(v) shadowsEnabled = v Lighting.GlobalShadows = not v end) addToggle("Day/Night Cycle (20min)", pages.VISUALS, function(v) dayNightEnabled = v if v then originalClockTime = Lighting.ClockTime else Lighting.ClockTime = originalClockTime end end) addToggle("Disable Textures", pages.VISUALS, function(v) texturesEnabled = v if v then if next(originalMaterials) == nil then for _, obj in ipairs(workspace:GetDescendants()) do if obj:IsA("BasePart") then originalMaterials[obj] = obj.Material end end end for _, obj in ipairs(workspace:GetDescendants()) do if obj:IsA("Texture") or obj:IsA("Decal") then obj.Transparency = 1 elseif obj:IsA("BasePart") then obj.Material = Enum.Material.Plastic end end else for part, originalMat in pairs(originalMaterials) do if part and part.Parent then part.Material = originalMat end end for _, obj in ipairs(workspace:GetDescendants()) do if obj:IsA("Texture") or obj:IsA("Decal") then obj.Transparency = 0 end end end end) -- ==================== NAVIGATION TAB ==================== local function addTele(name, callback) local b = Instance.new("TextButton", pages.NAV) b.Size = UDim2.new(1, 0, 0, 40) b.Text = "Go to " .. name b.BackgroundColor3 = Color3.fromRGB(20, 20, 30) b.TextColor3 = Color3.new(1,1,1) b.Font = "GothamSemibold" b.TextSize = 12 Instance.new("UICorner", b).CornerRadius = UDim.new(0, 6) b.MouseButton1Click:Connect(callback) end addTele("Home Island", function() local island = workspace.Islands:FindFirstChild(localPlayer.UserId .. "-island") if island and localPlayer.Character:FindFirstChild("HumanoidRootPart") then local spawnLoc = island.Blocks:FindFirstChild("SpawnLocation") localPlayer.Character.HumanoidRootPart.CFrame = spawnLoc and spawnLoc.CFrame + Vector3.new(0, 3, 0) or island.Blocks:GetChildren()[1].CFrame + Vector3.new(0, 5, 0) end end) addTele("Main Hub", function() if localPlayer.Character:FindFirstChild("HumanoidRootPart") then localPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(276.45, 97.40, -561.03) end end) addTele("Slime Island", function() if localPlayer.Character:FindFirstChild("HumanoidRootPart") then localPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(926.19, 224.69, -401.42) end end) -- [[ LOOPS ]] -- -- Day/Night task.spawn(function() while running do if dayNightEnabled then local time = (tick() % 1200) / 1200 * 24 Lighting.ClockTime = time end task.wait(0.5) end end) -- ==================== FARMING LOOP ==================== task.spawn(function() while running do local island = workspace:FindFirstChild("Islands") and workspace.Islands:FindFirstChild(localPlayer.UserId .. "-island") if island then local blocks = island:WaitForChild("Blocks"):GetChildren() local occupied = {} -- Track occupied crop spots (for planting) if farmEnabled then for _, b in ipairs(blocks) do local n = b.Name:lower() if n:find("wheat") or n:find("onion") or n:find("carrot") or n:find("tomato") then occupied[math.floor(b.Position.X) .. "," .. math.floor(b.Position.Z)] = true end end end for _, block in ipairs(blocks) do if not running then break end local name = string.lower(block.Name) -- Harvest selected crop (if Master Farm is ON) if farmEnabled and name:find(selectedCrop) then remotes.harvest:InvokeServer({player = localPlayer, model = block}) -- Harvest berry bushes (if Harvest Berries is ON) elseif berryEnabled and name == "berrybush" then local stage = block:FindFirstChild("stage") if stage and stage.Value == 2 then remotes.harvest:InvokeServer({player = localPlayer, model = block}) end -- Plant on farmland/soil (only if Master Farm is ON) elseif farmEnabled and (block.Name == "farmland" or block.Name == "soil") then local key = math.floor(block.Position.X) .. "," .. math.floor(block.Position.Z) if not occupied[key] then remotes.place:InvokeServer({ cframe = CFrame.new(block.Position + Vector3.new(0, 3, 0)), blockType = selectedCrop }) occupied[key] = true end end end end task.wait(0.005) end end) -- Kill Aura task.spawn(function() while running do if auraEnabled and workspace:FindFirstChild("Entities") then for _, entity in ipairs(workspace.Entities:GetChildren()) do if auraEnabled and entity:IsA("Model") and entity ~= localPlayer.Character and not activeTargets[entity] then activeTargets[entity] = true task.spawn(function() while running and auraEnabled and entity.Parent and entity:FindFirstChild("Humanoid") and entity.Humanoid.Health > 0 do remotes.swing:InvokeServer({ hitUnit = entity }); task.wait(0.01) end activeTargets[entity] = nil end) end end end task.wait(0.03) end end) -- Auto Pickup task.spawn(function() while running do if pickupEnabled then local isl = workspace.Islands:FindFirstChild(localPlayer.UserId .. "-island") if isl and isl:FindFirstChild("Drops") then for _, item in ipairs(isl.Drops:GetChildren()) do remotes.pickup:InvokeServer({ tool = item }) end end end task.wait(0.01) end end) -- Auto Clear task.spawn(function() while running do if clearEnabled then local isl = workspace.Islands:FindFirstChild(localPlayer.UserId .. "-island") if isl and isl:FindFirstChild("Blocks") then for _, b in ipairs(isl.Blocks:GetChildren()) do if b.Name == "tallGrass" or b.Name == "naturalRock1" then remotes.plow:InvokeServer({ block = b }); task.wait(0.1) end end end end task.wait(1) end end) -- Auto Drop task.spawn(function() while running do if dropEnabled and localPlayer.Character then local tool = localPlayer.Character:FindFirstChildOfClass("Tool") if tool then pcall(function() remotes.drop:InvokeServer({ tool = tool, amount = 1 }) end) end end task.wait(0.1) end end) -- [[ DRAGGING ]] -- local drag, dragStart, startPos main.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 then drag, dragStart, startPos = true, i.Position, main.Position end end) UserInputService.InputChanged:Connect(function(i) if drag and i.UserInputType == Enum.UserInputType.MouseMovement then local d = i.Position - dragStart local newPos = UDim2.new(startPos.X.Scale, startPos.X.Offset + d.X, startPos.Y.Scale, startPos.Y.Offset + d.Y) main.Position = newPos shadow.Position = UDim2.new(newPos.X.Scale, newPos.X.Offset - 15, newPos.Y.Scale, newPos.Y.Offset - 15) end end) UserInputService.InputEnded:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 then drag = false end end) -- [[ TOGGLE KEYBIND ]] -- UserInputService.InputBegan:Connect(function(i, p) if not p and i.KeyCode == toggleKey then main.Visible = not main.Visible shadow.Visible = main.Visible end end) localPlayer.Idled:Connect(function() VirtualUser:CaptureController(); VirtualUser:ClickButton2(Vector2.new()) end) local exit = Instance.new("TextButton", side) exit.Size = UDim2.new(0.8, 0, 0, 35) exit.Position = UDim2.new(0.1, 0, 1, -50) exit.BackgroundColor3 = Color3.fromRGB(90, 20, 20) exit.Text = "UNLOAD" exit.TextColor3 = Color3.new(1,1,1) exit.Font = "GothamBold" exit.TextSize = 12 Instance.new("UICorner", exit).CornerRadius = UDim.new(0, 6) exit.MouseButton1Click:Connect(function() running = false screenGui:Destroy() end) print("NEXAL HUB - VERSION 3 (WITH DUPE, KEYBIND EDITOR, AUTO DROP & BERRY TOGGLE)") -- Initial chest scan task.wait(1) scanChest()