orbit script V.1.05 AI GENERATED WARNING
Key RequiredUniversal

orbit script V.1.05 AI GENERATED WARNING

Universal Scripttlrenny25tlrenny25 352 views 155 executesUpdated Feb 25, 2026
5.0/ 5(3 votes)
30100% Positive
Lua Script•1046 lines (34046 chars)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")

local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoidRootPart = character:WaitForChild("HumanoidRootPart")

-- Variables
local targetPlayer = nil
local isOrbiting = false
local orbitSpeed = 1
local orbitRadius = 10
local orbitHeight = 0
local orbitTilt = 0
local isTidallyLocked = false
local isSpinMode = false
local spinSpeed = 0.5
local isReverseOrbit = false
local angle = 0
local spinAngle = 0
local dragging = false
local dragStartMouse = nil
local dragStartPos = nil
local lastOrbitTime = 0
local orbitDelay = 0.01
local currentTab = "orbit" -- "orbit" or "settings"
local espEnabled = false
local espLabels = {}

-- Create GUI
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "ORBITGui"
screenGui.ResetOnSpawn = false
screenGui.Parent = player:WaitForChild("PlayerGui")

-- Main Frame
local mainFrame = Instance.new("Frame")
mainFrame.Name = "MainFrame"
mainFrame.Size = UDim2.new(0, 320, 0, 530)
mainFrame.Position = UDim2.new(0.35, 0, 0.2, 0)
mainFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
mainFrame.BackgroundTransparency = 0.1
mainFrame.BorderSizePixel = 0
mainFrame.Parent = screenGui

-- Corner and Stroke
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 15)
corner.Parent = mainFrame

local stroke = Instance.new("UIStroke")
stroke.Color = Color3.fromRGB(255, 255, 255)
stroke.Thickness = 2
stroke.Transparency = 0.6
stroke.Parent = mainFrame

-- Drag Area (Title)
local dragArea = Instance.new("Frame")
dragArea.Name = "DragArea"
dragArea.Size = UDim2.new(1, 0, 0, 50)
dragArea.Position = UDim2.new(0, 0, 0, 0)
dragArea.BackgroundColor3 = Color3.fromRGB(30, 30, 45)
dragArea.BackgroundTransparency = 0
dragArea.BorderSizePixel = 0
dragArea.Parent = mainFrame

local dragCorner = Instance.new("UICorner")
dragCorner.CornerRadius = UDim.new(0, 15)
dragCorner.Parent = dragArea

-- Title Text
local titleText = Instance.new("TextLabel")
titleText.Size = UDim2.new(1, -80, 1, 0)
titleText.Position = UDim2.new(0, 10, 0, 0)
titleText.BackgroundTransparency = 1
titleText.Text = "ORBIT GUI v1.05"
titleText.TextColor3 = Color3.fromRGB(255, 255, 255)
titleText.TextSize = 16
titleText.Font = Enum.Font.GothamBold
titleText.TextXAlignment = Enum.TextXAlignment.Left
titleText.Parent = dragArea

-- Minimize Button
local minimizeBtn = Instance.new("TextButton")
minimizeBtn.Name = "MinimizeBtn"
minimizeBtn.Size = UDim2.new(0, 40, 1, 0)
minimizeBtn.Position = UDim2.new(1, -80, 0, 0)
minimizeBtn.BackgroundColor3 = Color3.fromRGB(150, 150, 200)
minimizeBtn.BackgroundTransparency = 0.3
minimizeBtn.Text = "_"
minimizeBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
minimizeBtn.TextSize = 18
minimizeBtn.Font = Enum.Font.GothamBold
minimizeBtn.BorderSizePixel = 0
minimizeBtn.Parent = dragArea

local minimizeCorner = Instance.new("UICorner")
minimizeCorner.CornerRadius = UDim.new(0, 8)
minimizeCorner.Parent = minimizeBtn

-- Close Button
local closeBtn = Instance.new("TextButton")
closeBtn.Name = "CloseBtn"
closeBtn.Size = UDim2.new(0, 40, 1, 0)
closeBtn.Position = UDim2.new(1, -40, 0, 0)
closeBtn.BackgroundColor3 = Color3.fromRGB(255, 80, 80)
closeBtn.BackgroundTransparency = 0.3
closeBtn.Text = "X"
closeBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
closeBtn.TextSize = 18
closeBtn.Font = Enum.Font.GothamBold
closeBtn.BorderSizePixel = 0
closeBtn.Parent = dragArea

local closeCorner = Instance.new("UICorner")
closeCorner.CornerRadius = UDim.new(0, 8)
closeCorner.Parent = closeBtn

-- Tab Buttons
local orbitTabBtn = Instance.new("TextButton")
orbitTabBtn.Name = "OrbitTabBtn"
orbitTabBtn.Size = UDim2.new(0.5, -2, 0, 35)
orbitTabBtn.Position = UDim2.new(0, 0, 0, 50)
orbitTabBtn.BackgroundColor3 = Color3.fromRGB(100, 200, 100)
orbitTabBtn.BackgroundTransparency = 0.3
orbitTabBtn.Text = "ORBIT"
orbitTabBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
orbitTabBtn.TextSize = 12
orbitTabBtn.Font = Enum.Font.GothamBold
orbitTabBtn.BorderSizePixel = 0
orbitTabBtn.Parent = mainFrame

local orbitTabCorner = Instance.new("UICorner")
orbitTabCorner.CornerRadius = UDim.new(0, 8)
orbitTabCorner.Parent = orbitTabBtn

