Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --// Services
- local ReplicatedStorage = game:GetService("ReplicatedStorage")
- local InsertService = game:GetService("InsertService")
- local MarketplaceService = game:GetService("MarketplaceService")
- local Players = game:GetService("Players")
- local RunService = game:GetService("RunService")
- local LocalPlayer = Players.LocalPlayer
- local Leaderstats = LocalPlayer.leaderstats
- local Backpack = LocalPlayer.Backpack
- local PlayerGui = LocalPlayer.PlayerGui
- local ShecklesCount = Leaderstats.Sheckles
- local GameInfo = MarketplaceService:GetProductInfo(game.PlaceId)
- --// ReGui
- local ReGui = loadstring(game:HttpGet('https://raw.githubusercontent.com/depthso/Dear-ReGui/refs/heads/main/ReGui.lua'))()
- local PrefabsId = "rbxassetid://" .. ReGui.PrefabsId
- --// Folders
- local GameEvents = ReplicatedStorage.GameEvents
- local Farms = workspace.Farm
- local Accent = {
- DarkGreen = Color3.fromRGB(45, 95, 25),
- Green = Color3.fromRGB(1, 1, 1),
- Brown = Color3.fromRGB(43, 33, 13),
- }
- --// ReGui configuration (Ui library)
- ReGui:Init({
- Prefabs = InsertService:LoadLocalAsset(PrefabsId)
- })
- ReGui:DefineTheme("GardenTheme", {
- WindowBg = Accent.Brown,
- TitleBarBg = Accent.DarkGreen,
- TitleBarBgActive = Accent.Green,
- ResizeGrab = Accent.DarkGreen,
- FrameBg = Accent.DarkGreen,
- FrameBgActive = Accent.Green,
- CollapsingHeaderBg = Accent.Green,
- ButtonsBg = Accent.Green,
- CheckMark = Accent.Green,
- SliderGrab = Accent.Green,
- })
- --// Globals
- local AutoWalk, AutoWalkAllowRandom, NoClip, AutoWalkStatus
- local function CreateWindow()
- local Window = ReGui:Window({
- Title = `{GameInfo.Name} | 1QLUA`,
- Theme = "GardenTheme",
- Size = UDim2.fromOffset(300, 200)
- })
- return Window
- end
- local function GetFarms()
- return Farms:GetChildren()
- end
- local function GetFarmOwner(Farm: Folder): string
- local Important = Farm.Important
- local Data = Important.Data
- local Owner = Data.Owner
- return Owner.Value
- end
- local function GetFarm(PlayerName: string): Folder?
- local Farms = GetFarms()
- for _, Farm in next, Farms do
- local Owner = GetFarmOwner(Farm)
- if Owner == PlayerName then
- return Farm
- end
- end
- return
- end
- local MyFarm = GetFarm(LocalPlayer.Name)
- local MyImportant = MyFarm.Important
- local PlantLocations = MyImportant.Plant_Locations
- local PlantsPhysical = MyImportant.Plants_Physical
- local Dirt = PlantLocations:FindFirstChildOfClass("Part")
- local function GetArea(Base: BasePart)
- local Center = Base:GetPivot()
- local Size = Base.Size
- --// Bottom left
- local X1 = math.ceil(Center.X - (Size.X/2))
- local Z1 = math.ceil(Center.Z - (Size.Z/2))
- --// Top right
- local X2 = math.floor(Center.X + (Size.X/2))
- local Z2 = math.floor(Center.Z + (Size.Z/2))
- return X1, Z1, X2, Z2
- end
- local X1, Z1, X2, Z2 = GetArea(Dirt)
- local function GetRandomFarmPoint(): Vector3
- local FarmLands = PlantLocations:GetChildren()
- local FarmLand = FarmLands[math.random(1, #FarmLands)]
- local X1, Z1, X2, Z2 = GetArea(FarmLand)
- local X = math.random(X1, X2)
- local Z = math.random(Z1, Z2)
- return Vector3.new(X, 4, Z)
- end
- local function CanHarvest(Plant): boolean?
- local Prompt = Plant:FindFirstChild("ProximityPrompt", true)
- if not Prompt then return end
- if not Prompt.Enabled then return end
- return true
- end
- local function CollectHarvestable(Parent, Plants, IgnoreDistance: boolean?)
- local Character = LocalPlayer.Character
- local PlayerPosition = Character:GetPivot().Position
- for _, Plant in next, Parent:GetChildren() do
- --// Fruits
- local Fruits = Plant:FindFirstChild("Fruits")
- if Fruits then
- CollectHarvestable(Fruits, Plants, IgnoreDistance)
- end
- --// Distance check
- local PlantPosition = Plant:GetPivot().Position
- local Distance = (PlayerPosition-PlantPosition).Magnitude
- if not IgnoreDistance and Distance > 15 then continue end
- --// Collect
- if CanHarvest(Plant) then
- table.insert(Plants, Plant)
- end
- end
- return Plants
- end
- local function GetHarvestablePlants(IgnoreDistance: boolean?)
- local Plants = {}
- CollectHarvestable(PlantsPhysical, Plants, IgnoreDistance)
- return Plants
- end
- local function AutoWalkLoop()
- local Character = LocalPlayer.Character
- if not Character then return end
- local Humanoid = Character:FindFirstChild("Humanoid")
- if not Humanoid then return end
- local Plants = GetHarvestablePlants(true)
- local RandomAllowed = AutoWalkAllowRandom.Value
- local DoRandom = #Plants == 0 or math.random(1, 3) == 2
- --// Random point
- if RandomAllowed and DoRandom then
- local Position = GetRandomFarmPoint()
- Humanoid:MoveTo(Position)
- AutoWalkStatus.Text = "Random point"
- return
- end
- --// Move to each plant
- for _, Plant in next, Plants do
- local Position = Plant:GetPivot().Position
- Humanoid:MoveTo(Position)
- AutoWalkStatus.Text = Plant.Name
- end
- end
- local function NoclipLoop()
- local Character = LocalPlayer.Character
- if not NoClip.Value then return end
- if not Character then return end
- for _, Part in Character:GetDescendants() do
- if Part:IsA("BasePart") then
- Part.CanCollide = false
- end
- end
- end
- local function MakeLoop(Toggle, Func)
- coroutine.wrap(function()
- while wait(.01) do
- if not Toggle.Value then continue end
- Func()
- end
- end)()
- end
- local function StartServices()
- --// Auto-Walk
- MakeLoop(AutoWalk, function()
- AutoWalkLoop()
- wait(1)
- end)
- --// Noclip
- RunService.Stepped:Connect(NoclipLoop)
- end
- --// Window
- local Window = CreateWindow()
- --// Auto-Walk
- local WallNode = Window:TreeNode({Title="Auto-FARM"})
- AutoWalkStatus = WallNode:Label({
- Text = "None"
- })
- AutoWalk = WallNode:Checkbox({
- Value = false,
- Label = "Enabled"
- })
- AutoWalkAllowRandom = WallNode:Checkbox({
- Value = true,
- Label = "Allow random points"
- })
- NoClip = WallNode:Checkbox({
- Value = false,
- Label = "NoClip"
- })
- --// Start services
- StartServices()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement