Last active
December 6, 2025 04:58
-
-
Save yuechaann-sudo/0b605cdeac4794703685b53ce21ebd2b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| local player = game.Players.LocalPlayer | |
| local UIS = game:GetService("UserInputService") | |
| local RunService = game:GetService("RunService") | |
| -- SIMPAN POSISI DAN STATUS | |
| local guiEnabled = true | |
| local framePosition = UDim2.new(0.5, -140, 0.4, -130) | |
| local minimized = false | |
| -- GUI | |
| local gui = Instance.new("ScreenGui") | |
| gui.Name = "ModernMenu" | |
| gui.ResetOnSpawn = false -- Penting biar tetap ada walau respawn | |
| gui.Parent = player:WaitForChild("PlayerGui") | |
| -- MAIN FRAME | |
| local frame = Instance.new("Frame", gui) | |
| frame.Size = UDim2.new(0, 280, 0, 260) | |
| frame.Position = framePosition | |
| frame.BackgroundColor3 = Color3.fromRGB(25, 25, 25) | |
| frame.BackgroundTransparency = 0.15 | |
| frame.BorderSizePixel = 0 | |
| frame.Active = true | |
| frame.Draggable = true | |
| local corner = Instance.new("UICorner", frame) | |
| corner.CornerRadius = UDim.new(0, 12) | |
| -- HEADER | |
| local header = Instance.new("Frame", frame) | |
| header.Size = UDim2.new(1, 0, 0, 30) | |
| header.BackgroundColor3 = Color3.fromRGB(15, 15, 15) | |
| header.BorderSizePixel = 0 | |
| local headerCorner = Instance.new("UICorner", header) | |
| headerCorner.CornerRadius = UDim.new(0, 12) | |
| local title = Instance.new("TextLabel", header) | |
| title.Size = UDim2.new(1, -60, 1, 0) | |
| title.Position = UDim2.new(0, 10, 0, 0) | |
| title.BackgroundTransparency = 1 | |
| title.Text = "SC BY-YUECHANN1 V1.2" | |
| title.Font = Enum.Font.GothamBold | |
| title.TextSize = 16 | |
| title.TextColor3 = Color3.new(1, 1, 1) | |
| title.TextXAlignment = Enum.TextXAlignment.Left | |
| -- CLOSE (X) | |
| local close = Instance.new("TextButton", header) | |
| close.Size = UDim2.new(0, 30, 0, 30) | |
| close.Position = UDim2.new(1, -30, 0, 0) | |
| close.Text = "X" | |
| close.Font = Enum.Font.GothamBold | |
| close.TextSize = 16 | |
| close.BackgroundTransparency = 1 | |
| close.TextColor3 = Color3.fromRGB(255, 80, 80) | |
| close.MouseButton1Click:Connect(function() | |
| gui.Enabled = false | |
| guiEnabled = false | |
| end) | |
| -- MINIMIZE (-) | |
| local mini = Instance.new("TextButton", header) | |
| mini.Size = UDim2.new(0, 30, 0, 30) | |
| mini.Position = UDim2.new(1, -60, 0, 0) | |
| mini.Text = "-" | |
| mini.Font = Enum.Font.GothamBold | |
| mini.TextSize = 22 | |
| mini.BackgroundTransparency = 1 | |
| mini.TextColor3 = Color3.fromRGB(200, 200, 200) | |
| mini.MouseButton1Click:Connect(function() | |
| minimized = not minimized | |
| if minimized then | |
| frame.Size = UDim2.new(0, 280, 0, 30) | |
| else | |
| frame.Size = UDim2.new(0, 280, 0, 260) | |
| end | |
| end) | |
| -- REOPEN (Right Shift) | |
| UIS.InputBegan:Connect(function(input, g) | |
| if not g and input.KeyCode == Enum.KeyCode.RightShift then | |
| gui.Enabled = true | |
| guiEnabled = true | |
| end | |
| end) | |
| -- UI CREATOR FUNCTION | |
| local function makeButton(text, posY) | |
| local btn = Instance.new("TextButton", frame) | |
| btn.Size = UDim2.new(0.85, 0, 0, 32) | |
| btn.Position = UDim2.new(0.075, 0, posY, 0) | |
| btn.Text = text | |
| btn.Font = Enum.Font.GothamBlack | |
| btn.TextSize = 15 | |
| btn.TextColor3 = Color3.new(1, 1, 1) | |
| btn.BackgroundColor3 = Color3.fromRGB(0, 120, 255) | |
| btn.BorderSizePixel = 0 | |
| local c = Instance.new("UICorner", btn) | |
| c.CornerRadius = UDim.new(0, 10) | |
| return btn | |
| end | |
| -- TP SUMMIT BUTTON | |
| local tpSummitBtn = makeButton("TP SUMMIT", 0.18) | |
| local SUMMIT = Vector3.new(-6635, 3152, -798) | |
| tpSummitBtn.MouseButton1Click:Connect(function() | |
| local char = player.Character | |
| local root = char and char:FindFirstChild("HumanoidRootPart") | |
| if root then | |
| root.CFrame = CFrame.new(SUMMIT) | |
| end | |
| end) | |
| -- FLY VARIABLES | |
| local flying = false | |
| local speed = 2 | |
| local bodyGyro | |
| local bodyVel | |
| -- FLY BUTTON | |
| local flyBtn = makeButton("Fly : OFF", 0.35) | |
| -- SPEED LABEL | |
| local speedLabel = Instance.new("TextLabel", frame) | |
| speedLabel.Size = UDim2.new(0.85, 0, 0, 25) | |
| speedLabel.Position = UDim2.new(0.075, 0, 0.48, 0) | |
| speedLabel.BackgroundTransparency = 1 | |
| speedLabel.Font = Enum.Font.GothamSemibold | |
| speedLabel.TextSize = 14 | |
| speedLabel.TextColor3 = Color3.fromRGB(0, 255, 0) | |
| speedLabel.Text = "Fly Speed : "..speed | |
| -- SPEED BUTTONS | |
| local plusBtn = makeButton("+ Speed", 0.58) | |
| local minusBtn = makeButton("- Speed", 0.70) | |
| -- FLY FUNCTION | |
| local function startFly() | |
| local char = player.Character | |
| local root = char:WaitForChild("HumanoidRootPart") | |
| bodyGyro = Instance.new("BodyGyro", root) | |
| bodyGyro.P = 500000 | |
| bodyGyro.MaxTorque = Vector3.new(500000, 500000, 500000) | |
| bodyVel = Instance.new("BodyVelocity", root) | |
| bodyVel.Velocity = Vector3.new(0, 0, 0) | |
| bodyVel.MaxForce = Vector3.new(500000, 500000, 500000) | |
| flying = true | |
| end | |
| local function stopFly() | |
| flying = false | |
| if bodyGyro then bodyGyro:Destroy() end | |
| if bodyVel then bodyVel:Destroy() end | |
| end | |
| flyBtn.MouseButton1Click:Connect(function() | |
| flying = not flying | |
| if flying then | |
| flyBtn.Text = "Fly : ON" | |
| startFly() | |
| else | |
| flyBtn.Text = "Fly : OFF" | |
| stopFly() | |
| end | |
| end) | |
| plusBtn.MouseButton1Click:Connect(function() | |
| speed = speed + 1 | |
| speedLabel.Text = "Fly Speed : "..speed | |
| end) | |
| minusBtn.MouseButton1Click:Connect(function() | |
| if speed > 1 then | |
| speed = speed - 1 | |
| speedLabel.Text = "Fly Speed : "..speed | |
| end | |
| end) | |
| RunService.Heartbeat:Connect(function() | |
| if flying then | |
| local char = player.Character | |
| local root = char:FindFirstChild("HumanoidRootPart") | |
| if root then | |
| local vel = Vector3.new() | |
| if UIS:IsKeyDown(Enum.KeyCode.W) then vel = vel + root.CFrame.LookVector end | |
| if UIS:IsKeyDown(Enum.KeyCode.S) then vel = vel - root.CFrame.LookVector end | |
| if UIS:IsKeyDown(Enum.KeyCode.A) then vel = vel - root.CFrame.RightVector end | |
| if UIS:IsKeyDown(Enum.KeyCode.D) then vel = vel + root.CFrame.RightVector end | |
| bodyVel.Velocity = vel * (speed * 10) | |
| bodyGyro.CFrame = workspace.CurrentCamera.CFrame | |
| end | |
| end | |
| end) | |
| -- RESPWAN HANDLING | |
| player.CharacterAdded:Connect(function(char) | |
| wait(1) -- tunggu karakter muncul | |
| -- Restore frame posisi & state | |
| frame.Position = framePosition | |
| frame.Size = minimized and UDim2.new(0, 280, 0, 30) or UDim2.new(0, 280, 0, 260) | |
| gui.Enabled = guiEnabled | |
| -- Jika fly sebelumnya ON, tetap ON | |
| if flying then | |
| startFly() | |
| end | |
| end) | |
| -- Update posisi terakhir jika frame dipindah | |
| frame:GetPropertyChangedSignal("Position"):Connect(function() | |
| framePosition = frame.Position | |
| end) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment