-- LocalScript: StarterPlayerScripts -- Modern polished GUI (wide) with working logic, minimize hides controls, credits popup -- All features are client-side & safe. local Players = game:GetService("Players") local RunService = game:GetService("RunService") local TweenService = game:GetService("TweenService") local player = Players.LocalPlayer -- ensure we track character correctly local char = player.Character player.CharacterAdded:Connect(function(c) char = c end) -- UI setup local screenGui = Instance.new("ScreenGui") screenGui.Name = "FinalModernGUI" screenGui.ResetOnSpawn = false screenGui.Parent = player:WaitForChild("PlayerGui") local frame = Instance.new("Frame") frame.Name = "MainFrame" frame.Size = UDim2.new(0, 520, 0, 480) frame.Position = UDim2.new(0, 40, 0, 60) frame.BackgroundColor3 = Color3.fromRGB(40, 180, 40) frame.Active = true frame.Draggable = true frame.Parent = screenGui local frameCorner = Instance.new("UICorner", frame) frameCorner.CornerRadius = UDim.new(0, 12) -- Top bar (keeps visible when minimized) local topBar = Instance.new("Frame") topBar.Name = "TopBar" topBar.Size = UDim2.new(1, 0, 0, 36) topBar.Position = UDim2.new(0,0,0,0) topBar.BackgroundTransparency = 1 topBar.Parent = frame -- Credits button (top-right, left of close) local creditsBtn = Instance.new("TextButton") creditsBtn.Name = "CreditsBtn" creditsBtn.Size = UDim2.new(0, 90, 0, 28) creditsBtn.Position = UDim2.new(1, -180, 0, 4) creditsBtn.Text = "Credits" creditsBtn.Font = Enum.Font.GothamBold creditsBtn.TextSize = 18 creditsBtn.BackgroundColor3 = Color3.fromRGB(60,60,60) creditsBtn.TextColor3 = Color3.fromRGB(255,255,255) creditsBtn.Parent = topBar local creditsCorner = Instance.new("UICorner", creditsBtn) creditsCorner.CornerRadius = UDim.new(0,6) -- Minimize and Close buttons local minBtn = Instance.new("TextButton") minBtn.Name = "MinimizeBtn" minBtn.Size = UDim2.new(0, 36, 0, 28) minBtn.Position = UDim2.new(1, -128, 0, 4) minBtn.Text = "_" minBtn.Font = Enum.Font.GothamBold minBtn.TextSize = 20 minBtn.BackgroundColor3 = Color3.fromRGB(100,100,100) minBtn.TextColor3 = Color3.fromRGB(255,255,255) minBtn.Parent = topBar local minCorner = Instance.new("UICorner", minBtn) minCorner.CornerRadius = UDim.new(0,6) local closeBtn = Instance.new("TextButton") closeBtn.Name = "CloseBtn" closeBtn.Size = UDim2.new(0, 36, 0, 28) closeBtn.Position = UDim2.new(1, -80, 0, 4) closeBtn.Text = "X" closeBtn.Font = Enum.Font.GothamBold closeBtn.TextSize = 20 closeBtn.BackgroundColor3 = Color3.fromRGB(200,50,50) closeBtn.TextColor3 = Color3.fromRGB(255,255,255) closeBtn.Parent = topBar local closeCorner = Instance.new("UICorner", closeBtn) closeCorner.CornerRadius = UDim.new(0,6) closeBtn.MouseButton1Click:Connect(function() screenGui:Destroy() end) -- Content container (hidden when minimized) local content = Instance.new("Frame") content.Name = "Content" content.Size = UDim2.new(1, 0, 1, -36) -- below top bar content.Position = UDim2.new(0,0,0,36) content.BackgroundTransparency = 1 content.Parent = frame local contentPadding = Instance.new("UIPadding", content) contentPadding.PaddingTop = UDim.new(0,8) contentPadding.PaddingLeft = UDim.new(0,12) -- Helpers for building elements local y = 0 local function makeToggle(name) local btn = Instance.new("TextButton") btn.Size = UDim2.new(0, 480, 0, 44) btn.Position = UDim2.new(0, 12, 0, 8 + y) btn.BackgroundColor3 = Color3.fromRGB(20,150,20) btn.Font = Enum.Font.GothamBold btn.TextSize = 18 btn.TextColor3 = Color3.fromRGB(255,255,255) btn.Text = name.." [OFF]" local corner = Instance.new("UICorner", btn) corner.CornerRadius = UDim.new(0,8) btn.Parent = content btn.MouseEnter:Connect(function() TweenService:Create(btn, TweenInfo.new(0.12), {BackgroundColor3 = Color3.fromRGB(30,180,30)}):Play() end) btn.MouseLeave:Connect(function() TweenService:Create(btn, TweenInfo.new(0.12), {BackgroundColor3 = Color3.fromRGB(20,150,20)}):Play() end) y = y + 56 return btn end local function makeButton(name) local btn = Instance.new("TextButton") btn.Size = UDim2.new(0, 480, 0, 44) btn.Position = UDim2.new(0, 12, 0, 8 + y) btn.BackgroundColor3 = Color3.fromRGB(20,150,20) btn.Font = Enum.Font.Gotham btn.TextSize = 18 btn.TextColor3 = Color3.fromRGB(255,255,255) btn.Text = name local corner = Instance.new("UICorner", btn) corner.CornerRadius = UDim.new(0,8) btn.Parent = content btn.MouseEnter:Connect(function() TweenService:Create(btn, TweenInfo.new(0.12), {BackgroundColor3 = Color3.fromRGB(30,180,30)}):Play() end) btn.MouseLeave:Connect(function() TweenService:Create(btn, TweenInfo.new(0.12), {BackgroundColor3 = Color3.fromRGB(20,150,20)}):Play() end) y = y + 56 return btn end local function makeTextbox(placeholder) local tb = Instance.new("TextBox") tb.Size = UDim2.new(0, 480, 0, 38) tb.Position = UDim2.new(0, 12, 0, 8 + y) tb.PlaceholderText = placeholder tb.Font = Enum.Font.Gotham tb.TextSize = 18 tb.BackgroundColor3 = Color3.fromRGB(20,150,20) tb.TextColor3 = Color3.fromRGB(255,255,255) tb.ClearTextOnFocus = false local corner = Instance.new("UICorner", tb) corner.CornerRadius = UDim.new(0,6) tb.Parent = content y = y + 48 return tb end -- Create controls (order/layout) local flyToggle = makeToggle("Fly") local spinToggle = makeToggle("Spin") local orbitToggle = makeToggle("Orbit") local teleportBox = makeTextbox("Player name to teleport to") local orbitRadiusBox = makeTextbox("Orbit radius (default 5)") local orbitSpeedBox = makeTextbox("Orbit speed (default 2)") local flingBox = makeTextbox("Enter text for Fling effect") local billboardBox = makeTextbox("Player name for Billboard") local flingBtn = makeButton("Fling Text") local bangBtn = makeButton("Bang (Local Teleport Spam)") local teleportBtn = makeButton("Teleport to Player") local billboardBtn = makeButton("Add Billboard Above Player") local swordBtn = makeButton("Swing Sword (Local)") -- Credits popup (hidden by default) local creditsPopup = Instance.new("Frame") creditsPopup.Size = UDim2.new(0, 300, 0, 120) creditsPopup.Position = UDim2.new(0.5, -150, 0.5, -60) creditsPopup.AnchorPoint = Vector2.new(0.5,0.5) creditsPopup.BackgroundColor3 = Color3.fromRGB(35,35,35) creditsPopup.Visible = false creditsPopup.Parent = screenGui local cpCorner = Instance.new("UICorner", creditsPopup) cpCorner.CornerRadius = UDim.new(0,8) local cpLabel = Instance.new("TextLabel") cpLabel.Size = UDim2.new(1, -20, 1, -20) cpLabel.Position = UDim2.new(0, 10, 0, 10) cpLabel.BackgroundTransparency = 1 cpLabel.TextColor3 = Color3.fromRGB(255,255,255) cpLabel.Font = Enum.Font.GothamBold cpLabel.TextSize = 20 cpLabel.TextWrapped = true cpLabel.Text = "made by blah20180" cpLabel.Parent = creditsPopup local creditsClose = Instance.new("TextButton") creditsClose.Size = UDim2.new(0, 60, 0, 28) creditsClose.Position = UDim2.new(1, -70, 0, 8) creditsClose.Text = "Close" creditsClose.Font = Enum.Font.Gotham creditsClose.TextSize = 16 creditsClose.BackgroundColor3 = Color3.fromRGB(100,100,100) creditsClose.TextColor3 = Color3.fromRGB(255,255,255) creditsClose.Parent = creditsPopup local ccCorner = Instance.new("UICorner", creditsClose) ccCorner.CornerRadius = UDim.new(0,6) creditsClose.MouseButton1Click:Connect(function() creditsPopup.Visible = false end) creditsBtn.MouseButton1Click:Connect(function() creditsPopup.Visible = true end) -- Minimize behavior: hide/show content with tween local minimized = false minBtn.MouseButton1Click:Connect(function() minimized = not minimized if minimized then -- hide content and shrink frame for _, child in ipairs(content:GetChildren()) do child.Visible = false end TweenService:Create(frame, TweenInfo.new(0.18), {Size = UDim2.new(0, 520, 0, 40)}):Play() else -- restore TweenService:Create(frame, TweenInfo.new(0.18), {Size = UDim2.new(0, 520, 0, 480)}):Play() -- small delay then show children so tween looks clean task.delay(0.18, function() for _, child in ipairs(content:GetChildren()) do child.Visible = true end end) end end) -- ========== Logic Variables ========== local flying = false local flyConn = nil local spinning = false local spinConn = nil local orbiting = false local orbitParts = {} local orbitConn = nil local teleporting = false -- Ensure char reference char = char or player.Character or player.CharacterAdded:Wait() -- ========== Feature Logic ========== -- Fly toggle flyToggle.MouseButton1Click:Connect(function() -- handled by helper to toggle text & behavior; use toggle text state local on = string.find(flyToggle.Text, "%[OFF%]") ~= nil and true or false -- flip text first: if it's OFF -> we want ON if on then flyToggle.Text = "Fly [ON]" flying = true else flyToggle.Text = "Fly [OFF]" flying = false end -- update connection if flying then if char and char:FindFirstChild("HumanoidRootPart") then local hrp = char.HumanoidRootPart flyConn = RunService.Heartbeat:Connect(function() if flying then hrp.Velocity = Vector3.new(0,20,0) else if flyConn then flyConn:Disconnect() end end end) end else if flyConn then flyConn:Disconnect() flyConn = nil end end end) -- Spin toggle spinToggle.MouseButton1Click:Connect(function() local on = string.find(spinToggle.Text, "%[OFF%]") ~= nil and true or false if on then spinToggle.Text = "Spin [ON]" spinning = true else spinToggle.Text = "Spin [OFF]" spinning = false end if spinning then if char and char:FindFirstChild("HumanoidRootPart") then local hrp = char.HumanoidRootPart spinConn = RunService.RenderStepped:Connect(function(dt) hrp.CFrame = hrp.CFrame * CFrame.Angles(0, math.rad(100*dt), 0) end) end else if spinConn then spinConn:Disconnect() spinConn = nil end end end) -- Orbit toggle orbitToggle.MouseButton1Click:Connect(function() local on = string.find(orbitToggle.Text, "%[OFF%]") ~= nil and true or false if on then orbitToggle.Text = "Orbit [ON]" orbiting = true else orbitToggle.Text = "Orbit [OFF]" orbiting = false end if orbiting then if char and char:FindFirstChild("HumanoidRootPart") then local hrp = char.HumanoidRootPart local radius = tonumber(orbitRadiusBox.Text) or 5 local speed = tonumber(orbitSpeedBox.Text) or 2 if #orbitParts == 0 then for i=1,5 do local p = Instance.new("Part") p.Size = Vector3.new(1,1,1) p.Anchored = true p.CanCollide = false p.BrickColor = BrickColor.Random() p.Parent = workspace table.insert(orbitParts, p) end end local t = 0 orbitConn = RunService.RenderStepped:Connect(function(dt) t = t + dt * speed for i, p in ipairs(orbitParts) do local angle = t + (i-1)*(2*math.pi/#orbitParts) p.Position = hrp.Position + Vector3.new(math.cos(angle)*radius, 2, math.sin(angle)*radius) end end) end else if orbitConn then orbitConn:Disconnect() orbitConn = nil end for _, p in ipairs(orbitParts) do if p then p:Destroy() end end orbitParts = {} end end) -- Fling button flingBtn.MouseButton1Click:Connect(function() local msg = flingBox.Text if char and char:FindFirstChild("HumanoidRootPart") then local hrp = char.HumanoidRootPart local part = Instance.new("Part") part.Size = Vector3.new(2,2,2) part.Position = hrp.Position + Vector3.new(0,3,0) part.CanCollide = false part.Anchored = false part.BrickColor = BrickColor.Random() part.Parent = workspace local bv = Instance.new("BodyVelocity", part) bv.MaxForce = Vector3.new(1e5,1e5,1e5) bv.Velocity = Vector3.new(math.random(-20,20), math.random(10,30), math.random(-20,20)) local bb = Instance.new("BillboardGui", part) bb.Size = UDim2.new(0,120,0,40) bb.Adornee = part bb.AlwaysOnTop = true local lbl = Instance.new("TextLabel", bb) lbl.Size = UDim2.new(1,0,1,0) lbl.BackgroundTransparency = 1 lbl.Text = msg lbl.TextColor3 = Color3.fromRGB(255,255,255) lbl.TextScaled = true task.delay(5, function() if part then part:Destroy() end end) end end) -- Teleport (single) teleportBtn.MouseButton1Click:Connect(function() if not char then return end local target = Players:FindFirstChild(teleportBox.Text) local hrp = char:FindFirstChild("HumanoidRootPart") if target and target.Character and target.Character:FindFirstChild("HumanoidRootPart") and hrp then hrp.CFrame = target.Character.HumanoidRootPart.CFrame + Vector3.new(0,3,0) end end) -- Billboard above player billboardBtn.MouseButton1Click:Connect(function() local target = Players:FindFirstChild(billboardBox.Text) if target and target.Character and target.Character:FindFirstChild("Head") then local head = target.Character.Head local bb = Instance.new("BillboardGui", head) bb.Size = UDim2.new(0,160,0,44) bb.Adornee = head bb.AlwaysOnTop = true local lbl = Instance.new("TextLabel", bb) lbl.Size = UDim2.new(1,0,1,0) lbl.BackgroundTransparency = 1 lbl.Text = "Hello!" lbl.TextColor3 = Color3.fromRGB(255,255,255) lbl.TextScaled = true task.delay(5, function() if bb then bb:Destroy() end end) end end) -- Sword swing swordBtn.MouseButton1Click:Connect(function() if char and char:FindFirstChild("Humanoid") then local anim = Instance.new("Animation") anim.AnimationId = "rbxassetid://INSERT_YOUR_SWORD_ANIMATION_ID" local track = char.Humanoid:LoadAnimation(anim) track:Play() end end) -- Bang (local teleport spam toggle) bangBtn.MouseButton1Click:Connect(function() teleporting = not teleporting bangBtn.Text = teleporting and "Bang [ON]" or "Bang (Local Teleport Spam)" end) RunService.RenderStepped:Connect(function() if teleporting and char and char:FindFirstChild("HumanoidRootPart") then local target = Players:FindFirstChild(teleportBox.Text) if target and target.Character and target.Character:FindFirstChild("HumanoidRootPart") then char.HumanoidRootPart.CFrame = target.Character.HumanoidRootPart.CFrame + Vector3.new(0,3,0) end end end) -- finished