-- WorldCupGUI v2 (Draggable Version) -- Place in StarterGui (LocalScript) local Players = game:GetService("Players") local TweenService = game:GetService("TweenService") local StarterGui = game:GetService("StarterGui") local UserInputService = game:GetService("UserInputService") local player = Players.LocalPlayer local playerGui = player:WaitForChild("PlayerGui") -- Helper to make instances local function new(class, props) local obj = Instance.new(class) for k, v in pairs(props or {}) do if k == "Parent" then obj.Parent = v else obj[k] = v end end return obj end -- Root GUI local gui = new("ScreenGui", { Name = "WorldCupGUI", Parent = playerGui, ResetOnSpawn = false }) -- Main frame local main = new("Frame", { Parent = gui, Size = UDim2.new(0, 280, 0, 200), Position = UDim2.new(0.5, -140, 0.4, -100), BackgroundColor3 = Color3.fromRGB(140, 10, 10), BorderSizePixel = 0 }) new("UICorner", {Parent = main, CornerRadius = UDim.new(0, 14)}) new("UIStroke", {Parent = main, Color = Color3.fromRGB(255, 70, 70), Thickness = 1.4}) local grad = new("UIGradient", {Parent = main, Rotation = 90}) grad.Color = ColorSequence.new{ ColorSequenceKeypoint.new(0, Color3.fromRGB(200, 30, 30)), ColorSequenceKeypoint.new(1, Color3.fromRGB(70, 5, 5)) } -- ✅ DRAGGABLE SYSTEM (Smooth + Works on All Frames) local dragging = false local dragStart, startPos local function update(input) local delta = input.Position - dragStart main.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end main.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true dragStart = input.Position startPos = main.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) UserInputService.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement and dragging then update(input) end end) -- Title local title = new("TextLabel", { Parent = main, Size = UDim2.new(1, 0, 0, 32), BackgroundTransparency = 1, Text = "🌍 WORLD CUP", Font = Enum.Font.GothamBlack, TextSize = 20, TextColor3 = Color3.fromRGB(255, 245, 240) }) -- Open button local openBtn = new("TextButton", { Parent = gui, Size = UDim2.new(0, 120, 0, 40), Position = UDim2.new(0.5, -60, 0.25, 0), Text = "Open", Font = Enum.Font.GothamBold, TextSize = 18, TextColor3 = Color3.new(1, 1, 1), BackgroundColor3 = Color3.fromRGB(60, 10, 10) }) new("UICorner", {Parent = openBtn, CornerRadius = UDim.new(0, 10)}) new("UIStroke", {Parent = openBtn, Color = Color3.fromRGB(255, 80, 80), Thickness = 1.5}) main.Visible = false openBtn.MouseButton1Click:Connect(function() main.Visible = not main.Visible if main.Visible then StarterGui:SetCore("SendNotification", { Title = "World Cup", Text = "Good luck bro!", Duration = 4 }) end end) -- Buttons layout local layout = new("UIListLayout", { Parent = main, HorizontalAlignment = Enum.HorizontalAlignment.Center, VerticalAlignment = Enum.VerticalAlignment.Center, Padding = UDim.new(0, 6) }) layout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function() main.CanvasSize = UDim2.new(0, 0, 0, layout.AbsoluteContentSize.Y) end) -- Function to make styled buttons local function createButton(name, color) local b = new("TextButton", { Parent = main, Size = UDim2.new(0, 180, 0, 34), BackgroundColor3 = color or Color3.fromRGB(170, 20, 20), Text = name, Font = Enum.Font.GothamBold, TextSize = 16, TextColor3 = Color3.new(1, 1, 1) }) new("UICorner", {Parent = b, CornerRadius = UDim.new(0, 8)}) new("UIStroke", {Parent = b, Color = Color3.fromRGB(255, 100, 100), Thickness = 1}) return b end -- Water Teleport local waterBtn = createButton("💧 Water Teleport", Color3.fromRGB(0, 90, 200)) waterBtn.MouseButton1Click:Connect(function() local char = player.Character if char and char:FindFirstChild("HumanoidRootPart") then char:FindFirstChild("HumanoidRootPart").CFrame += Vector3.new(0, 50, 0) end end) -- Set position local customPos = nil local setPosBtn = createButton("📍 Set Teleport Position", Color3.fromRGB(180, 50, 20)) setPosBtn.MouseButton1Click:Connect(function() local char = player.Character if char and char:FindFirstChild("HumanoidRootPart") then customPos = char:FindFirstChild("HumanoidRootPart").Position StarterGui:SetCore("SendNotification", { Title = "Teleport Position Saved!", Text = string.format("X: %d Y: %d Z: %d", customPos.X, customPos.Y, customPos.Z), Duration = 3 }) end end) -- Teleport once local tpOnceBtn = createButton("⚡ Teleport Once", Color3.fromRGB(200, 40, 40)) tpOnceBtn.MouseButton1Click:Connect(function() if customPos then local char = player.Character if char and char:FindFirstChild("HumanoidRootPart") then char:FindFirstChild("HumanoidRootPart").CFrame = CFrame.new(customPos) end end end) -- Auto spam teleport local spamBtn = createButton("🔁 Auto Spam Teleport: OFF", Color3.fromRGB(160, 20, 20)) local spamming = false spamBtn.MouseButton1Click:Connect(function() spamming = not spamming spamBtn.Text = spamming and "🔁 Auto Spam Teleport: ON" or "🔁 Auto Spam Teleport: OFF" if spamming then task.spawn(function() while spamming do local char = player.Character if char and char:FindFirstChild("HumanoidRootPart") and customPos then char:FindFirstChild("HumanoidRootPart").CFrame = CFrame.new(customPos) end task.wait(0.25) end end) end end)