-- Infinite Rocket GUI -- Simple draggable rocket award tool local Players = game:GetService("Players") local LocalPlayer = Players.LocalPlayer -- Cleanup: remove ALL existing instances before creating a new one for _, gui in ipairs(LocalPlayer.PlayerGui:GetChildren()) do if gui.Name == "InfiniteRocket" then gui:Destroy() end end -- GUI container local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "InfiniteRocket" ScreenGui.ResetOnSpawn = false ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui") -- Main frame (draggable) local Frame = Instance.new("Frame") Frame.Size = UDim2.new(0, 140, 0, 85) Frame.Position = UDim2.new(0.5, -70, 0.5, -42) Frame.BackgroundColor3 = Color3.fromRGB(28, 28, 28) Frame.BorderSizePixel = 0 Frame.Active = true Frame.Draggable = true Frame.Parent = ScreenGui Instance.new("UICorner", Frame).CornerRadius = UDim.new(0, 5) -- Border outline local Stroke = Instance.new("UIStroke", Frame) Stroke.Color = Color3.fromRGB(75, 75, 75) Stroke.Thickness = 1 -- Title label local Title = Instance.new("TextLabel") Title.Size = UDim2.new(1, -28, 0, 26) Title.Position = UDim2.new(0, 8, 0, 0) Title.BackgroundTransparency = 1 Title.Text = "Infinite Rocket" Title.TextColor3 = Color3.fromRGB(210, 210, 210) Title.TextSize = 12 Title.Font = Enum.Font.Gotham Title.TextXAlignment = Enum.TextXAlignment.Left Title.Parent = Frame -- Close button (X) local CloseBtn = Instance.new("TextButton") CloseBtn.Size = UDim2.new(0, 18, 0, 18) CloseBtn.Position = UDim2.new(1, -22, 0, 4) CloseBtn.BackgroundColor3 = Color3.fromRGB(60, 60, 60) CloseBtn.BorderSizePixel = 0 CloseBtn.Text = "X" CloseBtn.TextColor3 = Color3.fromRGB(170, 170, 170) CloseBtn.TextSize = 10 CloseBtn.Font = Enum.Font.Gotham CloseBtn.Parent = Frame Instance.new("UICorner", CloseBtn).CornerRadius = UDim.new(0, 3) -- Thin separator between title and button local Divider = Instance.new("Frame") Divider.Size = UDim2.new(1, -14, 0, 1) Divider.Position = UDim2.new(0, 7, 0, 28) Divider.BackgroundColor3 = Color3.fromRGB(55, 55, 55) Divider.BorderSizePixel = 0 Divider.Parent = Frame -- Award rocket button local RocketBtn = Instance.new("TextButton") RocketBtn.Size = UDim2.new(1, -16, 0, 32) RocketBtn.Position = UDim2.new(0, 8, 0, 36) RocketBtn.BackgroundColor3 = Color3.fromRGB(195, 195, 195) RocketBtn.BorderSizePixel = 0 RocketBtn.Text = "Give Rocket" RocketBtn.TextColor3 = Color3.fromRGB(20, 20, 20) RocketBtn.TextSize = 12 RocketBtn.Font = Enum.Font.Gotham RocketBtn.Parent = Frame Instance.new("UICorner", RocketBtn).CornerRadius = UDim.new(0, 5) -- Connections table: keeps track of all events for proper cleanup local connections = {} -- Hover effect on rocket button connections[#connections + 1] = RocketBtn.MouseEnter:Connect(function() RocketBtn.BackgroundColor3 = Color3.fromRGB(240, 240, 240) end) connections[#connections + 1] = RocketBtn.MouseLeave:Connect(function() RocketBtn.BackgroundColor3 = Color3.fromRGB(195, 195, 195) end) -- Fire the award event when clicked connections[#connections + 1] = RocketBtn.MouseButton1Click:Connect(function() game.ReplicatedStorage.Events.AwardRocket:FireServer() end) -- Cleanup function: disconnects all events and destroys the GUI local function cleanup() for _, conn in ipairs(connections) do conn:Disconnect() end connections = {} if ScreenGui and ScreenGui.Parent then ScreenGui:Destroy() end end -- Destroy the GUI on close (calls full cleanup) connections[#connections + 1] = CloseBtn.MouseButton1Click:Connect(cleanup) -- Auto cleanup if the player leaves or script is re-ran connections[#connections + 1] = Players.LocalPlayer.AncestryChanged:Connect(function() cleanup() end)