local settingsTabBtn = Instance.new("TextButton")
settingsTabBtn.Name = "SettingsTabBtn"
settingsTabBtn.Size = UDim2.new(0.5, -2, 0, 35)
settingsTabBtn.Position = UDim2.new(0.5, 2, 0, 50)
settingsTabBtn.BackgroundColor3 = Color3.fromRGB(150, 150, 150)
settingsTabBtn.BackgroundTransparency = 0.5
settingsTabBtn.Text = "SETTINGS"
settingsTabBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
settingsTabBtn.TextSize = 12
settingsTabBtn.Font = Enum.Font.GothamBold
settingsTabBtn.BorderSizePixel = 0
settingsTabBtn.Parent = mainFrame

local settingsTabCorner = Instance.new("UICorner")
settingsTabCorner.CornerRadius = UDim.new(0, 8)
settingsTabCorner.Parent = settingsTabBtn

-- ===== ORBIT TAB CONTENT =====
local orbitTabFrame = Instance.new("Frame")
orbitTabFrame.Name = "OrbitTabFrame"
orbitTabFrame.Size = UDim2.new(1, 0, 1, -85)
orbitTabFrame.Position = UDim2.new(0, 0, 0, 85)
orbitTabFrame.BackgroundTransparency = 1
orbitTabFrame.BorderSizePixel = 0
orbitTabFrame.Parent = mainFrame

-- Create ScrollingFrame for orbit tab
local orbitScrollFrame = Instance.new("ScrollingFrame")
orbitScrollFrame.Size = UDim2.new(1, 0, 1, 0)
orbitScrollFrame.Position = UDim2.new(0, 0, 0, 0)
orbitScrollFrame.BackgroundTransparency = 1
orbitScrollFrame.BorderSizePixel = 0
orbitScrollFrame.ScrollBarThickness = 6
orbitScrollFrame.CanvasSize = UDim2.new(0, 0, 0, 400)
orbitScrollFrame.Parent = orbitTabFrame

-- Player Input Label
local playerLabel = Instance.new("TextLabel")
playerLabel.Size = UDim2.new(1, -20, 0, 20)
playerLabel.Position = UDim2.new(0, 10, 0, 10)
playerLabel.BackgroundTransparency = 1
playerLabel.Text = "Player Name:"
playerLabel.TextColor3 = Color3.fromRGB(200, 200, 200)
playerLabel.TextSize = 12
playerLabel.Font = Enum.Font.Gotham
playerLabel.TextXAlignment = Enum.TextXAlignment.Left
playerLabel.Parent = orbitScrollFrame

-- Player Input
local playerNameBox = Instance.new("TextBox")
playerNameBox.Size = UDim2.new(1, -20, 0, 35)
playerNameBox.Position = UDim2.new(0, 10, 0, 35)
playerNameBox.BackgroundColor3 = Color3.fromRGB(40, 40, 50)
playerNameBox.BackgroundTransparency = 0
playerNameBox.TextColor3 = Color3.fromRGB(255, 255, 255)
playerNameBox.TextSize = 14
playerNameBox.Font = Enum.Font.Gotham
playerNameBox.PlaceholderText = "Enter username..."
playerNameBox.PlaceholderColor3 = Color3.fromRGB(150, 150, 150)
playerNameBox.BorderSizePixel = 0
playerNameBox.Parent = orbitScrollFrame

local inputCorner = Instance.new("UICorner")
inputCorner.CornerRadius = UDim.new(0, 8)
inputCorner.Parent = playerNameBox

-- Speed Label
local speedLabel = Instance.new("TextLabel")
speedLabel.Size = UDim2.new(1, -20, 0, 20)
speedLabel.Position = UDim2.new(0, 10, 0, 80)
speedLabel.BackgroundTransparency = 1
speedLabel.Text = "Speed: 1 studs/sec"
speedLabel.TextColor3 = Color3.fromRGB(200, 200, 200)
speedLabel.TextSize = 12
speedLabel.Font = Enum.Font.Gotham
speedLabel.TextXAlignment = Enum.TextXAlignment.Left
speedLabel.Parent = orbitScrollFrame

-- Speed Input
local speedBox = Instance.new("TextBox")
speedBox.Size = UDim2.new(1, -20, 0, 35)
speedBox.Position = UDim2.new(0, 10, 0, 105)
speedBox.BackgroundColor3 = Color3.fromRGB(40, 40, 50)
speedBox.BackgroundTransparency = 0
speedBox.TextColor3 = Color3.fromRGB(255, 255, 255)
speedBox.TextSize = 14
speedBox.Font = Enum.Font.Gotham
speedBox.Text = "1"
speedBox.BorderSizePixel = 0
speedBox.Parent = orbitScrollFrame

local speedCorner = Instance.new("UICorner")
speedCorner.CornerRadius = UDim.new(0, 8)
speedCorner.Parent = speedBox

-- Orbit Button
local orbitBtn = Instance.new("TextButton")
orbitBtn.Size = UDim2.new(1, -20, 0, 40)
orbitBtn.Position = UDim2.new(0, 10, 0, 150)
orbitBtn.BackgroundColor3 = Color3.fromRGB(100, 200, 100)
orbitBtn.BackgroundTransparency = 0.3
orbitBtn.Text = "START ORBIT"
orbitBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
orbitBtn.TextSize = 14
orbitBtn.Font = Enum.Font.GothamBold
orbitBtn.BorderSizePixel = 0
orbitBtn.Parent = orbitScrollFrame

local orbitCorner = Instance.new("UICorner")
orbitCorner.CornerRadius = UDim.new(0, 8)
orbitCorner.Parent = orbitBtn

