-- [[ 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 ]] -- If my script helped you, please tag me :3 local Players = game:GetService("Players") local Workspace = game:GetService("Workspace") local CollectionService = game:GetService("CollectionService") local RunService = game:GetService("RunService") local ReplicatedStorage = game:GetService("ReplicatedStorage") local UserInputService = game:GetService("UserInputService") local TweenService = game:GetService("TweenService") local VirtualUser = game:GetService("VirtualUser") local ProximityPromptService = game:GetService("ProximityPromptService") local CoreGui = game:GetService("CoreGui") local lp = Players.LocalPlayer local Camera = Workspace.CurrentCamera local Mouse = lp:GetMouse() local Svc = nil local function resolveServices() local ok = pcall(function() local idx = ReplicatedStorage:WaitForChild("Packages", 4):WaitForChild("_Index", 4) for _, child in ipairs(idx:GetChildren()) do if child.Name:match("knit") and child:FindFirstChild("knit") and child.knit:FindFirstChild("Services") then Svc = child.knit.Services return end end end) if not Svc then pcall(function() if ReplicatedStorage:FindFirstChild("Services") then Svc = ReplicatedStorage.Services end end) end end resolveServices() local function findRemote(svcNames, folderType, remoteNames) if type(svcNames) == "string" then svcNames = {svcNames} end if type(remoteNames) == "string" then remoteNames = {remoteNames} end if Svc then for _, sName in ipairs(svcNames) do local s = Svc:FindFirstChild(sName) if s then local f = s:FindFirstChild(folderType) if f then for _, rName in ipairs(remoteNames) do local r = f:FindFirstChild(rName) if r then return r end end end end end end for _, d in ipairs(ReplicatedStorage:GetDescendants()) do for _, rName in ipairs(remoteNames) do if d.Name == rName then if folderType == "RE" and d:IsA("RemoteEvent") then return d end if folderType == "RF" and d:IsA("RemoteFunction") then return d end end end end return nil end local R = { StrengthClick = findRemote("StrengthService", "RE", {"ClickRequested", "Click"}), SellLoot = findRemote("DataService", "RF", {"SellAllBackpackLoot", "SellLoot", "Sell"}), Rebirth = findRemote({"RebirtService", "RebirthService"}, "RE", {"RebirthButtonClicked", "Rebirth"}), GetRebirth = findRemote({"RebirtService", "RebirthService"}, "RF", {"GetState", "GetRebirthState"}), UpgSpeed = findRemote("UpgradesService", "RE", {"SpeedButtonClicked", "SpeedUpgrade"}), UpgCarry = findRemote("UpgradesService", "RE", {"CarryButtonClicked", "CarryUpgrade"}), UpgAtkSpeed = findRemote("UpgradesService", "RE", {"AttackSpeedButtonClicked", "AttackSpeedUpgrade"}), UpgAtkRange = findRemote("UpgradesService", "RE", {"AttackRangeButtonClicked", "AttackRangeUpgrade"}), NotEnoughMoney = findRemote("UpgradesService", "RE", {"NotEnoughMoney"}), GetBackpack = findRemote("DataService", "RF", {"GetBackpackSlotsSummary", "GetBackpack"}), } local GrassRarityOrder = { "Grass_Common", "Grass_Uncommon", "Grass_Rare", "Grass_Epic", "Grass_Legendary", "Grass_Mythic", "Grass_Ethernal", "Grass_Secret", "Grass_Celestial", "Grass_Divine", "Grass_Absolute" } local Cfg = { autoLoot = false, lootMagnetRadius = 500, strength = false, strengthDelay = 0.05, hideGrass = false, grassNoCollide = false, instantPrompts = false, sell = true, sellThreshold = 100, speedEnabled = true, speedValue = 50, speedMode = "Both", clickTP = false, upgAll = false, upgSpeed = false, upgCarry = false, upgAtkSpeed = false, upgAtkRange = false, autoRebirth = false, antiAfk = true, } local alive = true local nextClick, nextUpgrade, nextRebirth, nextLoot = 0, 0, 0, 0 local upgradeBackoff = 0 local isSellingInProgress = false local lastFarmCFrame = nil local antiAfkCon = nil local function setAntiAfk(enabled) if getconnections then for _, c in ipairs(getconnections(lp.Idled)) do pcall(function() c:Disable() end) pcall(function() c:Disconnect() end) end end if antiAfkCon then antiAfkCon:Disconnect() antiAfkCon = nil end if enabled then antiAfkCon = lp.Idled:Connect(function() VirtualUser:CaptureController() VirtualUser:ClickButton2(Vector2.zero) end) end end if Cfg.antiAfk then setAntiAfk(true) end local function char() local c = lp.Character if c and c:FindFirstChild("HumanoidRootPart") and c:FindFirstChildOfClass("Humanoid") then return c end return nil end local function hrp() local c = char() return c and c:FindFirstChild("HumanoidRootPart") end local function humanoid() local c = char() return c and c:FindFirstChildOfClass("Humanoid") end local function getBackpackInfo() local count = 0 local cap = 0 local attrCount = lp:GetAttribute("BackpackCount") or lp:GetAttribute("BackpackRaw") or lp:GetAttribute("LootCount") or lp:GetAttribute("Backpack") local attrCap = lp:GetAttribute("BackpackCapacity") or lp:GetAttribute("CapacityRaw") or lp:GetAttribute("BackpackMax") or lp:GetAttribute("MaxBackpack") if attrCount then count = tonumber(attrCount) or count end if attrCap then cap = tonumber(attrCap) or cap end if (cap == 0 or count == 0) and R.GetBackpack then local ok, s = pcall(R.GetBackpack.InvokeServer, R.GetBackpack) if ok and type(s) == "table" then count = tonumber(s.Count) or tonumber(s.count) or count cap = tonumber(s.Capacity) or tonumber(s.capacity) or tonumber(s.Max) or cap end end local isFull = (cap > 0 and count >= cap) local pct = (cap > 0) and math.floor((count / cap) * 100) or 0 return {count = count, cap = cap, pct = pct, full = isFull} end local function teleportToBase() local baseBtn = lp:FindFirstChild("PlayerGui") and lp.PlayerGui:FindFirstChild("TopGUI") and lp.PlayerGui.TopGUI:FindFirstChild("Top") and lp.PlayerGui.TopGUI.Top:FindFirstChild("BaseButton") if baseBtn then if firesignal then pcall(firesignal, baseBtn.Activated) pcall(firesignal, baseBtn.MouseButton1Click) end if getconnections then for _, name in ipairs({"Activated", "MouseButton1Click", "MouseButton1Down"}) do for _, conn in ipairs(getconnections(baseBtn[name])) do pcall(conn.Fire, conn) end end end end task.wait(0.1) local w1 = Workspace:FindFirstChild("Worlds") and Workspace.Worlds:FindFirstChild("World_1") if w1 and hrp() then local spawnPart = w1:FindFirstChild("Spawn_Point_1") or w1:FindFirstChild("Spawn") or w1:FindFirstChild("Safe_Zone_0") if spawnPart then local pos = spawnPart:IsA("BasePart") and spawnPart.Position or spawnPart:GetPivot().Position hrp().CFrame = CFrame.new(pos + Vector3.new(0, 3, 0)) end end end local function getBaseSellStand() local w1 = Workspace:FindFirstChild("Worlds") and Workspace.Worlds:FindFirstChild("World_1") if w1 then local sellModel = w1:FindFirstChild("Sell") if sellModel then local tp = sellModel:FindFirstChild("TriggerPlace") local claim = tp and tp:FindFirstChild("ClaimPart") if claim and claim:IsA("BasePart") then return claim end end end return nil end local function doSellAtBase() if isSellingInProgress then return end isSellingInProgress = true local root = hrp() if not root then isSellingInProgress = false return end lastFarmCFrame = root.CFrame teleportToBase() task.wait(0.35) root = hrp() local sellPart = getBaseSellStand() if root and sellPart then root.CFrame = CFrame.new(sellPart.Position + Vector3.new(0, 2.5, 0)) task.wait(0.15) pcall(firetouchinterest, root, sellPart, 0) pcall(firetouchinterest, root, sellPart, 1) end if R.SellLoot then pcall(R.SellLoot.InvokeServer, R.SellLoot) task.wait(0.25) pcall(R.SellLoot.InvokeServer, R.SellLoot) task.wait(0.2) end if lastFarmCFrame and hrp() then hrp().CFrame = lastFarmCFrame end isSellingInProgress = false end local function makePromptInstant(prompt) if Cfg.instantPrompts and prompt and prompt:IsA("ProximityPrompt") then pcall(function() prompt.HoldDuration = 0 prompt.RequiresLineOfSight = false end) end end for _, d in ipairs(Workspace:GetDescendants()) do if d:IsA("ProximityPrompt") then makePromptInstant(d) end end Workspace.DescendantAdded:Connect(function(d) if d:IsA("ProximityPrompt") then makePromptInstant(d) end end) ProximityPromptService.PromptButtonHoldBegan:Connect(function(prompt) if Cfg.instantPrompts then prompt.HoldDuration = 0 pcall(fireproximityprompt, prompt) end end) local function applyGrassOptimization(inst) if not inst then return end pcall(function() if inst:IsA("BasePart") then if Cfg.grassNoCollide then inst.CanCollide = false end if Cfg.hideGrass then inst.Transparency = 1 inst.CastShadow = false else inst.Transparency = 0 end elseif inst:IsA("Decal") or inst:IsA("Texture") then inst.Transparency = Cfg.hideGrass and 1 or 0 elseif inst:IsA("ParticleEmitter") or inst:IsA("Beam") or inst:IsA("Trail") then inst.Enabled = not Cfg.hideGrass end end) end local function refreshAllGrassVisuals() for _, tag in ipairs(GrassRarityOrder) do local ok, list = pcall(CollectionService.GetTagged, CollectionService, tag) if ok and list then for _, m in ipairs(list) do for _, p in ipairs(m:GetDescendants()) do applyGrassOptimization(p) end if m:IsA("BasePart") then applyGrassOptimization(m) end end end end end for _, tag in ipairs(GrassRarityOrder) do pcall(function() CollectionService:GetInstanceAddedSignal(tag):Connect(function(m) task.wait(0.05) for _, p in ipairs(m:GetDescendants()) do applyGrassOptimization(p) end if m:IsA("BasePart") then applyGrassOptimization(m) end end) end) end RunService.Stepped:Connect(function() if not alive then return end if Cfg.grassNoCollide then local c = char() if c then for _, part in ipairs(c:GetChildren()) do if part:IsA("BasePart") and part.CanCollide then part.CanCollide = false end end end end end) local RarityWeights = { Absolute = 10000, Divine = 8000, Celestial = 5000, Secret = 3000, Ethernal = 2000, Mythic = 1200, Legendary = 800, Epic = 500, Rare = 300, Uncommon = 150, Common = 50 } local function getPrioritizedLootPrompts() local prompts = {} local root = hrp() local rPos = root and root.Position or Vector3.zero local searchContainers = {Workspace:FindFirstChild("Zones"), Workspace} for _, container in ipairs(searchContainers) do if container then for _, d in ipairs(container:GetDescendants()) do if d:IsA("ProximityPrompt") and d:GetAttribute("LootPickupPrompt") == true then local attachment = d.Parent local basePart = attachment and attachment.Parent local lootModel = basePart and basePart.Parent local pos = nil if attachment and attachment:IsA("Attachment") then pos = attachment.WorldPosition elseif basePart and basePart:IsA("BasePart") then pos = basePart.Position elseif lootModel and lootModel:IsA("Model") then pos = lootModel:GetPivot().Position end if pos then local dist = (pos - rPos).Magnitude if dist <= Cfg.lootMagnetRadius then local weight = 50 if lootModel then local price = tonumber(lootModel:GetAttribute("LootSellPrice")) or 0 local rarity = tostring(lootModel:GetAttribute("LootRarity") or "") local rarityWeight = RarityWeights[rarity] or 50 weight = rarityWeight + (price / 1000) end table.insert(prompts, { prompt = d, pos = pos, dist = dist, weight = weight }) end end end end if container.Name == "Zones" and #prompts > 0 then break end end end table.sort(prompts, function(a, b) if a.weight ~= b.weight then return a.weight > b.weight end return a.dist < b.dist end) return prompts end local function doLootCollection() local root = hrp() if not root or not Cfg.autoLoot then return false end local prompts = getPrioritizedLootPrompts() if #prompts == 0 then return false end local target = prompts[1] if target and target.pos then root.CFrame = CFrame.new(target.pos + Vector3.new(0, 2.5, 0)) task.wait(0.08) pcall(fireproximityprompt, target.prompt) return true end return false end local function doUpgrades() if tick() < upgradeBackoff then return end local fires = {} if Cfg.upgAll or Cfg.upgSpeed then if R.UpgSpeed then table.insert(fires, R.UpgSpeed) end end if Cfg.upgAll or Cfg.upgCarry then if R.UpgCarry then table.insert(fires, R.UpgCarry) end end if Cfg.upgAll or Cfg.upgAtkSpeed then if R.UpgAtkSpeed then table.insert(fires, R.UpgAtkSpeed) end end if Cfg.upgAll or Cfg.upgAtkRange then if R.UpgAtkRange then table.insert(fires, R.UpgAtkRange) end end for _, rf in ipairs(fires) do pcall(rf.FireServer, rf) end end local function doRebirth() if not Cfg.autoRebirth or not R.Rebirth then return end if R.GetRebirth then local ok, st = pcall(R.GetRebirth.InvokeServer, R.GetRebirth) if ok and type(st) == "table" and st.CanRebirth == true then pcall(R.Rebirth.FireServer, R.Rebirth) end else pcall(R.Rebirth.FireServer, R.Rebirth) end end if R.NotEnoughMoney then pcall(function() R.NotEnoughMoney.Connect(R.NotEnoughMoney, function() upgradeBackoff = tick() + 6 end) end) end RunService.Heartbeat:Connect(function(dt) if not alive then return end local c = char() local h = c and c:FindFirstChildOfClass("Humanoid") local root = c and c:FindFirstChild("HumanoidRootPart") if h and root and Cfg.speedEnabled then if (Cfg.speedMode == "WalkSpeed" or Cfg.speedMode == "Both") and h.WalkSpeed ~= Cfg.speedValue then h.WalkSpeed = Cfg.speedValue end if (Cfg.speedMode == "CFrame" or Cfg.speedMode == "Both") and h.MoveDirection.Magnitude > 0 then local extra = math.max(0, Cfg.speedValue - 16) root.CFrame = root.CFrame + (h.MoveDirection * (extra * dt)) end end end) UserInputService.InputBegan:Connect(function(input, processed) if processed or not Cfg.clickTP then return end if input.UserInputType == Enum.UserInputType.MouseButton1 and UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) then local hit = Mouse.Hit if hit and hrp() then hrp().CFrame = CFrame.new(hit.Position + Vector3.new(0, 3, 0)) end end end) task.spawn(function() task.wait(0.3) refreshAllGrassVisuals() while alive do local t = tick() local c = char() local root = hrp() if c and root and not isSellingInProgress then local bp = getBackpackInfo() if Cfg.sell and (bp.full or (bp.cap > 0 and (bp.count >= bp.cap or bp.pct >= Cfg.sellThreshold))) then doSellAtBase() else if Cfg.autoLoot and t > nextLoot then if doLootCollection() then nextLoot = t + 0.12 end end if Cfg.strength and t > nextClick and R.StrengthClick then pcall(R.StrengthClick.FireServer, R.StrengthClick) nextClick = t + Cfg.strengthDelay end end if (Cfg.upgAll or Cfg.upgSpeed or Cfg.upgCarry or Cfg.upgAtkSpeed or Cfg.upgAtkRange) and t > nextUpgrade then doUpgrades() nextUpgrade = t + 2.5 end if Cfg.autoRebirth and t > nextRebirth then doRebirth() nextRebirth = t + 3.5 end end task.wait(0.12) end end) local WindUI = nil local ok, _ = pcall(function() WindUI = loadstring(game:HttpGet("https://tree-hub.vercel.app/api/UI/WindUI"))() end) if not ok or not WindUI then pcall(function() WindUI = loadstring(game:HttpGet("https://raw.githubusercontent.com/Footagesus/WindUI/main/dist/main.lua"))() end) end if not WindUI then WindUI = loadstring(game:HttpGet("https://github.com/Footagesus/WindUI/releases/latest/download/main.lua"))() end for _, p in ipairs({CoreGui, lp:FindFirstChild("PlayerGui")}) do if p then for _, g in ipairs(p:GetChildren()) do if g:IsA("ScreenGui") and (g.Name:match("WindUI") or g.Name:match("GrassHub")) then g:Destroy() end end end end local Win = WindUI:CreateWindow({ Title = "+1 Cut Grass Adventure", Icon = "sparkles", Author = "by @VearyTry", Size = UDim2.fromOffset(560, 430), Theme = "Dark", ToggleKey = Enum.KeyCode.RightControl, }) local TabMain = Win:Tab({Title = "Main", Icon = "swords"}) local TabSell = Win:Tab({Title = "Auto Sell", Icon = "coins"}) local TabTeleport = Win:Tab({Title = "Teleports", Icon = "map-pin"}) local TabMove = Win:Tab({Title = "Movement", Icon = "zap"}) local TabShop = Win:Tab({Title = "Upgrades", Icon = "shopping-cart"}) local TabMisc = Win:Tab({Title = "Misc", Icon = "sliders-horizontal"}) TabMain:Section({Title = "Loot Pickup"}) TabMain:Toggle({ Title = "Auto Loot", Desc = "Teleports to the best loot in range and picks it up", Value = false, Callback = function(v) Cfg.autoLoot = v end }) TabMain:Slider({ Title = "Scan Radius", Desc = "Search radius for dropped loot", Step = 10, Value = { Min = 50, Max = 2000, Default = 500, }, Min = 50, Max = 2000, Default = 500, Callback = function(v) local num = type(v) == "table" and (v.Value or v.Default) or tonumber(v) or 500 Cfg.lootMagnetRadius = num end }) TabMain:Section({Title = "Strength Training"}) TabMain:Toggle({ Title = "Auto Strength", Desc = "Clicks strength training automatically", Value = false, Callback = function(v) Cfg.strength = v end }) TabMain:Slider({ Title = "Click Delay", Desc = "Delay between clicks (seconds)", Step = 0.01, Value = { Min = 0.01, Max = 0.5, Default = Cfg.strengthDelay, }, Min = 0.01, Max = 0.5, Default = Cfg.strengthDelay, Callback = function(v) local num = type(v) == "table" and (v.Value or v.Default) or tonumber(v) or 0.05 Cfg.strengthDelay = num end }) TabSell:Section({Title = "Auto Sell"}) TabSell:Toggle({ Title = "Auto Sell", Desc = "Teleports to base, sells loot, and returns to your position", Value = Cfg.sell, Callback = function(v) Cfg.sell = v end }) TabSell:Slider({ Title = "Backpack Threshold (%)", Desc = "Sell when backpack reaches this percentage", Step = 1, Value = { Min = 20, Max = 100, Default = Cfg.sellThreshold, }, Min = 20, Max = 100, Default = Cfg.sellThreshold, Callback = function(v) local num = type(v) == "table" and (v.Value or v.Default) or tonumber(v) or 100 Cfg.sellThreshold = num end }) TabSell:Button({ Title = "Sell Now", Desc = "Sells backpack loot immediately", Callback = function() task.spawn(doSellAtBase) WindUI:Notify({Title = "Auto Sell", Content = "Sold backpack loot", Duration = 2}) end }) TabTeleport:Section({Title = "Teleports"}) TabTeleport:Button({ Title = "Teleport to Base", Desc = "Teleports your character back to base", Callback = function() teleportToBase() WindUI:Notify({Title = "Teleport", Content = "Teleported to base", Duration = 2}) end }) TabTeleport:Toggle({ Title = "Click TP", Desc = "Hold Ctrl and left click anywhere to teleport", Value = Cfg.clickTP, Callback = function(v) Cfg.clickTP = v end }) TabMove:Section({Title = "Speed"}) TabMove:Toggle({ Title = "Speed Boost", Desc = "Enables custom walk speed", Value = Cfg.speedEnabled, Callback = function(v) Cfg.speedEnabled = v local h = humanoid() if h then h.WalkSpeed = v and Cfg.speedValue or 16 end end }) TabMove:Slider({ Title = "WalkSpeed", Desc = "Movement speed value", Step = 1, Value = { Min = 16, Max = 250, Default = Cfg.speedValue, }, Min = 16, Max = 250, Default = Cfg.speedValue, Callback = function(v) local num = type(v) == "table" and (v.Value or v.Default) or tonumber(v) or 50 Cfg.speedValue = num if Cfg.speedEnabled then local h = humanoid() if h then h.WalkSpeed = num end end end }) TabMove:Dropdown({ Title = "Speed Method", Desc = "Movement method", Values = {"Both", "WalkSpeed", "CFrame"}, Value = "Both", Callback = function(v) if type(v) == "table" then v = v.Value or v[1] end if v == "Both" then Cfg.speedMode = "Both" elseif v == "WalkSpeed" then Cfg.speedMode = "WalkSpeed" elseif v == "CFrame" then Cfg.speedMode = "CFrame" end end }) TabShop:Section({Title = "Auto Upgrades"}) TabShop:Toggle({ Title = "Upgrade All", Desc = "Buys all available upgrades continuously", Value = false, Callback = function(v) Cfg.upgAll = v end }) TabShop:Toggle({ Title = "Upgrade Walk Speed", Value = false, Callback = function(v) Cfg.upgSpeed = v end }) TabShop:Toggle({ Title = "Upgrade Carry Capacity", Value = false, Callback = function(v) Cfg.upgCarry = v end }) TabShop:Toggle({ Title = "Upgrade Attack Speed", Value = false, Callback = function(v) Cfg.upgAtkSpeed = v end }) TabShop:Toggle({ Title = "Upgrade Attack Range", Value = false, Callback = function(v) Cfg.upgAtkRange = v end }) TabShop:Section({Title = "Rebirth"}) TabShop:Toggle({ Title = "Auto Rebirth", Desc = "Rebirths automatically when available", Value = false, Callback = function(v) Cfg.autoRebirth = v end }) TabMisc:Section({Title = "World & Interaction"}) TabMisc:Toggle({ Title = "Instant Prompts", Desc = "Removes proximity prompt hold duration", Value = Cfg.instantPrompts, Callback = function(v) Cfg.instantPrompts = v if v then for _, d in ipairs(Workspace:GetDescendants()) do if d:IsA("ProximityPrompt") then makePromptInstant(d) end end end end }) TabMisc:Toggle({ Title = "Disable Grass Collision", Desc = "Walk through grass without colliding", Value = Cfg.grassNoCollide, Callback = function(v) Cfg.grassNoCollide = v refreshAllGrassVisuals() end }) TabMisc:Toggle({ Title = "Hide Grass", Desc = "Hides grass models for better visibility", Value = Cfg.hideGrass, Callback = function(v) Cfg.hideGrass = v refreshAllGrassVisuals() WindUI:Notify({Title = "Misc", Content = v and "Grass hidden" or "Grass visible", Duration = 2}) end }) TabMisc:Section({Title = "Utilities"}) TabMisc:Toggle({ Title = "Anti-AFK", Desc = "Prevents 20-minute idle disconnect", Value = Cfg.antiAfk, Callback = function(v) Cfg.antiAfk = v setAntiAfk(v) end }) TabMisc:Button({ Title = "FPS Boost", Desc = "Disables shadows and smooths textures for better performance", Callback = function() pcall(function() for _, v in ipairs(Workspace:GetDescendants()) do if v:IsA("BasePart") then v.Material = Enum.Material.SmoothPlastic v.CastShadow = false elseif v:IsA("Decal") or v:IsA("Texture") then v.Transparency = 1 end end game:GetService("Lighting").GlobalShadows = false end) Cfg.hideGrass = true refreshAllGrassVisuals() WindUI:Notify({Title = "Misc", Content = "FPS boost applied", Duration = 2}) end }) TabMisc:Button({ Title = "Rejoin Server", Desc = "Reconnects to the same server", Callback = function() pcall(function() game:GetService("TeleportService"):TeleportToPlaceInstance(game.PlaceId, game.JobId, lp) end) end }) WindUI:Notify({ Title = "+1 Cut Grass Adventure", Content = "Press Right Ctrl to toggle menu.", Duration = 4 })