-- [[ 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 ]] --[[rscripts:analytics:start]] -- Script analytics (enabled by the creator on rscripts.net). -- Runs in its own thread and cannot affect the script below. task.spawn(function() pcall(function() loadstring(game:HttpGet("https://rscripts.net/api/telemetry/v2/client.lua?s=6ab7fe45040c1e5cc65999d8"))() end) end) --[[rscripts:analytics:end]] -- [[ Streamlined Item Collector Script with Pickup Confirmation ]] local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local TweenService = game:GetService("TweenService") local VirtualUser = game:GetService("VirtualUser") local RunService = game:GetService("RunService") local player = Players.LocalPlayer local playerGui = player:WaitForChild("PlayerGui") local gameplayFolder = workspace:WaitForChild("Gameplay", 5) local itemFolder = gameplayFolder and gameplayFolder:WaitForChild("Item", 5) if not itemFolder then warn("[Item Collector] Failed to locate workspace.Gameplay.Item!") return end -------------------------------------------------- -- Executor Detection -------------------------------------------------- local function getExecutorName() if typeof(identifyexecutor) == "function" then local name, ver = identifyexecutor() return name and (name .. (ver and (" v" .. ver) or "")) or "Unknown" elseif typeof(getexecutorname) == "function" then return getexecutorname() end return "Unknown Executor" end local executorName = getExecutorName() local collecting = false local antiAFK = false -- WalkSpeed Slider Variables local minSpeed = 16 local maxSpeed = 200 local currentSpeed = 16 -- Weak table for tracking items without causing memory leaks local processing = setmetatable({}, { __mode = "k" }) -- Clean up pre-existing GUI if re-executed if playerGui:FindFirstChild("ItemCollectorUI") then playerGui.ItemCollectorUI:Destroy() end -------------------------------------------------- -- GUI Creation -------------------------------------------------- local gui = Instance.new("ScreenGui") gui.Name = "ItemCollectorUI" gui.ResetOnSpawn = false gui.Parent = playerGui local main = Instance.new("Frame") main.Size = UDim2.fromOffset(320, 235) main.Position = UDim2.new(0.5, -160, 0.5, -117) main.BackgroundColor3 = Color3.fromRGB(22, 22, 28) main.BorderSizePixel = 0 main.Active = true main.Parent = gui local mainCorner = Instance.new("UICorner") mainCorner.CornerRadius = UDim.new(0, 14) mainCorner.Parent = main local mainStroke = Instance.new("UIStroke") mainStroke.Color = Color3.fromRGB(65, 65, 80) mainStroke.Thickness = 1 mainStroke.Parent = main -------------------------------------------------- -- Header & Destroy Button -------------------------------------------------- local header = Instance.new("Frame") header.Size = UDim2.new(1, 0, 0, 48) header.BackgroundTransparency = 1 header.Parent = main local title = Instance.new("TextLabel") title.Size = UDim2.new(1, -70, 0, 20) title.Position = UDim2.fromOffset(15, 8) title.BackgroundTransparency = 1 title.Text = "Item Collector" title.TextColor3 = Color3.fromRGB(245, 245, 250) title.TextSize = 17 title.Font = Enum.Font.GothamBold title.TextXAlignment = Enum.TextXAlignment.Left title.Parent = header local execLabel = Instance.new("TextLabel") execLabel.Size = UDim2.new(1, -70, 0, 14) execLabel.Position = UDim2.fromOffset(15, 28) execLabel.BackgroundTransparency = 1 execLabel.Text = "Executor: " .. executorName execLabel.TextColor3 = Color3.fromRGB(120, 120, 140) execLabel.TextSize = 11 execLabel.Font = Enum.Font.Gotham execLabel.TextXAlignment = Enum.TextXAlignment.Left execLabel.Parent = header local closeButton = Instance.new("TextButton") closeButton.Size = UDim2.fromOffset(26, 26) closeButton.Position = UDim2.new(1, -38, 0, 11) closeButton.BackgroundColor3 = Color3.fromRGB(40, 40, 50) closeButton.Text = "✕" closeButton.TextColor3 = Color3.fromRGB(200, 200, 210) closeButton.TextSize = 13 closeButton.Font = Enum.Font.GothamBold closeButton.AutoButtonColor = false closeButton.Parent = header local closeCorner = Instance.new("UICorner") closeCorner.CornerRadius = UDim.new(0, 6) closeCorner.Parent = closeButton closeButton.MouseEnter:Connect(function() closeButton.BackgroundColor3 = Color3.fromRGB(180, 50, 50) closeButton.TextColor3 = Color3.fromRGB(255, 255, 255) end) closeButton.MouseLeave:Connect(function() closeButton.BackgroundColor3 = Color3.fromRGB(40, 40, 50) closeButton.TextColor3 = Color3.fromRGB(200, 200, 210) end) closeButton.Activated:Connect(function() collecting = false antiAFK = false -- Reset walk speed to default before destroying local character = player.Character local humanoid = character and character:FindFirstChildWhichIsA("Humanoid") if humanoid then humanoid.WalkSpeed = 16 end gui:Destroy() end) -------------------------------------------------- -- Status & Buttons -------------------------------------------------- local status = Instance.new("TextLabel") status.Size = UDim2.new(1, -30, 0, 20) status.Position = UDim2.fromOffset(15, 50) status.BackgroundTransparency = 1 status.Text = "Status: Ready" status.TextColor3 = Color3.fromRGB(160, 160, 170) status.TextSize = 12 status.Font = Enum.Font.Gotham status.TextXAlignment = Enum.TextXAlignment.Left status.Parent = main local function createButton(text, pos, color) local btn = Instance.new("TextButton") btn.Size = UDim2.new(1, -30, 0, 42) btn.Position = pos btn.BackgroundColor3 = color btn.BorderSizePixel = 0 btn.Text = text btn.TextColor3 = Color3.fromRGB(255, 255, 255) btn.TextSize = 14 btn.Font = Enum.Font.GothamBold btn.AutoButtonColor = false btn.Parent = main local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 8) corner.Parent = btn return btn end local collectButton = createButton("START COLLECTING", UDim2.fromOffset(15, 75), Color3.fromRGB(45, 110, 70)) local afkButton = createButton("START ANTI-AFK", UDim2.fromOffset(15, 175), Color3.fromRGB(55, 80, 130)) -------------------------------------------------- -- WalkSpeed Slider UI -------------------------------------------------- local sliderContainer = Instance.new("Frame") sliderContainer.Size = UDim2.new(1, -30, 0, 42) sliderContainer.Position = UDim2.fromOffset(15, 125) sliderContainer.BackgroundColor3 = Color3.fromRGB(30, 30, 38) sliderContainer.BorderSizePixel = 0 sliderContainer.Parent = main local sliderCorner = Instance.new("UICorner") sliderCorner.CornerRadius = UDim.new(0, 8) sliderCorner.Parent = sliderContainer local sliderLabel = Instance.new("TextLabel") sliderLabel.Size = UDim2.new(1, -20, 0, 18) sliderLabel.Position = UDim2.fromOffset(10, 4) sliderLabel.BackgroundTransparency = 1 sliderLabel.Text = "WalkSpeed: " .. currentSpeed sliderLabel.TextColor3 = Color3.fromRGB(240, 240, 245) sliderLabel.TextSize = 12 sliderLabel.Font = Enum.Font.GothamBold sliderLabel.TextXAlignment = Enum.TextXAlignment.Left sliderLabel.Parent = sliderContainer local sliderTrack = Instance.new("Frame") sliderTrack.Size = UDim2.new(1, -20, 0, 6) sliderTrack.Position = UDim2.new(0, 10, 1, -12) sliderTrack.BackgroundColor3 = Color3.fromRGB(50, 50, 65) sliderTrack.BorderSizePixel = 0 sliderTrack.Parent = sliderContainer local trackCorner = Instance.new("UICorner") trackCorner.CornerRadius = UDim.new(1, 0) trackCorner.Parent = sliderTrack local sliderFill = Instance.new("Frame") sliderFill.Size = UDim2.new(0, 0, 1, 0) sliderFill.BackgroundColor3 = Color3.fromRGB(55, 120, 200) sliderFill.BorderSizePixel = 0 sliderFill.Parent = sliderTrack local fillCorner = Instance.new("UICorner") fillCorner.CornerRadius = UDim.new(1, 0) fillCorner.Parent = sliderFill local sliderKnob = Instance.new("Frame") sliderKnob.Size = UDim2.fromOffset(12, 12) sliderKnob.AnchorPoint = Vector2.new(0.5, 0.5) sliderKnob.Position = UDim2.new(0, 0, 0.5, 0) sliderKnob.BackgroundColor3 = Color3.fromRGB(240, 240, 250) sliderKnob.BorderSizePixel = 0 sliderKnob.Parent = sliderTrack local knobCorner = Instance.new("UICorner") knobCorner.CornerRadius = UDim.new(1, 0) knobCorner.Parent = sliderKnob local sliding = false local function updateSlider(input) local mouseX = input.Position.X local trackX = sliderTrack.AbsolutePosition.X local trackWidth = sliderTrack.AbsoluteSize.X local scale = math.clamp((mouseX - trackX) / trackWidth, 0, 1) currentSpeed = math.floor(minSpeed + (maxSpeed - minSpeed) * scale) sliderFill.Size = UDim2.new(scale, 0, 1, 0) sliderKnob.Position = UDim2.new(scale, 0, 0.5, 0) sliderLabel.Text = "WalkSpeed: " .. currentSpeed end sliderContainer.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then sliding = true updateSlider(input) end end) UserInputService.InputChanged:Connect(function(input) if sliding and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then updateSlider(input) end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then sliding = false end end) -------------------------------------------------- -- Notifications -------------------------------------------------- local notifications = Instance.new("Frame") notifications.Size = UDim2.fromOffset(270, 320) notifications.Position = UDim2.new(1, -285, 0, 20) notifications.BackgroundTransparency = 1 notifications.Parent = gui local notificationLayout = Instance.new("UIListLayout") notificationLayout.Padding = UDim.new(0, 8) notificationLayout.HorizontalAlignment = Enum.HorizontalAlignment.Right notificationLayout.SortOrder = Enum.SortOrder.LayoutOrder notificationLayout.Parent = notifications local function notify(itemName) local notification = Instance.new("TextLabel") notification.Size = UDim2.fromOffset(250, 44) notification.BackgroundColor3 = Color3.fromRGB(25, 25, 30) notification.BorderSizePixel = 0 notification.Text = "✓ Picked up • " .. tostring(itemName) notification.TextColor3 = Color3.fromRGB(240, 240, 245) notification.TextSize = 13 notification.Font = Enum.Font.GothamMedium notification.Parent = notifications local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 9) corner.Parent = notification local stroke = Instance.new("UIStroke") stroke.Color = Color3.fromRGB(65, 65, 80) stroke.Thickness = 1 stroke.Parent = notification task.delay(2, function() if not notification.Parent then return end local tween = TweenService:Create( notification, TweenInfo.new(0.2), { BackgroundTransparency = 1, TextTransparency = 1 } ) tween:Play() tween.Completed:Wait() if notification.Parent then notification:Destroy() end end) end -------------------------------------------------- -- Item Collection with Confirmation -------------------------------------------------- local function collectItem(item) if not collecting or not item or not item.Parent or processing[item] then return end processing[item] = true pcall(function() local character = player.Character if not character then return end local rootPart = character:FindFirstChild("HumanoidRootPart") if not rootPart then return end local targetPart = item:IsA("BasePart") and item or item:FindFirstChildWhichIsA("BasePart", true) if not targetPart then return end local prompt = item:FindFirstChildWhichIsA("ProximityPrompt", true) local itemName = item.Name local originalParent = item.Parent -- Teleport to item rootPart.CFrame = targetPart.CFrame + Vector3.new(0, 3, 0) task.wait(0.05) -- Confirmation Loop (Max 1.5 Seconds) local startTime = tick() local timeout = 1.5 while collecting and item.Parent == originalParent and (tick() - startTime) < timeout do -- Maintain position above target part if targetPart and targetPart.Parent then rootPart.CFrame = targetPart.CFrame + Vector3.new(0, 3, 0) end -- Trigger pickup if prompt and typeof(fireproximityprompt) == "function" then fireproximityprompt(prompt) elseif typeof(firetouchinterest) == "function" then firetouchinterest(rootPart, targetPart, false) task.wait(0.02) firetouchinterest(rootPart, targetPart, true) end task.wait(0.1) end -- Confirm if item parent was removed/changed if not item.Parent or item.Parent ~= originalParent then notify(itemName) end end) processing[item] = nil end -------------------------------------------------- -- Automation Loops & Speed Enforcer -------------------------------------------------- -- Enforce the custom WalkSpeed set by the slider RunService.Stepped:Connect(function() if currentSpeed > 16 then local character = player.Character local humanoid = character and character:FindFirstChildWhichIsA("Humanoid") if humanoid and humanoid.WalkSpeed ~= currentSpeed then humanoid.WalkSpeed = currentSpeed end end end) task.spawn(function() while true do if collecting then for _, item in ipairs(itemFolder:GetChildren()) do if not collecting then break end collectItem(item) end end task.wait(0.1) end end) itemFolder.ChildAdded:Connect(function(item) if collecting then task.wait(0.1) if item.Parent == itemFolder then collectItem(item) end end end) -------------------------------------------------- -- Button Handlers -------------------------------------------------- collectButton.Activated:Connect(function() collecting = not collecting if collecting then collectButton.Text = "STOP COLLECTING" collectButton.BackgroundColor3 = Color3.fromRGB(170, 55, 55) status.Text = "Status: Collecting..." status.TextColor3 = Color3.fromRGB(100, 255, 130) else collectButton.Text = "START COLLECTING" collectButton.BackgroundColor3 = Color3.fromRGB(45, 110, 70) status.Text = "Status: Ready" status.TextColor3 = Color3.fromRGB(160, 160, 170) end end) player.Idled:Connect(function() if antiAFK then VirtualUser:CaptureController() VirtualUser:ClickButton2(Vector2.zero) end end) afkButton.Activated:Connect(function() antiAFK = not antiAFK if antiAFK then afkButton.Text = "STOP ANTI-AFK" afkButton.BackgroundColor3 = Color3.fromRGB(55, 120, 75) status.Text = "Status: Anti-AFK Enabled" status.TextColor3 = Color3.fromRGB(100, 220, 130) else afkButton.Text = "START ANTI-AFK" afkButton.BackgroundColor3 = Color3.fromRGB(55, 80, 130) status.Text = collecting and "Status: Collecting..." or "Status: Ready" status.TextColor3 = collecting and Color3.fromRGB(100, 255, 130) or Color3.fromRGB(160, 160, 170) end end) -------------------------------------------------- -- UI Dragging -------------------------------------------------- local dragging, dragStart, startPos header.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = main.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) UserInputService.InputChanged:Connect(function(input) if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then local delta = input.Position - dragStart main.Position = UDim2.new( startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y ) end end) print("[Item Collector] Loaded successfully for " .. executorName)