
Key RequiredUniversal

-- 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



good bro
ty i worked hard on it
if you tried it leave a comment saying what you think of my script
@blah20180 noclip and speed
thank you for your opinion i will try to add those functions on the blahgui but with less buttons bc its better
heed more function