-- Teleport Button
local teleportBtn = Instance.new("TextButton")
teleportBtn.Size = UDim2.new(1, -20, 0, 40)
teleportBtn.Position = UDim2.new(0, 10, 0, 200)
teleportBtn.BackgroundColor3 = Color3.fromRGB(200, 150, 100)
teleportBtn.BackgroundTransparency = 0.3
teleportBtn.Text = "TELEPORT TO PLAYER"
teleportBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
teleportBtn.TextSize = 14
teleportBtn.Font = Enum.Font.GothamBold
teleportBtn.BorderSizePixel = 0
teleportBtn.Parent = orbitScrollFrame

local teleportCorner = Instance.new("UICorner")
teleportCorner.CornerRadius = UDim.new(0, 8)
teleportCorner.Parent = teleportBtn

-- Status Label
local statusLabel = Instance.new("TextLabel")
statusLabel.Size = UDim2.new(1, -20, 0, 80)
statusLabel.Position = UDim2.new(0, 10, 0, 250)
statusLabel.BackgroundTransparency = 1
statusLabel.Text = "Status: Waiting"
statusLabel.TextColor3 = Color3.fromRGB(150, 200, 150)
statusLabel.TextSize = 11
statusLabel.Font = Enum.Font.Gotham
statusLabel.TextWrapped = true
statusLabel.TextXAlignment = Enum.TextXAlignment.Left
statusLabel.Parent = orbitScrollFrame

-- ===== SETTINGS TAB CONTENT =====
local settingsTabFrame = Instance.new("Frame")
settingsTabFrame.Name = "SettingsTabFrame"
settingsTabFrame.Size = UDim2.new(1, 0, 1, -85)
settingsTabFrame.Position = UDim2.new(0, 0, 0, 85)
settingsTabFrame.BackgroundTransparency = 1
settingsTabFrame.BorderSizePixel = 0
settingsTabFrame.Visible = false
settingsTabFrame.Parent = mainFrame

-- Create ScrollingFrame for settings
local scrollFrame = Instance.new("ScrollingFrame")
scrollFrame.Size = UDim2.new(1, 0, 1, 0)
scrollFrame.Position = UDim2.new(0, 0, 0, 0)
scrollFrame.BackgroundTransparency = 1
scrollFrame.BorderSizePixel = 0
scrollFrame.ScrollBarThickness = 6
scrollFrame.CanvasSize = UDim2.new(0, 0, 0, 750)
scrollFrame.Parent = settingsTabFrame

-- Distance Label
local distanceLabel = Instance.new("TextLabel")
distanceLabel.Size = UDim2.new(1, -20, 0, 20)
distanceLabel.Position = UDim2.new(0, 10, 0, 10)
distanceLabel.BackgroundTransparency = 1
distanceLabel.Text = "Orbit Distance: 10 studs"
distanceLabel.TextColor3 = Color3.fromRGB(200, 200, 200)
distanceLabel.TextSize = 12
distanceLabel.Font = Enum.Font.Gotham
distanceLabel.TextXAlignment = Enum.TextXAlignment.Left
distanceLabel.Parent = scrollFrame

-- Distance Input
local distanceBox = Instance.new("TextBox")
distanceBox.Size = UDim2.new(1, -20, 0, 35)
distanceBox.Position = UDim2.new(0, 10, 0, 35)
distanceBox.BackgroundColor3 = Color3.fromRGB(40, 40, 50)
distanceBox.BackgroundTransparency = 0
distanceBox.TextColor3 = Color3.fromRGB(255, 255, 255)
distanceBox.TextSize = 14
distanceBox.Font = Enum.Font.Gotham
distanceBox.Text = "10"
distanceBox.BorderSizePixel = 0
distanceBox.Parent = scrollFrame

local distanceCorner = Instance.new("UICorner")
distanceCorner.CornerRadius = UDim.new(0, 8)
distanceCorner.Parent = distanceBox

-- Tilt Label
local tiltLabel = Instance.new("TextLabel")
tiltLabel.Size = UDim2.new(1, -20, 0, 20)
tiltLabel.Position = UDim2.new(0, 10, 0, 80)
tiltLabel.BackgroundTransparency = 1
tiltLabel.Text = "Orbit Tilt: 0 degrees"
tiltLabel.TextColor3 = Color3.fromRGB(200, 200, 200)
tiltLabel.TextSize = 12
tiltLabel.Font = Enum.Font.Gotham
tiltLabel.TextXAlignment = Enum.TextXAlignment.Left
tiltLabel.Parent = scrollFrame

-- Tilt Input
local tiltBox = Instance.new("TextBox")
tiltBox.Size = UDim2.new(1, -20, 0, 35)
tiltBox.Position = UDim2.new(0, 10, 0, 105)
tiltBox.BackgroundColor3 = Color3.fromRGB(40, 40, 50)
tiltBox.BackgroundTransparency = 0
tiltBox.TextColor3 = Color3.fromRGB(255, 255, 255)
tiltBox.TextSize = 14
tiltBox.Font = Enum.Font.Gotham
tiltBox.Text = "0"
tiltBox.BorderSizePixel = 0
tiltBox.Parent = scrollFrame

local tiltCorner = Instance.new("UICorner")
tiltCorner.CornerRadius = UDim.new(0, 8)
tiltCorner.Parent = tiltBox

-- Height Label
local heightLabel = Instance.new("TextLabel")
heightLabel.Size = UDim2.new(1, -20, 0, 20)
heightLabel.Position = UDim2.new(0, 10, 0, 150)
heightLabel.BackgroundTransparency = 1
heightLabel.Text = "Height Offset: 0 studs"
heightLabel.TextColor3 = Color3.fromRGB(200, 200, 200)
heightLabel.TextSize = 12
heightLabel.Font = Enum.Font.Gotham
heightLabel.TextXAlignment = Enum.TextXAlignment.Left
heightLabel.Parent = scrollFrame

