-- [[ 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=6ad0e5c3ea7508fe1629c8bf"))() end) end) --[[rscripts:analytics:end]] --// ==== CONFIG ==== //-- local CONFIG = { Delay = 0.03, -- пауза между DOWN и UP внутри касания ScanDelay = 0.05, -- пауза между сканами RestartDelay = 0.1, -- пауза между кругами RetryDelay = 0.5, -- как часто повторять попытку для одной части MaxConcurrent = 20, -- максимум одновременных касаний Limit = math.huge, Debug = false } local Players = game:GetService("Players") local lp = Players.LocalPlayer --// ==== СОСТОЯНИЕ ==== //-- local running = false local loopThread = nil local lastTryAt = {} local activeTasks = 0 local firedCount = 0 local failedCount = 0 local cycleCount = 0 --// ==== HRP ==== //-- local function getHRP() local char = lp.Character or lp.CharacterAdded:Wait() local humanoid = char:WaitForChild("Humanoid", 5) if humanoid and humanoid.Health <= 0 then humanoid.HealthChanged:Wait() char = lp.Character or lp.CharacterAdded:Wait() end return char:WaitForChild("HumanoidRootPart", 5) end --// ==== ПОИСК TOUCH ==== //-- local function findTouch(part) local t = part:FindFirstChildOfClass("TouchTransmitter") or part:FindFirstChildOfClass("TouchInterest") if t then return t end local parent = part.Parent if parent then t = parent:FindFirstChildOfClass("TouchTransmitter") or parent:FindFirstChildOfClass("TouchInterest") if t then return t end for _, sib in ipairs(parent:GetChildren()) do if sib ~= part then t = sib:FindFirstChildOfClass("TouchTransmitter") or sib:FindFirstChildOfClass("TouchInterest") if t then return t end end end end return nil end local function isTokenGone(part) if not part or not part.Parent then return true end local p = part.Parent while p and p ~= workspace do if p.Name == "Tokens" then return false end p = p.Parent end return true end --// ==== ПАРАЛЛЕЛЬНОЕ КАСАНИЕ ==== //-- local function firePartAsync(part) local now = tick() if lastTryAt[part] and (now - lastTryAt[part]) < CONFIG.RetryDelay then return end lastTryAt[part] = now local touch = findTouch(part) if not touch then return end if activeTasks >= CONFIG.MaxConcurrent then return end activeTasks += 1 task.spawn(function() local hrp = getHRP() if hrp then local target = touch.Parent or part local ok = pcall(function() firetouchinterest(target, hrp, 0) -- Без ожидания! UP сразу же — сервер обычно успевает if CONFIG.Delay > 0 then task.wait(CONFIG.Delay) end firetouchinterest(target, hrp, 1) end) if ok then -- Проверяем результат не сразу, а с микро-задержкой if not isTokenGone(part) then -- Дадим серверу ещё чуть-чуть и проверим снова task.wait(0.05) end if isTokenGone(part) then firedCount += 1 if CONFIG.Debug then print("[TF] ✔", part:GetFullName()) end else failedCount += 1 if CONFIG.Debug then print("[TF] ✘", part:GetFullName()) end end end end activeTasks -= 1 end) end --// ==== СКАН ==== //-- local function scanOnce() for _, d in ipairs(workspace:GetChildren()) do if not running then return end if not (d:IsA("Folder") and d.Name == "Tokens") then continue end for _, part in ipairs(d:GetDescendants()) do if not running then return end if part:IsA("BasePart") then firePartAsync(part) -- НЕ ждём! end end end end --// ==== ГЛАВНЫЙ ЦИКЛ ==== //-- local function mainLoop() while running do cycleCount += 1 scanOnce() -- Ждём завершения активных задач + короткая пауза local waited = 0 while activeTasks > 0 and waited < CONFIG.ScanDelay * 10 do task.wait(0.01) waited += 0.01 end if running then task.wait(math.max(CONFIG.ScanDelay, 0.02)) task.wait(CONFIG.RestartDelay) end end end --// ==== СТАРТ/СТОП ==== //-- local function startAutoFarm() if running then return end running = true lastTryAt = {} firedCount = 0 failedCount = 0 cycleCount = 0 activeTasks = 0 loopThread = task.spawn(mainLoop) end local function stopAutoFarm() running = false loopThread = nil end --// ==== GUI ==== //-- local function getGuiParent() local ok, cg = pcall(function() return game:GetService("CoreGui") end) if ok and cg then local testOk = pcall(function() local t = Instance.new("Folder"); t.Name = "__t"; t.Parent = cg; t:Destroy() end) if testOk then return cg end end return lp:WaitForChild("PlayerGui") end local parentGui = getGuiParent() local old = parentGui:FindFirstChild("TokenFarmMenu") if old then old:Destroy() end local gui = Instance.new("ScreenGui") gui.Name = "TokenFarmMenu" gui.ResetOnSpawn = false gui.IgnoreGuiInset = true gui.Parent = parentGui local main = Instance.new("Frame") main.Size = UDim2.new(0, 260, 0, 240) main.Position = UDim2.new(0, 20, 0, 20) main.BackgroundColor3 = Color3.fromRGB(25, 25, 30) main.BorderSizePixel = 0 main.Active = true main.Draggable = true main.Parent = gui Instance.new("UICorner", main).CornerRadius = UDim.new(0, 10) Instance.new("UIStroke", main).Color = Color3.fromRGB(70, 70, 90) local title = Instance.new("TextLabel") title.Size = UDim2.new(1, 0, 0, 35) title.BackgroundColor3 = Color3.fromRGB(35, 35, 45) title.BorderSizePixel = 0 title.Text = "🎯 Token Farm • FAST" title.TextColor3 = Color3.fromRGB(240, 240, 255) title.Font = Enum.Font.GothamBold title.TextSize = 15 title.Parent = main Instance.new("UICorner", title).CornerRadius = UDim.new(0, 10) local closeBtn = Instance.new("TextButton") closeBtn.Size = UDim2.new(0, 28, 0, 28) closeBtn.Position = UDim2.new(1, -32, 0, 4) closeBtn.BackgroundColor3 = Color3.fromRGB(200, 50, 60) closeBtn.Text = "✕" closeBtn.TextColor3 = Color3.fromRGB(255, 255, 255) closeBtn.Font = Enum.Font.GothamBold closeBtn.TextSize = 14 closeBtn.BorderSizePixel = 0 closeBtn.Parent = title Instance.new("UICorner", closeBtn).CornerRadius = UDim.new(0, 6) local toggleBtn = Instance.new("TextButton") toggleBtn.Size = UDim2.new(0, 220, 0, 45) toggleBtn.Position = UDim2.new(0, 20, 0, 50) toggleBtn.BackgroundColor3 = Color3.fromRGB(180, 60, 60) toggleBtn.Text = "⏸ ВЫКЛЮЧЕНО" toggleBtn.TextColor3 = Color3.fromRGB(255, 255, 255) toggleBtn.Font = Enum.Font.GothamBold toggleBtn.TextSize = 16 toggleBtn.BorderSizePixel = 0 toggleBtn.Parent = main Instance.new("UICorner", toggleBtn).CornerRadius = UDim.new(0, 8) -- Слайдер скорости (MaxConcurrent) local speedLabel = Instance.new("TextLabel") speedLabel.Size = UDim2.new(1, -40, 0, 18) speedLabel.Position = UDim2.new(0, 20, 0, 102) speedLabel.BackgroundTransparency = 1 speedLabel.Text = "Скорость (параллельно): 20" speedLabel.TextColor3 = Color3.fromRGB(200, 200, 220) speedLabel.Font = Enum.Font.Gotham speedLabel.TextSize = 12 speedLabel.TextXAlignment = Enum.TextXAlignment.Left speedLabel.Parent = main local speedBar = Instance.new("Frame") speedBar.Size = UDim2.new(0, 220, 0, 8) speedBar.Position = UDim2.new(0, 20, 0, 122) speedBar.BackgroundColor3 = Color3.fromRGB(50, 50, 65) speedBar.BorderSizePixel = 0 speedBar.Parent = main Instance.new("UICorner", speedBar).CornerRadius = UDim.new(1, 0) local speedFill = Instance.new("Frame") speedFill.Size = UDim2.new(0.4, 0, 1, 0) -- 20/50 speedFill.BackgroundColor3 = Color3.fromRGB(90, 180, 220) speedFill.BorderSizePixel = 0 speedFill.Parent = speedBar Instance.new("UICorner", speedFill).CornerRadius = UDim.new(1, 0) local speedBtn = Instance.new("TextButton") speedBtn.Size = UDim2.new(0, 220, 0, 24) speedBtn.Position = UDim2.new(0, 20, 0, 134) speedBtn.BackgroundColor3 = Color3.fromRGB(60, 60, 80) speedBtn.Text = "Изменить скорость" speedBtn.TextColor3 = Color3.fromRGB(220, 220, 240) speedBtn.Font = Enum.Font.Gotham speedBtn.TextSize = 12 speedBtn.BorderSizePixel = 0 speedBtn.Parent = main Instance.new("UICorner", speedBtn).CornerRadius = UDim.new(0, 6) local debugBtn = Instance.new("TextButton") debugBtn.Size = UDim2.new(0, 220, 0, 24) debugBtn.Position = UDim2.new(0, 20, 0, 162) debugBtn.BackgroundColor3 = Color3.fromRGB(60, 60, 80) debugBtn.Text = "🐞 Debug: OFF" debugBtn.TextColor3 = Color3.fromRGB(220, 220, 240) debugBtn.Font = Enum.Font.Gotham debugBtn.TextSize = 12 debugBtn.BorderSizePixel = 0 debugBtn.Parent = main Instance.new("UICorner", debugBtn).CornerRadius = UDim.new(0, 6) local statusLabel = Instance.new("TextLabel") statusLabel.Size = UDim2.new(1, -40, 0, 20) statusLabel.Position = UDim2.new(0, 20, 0, 190) statusLabel.BackgroundTransparency = 1 statusLabel.Text = "● Ожидание" statusLabel.TextColor3 = Color3.fromRGB(220, 90, 90) statusLabel.Font = Enum.Font.Gotham statusLabel.TextSize = 13 statusLabel.TextXAlignment = Enum.TextXAlignment.Left statusLabel.Parent = main local countLabel = Instance.new("TextLabel") countLabel.Size = UDim2.new(1, -40, 0, 20) countLabel.Position = UDim2.new(0, 20, 0, 212) countLabel.BackgroundTransparency = 1 countLabel.Text = "✔ 0 | ✘ 0 | ⟳ 0 | ⚡ 0" countLabel.TextColor3 = Color3.fromRGB(200, 200, 220) countLabel.Font = Enum.Font.Gotham countLabel.TextSize = 12 countLabel.TextXAlignment = Enum.TextXAlignment.Left countLabel.Parent = main --// ==== UI ==== //-- local speeds = {5, 10, 20, 30, 50, 100} local speedIdx = 3 -- 20 local function updateSpeedUI() local sp = speeds[speedIdx] CONFIG.MaxConcurrent = sp speedLabel.Text = "Скорость (параллельно): " .. sp speedFill.Size = UDim2.new(sp / 100, 0, 1, 0) end local function updateStatus() if running then toggleBtn.Text = "▶ ВКЛЮЧЕНО" toggleBtn.BackgroundColor3 = Color3.fromRGB(60, 180, 90) statusLabel.Text = "● Работает" statusLabel.TextColor3 = Color3.fromRGB(90, 220, 120) else toggleBtn.Text = "⏸ ВЫКЛЮЧЕНО" toggleBtn.BackgroundColor3 = Color3.fromRGB(180, 60, 60) statusLabel.Text = "● Остановлен" statusLabel.TextColor3 = Color3.fromRGB(220, 90, 90) end end toggleBtn.MouseButton1Click:Connect(function() if running then stopAutoFarm() else startAutoFarm() end updateStatus() end) speedBtn.MouseButton1Click:Connect(function() speedIdx = speedIdx % #speeds + 1 updateSpeedUI() end) debugBtn.MouseButton1Click:Connect(function() CONFIG.Debug = not CONFIG.Debug debugBtn.Text = "🐞 Debug: " .. (CONFIG.Debug and "ON" or "OFF") debugBtn.BackgroundColor3 = CONFIG.Debug and Color3.fromRGB(90, 140, 60) or Color3.fromRGB(60, 60, 80) end) closeBtn.MouseButton1Click:Connect(function() stopAutoFarm() if gui then gui:Destroy() end end) task.spawn(function() while gui and gui.Parent do countLabel.Text = ("✔ %d | ✘ %d | ⟳ %d | ⚡ %d"):format( firedCount, failedCount, cycleCount, activeTasks) task.wait(0.15) end end) updateSpeedUI() updateStatus()