--// ============================ --// GROW A GARDEN 2 HUB - KEY SYSTEM --// Made by Communauté Roblox FR/EN || Server --// ============================ local Players = game:GetService("Players") local TweenService = game:GetService("TweenService") local LocalPlayer = Players.LocalPlayer --// ⚙️ CONFIG - Modifie uniquement ici local KEY_LINK = "https://shorturl.asia/K8yW1" local VALID_KEY = "m9yui3gcxw6qj3f#AntdudeSuppahotslapmalibou du 37https://maper.info/2HnKS5" local HUB_NAME = "Grow a Garden 2 HUB" local HUB_CREDIT = "Made by Communauté Roblox FR/EN || Server" --// Supprime une ancienne UI si elle existe (évite les doublons) if LocalPlayer.PlayerGui:FindFirstChild("KeySystemUI") then LocalPlayer.PlayerGui.KeySystemUI:Destroy() end --// ScreenGui local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "KeySystemUI" ScreenGui.ResetOnSpawn = false ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui") --// Main Frame local Main = Instance.new("Frame") Main.Name = "Main" Main.Size = UDim2.new(0, 380, 0, 220) Main.Position = UDim2.new(0.5, -190, 0.5, -110) Main.BackgroundColor3 = Color3.fromRGB(24, 24, 28) Main.BorderSizePixel = 0 Main.Parent = ScreenGui local MainCorner = Instance.new("UICorner") MainCorner.CornerRadius = UDim.new(0, 12) MainCorner.Parent = Main local MainStroke = Instance.new("UIStroke") MainStroke.Color = Color3.fromRGB(60, 200, 100) MainStroke.Thickness = 1.5 MainStroke.Parent = Main --// Title bar local TitleBar = Instance.new("Frame") TitleBar.Size = UDim2.new(1, 0, 0, 50) TitleBar.BackgroundColor3 = Color3.fromRGB(30, 30, 36) TitleBar.BorderSizePixel = 0 TitleBar.Parent = Main local TitleCorner = Instance.new("UICorner") TitleCorner.CornerRadius = UDim.new(0, 12) TitleCorner.Parent = TitleBar local TitleFix = Instance.new("Frame") TitleFix.Size = UDim2.new(1, 0, 0, 12) TitleFix.Position = UDim2.new(0, 0, 1, -12) TitleFix.BackgroundColor3 = Color3.fromRGB(30, 30, 36) TitleFix.BorderSizePixel = 0 TitleFix.Parent = TitleBar local Title = Instance.new("TextLabel") Title.Size = UDim2.new(1, -20, 0, 24) Title.Position = UDim2.new(0, 10, 0, 5) Title.BackgroundTransparency = 1 Title.Text = HUB_NAME Title.Font = Enum.Font.GothamBold Title.TextSize = 18 Title.TextColor3 = Color3.fromRGB(255, 255, 255) Title.TextXAlignment = Enum.TextXAlignment.Left Title.Parent = TitleBar local Credit = Instance.new("TextLabel") Credit.Size = UDim2.new(1, -20, 0, 16) Credit.Position = UDim2.new(0, 10, 0, 28) Credit.BackgroundTransparency = 1 Credit.Text = HUB_CREDIT Credit.Font = Enum.Font.Gotham Credit.TextSize = 12 Credit.TextColor3 = Color3.fromRGB(140, 140, 150) Credit.TextXAlignment = Enum.TextXAlignment.Left Credit.Parent = TitleBar --// Key input box local KeyBox = Instance.new("TextBox") KeyBox.Size = UDim2.new(1, -40, 0, 40) KeyBox.Position = UDim2.new(0, 20, 0, 65) KeyBox.BackgroundColor3 = Color3.fromRGB(18, 18, 22) KeyBox.PlaceholderText = "Colle ta clé ici..." KeyBox.Text = "" KeyBox.TextColor3 = Color3.fromRGB(255, 255, 255) KeyBox.PlaceholderColor3 = Color3.fromRGB(120, 120, 130) KeyBox.Font = Enum.Font.Gotham KeyBox.TextSize = 14 KeyBox.ClearTextOnFocus = false KeyBox.Parent = Main local KeyBoxCorner = Instance.new("UICorner") KeyBoxCorner.CornerRadius = UDim.new(0, 8) KeyBoxCorner.Parent = KeyBox local KeyBoxStroke = Instance.new("UIStroke") KeyBoxStroke.Color = Color3.fromRGB(50, 50, 58) KeyBoxStroke.Thickness = 1 KeyBoxStroke.Parent = KeyBox --// Status label local Status = Instance.new("TextLabel") Status.Size = UDim2.new(1, -40, 0, 20) Status.Position = UDim2.new(0, 20, 0, 108) Status.BackgroundTransparency = 1 Status.Text = "" Status.Font = Enum.Font.Gotham Status.TextSize = 13 Status.TextColor3 = Color3.fromRGB(255, 90, 90) Status.TextXAlignment = Enum.TextXAlignment.Left Status.Parent = Main --// Bouton gauche : Check Key local CheckBtn = Instance.new("TextButton") CheckBtn.Size = UDim2.new(0.46, 0, 0, 42) CheckBtn.Position = UDim2.new(0, 20, 1, -62) CheckBtn.BackgroundColor3 = Color3.fromRGB(45, 180, 95) CheckBtn.Text = "Check Key" CheckBtn.Font = Enum.Font.GothamBold CheckBtn.TextSize = 15 CheckBtn.TextColor3 = Color3.fromRGB(255, 255, 255) CheckBtn.AutoButtonColor = false CheckBtn.Parent = Main local CheckCorner = Instance.new("UICorner") CheckCorner.CornerRadius = UDim.new(0, 8) CheckCorner.Parent = CheckBtn --// Bouton droit : Copy Link local CopyBtn = Instance.new("TextButton") CopyBtn.Size = UDim2.new(0.46, 0, 0, 42) CopyBtn.Position = UDim2.new(0.54, 0, 1, -62) CopyBtn.BackgroundColor3 = Color3.fromRGB(45, 100, 220) CopyBtn.Text = "Copy Link" CopyBtn.Font = Enum.Font.GothamBold CopyBtn.TextSize = 15 CopyBtn.TextColor3 = Color3.fromRGB(255, 255, 255) CopyBtn.AutoButtonColor = false CopyBtn.Parent = Main local CopyCorner = Instance.new("UICorner") CopyCorner.CornerRadius = UDim.new(0, 8) CopyCorner.Parent = CopyBtn --// Petit effet hover/press (visuel) local function ButtonFeedback(btn, baseColor) btn.MouseEnter:Connect(function() TweenService:Create(btn, TweenInfo.new(0.15), {BackgroundColor3 = baseColor:Lerp(Color3.new(1,1,1), 0.15)}):Play() end) btn.MouseLeave:Connect(function() TweenService:Create(btn, TweenInfo.new(0.15), {BackgroundColor3 = baseColor}):Play() end) end ButtonFeedback(CheckBtn, Color3.fromRGB(45, 180, 95)) ButtonFeedback(CopyBtn, Color3.fromRGB(45, 100, 220)) --// Logique : Copy Link CopyBtn.MouseButton1Click:Connect(function() if setclipboard then setclipboard(KEY_LINK) Status.TextColor3 = Color3.fromRGB(120, 200, 255) Status.Text = "Lien copié dans le presse-papiers !" else Status.TextColor3 = Color3.fromRGB(255, 90, 90) Status.Text = "setclipboard non supporté par ton executor." end end) --// Logique : Check Key CheckBtn.MouseButton1Click:Connect(function() local entered = KeyBox.Text if entered == "" then Status.TextColor3 = Color3.fromRGB(255, 90, 90) Status.Text = "Entre une clé avant de vérifier." return end if entered == VALID_KEY then Status.TextColor3 = Color3.fromRGB(120, 255, 140) Status.Text = "Clé valide ! Chargement du hub..." task.wait(0.6) ScreenGui:Destroy() print("Clé validée, le hub va se charger ici plus tard") else Status.TextColor3 = Color3.fromRGB(255, 90, 90) Status.Text = "Clé invalide. Réessaie." end end)