-- Height Input
local heightBox = Instance.new("TextBox")
heightBox.Size = UDim2.new(1, -20, 0, 35)
heightBox.Position = UDim2.new(0, 10, 0, 175)
heightBox.BackgroundColor3 = Color3.fromRGB(40, 40, 50)
heightBox.BackgroundTransparency = 0
heightBox.TextColor3 = Color3.fromRGB(255, 255, 255)
heightBox.TextSize = 14
heightBox.Font = Enum.Font.Gotham
heightBox.Text = "0"
heightBox.BorderSizePixel = 0
heightBox.Parent = scrollFrame

local heightCorner = Instance.new("UICorner")
heightCorner.CornerRadius = UDim.new(0, 8)
heightCorner.Parent = heightBox

-- Reverse Orbit Label
local reverseLabel = Instance.new("TextLabel")
reverseLabel.Size = UDim2.new(1, -20, 0, 20)
reverseLabel.Position = UDim2.new(0, 10, 0, 220)
reverseLabel.BackgroundTransparency = 1
reverseLabel.Text = "Reverse Orbit:"
reverseLabel.TextColor3 = Color3.fromRGB(200, 200, 200)
reverseLabel.TextSize = 12
reverseLabel.Font = Enum.Font.Gotham
reverseLabel.TextXAlignment = Enum.TextXAlignment.Left
reverseLabel.Parent = scrollFrame

-- Reverse Orbit Toggle
local reverseToggle = Instance.new("TextButton")
reverseToggle.Size = UDim2.new(1, -20, 0, 35)
reverseToggle.Position = UDim2.new(0, 10, 0, 245)
reverseToggle.BackgroundColor3 = Color3.fromRGB(100, 100, 100)
reverseToggle.BackgroundTransparency = 0.3
reverseToggle.Text = "OFF"
reverseToggle.TextColor3 = Color3.fromRGB(255, 255, 255)
reverseToggle.TextSize = 14
reverseToggle.Font = Enum.Font.GothamBold
reverseToggle.BorderSizePixel = 0
reverseToggle.Parent = scrollFrame

local reverseCorner = Instance.new("UICorner")
reverseCorner.CornerRadius = UDim.new(0, 8)
reverseCorner.Parent = reverseToggle

-- Reverse Orbit Info
local reverseInfo = Instance.new("TextLabel")
reverseInfo.Size = UDim2.new(1, -20, 0, 40)
reverseInfo.Position = UDim2.new(0, 10, 0, 285)
reverseInfo.BackgroundTransparency = 1
reverseInfo.Text = "Reverses orbit direction (like Triton orbiting Neptune backwards)"
reverseInfo.TextColor3 = Color3.fromRGB(150, 150, 200)
reverseInfo.TextSize = 10
reverseInfo.Font = Enum.Font.Gotham
reverseInfo.TextWrapped = true
reverseInfo.TextXAlignment = Enum.TextXAlignment.Left
reverseInfo.Parent = scrollFrame

-- Tidally Locked Label
local tidalLabel = Instance.new("TextLabel")
tidalLabel.Size = UDim2.new(1, -20, 0, 20)
tidalLabel.Position = UDim2.new(0, 10, 0, 330)
tidalLabel.BackgroundTransparency = 1
tidalLabel.Text = "Tidally Locked:"
tidalLabel.TextColor3 = Color3.fromRGB(200, 200, 200)
tidalLabel.TextSize = 12
tidalLabel.Font = Enum.Font.Gotham
tidalLabel.TextXAlignment = Enum.TextXAlignment.Left
tidalLabel.Parent = scrollFrame

-- Tidally Locked Toggle
local tidalToggle = Instance.new("TextButton")
tidalToggle.Size = UDim2.new(1, -20, 0, 35)
tidalToggle.Position = UDim2.new(0, 10, 0, 355)
tidalToggle.BackgroundColor3 = Color3.fromRGB(100, 100, 100)
tidalToggle.BackgroundTransparency = 0.3
tidalToggle.Text = "OFF"
tidalToggle.TextColor3 = Color3.fromRGB(255, 255, 255)
tidalToggle.TextSize = 14
tidalToggle.Font = Enum.Font.GothamBold
tidalToggle.BorderSizePixel = 0
tidalToggle.Parent = scrollFrame

local tidalCorner = Instance.new("UICorner")
tidalCorner.CornerRadius = UDim.new(0, 8)
tidalCorner.Parent = tidalToggle

-- Tidally Locked Info
local tidalInfo = Instance.new("TextLabel")
tidalInfo.Size = UDim2.new(1, -20, 0, 40)
tidalInfo.Position = UDim2.new(0, 10, 0, 395)
tidalInfo.BackgroundTransparency = 1
tidalInfo.Text = "Locks your character to face the target player (like the moon facing Earth)"
tidalInfo.TextColor3 = Color3.fromRGB(150, 150, 200)
tidalInfo.TextSize = 10
tidalInfo.Font = Enum.Font.Gotham
tidalInfo.TextWrapped = true
tidalInfo.TextXAlignment = Enum.TextXAlignment.Left
tidalInfo.Parent = scrollFrame

-- Spin Mode Label
local spinLabel = Instance.new("TextLabel")
spinLabel.Size = UDim2.new(1, -20, 0, 20)
spinLabel.Position = UDim2.new(0, 10, 0, 440)
spinLabel.BackgroundTransparency = 1
spinLabel.Text = "Spin Mode:"
spinLabel.TextColor3 = Color3.fromRGB(200, 200, 200)
spinLabel.TextSize = 12
spinLabel.Font = Enum.Font.Gotham
spinLabel.TextXAlignment = Enum.TextXAlignment.Left
spinLabel.Parent = scrollFrame

