--[[ ๐ŸŒฑ GAG2 Hub v3 โ€” Premium Modern GUI Grow a Garden 2 โ€” Full Exploit Suite Features: Auto-Farm, Teleports, Player Mods, Utility, Steal, Visuals Keybind: RightShift to toggle GUI ]] local Players = game:GetService("Players") local TweenService = game:GetService("TweenService") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local ReplicatedStorage = game:GetService("ReplicatedStorage") local CollectionService = game:GetService("CollectionService") local Lighting = game:GetService("Lighting") local VirtualUser = game:GetService("VirtualUser") local LP = Players.LocalPlayer local Cam = workspace.CurrentCamera local Net = require(ReplicatedStorage.SharedModules.Networking) -- โ•โ•โ• STATE โ•โ•โ• local S = { water=false, harvest=false, sell=false, plant=false, sprinkler=false, plantESP=false, playerESP=false, infReach=false, speed=false, fly=false, noclip=false, antiAFK=false, fullbright=false, noFog=false, } local espObjs = {} local flyBV, flyBG, ncConn local origSpeed = 16 local origAmbient, origOutAmbient, origFogEnd local guiVisible = true local activeTab = "farm" -- Kill old for _,n in {"GAG2v2","GAG2_Hub","GAG2v3"} do local old = LP.PlayerGui:FindFirstChild(n) if old then old:Destroy() end end -- โ•โ•โ• PALETTE โ•โ•โ• local C = { bg = Color3.fromRGB(10,10,16), panel = Color3.fromRGB(16,16,24), card = Color3.fromRGB(22,22,32), card2 = Color3.fromRGB(28,28,40), bar = Color3.fromRGB(14,14,20), accent = Color3.fromRGB(76,175,80), accentD = Color3.fromRGB(46,125,50), accentL = Color3.fromRGB(129,199,132), red = Color3.fromRGB(229,57,53), yellow = Color3.fromRGB(255,202,40), blue = Color3.fromRGB(66,165,245), purple = Color3.fromRGB(149,117,205), orange = Color3.fromRGB(255,167,38), cyan = Color3.fromRGB(38,198,218), txt = Color3.fromRGB(230,230,230), dim = Color3.fromRGB(100,100,115), dim2 = Color3.fromRGB(60,60,75), white = Color3.fromRGB(255,255,255), onBg = Color3.fromRGB(46,125,50), offBg = Color3.fromRGB(42,42,56), knobOff = Color3.fromRGB(90,90,105), } local E = TweenInfo.new(0.22, Enum.EasingStyle.Quint, Enum.EasingDirection.Out) local EF = TweenInfo.new(0.15, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) local ES = TweenInfo.new(0.35, Enum.EasingStyle.Back, Enum.EasingDirection.Out) -- โ•โ•โ• GUI ROOT โ•โ•โ• local G = Instance.new("ScreenGui") G.Name = "GAG2v3" G.ResetOnSpawn = false G.ZIndexBehavior = Enum.ZIndexBehavior.Sibling G.IgnoreGuiInset = false G.Parent = LP.PlayerGui -- Shadow local Shd = Instance.new("ImageLabel") Shd.Size = UDim2.new(0,400,0,530) Shd.Position = UDim2.new(0.5,-200,0.5,-265) Shd.BackgroundTransparency = 1 Shd.Image = "rbxassetid://5554236805" Shd.ImageColor3 = Color3.new(0,0,0) Shd.ImageTransparency = 0.5 Shd.ScaleType = Enum.ScaleType.Slice Shd.SliceCenter = Rect.new(23,23,277,277) Shd.Parent = G -- Main window local W = Instance.new("Frame") W.Name = "Window" W.Size = UDim2.new(0,360,0,490) W.Position = UDim2.new(0.5,-180,0.5,-245) W.BackgroundColor3 = C.bg W.BorderSizePixel = 0 W.ClipsDescendants = true W.Parent = G Instance.new("UICorner",W).CornerRadius = UDim.new(0,12) -- Top gradient accent bar local TopBar = Instance.new("Frame") TopBar.Size = UDim2.new(1,0,0,3) TopBar.BorderSizePixel = 0 TopBar.BackgroundColor3 = C.accent TopBar.Parent = W local tg = Instance.new("UIGradient") tg.Color = ColorSequence.new{ ColorSequenceKeypoint.new(0, C.accentD), ColorSequenceKeypoint.new(0.3, C.accent), ColorSequenceKeypoint.new(0.6, C.cyan), ColorSequenceKeypoint.new(1, C.blue), } tg.Parent = TopBar -- Title row local TitleRow = Instance.new("Frame") TitleRow.Size = UDim2.new(1,0,0,40) TitleRow.Position = UDim2.new(0,0,0,3) TitleRow.BackgroundColor3 = C.bar TitleRow.BorderSizePixel = 0 TitleRow.Parent = W local TitleLbl = Instance.new("TextLabel") TitleLbl.Text = " ๐ŸŒฑ GAG2 Hub" TitleLbl.Size = UDim2.new(0,140,1,0) TitleLbl.BackgroundTransparency = 1 TitleLbl.TextColor3 = C.accent TitleLbl.Font = Enum.Font.GothamBold TitleLbl.TextSize = 15 TitleLbl.TextXAlignment = Enum.TextXAlignment.Left TitleLbl.Parent = TitleRow local VerLbl = Instance.new("TextLabel") VerLbl.Text = "v3" VerLbl.Size = UDim2.new(0,22,0,16) VerLbl.Position = UDim2.new(0,132,0,14) VerLbl.BackgroundColor3 = C.card2 VerLbl.TextColor3 = C.dim VerLbl.Font = Enum.Font.GothamBold VerLbl.TextSize = 9 VerLbl.BorderSizePixel = 0 VerLbl.Parent = TitleRow Instance.new("UICorner",VerLbl).CornerRadius = UDim.new(0,4) local function mkWin(txt,px,col) local b = Instance.new("TextButton") b.Size = UDim2.new(0,26,0,26) b.Position = UDim2.new(1,px,0,7) b.BackgroundColor3 = col b.Text = txt b.TextColor3 = C.white b.Font = Enum.Font.GothamBold b.TextSize = 12 b.BorderSizePixel = 0 b.Parent = TitleRow Instance.new("UICorner",b).CornerRadius = UDim.new(0,7) b.MouseEnter:Connect(function() TweenService:Create(b,EF,{BackgroundColor3=Color3.new(col.R*1.3,col.G*1.3,col.B*1.3)}):Play() end) b.MouseLeave:Connect(function() TweenService:Create(b,EF,{BackgroundColor3=col}):Play() end) return b end local BtnClose = mkWin("โœ•",-32,C.red) local BtnMin = mkWin("โ€”",-62,C.dim2) -- โ•โ•โ• TAB SYSTEM โ•โ•โ• local TabFrame = Instance.new("Frame") TabFrame.Size = UDim2.new(1,-16,0,32) TabFrame.Position = UDim2.new(0,8,0,46) TabFrame.BackgroundTransparency = 1 TabFrame.Parent = W local TABS = { {id="farm", icon="โš™๏ธ", label="Farm", color=C.accent}, {id="tele", icon="๐Ÿ“", label="Teleport", color=C.blue}, {id="player", icon="๐Ÿƒ", label="Player", color=C.purple}, {id="visual", icon="๐Ÿ‘๏ธ", label="Visuals", color=C.cyan}, {id="misc", icon="๐Ÿ”ง", label="Misc", color=C.orange}, } local tabW = math.floor((360 - 16 - (#TABS-1)*4) / #TABS) local tabBtns, tabPages = {}, {} -- Underline indicator local Underline = Instance.new("Frame") Underline.Size = UDim2.new(0, tabW, 0, 2) Underline.Position = UDim2.new(0, 0, 1, -2) Underline.BackgroundColor3 = C.accent Underline.BorderSizePixel = 0 Underline.ZIndex = 5 Underline.Parent = TabFrame Instance.new("UICorner",Underline).CornerRadius = UDim.new(0,1) for i, tab in TABS do local xOff = (i-1) * (tabW + 4) local b = Instance.new("TextButton") b.Name = "T_"..tab.id b.Size = UDim2.new(0, tabW, 0, 28) b.Position = UDim2.new(0, xOff, 0, 0) b.BackgroundTransparency = 1 b.Text = tab.icon.." "..tab.label b.TextColor3 = i==1 and C.white or C.dim b.Font = Enum.Font.GothamBold b.TextSize = 10 b.BorderSizePixel = 0 b.ZIndex = 4 b.Parent = TabFrame tabBtns[tab.id] = {btn=b, idx=i, color=tab.color, xOff=xOff} local pg = Instance.new("ScrollingFrame") pg.Name = "P_"..tab.id pg.Size = UDim2.new(1,-16,1,-108) pg.Position = UDim2.new(0,8,0,82) pg.BackgroundTransparency = 1 pg.ScrollBarThickness = 2 pg.ScrollBarImageColor3 = tab.color pg.CanvasSize = UDim2.new(0,0,0,0) pg.AutomaticCanvasSize = Enum.AutomaticSize.Y pg.BorderSizePixel = 0 pg.Visible = i==1 pg.Parent = W local ly = Instance.new("UIListLayout") ly.SortOrder = Enum.SortOrder.LayoutOrder ly.Padding = UDim.new(0,4) ly.Parent = pg tabPages[tab.id] = pg end local function switchTab(id) activeTab = id local info = tabBtns[id] TweenService:Create(Underline,E,{ Position = UDim2.new(0,info.xOff,1,-2), BackgroundColor3 = info.color, }):Play() for tid, t in tabBtns do TweenService:Create(t.btn,EF,{TextColor3 = tid==id and C.white or C.dim}):Play() end for tid, pg in tabPages do pg.Visible = tid==id end end for _, tab in TABS do tabBtns[tab.id].btn.MouseButton1Click:Connect(function() switchTab(tab.id) end) end -- Thin separator local Sep = Instance.new("Frame") Sep.Size = UDim2.new(1,-16,0,1) Sep.Position = UDim2.new(0,8,0,79) Sep.BackgroundColor3 = C.dim2 Sep.BackgroundTransparency = 0.5 Sep.BorderSizePixel = 0 Sep.Parent = W -- โ•โ•โ• STATUS BAR โ•โ•โ• local SBar = Instance.new("Frame") SBar.Size = UDim2.new(1,0,0,24) SBar.Position = UDim2.new(0,0,1,-24) SBar.BackgroundColor3 = C.bar SBar.BorderSizePixel = 0 SBar.Parent = W local SepBot = Instance.new("Frame") SepBot.Size = UDim2.new(1,-16,0,1) SepBot.Position = UDim2.new(0,8,0,0) SepBot.BackgroundColor3 = C.dim2 SepBot.BackgroundTransparency = 0.6 SepBot.BorderSizePixel = 0 SepBot.Parent = SBar local STxt = Instance.new("TextLabel") STxt.Text = " โ— Idle" STxt.Size = UDim2.new(1,-8,1,0) STxt.Position = UDim2.new(0,4,0,0) STxt.BackgroundTransparency = 1 STxt.TextColor3 = C.dim STxt.Font = Enum.Font.Gotham STxt.TextSize = 10 STxt.TextXAlignment = Enum.TextXAlignment.Left STxt.Parent = SBar -- โ•โ•โ• COMPONENT FACTORIES โ•โ•โ• local function hdr(parent, text, ord, icon) local f = Instance.new("Frame") f.Size = UDim2.new(1,0,0,22) f.BackgroundTransparency = 1 f.LayoutOrder = ord f.Parent = parent local l = Instance.new("TextLabel") l.Text = (icon or "").. " "..text l.Size = UDim2.new(1,0,1,0) l.BackgroundTransparency = 1 l.TextColor3 = C.accent l.Font = Enum.Font.GothamBold l.TextSize = 11 l.TextXAlignment = Enum.TextXAlignment.Left l.Parent = f return l end local function tog(parent, text, ord, cb, desc) local f = Instance.new("Frame") f.Size = UDim2.new(1,0,0, desc and 46 or 32) f.BackgroundColor3 = C.card f.BorderSizePixel = 0 f.LayoutOrder = ord f.Parent = parent Instance.new("UICorner",f).CornerRadius = UDim.new(0,8) -- Hover glow local st = Instance.new("UIStroke") st.Color = C.accent st.Thickness = 0 st.Transparency = 0.7 st.Parent = f local l = Instance.new("TextLabel") l.Text = " "..text l.Size = UDim2.new(1,-58, 0, 20) l.Position = UDim2.new(0,0,0, desc and 4 or 6) l.BackgroundTransparency = 1 l.TextColor3 = C.txt l.Font = Enum.Font.GothamMedium l.TextSize = 11 l.TextXAlignment = Enum.TextXAlignment.Left l.Parent = f if desc then local d = Instance.new("TextLabel") d.Text = " "..desc d.Size = UDim2.new(1,-58,0,14) d.Position = UDim2.new(0,0,0,24) d.BackgroundTransparency = 1 d.TextColor3 = C.dim d.Font = Enum.Font.Gotham d.TextSize = 9 d.TextXAlignment = Enum.TextXAlignment.Left d.Parent = f end -- Toggle switch local track = Instance.new("Frame") track.Size = UDim2.new(0,36,0,18) track.Position = UDim2.new(1,-44,0, desc and 14 or 7) track.BackgroundColor3 = C.offBg track.BorderSizePixel = 0 track.Parent = f Instance.new("UICorner",track).CornerRadius = UDim.new(1,0) local knob = Instance.new("Frame") knob.Size = UDim2.new(0,14,0,14) knob.Position = UDim2.new(0,2,0.5,-7) knob.BackgroundColor3 = C.knobOff knob.BorderSizePixel = 0 knob.Parent = track Instance.new("UICorner",knob).CornerRadius = UDim.new(1,0) local hit = Instance.new("TextButton") hit.Size = UDim2.new(1,0,1,0) hit.BackgroundTransparency = 1 hit.Text = "" hit.Parent = f hit.MouseEnter:Connect(function() TweenService:Create(st,EF,{Thickness=1}):Play() end) hit.MouseLeave:Connect(function() TweenService:Create(st,EF,{Thickness=0}):Play() end) local on = false hit.MouseButton1Click:Connect(function() on = not on TweenService:Create(track,E,{BackgroundColor3 = on and C.onBg or C.offBg}):Play() TweenService:Create(knob,E,{ Position = on and UDim2.new(0,20,0.5,-7) or UDim2.new(0,2,0.5,-7), BackgroundColor3 = on and C.white or C.knobOff, }):Play() cb(on) end) return f end local function btn(parent, text, ord, accent, cb) local b = Instance.new("TextButton") b.Size = UDim2.new(1,0,0,28) b.BackgroundColor3 = C.card b.Text = " "..text b.TextColor3 = C.txt b.Font = Enum.Font.GothamMedium b.TextSize = 11 b.TextXAlignment = Enum.TextXAlignment.Left b.BorderSizePixel = 0 b.LayoutOrder = ord b.Parent = parent Instance.new("UICorner",b).CornerRadius = UDim.new(0,8) local st = Instance.new("UIStroke") st.Color = accent or C.accent st.Thickness = 0 st.Transparency = 0.6 st.Parent = b b.MouseEnter:Connect(function() TweenService:Create(b,EF,{BackgroundColor3=C.card2}):Play() TweenService:Create(st,EF,{Thickness=1}):Play() end) b.MouseLeave:Connect(function() TweenService:Create(b,EF,{BackgroundColor3=C.card}):Play() TweenService:Create(st,EF,{Thickness=0}):Play() end) b.MouseButton1Click:Connect(function() TweenService:Create(b,EF,{BackgroundColor3=accent or C.accent}):Play() task.delay(0.15, function() TweenService:Create(b,EF,{BackgroundColor3=C.card}):Play() end) cb() end) return b end local function spc(parent, h, ord) local s = Instance.new("Frame") s.Size = UDim2.new(1,0,0,h) s.BackgroundTransparency = 1 s.LayoutOrder = ord s.Parent = parent end -- โ•โ•โ• HELPERS โ•โ•โ• local function tp(pos) local c = LP.Character if c and c:FindFirstChild("HumanoidRootPart") then c.HumanoidRootPart.CFrame = CFrame.new(pos + Vector3.new(0,3,0)) end end local function tpI(inst) if not inst then return end if inst:IsA("BasePart") then tp(inst.Position) elseif inst:IsA("Model") then local p = inst.PrimaryPart or inst:FindFirstChildWhichIsA("BasePart") if p then tp(p.Position) end end end local function myPlot() local id = LP:GetAttribute("PlotId") if id then return workspace.Gardens:FindFirstChild("Plot"..id) end end local function toast(msg, col) STxt.Text = " "..msg STxt.TextColor3 = col or C.accent task.delay(4, function() if STxt.Text == " "..msg then STxt.Text = " โ— Idle" STxt.TextColor3 = C.dim end end) end -- โ•โ•โ• FARM LOOPS โ•โ•โ• local function loopWater() task.spawn(function() while S.water do pcall(function() local pl = myPlot(); if not pl then return end local pts = pl:FindFirstChild("Plants"); if not pts then return end local ch = LP.Character; if not ch then return end local t = ch:FindFirstChildWhichIsA("Tool") if not t or not t:GetAttribute("WateringCan") then return end local ct = t:GetAttribute("WateringCan") for _,p in pts:GetChildren() do if not S.water then break end local pt = p:FindFirstChild("HarvestPart") or p:FindFirstChildWhichIsA("BasePart") if pt then pcall(function() Net.WateringCan.UseWateringCan:Fire(pt.Position,ct,t) end); task.wait(0.1) end end end); task.wait(2) end end) end local function loopHarvest() task.spawn(function() while S.harvest do pcall(function() local pl = myPlot(); if not pl then return end local pts = pl:FindFirstChild("Plants"); if not pts then return end for _,o in pts:GetDescendants() do if not S.harvest then break end if o:IsA("ProximityPrompt") and o.Enabled and (o.Name=="HarvestPrompt" or o.Name=="CollectPrompt") then fireproximityprompt(o); task.wait(0.08) end end end); task.wait(1) end end) end local function loopSell() task.spawn(function() while S.sell do pcall(function() local fruit = false local ch, bp = LP.Character, LP:FindFirstChildOfClass("Backpack") if ch then for _,t in ch:GetChildren() do if t:IsA("Tool") and t:GetAttribute("HarvestedFruit") then fruit=true; break end end end if not fruit and bp then for _,t in bp:GetChildren() do if t:IsA("Tool") and t:GetAttribute("HarvestedFruit") then fruit=true; break end end end if not fruit then return end local npcs = workspace:FindFirstChild("NPCS") local sv = npcs and npcs:FindFirstChild("Steven"); if not sv then return end tpI(sv); task.wait(0.8) local hrp = sv:FindFirstChild("HumanoidRootPart") if hrp then local pp = hrp:FindFirstChild("ProximityPrompt"); if pp then fireproximityprompt(pp); task.wait(0.5) end end local r = Net.NPCS.SellAll:Fire() if r and r.Success then toast("โœ… Sold for "..(r.TotalValue or "?").."ยข", C.accent) end task.wait(0.6) local pl = myPlot(); if pl then tpI(pl) end end); task.wait(5) end end) end local function loopPlant() task.spawn(function() while S.plant do pcall(function() local ch = LP.Character; if not ch then return end local t = ch:FindFirstChildWhichIsA("Tool") if not t or not t:GetAttribute("SeedTool") then return end local st = t:GetAttribute("SeedTool") local pl = myPlot(); if not pl then return end for _,p in pl:GetDescendants() do if not S.plant then break end if p:IsA("BasePart") and CollectionService:HasTag(p,"PlantArea") then pcall(function() Net.Plant.PlantSeed:Fire(p.Position,st,t) end) task.wait(0.06) end end end); task.wait(2.5) end end) end local function loopSprinkler() task.spawn(function() while S.sprinkler do pcall(function() local ch = LP.Character; if not ch then return end local t = ch:FindFirstChildWhichIsA("Tool") if not t or not t:GetAttribute("Sprinkler") then return end local sp = t:GetAttribute("Sprinkler") local pl = myPlot(); if not pl then return end for _,p in pl:GetDescendants() do if not S.sprinkler then break end if p:IsA("BasePart") and CollectionService:HasTag(p,"PlantArea") then pcall(function() Net.Place.PlaceSprinkler:Fire(p.Position,sp,t,nil) end) task.wait(0.1) end end end); task.wait(4) end end) end -- โ•โ•โ• VISUAL FEATURES โ•โ•โ• local function toggleESP(key, on, getTargets, color) if on then task.spawn(function() while S[key] do pcall(function() for _,h in espObjs do if h and h.Parent then pcall(function() h:Destroy() end) end end table.clear(espObjs) for _,inst in getTargets() do local h = Instance.new("Highlight") h.Adornee = inst h.FillColor = color h.FillTransparency = 0.75 h.OutlineColor = color h.OutlineTransparency = 0.2 h.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop h.Parent = inst table.insert(espObjs, h) end end); task.wait(4) end end) else for _,h in espObjs do pcall(function() h:Destroy() end) end table.clear(espObjs) end end local function toggleFly(on) if on then local ch = LP.Character; if not ch or not ch:FindFirstChild("HumanoidRootPart") then return end local hrp = ch.HumanoidRootPart flyBV = Instance.new("BodyVelocity"); flyBV.MaxForce = Vector3.one*math.huge; flyBV.Velocity = Vector3.zero; flyBV.Parent = hrp flyBG = Instance.new("BodyGyro"); flyBG.MaxTorque = Vector3.one*math.huge; flyBG.P = 9e4; flyBG.Parent = hrp task.spawn(function() while S.fly and flyBV and flyBV.Parent do local d = Vector3.zero if UserInputService:IsKeyDown(Enum.KeyCode.W) then d+=Cam.CFrame.LookVector end if UserInputService:IsKeyDown(Enum.KeyCode.S) then d-=Cam.CFrame.LookVector end if UserInputService:IsKeyDown(Enum.KeyCode.A) then d-=Cam.CFrame.RightVector end if UserInputService:IsKeyDown(Enum.KeyCode.D) then d+=Cam.CFrame.RightVector end if UserInputService:IsKeyDown(Enum.KeyCode.Space) then d+=Vector3.yAxis end if UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) then d-=Vector3.yAxis end local spd = UserInputService:IsKeyDown(Enum.KeyCode.LeftShift) and 150 or 75 flyBV.Velocity = d.Magnitude>0 and d.Unit*spd or Vector3.zero flyBG.CFrame = Cam.CFrame RunService.Heartbeat:Wait() end end) else if flyBV then pcall(function() flyBV:Destroy() end); flyBV=nil end if flyBG then pcall(function() flyBG:Destroy() end); flyBG=nil end end end local function toggleNoclip(on) if on then ncConn = RunService.Stepped:Connect(function() pcall(function() local c = LP.Character; if c then for _,p in c:GetDescendants() do if p:IsA("BasePart") then p.CanCollide=false end end end end) end) else if ncConn then ncConn:Disconnect(); ncConn=nil end end end local function toggleSpeed(on) local h = LP.Character and LP.Character:FindFirstChildWhichIsA("Humanoid"); if not h then return end if on then origSpeed=h.WalkSpeed; h.WalkSpeed=90 else h.WalkSpeed=origSpeed end end local function toggleFullbright(on) if on then origAmbient = Lighting.Ambient origOutAmbient = Lighting.OutdoorAmbient Lighting.Ambient = Color3.new(1,1,1) Lighting.OutdoorAmbient = Color3.new(1,1,1) Lighting.Brightness = 2 else Lighting.Ambient = origAmbient or Color3.fromRGB(127,127,127) Lighting.OutdoorAmbient = origOutAmbient or Color3.fromRGB(127,127,127) Lighting.Brightness = 1 end end local function toggleFog(on) if on then origFogEnd = Lighting.FogEnd Lighting.FogEnd = 1e6 else Lighting.FogEnd = origFogEnd or 10000 end end local function toggleInfReach(on) if on then task.spawn(function() while S.infReach do pcall(function() for _,pp in workspace:GetDescendants() do if pp:IsA("ProximityPrompt") then pp.MaxActivationDistance=9999 end end end); task.wait(3) end end) end end -- โ•โ•โ• TAB 1: FARM โ•โ•โ• local P = tabPages.farm hdr(P,"Auto-Farm",1,"๐ŸŒพ") tog(P,"Auto Water",2,function(on) S.water=on; if on then loopWater() end end,"Equip watering can first") tog(P,"Auto Harvest",3,function(on) S.harvest=on; if on then loopHarvest() end end,"Collects all ripe fruits") tog(P,"Auto Sell โ†’ Steven",4,function(on) S.sell=on; if on then loopSell() end end,"TPs to Steven, sells, TPs back") tog(P,"Auto Plant Seeds",5,function(on) S.plant=on; if on then loopPlant() end end,"Equip seed tool first") tog(P,"Auto Sprinkler",6,function(on) S.sprinkler=on; if on then loopSprinkler() end end,"Equip sprinkler tool first") spc(P,4,7) hdr(P,"Interaction",8,"๐Ÿคš") tog(P,"Infinite Prompt Reach",9,function(on) S.infReach=on; toggleInfReach(on) end,"Interact from anywhere") -- โ•โ•โ• TAB 2: TELEPORT โ•โ•โ• P = tabPages.tele hdr(P,"NPC Locations",1,"๐Ÿช") btn(P,"๐Ÿ’ฐ Steven (Sell)",2,C.accent,function() local n=workspace:FindFirstChild("NPCS") and workspace.NPCS:FindFirstChild("Steven"); if n then tpI(n); toast("TP โ†’ Steven",C.blue) end end) btn(P,"๐Ÿง‘โ€๐ŸŒพ Gilbert",3,C.blue,function() local n=workspace:FindFirstChild("NPCS") and workspace.NPCS:FindFirstChild("Gilbert"); if n then tpI(n); toast("TP โ†’ Gilbert",C.blue) end end) btn(P,"๐Ÿ‘ฉ Charlotte",4,C.purple,function() local n=workspace:FindFirstChild("NPCS") and workspace.NPCS:FindFirstChild("Charlotte"); if n then tpI(n) end end) btn(P,"๐Ÿง” George",5,C.orange,function() local f=workspace:FindFirstChild("NPCS") and workspace.NPCS:FindFirstChild("Model"); local n=f and f:FindFirstChild("George"); if n then tpI(n) end end) btn(P,"๐Ÿ‘ฆ Sam",6,C.cyan,function() local n=workspace:FindFirstChild("NPCS") and workspace.NPCS:FindFirstChild("Sam"); if n then tpI(n) end end) spc(P,4,7) hdr(P,"Garden",8,"๐Ÿก") btn(P,"๐Ÿก My Garden",9,C.accent,function() local p=myPlot(); if p then tpI(p); toast("TP โ†’ Garden",C.accent) end end) spc(P,4,10) hdr(P,"Players",11,"๐Ÿ‘ฅ") btn(P,"๐Ÿ”„ Refresh Player List",12,C.blue,function() for _,c in tabPages.tele:GetChildren() do if c.Name:sub(1,4)=="PLR_" then c:Destroy() end end local o = 13 for _,plot in workspace.Gardens:GetChildren() do local oid = plot:GetAttribute("OwnerUserId") or plot:GetAttribute("Owner") if oid then local plr = Players:GetPlayerByUserId(tonumber(oid) or 0) if plr and plr ~= LP then local b = btn(tabPages.tele,"โ†’ "..plr.DisplayName.." ("..plot.Name..")",o,C.purple,function() tpI(plot); toast("TP โ†’ "..plr.DisplayName,C.purple) end) b.Name = "PLR_"..plr.Name o = o + 1 end end end toast("๐Ÿ”„ Refreshed ("..tostring(o-13).." players)", C.blue) end) -- โ•โ•โ• TAB 3: PLAYER โ•โ•โ• P = tabPages.player hdr(P,"Movement",1,"๐Ÿƒ") tog(P,"Speed Boost",2,function(on) S.speed=on; toggleSpeed(on) end,"WalkSpeed โ†’ 90") tog(P,"Fly",3,function(on) S.fly=on; toggleFly(on) end,"WASD + Space/Ctrl, Shift = fast") tog(P,"Noclip",4,function(on) S.noclip=on; toggleNoclip(on) end,"Walk through walls") spc(P,4,5) hdr(P,"Stats",6,"๐Ÿ“Š") local infoBox = Instance.new("TextLabel") infoBox.Size = UDim2.new(1,0,0,88) infoBox.BackgroundColor3 = C.card infoBox.BorderSizePixel = 0 infoBox.TextColor3 = C.txt infoBox.Font = Enum.Font.Gotham infoBox.TextSize = 10 infoBox.TextXAlignment = Enum.TextXAlignment.Left infoBox.TextYAlignment = Enum.TextYAlignment.Top infoBox.TextWrapped = true infoBox.LayoutOrder = 7 infoBox.Parent = P Instance.new("UICorner",infoBox).CornerRadius = UDim.new(0,8) local pad = Instance.new("UIPadding"); pad.PaddingLeft=UDim.new(0,10); pad.PaddingTop=UDim.new(0,8); pad.Parent=infoBox task.spawn(function() while G.Parent do pcall(function() local c = LP.Character local h = c and c:FindFirstChildWhichIsA("Humanoid") local hrp = c and c:FindFirstChild("HumanoidRootPart") local pl = myPlot() local pc = 0 if pl and pl:FindFirstChild("Plants") then pc = #pl.Plants:GetChildren() end infoBox.Text = string.format( "Player: %s\nHealth: %s ยท Speed: %s ยท JumpPower: %s\nPosition: %s\nPlot: %s ยท Plants: %d\nCoins: %s", LP.DisplayName, h and math.floor(h.Health) or "โ€“", h and math.floor(h.WalkSpeed) or "โ€“", h and math.floor(h.JumpPower) or "โ€“", hrp and string.format("%.0f, %.0f, %.0f",hrp.Position.X,hrp.Position.Y,hrp.Position.Z) or "โ€“", pl and pl.Name or "None", pc, LP:FindFirstChild("leaderstats") and LP.leaderstats:FindFirstChild("Coins") and tostring(LP.leaderstats.Coins.Value) or "โ€“" ) end); task.wait(0.5) end end) -- โ•โ•โ• TAB 4: VISUALS โ•โ•โ• P = tabPages.visual hdr(P,"ESP",1,"๐Ÿ”") tog(P,"Plant ESP",2,function(on) S.plantESP=on; toggleESP("plantESP",on,function() local t = {} for _,plot in workspace.Gardens:GetChildren() do local pts = plot:FindFirstChild("Plants") if pts then for _,p in pts:GetChildren() do table.insert(t,p) end end end; return t end, C.accent) end,"Highlight all plants") tog(P,"Player ESP",3,function(on) S.playerESP=on; toggleESP("playerESP",on,function() local t = {} for _,p in Players:GetPlayers() do if p~=LP and p.Character then table.insert(t,p.Character) end end; return t end, C.blue) end,"Highlight all players") spc(P,4,4) hdr(P,"Lighting",5,"๐Ÿ’ก") tog(P,"Fullbright",6,function(on) S.fullbright=on; toggleFullbright(on) end,"Max brightness everywhere") tog(P,"No Fog",7,function(on) S.noFog=on; toggleFog(on) end,"Remove distance fog") -- โ•โ•โ• TAB 5: MISC โ•โ•โ• P = tabPages.misc hdr(P,"Utility",1,"๐Ÿ›ก๏ธ") tog(P,"Anti-AFK",2,function(on) S.antiAFK=on; if on then task.spawn(function() while S.antiAFK do pcall(function() VirtualUser:CaptureController(); VirtualUser:ClickButton2(Vector2.new()) end); task.wait(55) end end) end end,"Stay connected forever") spc(P,4,3) hdr(P,"Quick Actions",4,"โšก") btn(P,"๐Ÿ”จ Remove Poison Ivy",5,C.red,function() pcall(function() local pl = myPlot(); if not pl then return end local c = 0 for _,d in pl:GetDescendants() do if d.Name:lower():find("poison") then pcall(function() d:Destroy() end); c+=1 end end toast("๐Ÿ”จ Removed "..c.." ivy", C.orange) end) end) btn(P,"๐ŸŒง๏ธ Refresh Garden Data",6,C.blue,function() pcall(function() Net.Garden.RequestGardens:Fire() end) toast("๐ŸŒง๏ธ Garden data refreshed", C.blue) end) btn(P,"๐Ÿ”” Rejoin Server",7,C.orange,function() pcall(function() game:GetService("TeleportService"):TeleportToPlaceInstance(game.PlaceId,game.JobId) end) end) btn(P,"๐Ÿ“‹ Copy Server ID",8,C.cyan,function() pcall(function() setclipboard(game.JobId) end) toast("๐Ÿ“‹ Server ID copied!", C.cyan) end) btn(P,"๐Ÿ”— Copy Join Link",9,C.purple,function() pcall(function() setclipboard("roblox://experiences/start?placeId="..game.PlaceId.."&gameInstanceId="..game.JobId) end) toast("๐Ÿ”— Join link copied!", C.purple) end) spc(P,4,10) hdr(P,"Server",11,"๐ŸŒ") local srvBox = Instance.new("TextLabel") srvBox.Size = UDim2.new(1,0,0,50) srvBox.BackgroundColor3 = C.card srvBox.BorderSizePixel = 0 srvBox.TextColor3 = C.txt srvBox.Font = Enum.Font.Gotham srvBox.TextSize = 10 srvBox.TextXAlignment = Enum.TextXAlignment.Left srvBox.TextYAlignment = Enum.TextYAlignment.Top srvBox.TextWrapped = true srvBox.LayoutOrder = 12 srvBox.Parent = P Instance.new("UICorner",srvBox).CornerRadius = UDim.new(0,8) local pad2 = Instance.new("UIPadding"); pad2.PaddingLeft=UDim.new(0,10); pad2.PaddingTop=UDim.new(0,8); pad2.Parent=srvBox pcall(function() srvBox.Text = string.format("Place: %s ยท Version: %s\nServer: %s\nPlayers: %d/%d", game.PlaceId, game.PlaceVersion, game.JobId:sub(1,20).."...", #Players:GetPlayers(), Players.MaxPlayers) end) -- โ•โ•โ• DRAG โ•โ•โ• do local dragging,dIn,dSt,sP,shP TitleRow.InputBegan:Connect(function(i) if i.UserInputType==Enum.UserInputType.MouseButton1 or i.UserInputType==Enum.UserInputType.Touch then dragging=true; dSt=i.Position; sP=W.Position; shP=Shd.Position i.Changed:Connect(function() if i.UserInputState==Enum.UserInputState.End then dragging=false end end) end end) TitleRow.InputChanged:Connect(function(i) if i.UserInputType==Enum.UserInputType.MouseMovement or i.UserInputType==Enum.UserInputType.Touch then dIn=i end end) UserInputService.InputChanged:Connect(function(i) if i==dIn and dragging then local d=i.Position-dSt W.Position=UDim2.new(sP.X.Scale,sP.X.Offset+d.X,sP.Y.Scale,sP.Y.Offset+d.Y) Shd.Position=UDim2.new(shP.X.Scale,shP.X.Offset+d.X,shP.Y.Scale,shP.Y.Offset+d.Y) end end) end -- โ•โ•โ• KEYBIND: RightShift toggle โ•โ•โ• UserInputService.InputBegan:Connect(function(i,g) if g then return end if i.KeyCode == Enum.KeyCode.RightShift then guiVisible = not guiVisible W.Visible = guiVisible Shd.Visible = guiVisible end end) -- โ•โ•โ• MINIMIZE / CLOSE โ•โ•โ• local isMin = false BtnMin.MouseButton1Click:Connect(function() isMin = not isMin if isMin then TweenService:Create(W,E,{Size=UDim2.new(0,360,0,43)}):Play() TweenService:Create(Shd,E,{Size=UDim2.new(0,400,0,83)}):Play() BtnMin.Text = "+" TabFrame.Visible=false; SBar.Visible=false; Sep.Visible=false for _,pg in tabPages do pg.Visible=false end else TweenService:Create(W,E,{Size=UDim2.new(0,360,0,490)}):Play() TweenService:Create(Shd,E,{Size=UDim2.new(0,400,0,530)}):Play() BtnMin.Text = "โ€”" TabFrame.Visible=true; SBar.Visible=true; Sep.Visible=true switchTab(activeTab) end end) BtnClose.MouseButton1Click:Connect(function() for k in S do S[k]=false end toggleESP("plantESP",false,function() return {} end,C.accent) toggleFly(false); toggleNoclip(false); toggleFullbright(false); toggleFog(false) pcall(function() local h=LP.Character and LP.Character:FindFirstChildWhichIsA("Humanoid"); if h then h.WalkSpeed=origSpeed end end) G:Destroy() end) -- โ•โ•โ• STATUS TICKER โ•โ•โ• task.spawn(function() while G.Parent do local p = {} if S.water then p[#p+1]="๐Ÿ’ง" end if S.harvest then p[#p+1]="๐ŸŒพ" end if S.sell then p[#p+1]="๐Ÿ’ฐ" end if S.plant then p[#p+1]="๐ŸŒฑ" end if S.sprinkler then p[#p+1]="๐Ÿšฟ" end if S.fly then p[#p+1]="โœˆ๏ธ" end if S.noclip then p[#p+1]="๐Ÿ‘ป" end if S.antiAFK then p[#p+1]="๐Ÿ›ก๏ธ" end if S.plantESP then p[#p+1]="๐Ÿ”" end if S.fullbright then p[#p+1]="๐Ÿ’ก" end if #p>0 and not STxt.Text:find("โœ…") and not STxt.Text:find("๐Ÿ“‹") and not STxt.Text:find("๐Ÿ”—") and not STxt.Text:find("๐Ÿ”จ") and not STxt.Text:find("๐Ÿ”„") then STxt.Text = " Active: "..table.concat(p," ") STxt.TextColor3 = C.yellow elseif #p==0 and not STxt.Text:find("โœ…") and not STxt.Text:find("๐Ÿ“‹") and not STxt.Text:find("๐Ÿ”—") and not STxt.Text:find("๐Ÿ”จ") and not STxt.Text:find("๐Ÿ”„") then STxt.Text = " โ— Idle ยท "..#Players:GetPlayers().." players ยท RShift to hide" STxt.TextColor3 = C.dim end task.wait(1) end end) -- โ•โ•โ• INTRO ANIMATION โ•โ•โ• W.Position = UDim2.new(0.5,-180,0.5,-235) W.Size = UDim2.new(0,360,0,0) Shd.Size = UDim2.new(0,400,0,0) TweenService:Create(W, TweenInfo.new(0.45,Enum.EasingStyle.Back,Enum.EasingDirection.Out), {Size=UDim2.new(0,360,0,490)}):Play() TweenService:Create(Shd, TweenInfo.new(0.5,Enum.EasingStyle.Quad,Enum.EasingDirection.Out), {Size=UDim2.new(0,400,0,530)}):Play() print("[GAG2 Hub v3] Loaded โ€” RightShift to toggle")