-- Spin Mode Toggle
local spinToggle = Instance.new("TextButton")
spinToggle.Size = UDim2.new(1, -20, 0, 35)
spinToggle.Position = UDim2.new(0, 10, 0, 465)
spinToggle.BackgroundColor3 = Color3.fromRGB(100, 100, 100)
spinToggle.BackgroundTransparency = 0.3
spinToggle.Text = "OFF"
spinToggle.TextColor3 = Color3.fromRGB(255, 255, 255)
spinToggle.TextSize = 14
spinToggle.Font = Enum.Font.GothamBold
spinToggle.BorderSizePixel = 0
spinToggle.Parent = scrollFrame

local spinToggleCorner = Instance.new("UICorner")
spinToggleCorner.CornerRadius = UDim.new(0, 8)
spinToggleCorner.Parent = spinToggle

-- Spin Speed Label
local spinSpeedLabel = Instance.new("TextLabel")
spinSpeedLabel.Size = UDim2.new(1, -20, 0, 20)
spinSpeedLabel.Position = UDim2.new(0, 10, 0, 510)
spinSpeedLabel.BackgroundTransparency = 1
spinSpeedLabel.Text = "Spin Speed: 0.5 rad/sec (Min: 0.01)"
spinSpeedLabel.TextColor3 = Color3.fromRGB(200, 200, 200)
spinSpeedLabel.TextSize = 12
spinSpeedLabel.Font = Enum.Font.Gotham
spinSpeedLabel.TextXAlignment = Enum.TextXAlignment.Left
spinSpeedLabel.Parent = scrollFrame

-- Spin Speed Input
local spinSpeedBox = Instance.new("TextBox")
spinSpeedBox.Size = UDim2.new(1, -20, 0, 35)
spinSpeedBox.Position = UDim2.new(0, 10, 0, 535)
spinSpeedBox.BackgroundColor3 = Color3.fromRGB(40, 40, 50)
spinSpeedBox.BackgroundTransparency = 0
spinSpeedBox.TextColor3 = Color3.fromRGB(255, 255, 255)
spinSpeedBox.TextSize = 14
spinSpeedBox.Font = Enum.Font.Gotham
spinSpeedBox.Text = "0.5"
spinSpeedBox.BorderSizePixel = 0
spinSpeedBox.Parent = scrollFrame

local spinSpeedCorner = Instance.new("UICorner")
spinSpeedCorner.CornerRadius = UDim.new(0, 8)
spinSpeedCorner.Parent = spinSpeedBox

-- Spin Info
local spinInfo = Instance.new("TextLabel")
spinInfo.Size = UDim2.new(1, -20, 0, 40)
spinInfo.Position = UDim2.new(0, 10, 0, 575)
spinInfo.BackgroundTransparency = 1
spinInfo.Text = "Makes your character spin around. Works best when Tidally Locked is OFF"
spinInfo.TextColor3 = Color3.fromRGB(150, 150, 200)
spinInfo.TextSize = 10
spinInfo.Font = Enum.Font.Gotham
spinInfo.TextWrapped = true
spinInfo.TextXAlignment = Enum.TextXAlignment.Left
spinInfo.Parent = scrollFrame

-- ESP Label
local espLabel = Instance.new("TextLabel")
espLabel.Size = UDim2.new(1, -20, 0, 20)
espLabel.Position = UDim2.new(0, 10, 0, 625)
espLabel.BackgroundTransparency = 1
espLabel.Text = "Player ESP:"
espLabel.TextColor3 = Color3.fromRGB(200, 200, 200)
espLabel.TextSize = 12
espLabel.Font = Enum.Font.Gotham
espLabel.TextXAlignment = Enum.TextXAlignment.Left
espLabel.Parent = scrollFrame

-- ESP Toggle
local espToggle = Instance.new("TextButton")
espToggle.Size = UDim2.new(1, -20, 0, 35)
espToggle.Position = UDim2.new(0, 10, 0, 650)
espToggle.BackgroundColor3 = Color3.fromRGB(100, 100, 100)
espToggle.BackgroundTransparency = 0.3
espToggle.Text = "OFF"
espToggle.TextColor3 = Color3.fromRGB(255, 255, 255)
espToggle.TextSize = 14
espToggle.Font = Enum.Font.GothamBold
espToggle.BorderSizePixel = 0
espToggle.Parent = scrollFrame

local espToggleCorner = Instance.new("UICorner")
espToggleCorner.CornerRadius = UDim.new(0, 8)
espToggleCorner.Parent = espToggle

-- Minimized Bar (hidden initially)
local minimizedBar = Instance.new("Frame")
minimizedBar.Name = "MinimizedBar"
minimizedBar.Size = UDim2.new(0, 150, 0, 50)
minimizedBar.Position = UDim2.new(1, -160, 1, -60)
minimizedBar.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
minimizedBar.BackgroundTransparency = 0.1
minimizedBar.BorderSizePixel = 0
minimizedBar.Visible = false
minimizedBar.Parent = screenGui

local minBarCorner = Instance.new("UICorner")
minBarCorner.CornerRadius = UDim.new(0, 12)
minBarCorner.Parent = minimizedBar

local minBarStroke = Instance.new("UIStroke")
minBarStroke.Color = Color3.fromRGB(255, 255, 255)
minBarStroke.Thickness = 2
minBarStroke.Transparency = 0.6
minBarStroke.Parent = minimizedBar

-- Minimized Bar Text
local minBarText = Instance.new("TextLabel")
minBarText.Size = UDim2.new(1, -50, 1, 0)
minBarText.Position = UDim2.new(0, 5, 0, 0)
minBarText.BackgroundTransparency = 1
minBarText.Text = "ORBIT"
minBarText.TextColor3 = Color3.fromRGB(255, 255, 255)
minBarText.TextSize = 14
minBarText.Font = Enum.Font.GothamBold
minBarText.Parent = minimizedBar

-- Restore Button (on minimized bar)
local restoreBtn = Instance.new("TextButton")
restoreBtn.Size = UDim2.new(0, 45, 1, 0)
restoreBtn.Position = UDim2.new(1, -45, 0, 0)
restoreBtn.BackgroundColor3 = Color3.fromRGB(100, 200, 100)
restoreBtn.BackgroundTransparency = 0.3
restoreBtn.Text = "+"
restoreBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
restoreBtn.TextSize = 18
restoreBtn.Font = Enum.Font.GothamBold
restoreBtn.BorderSizePixel = 0
restoreBtn.Parent = minimizedBar

local restoreCorner = Instance.new("UICorner")
restoreCorner.CornerRadius = UDim.new(0, 8)
restoreCorner.Parent = restoreBtn

-- DRAGGING for minimized bar
local minDragging = false
local minDragStartMouse = nil
local minDragStartPos = nil

minimizedBar.InputBegan:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseButton1 then
		minDragging = true
		minDragStartMouse = UserInputService:GetMouseLocation()
		minDragStartPos = minimizedBar.Position
	end
end)

minimizedBar.InputEnded:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseButton1 then
		minDragging = false
	end
end)

UserInputService.InputChanged:Connect(function(input)
	if minDragging and input.UserInputType == Enum.UserInputType.Mouse then
		local currentMouse = UserInputService:GetMouseLocation()
		local diff = currentMouse - minDragStartMouse
		minimizedBar.Position = UDim2.new(minDragStartPos.X.Scale, minDragStartPos.X.Offset + diff.X, minDragStartPos.Y.Scale, minDragStartPos.Y.Offset + diff.Y)
	end
end)

-- TAB SWITCHING
orbitTabBtn.MouseButton1Click:Connect(function()
	currentTab = "orbit"
	orbitTabFrame.Visible = true
	settingsTabFrame.Visible = false
	orbitTabBtn.BackgroundColor3 = Color3.fromRGB(100, 200, 100)
	orbitTabBtn.BackgroundTransparency = 0.3
	settingsTabBtn.BackgroundColor3 = Color3.fromRGB(150, 150, 150)
	settingsTabBtn.BackgroundTransparency = 0.5
end)

settingsTabBtn.MouseButton1Click:Connect(function()
	currentTab = "settings"
	orbitTabFrame.Visible = false
	settingsTabFrame.Visible = true
	orbitTabBtn.BackgroundColor3 = Color3.fromRGB(150, 150, 150)
	orbitTabBtn.BackgroundTransparency = 0.5
	settingsTabBtn.BackgroundColor3 = Color3.fromRGB(100, 200, 100)
	settingsTabBtn.BackgroundTransparency = 0.3
end)

-- MINIMIZE BUTTON
minimizeBtn.MouseButton1Click:Connect(function()
	mainFrame.Visible = false
	minimizedBar.Visible = true
end)

-- RESTORE BUTTON
restoreBtn.MouseButton1Click:Connect(function()
	mainFrame.Visible = true
	minimizedBar.Visible = false
end)

-- CLOSE BUTTON
closeBtn.MouseButton1Click:Connect(function()
	screenGui:Destroy()
end)

-- ORBIT BUTTON
orbitBtn.MouseButton1Click:Connect(function()
	isOrbiting = not isOrbiting
	if isOrbiting then
		orbitBtn.Text = "STOP ORBIT"
		orbitBtn.BackgroundColor3 = Color3.fromRGB(200, 100, 100)
		if targetPlayer then
			statusLabel.Text = "Status: Orbiting " .. targetPlayer.Name
			if isReverseOrbit then
				statusLabel.Text = statusLabel.Text .. "\n(Reversed)"
			end
			if isTidallyLocked then
				statusLabel.Text = statusLabel.Text .. "\n(Tidally Locked)"
			end
			if isSpinMode then
				statusLabel.Text = statusLabel.Text .. "\n(Spinning)"
			end
		else
			statusLabel.Text = "Status: No player selected"
			isOrbiting = false
			orbitBtn.Text = "START ORBIT"
			orbitBtn.BackgroundColor3 = Color3.fromRGB(100, 200, 100)
		end
	else
		orbitBtn.Text = "START ORBIT"
		orbitBtn.BackgroundColor3 = Color3.fromRGB(100, 200, 100)
		statusLabel.Text = "Status: Orbit stopped"
	end
end)

-- TELEPORT BUTTON
teleportBtn.MouseButton1Click:Connect(function()
	if targetPlayer and targetPlayer.Character then
		local targetHRP = targetPlayer.Character:FindFirstChild("HumanoidRootPart")
		if targetHRP then
			humanoidRootPart.CFrame = targetHRP.CFrame + targetHRP.CFrame.LookVector * 5
			statusLabel.Text = "Status: Teleported to " .. targetPlayer.Name
		else
			statusLabel.Text = "Status: Target has no HumanoidRootPart"
		end
	else
		statusLabel.Text = "Status: No player selected"
	end
end)

-- SPEED BOX
speedBox.FocusLost:Connect(function()
	local val = tonumber(speedBox.Text)
	if val and val > 0 then
		orbitSpeed = val
		speedLabel.Text = "Speed: " .. orbitSpeed .. " studs/sec"
	else
		speedBox.Text = tostring(orbitSpeed)
	end
end)

-- DISTANCE BOX (Settings)
distanceBox.FocusLost:Connect(function()
	local val = tonumber(distanceBox.Text)
	if val and val > 0 then
		orbitRadius = val
		distanceLabel.Text = "Orbit Distance: " .. orbitRadius .. " studs"
	else
		distanceBox.Text = tostring(orbitRadius)
	end
end)

-- TILT BOX (Settings)
tiltBox.FocusLost:Connect(function()
	local val = tonumber(tiltBox.Text)
	if val then
		orbitTilt = math.rad(val)
		tiltLabel.Text = "Orbit Tilt: " .. val .. " degrees"
	else
		tiltBox.Text = tostring(math.deg(orbitTilt))
	end
end)

-- HEIGHT BOX (Settings)
heightBox.FocusLost:Connect(function()
	local val = tonumber(heightBox.Text)
	if val then
		orbitHeight = val
		heightLabel.Text = "Height Offset: " .. orbitHeight .. " studs"
	else
		heightBox.Text = tostring(orbitHeight)
	end
end)

-- REVERSE ORBIT TOGGLE
reverseToggle.MouseButton1Click:Connect(function()
	isReverseOrbit = not isReverseOrbit
	if isReverseOrbit then
		reverseToggle.Text = "ON"
		reverseToggle.BackgroundColor3 = Color3.fromRGB(200, 100, 200)
		if isOrbiting then
			statusLabel.Text = "Status: Orbiting " .. targetPlayer.Name .. "\n(Reversed)"
			if isTidallyLocked then
				statusLabel.Text = statusLabel.Text .. "\n(Tidally Locked)"
			end
			if isSpinMode then
				statusLabel.Text = statusLabel.Text .. "\n(Spinning)"
			end
		end
	else
		reverseToggle.Text = "OFF"
		reverseToggle.BackgroundColor3 = Color3.fromRGB(100, 100, 100)
		if isOrbiting then
			statusLabel.Text = "Status: Orbiting " .. targetPlayer.Name
			if isTidallyLocked then
				statusLabel.Text = statusLabel.Text .. "\n(Tidally Locked)"
			end
			if isSpinMode then
				statusLabel.Text = statusLabel.Text .. "\n(Spinning)"
			end
		end
	end
end)

-- TIDALLY LOCKED TOGGLE
tidalToggle.MouseButton1Click:Connect(function()
	isTidallyLocked = not isTidallyLocked
	if isTidallyLocked then
		tidalToggle.Text = "ON"
		tidalToggle.BackgroundColor3 = Color3.fromRGB(100, 150, 200)
		if isOrbiting then
			statusLabel.Text = "Status: Orbiting " .. targetPlayer.Name
			if isReverseOrbit then
				statusLabel.Text = statusLabel.Text .. "\n(Reversed)"
			end
			statusLabel.Text = statusLabel.Text .. "\n(Tidally Locked)"
			if isSpinMode then
				statusLabel.Text = statusLabel.Text .. "\n(Spinning)"
			end
		end
	else
		tidalToggle.Text = "OFF"
		tidalToggle.BackgroundColor3 = Color3.fromRGB(100, 100, 100)
		if isOrbiting then
			statusLabel.Text = "Status: Orbiting " .. targetPlayer.Name
			if isReverseOrbit then
				statusLabel.Text = statusLabel.Text .. "\n(Reversed)"
			end
			if isSpinMode then
				statusLabel.Text = statusLabel.Text .. "\n(Spinning)"
			end
		end
	end
end)

-- SPIN MODE TOGGLE
spinToggle.MouseButton1Click:Connect(function()
	isSpinMode = not isSpinMode
	if isSpinMode then
		spinToggle.Text = "ON"
		spinToggle.BackgroundColor3 = Color3.fromRGB(200, 100, 150)
		if isOrbiting then
			statusLabel.Text = "Status: Orbiting " .. targetPlayer.Name
			if isReverseOrbit then
				statusLabel.Text = statusLabel.Text .. "\n(Reversed)"
			end
			if isTidallyLocked then
				statusLabel.Text = statusLabel.Text .. "\n(Tidally Locked)"
			end
			statusLabel.Text = statusLabel.Text .. "\n(Spinning)"
		end
	else
		spinToggle.Text = "OFF"
		spinToggle.BackgroundColor3 = Color3.fromRGB(100, 100, 100)
		if isOrbiting then
			statusLabel.Text = "Status: Orbiting " .. targetPlayer.Name
			if isReverseOrbit then
				statusLabel.Text = statusLabel.Text .. "\n(Reversed)"
			end
			if isTidallyLocked then
				statusLabel.Text = statusLabel.Text .. "\n(Tidally Locked)"
			end
		end
	end
end)

-- SPIN SPEED BOX
spinSpeedBox.FocusLost:Connect(function()
	local val = tonumber(spinSpeedBox.Text)
	if val and val >= 0.01 then
		spinSpeed = val
		spinSpeedLabel.Text = "Spin Speed: " .. spinSpeed .. " rad/sec (Min: 0.01)"
	else
		spinSpeedBox.Text = tostring(spinSpeed)
		spinSpeedLabel.Text = "Spin Speed: " .. spinSpeed .. " rad/sec (Min: 0.01)"
	end
end)

-- ESP TOGGLE
espToggle.MouseButton1Click:Connect(function()
	espEnabled = not espEnabled
	if espEnabled then
		espToggle.Text = "ON"
		espToggle.BackgroundColor3 = Color3.fromRGB(100, 200, 100)
	else
		espToggle.Text = "OFF"
		espToggle.BackgroundColor3 = Color3.fromRGB(100, 100, 100)
		-- Clear ESP labels
		for _, label in pairs(espLabels) do
			label:Destroy()
		end
		espLabels = {}
	end
end)

-- PLAYER BOX
playerNameBox.FocusLost:Connect(function()
	local name = playerNameBox.Text:lower()
	targetPlayer = nil
	
	if name == "" then
		statusLabel.Text = "Status: Enter a name"
		return
	end
	
	-- Search by username
	for _, p in pairs(Players:GetPlayers()) do
		if p.Name:lower() == name then
			targetPlayer = p
			statusLabel.Text = "Status: Found " .. p.Name
			return
		end
	end
	
	-- Search by display name
	for _, p in pairs(Players:GetPlayers()) do
		if p.DisplayName:lower() == name then
			targetPlayer = p
			statusLabel.Text = "Status: Found " .. p.Name
			return
		end
	end
	
	statusLabel.Text = "Status: Player not found"
end)

-- ESP UPDATE LOOP
RunService.RenderStepped:Connect(function()
	if espEnabled then
		local camera = workspace.CurrentCamera
		
		for _, p in pairs(Players:GetPlayers()) do
			if p ~= player and p.Character then
				local humanoidRootPart = p.Character:FindFirstChild("HumanoidRootPart")
				
				if humanoidRootPart then
					-- Find or create ESP label for this player
					local espLabel = espLabels[p]
					
					if not espLabel then
						espLabel = Instance.new("TextLabel")
						espLabel.BackgroundTransparency = 1
						espLabel.TextScaled = false
						espLabel.TextSize = 13
						espLabel.Font = Enum.Font.GothamBold
						espLabel.Parent = screenGui
						espLabels[p] = espLabel
					end
					
					-- Update label position and text
					local screenPosition, onScreen = camera:WorldToScreenPoint(humanoidRootPart.Position)
					
					if onScreen then
						espLabel.Visible = true
						espLabel.Position = UDim2.new(0, screenPosition.X - 50, 0, screenPosition.Y - 20)
						espLabel.Text = p.Name .. " (" .. p.DisplayName .. ")"
						
						-- Color based on distance
						local distance = (humanoidRootPart.Position - camera.CFrame.Position).Magnitude
						if distance < 50 then
							espLabel.TextColor3 = Color3.fromRGB(0, 255, 0) -- Green
						elseif distance < 100 then
							espLabel.TextColor3 = Color3.fromRGB(255, 255, 0) -- Yellow
						else
							espLabel.TextColor3 = Color3.fromRGB(255, 0, 0) -- Red
						end
					else
						espLabel.Visible = false
					end
				end
			end
		end
		
		-- Clean up removed players
		for p, label in pairs(espLabels) do
			if not (p.Parent == Players) then
				label:Destroy()
				espLabels[p] = nil
			end
		end
	end
end)

-- ORBIT LOOP - With tilt, reverse, tidally locked, and spin support
RunService.RenderStepped:Connect(function()
	if isOrbiting and targetPlayer and targetPlayer.Character then
		local currentTime = tick()
		
		-- Only update orbit position every 0.01 seconds
		if currentTime - lastOrbitTime >= orbitDelay then
			local targetHRP = targetPlayer.Character:FindFirstChild("HumanoidRootPart")
			if targetHRP then
				-- Calculate angle with reverse direction
				local angleIncrement = (orbitSpeed / orbitRadius) / 60 * 6.28
				if isReverseOrbit then
					angleIncrement = -angleIncrement
				end
				angle = angle + angleIncrement
				
				-- Apply tilt rotation
				local x = math.cos(angle) * orbitRadius
				local z = math.sin(angle) * orbitRadius
				
				-- Apply tilt effect (like solar system)
				local tiltedY = math.sin(angle) * orbitRadius * math.sin(orbitTilt)
				local adjustedZ = z * math.cos(orbitTilt)
				
				local newPos = targetHRP.Position + Vector3.new(x, orbitHeight + tiltedY, adjustedZ)
				
				if isSpinMode then
					-- Add spin rotation
					spinAngle = spinAngle + spinSpeed / 60
					local spinCFrame = CFrame.Angles(0, spinAngle, 0)
					
					if isTidallyLocked then
						-- Tidally locked + spinning
						humanoidRootPart.CFrame = CFrame.new(newPos, targetHRP.Position) * spinCFrame
					else
						-- Spin only
						humanoidRootPart.CFrame = CFrame.new(newPos) * spinCFrame
					end
				else
					if isTidallyLocked then
						-- Tidally locked: character faces the target player
						humanoidRootPart.CFrame = CFrame.new(newPos, targetHRP.Position)
					else
						-- Normal mode: keep camera direction
						humanoidRootPart.CFrame = CFrame.new(newPos) * (humanoidRootPart.CFrame - humanoidRootPart.CFrame.Position)
					end
				end
			end
			
			lastOrbitTime = currentTime
		end
	end
end)

-- RESPAWN
player.CharacterAdded:Connect(function(newChar)
	character = newChar
	humanoidRootPart = character:WaitForChild("HumanoidRootPart")
	isOrbiting = false
	orbitBtn.Text = "START ORBIT"
	orbitBtn.BackgroundColor3 = Color3.fromRGB(100, 200, 100)
	statusLabel.Text = "Status: Respawned"
	spinAngle = 0
end)

Features & Information

ai
#ai generated#orbit#orbit gui#gui

Community Comments (2)

okopokopFeb 25, 2026

what ai you use

Replying to @okop
tlrenny25tlrenny25Feb 25, 2026

@okop i used roblox studio ai and github copilot

More Scripts for Universal Scripts