--[[ Lunar Admin Panel / Script Hub - v0.0.4 (Drawing API ESP & Loading Screen Restored) Features Fixed & Added: - Restored animated glassmorphic loading screen on execution - Fixed ESP Engine using native Drawing API (Box, Skeleton, Tracers, Health, Names) - Dynamic Resizable FOV Circle - Header Controls: Minimize (-) & Close (✕) with top Reopen Notification Toast --]] local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local TweenService = game:GetService("TweenService") local RunService = game:GetService("RunService") local Workspace = game:GetService("Workspace") local LocalPlayer = Players.LocalPlayer local Camera = Workspace.CurrentCamera local Character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait() LocalPlayer.CharacterAdded:Connect(function(newChar) Character = newChar end) -------------------------------------------------------------------------------- -- THEME SYSTEM CONFIGURATION -------------------------------------------------------------------------------- local Themes = { Dark = { Bg = Color3.fromRGB(12, 12, 16), Header = Color3.fromRGB(18, 18, 24), Accent = Color3.fromRGB(255, 255, 255), Text = Color3.fromRGB(240, 240, 245), SubText = Color3.fromRGB(140, 140, 150), Card = Color3.fromRGB(20, 20, 26), Stroke = Color3.fromRGB(255, 255, 255) }, Midnight = { Bg = Color3.fromRGB(8, 12, 22), Header = Color3.fromRGB(12, 18, 32), Accent = Color3.fromRGB(50, 130, 255), Text = Color3.fromRGB(235, 242, 255), SubText = Color3.fromRGB(110, 135, 175), Card = Color3.fromRGB(14, 22, 38), Stroke = Color3.fromRGB(60, 120, 240) }, Violet = { Bg = Color3.fromRGB(15, 10, 22), Header = Color3.fromRGB(24, 16, 35), Accent = Color3.fromRGB(180, 90, 255), Text = Color3.fromRGB(250, 240, 255), SubText = Color3.fromRGB(150, 125, 175), Card = Color3.fromRGB(25, 18, 38), Stroke = Color3.fromRGB(170, 80, 255) }, Emerald = { Bg = Color3.fromRGB(8, 18, 14), Header = Color3.fromRGB(12, 28, 22), Accent = Color3.fromRGB(45, 210, 130), Text = Color3.fromRGB(235, 255, 245), SubText = Color3.fromRGB(110, 165, 140), Card = Color3.fromRGB(14, 32, 25), Stroke = Color3.fromRGB(40, 190, 120) } } local CurrentTheme = Themes.Dark -------------------------------------------------------------------------------- -- SCREEN GUI SETUP -------------------------------------------------------------------------------- local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "LunarHub_v004" ScreenGui.ResetOnSpawn = false ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui") -------------------------------------------------------------------------------- -- LOADING SCREEN (RESTORED) -------------------------------------------------------------------------------- local LoadingContainer = Instance.new("Frame") LoadingContainer.Size = UDim2.new(0, 180, 0, 180) LoadingContainer.Position = UDim2.new(0.5, -90, 0.5, -90) LoadingContainer.BackgroundColor3 = CurrentTheme.Bg LoadingContainer.BackgroundTransparency = 0.15 LoadingContainer.BorderSizePixel = 0 LoadingContainer.ZIndex = 1000 LoadingContainer.Parent = ScreenGui local LoadingCorner = Instance.new("UICorner") LoadingCorner.CornerRadius = UDim.new(1, 0) LoadingCorner.Parent = LoadingContainer local LoadingStroke = Instance.new("UIStroke") LoadingStroke.Color = CurrentTheme.Stroke LoadingStroke.Transparency = 0.85 LoadingStroke.Thickness = 1.5 LoadingStroke.Parent = LoadingContainer local Spinner = Instance.new("ImageLabel") Spinner.Size = UDim2.new(0, 140, 0, 140) Spinner.Position = UDim2.new(0.5, -70, 0.5, -70) Spinner.BackgroundTransparency = 1 Spinner.Image = "rbxassetid://6031094678" Spinner.ImageColor3 = CurrentTheme.Accent Spinner.ImageTransparency = 0.2 Spinner.ZIndex = 1001 Spinner.Parent = LoadingContainer local LunarLogo = Instance.new("TextLabel") LunarLogo.Size = UDim2.new(1, 0, 0, 30) LunarLogo.Position = UDim2.new(0, 0, 0.5, -15) LunarLogo.BackgroundTransparency = 1 LunarLogo.Text = "LUNAR" LunarLogo.TextColor3 = CurrentTheme.Text LunarLogo.TextSize = 19 LunarLogo.Font = Enum.Font.GothamBold LunarLogo.ZIndex = 1002 LunarLogo.Parent = LoadingContainer local spinConn = RunService.RenderStepped:Connect(function(dt) if Spinner and Spinner.Parent then Spinner.Rotation = (Spinner.Rotation + 220 * dt) % 360 end end) -------------------------------------------------------------------------------- -- REOPEN NOTIFICATION TOAST -------------------------------------------------------------------------------- local ReopenToast = Instance.new("TextButton") ReopenToast.Name = "ReopenToast" ReopenToast.Size = UDim2.new(0, 220, 0, 36) ReopenToast.Position = UDim2.new(0.5, -110, 0, -50) ReopenToast.BackgroundColor3 = CurrentTheme.Header ReopenToast.BackgroundTransparency = 0.2 ReopenToast.Text = "Lunar Hub Minimized (Click to Open)" ReopenToast.TextColor3 = CurrentTheme.Text ReopenToast.TextSize = 12 ReopenToast.Font = Enum.Font.GothamMedium ReopenToast.Visible = false ReopenToast.Parent = ScreenGui local ToastCorner = Instance.new("UICorner") ToastCorner.CornerRadius = UDim.new(0, 8) ToastCorner.Parent = ReopenToast local ToastStroke = Instance.new("UIStroke") ToastStroke.Color = CurrentTheme.Stroke ToastStroke.Transparency = 0.8 ToastStroke.Thickness = 1 ToastStroke.Parent = ReopenToast local function ShowReopenToast() ReopenToast.Visible = true TweenService:Create(ReopenToast, TweenInfo.new(0.3), {Position = UDim2.new(0.5, -110, 0, 15)}):Play() end local function HideReopenToast() local tw = TweenService:Create(ReopenToast, TweenInfo.new(0.3), {Position = UDim2.new(0.5, -110, 0, -50)}) tw:Play() tw.Completed:Connect(function() if ReopenToast.Position.Y.Offset <= -50 then ReopenToast.Visible = false end end) end -------------------------------------------------------------------------------- -- MAIN PANEL FRAME -------------------------------------------------------------------------------- local MainFrame = Instance.new("Frame") MainFrame.Name = "MainFrame" MainFrame.Size = UDim2.new(0, 660, 0, 440) MainFrame.Position = UDim2.new(0.5, -330, 0.5, -220) MainFrame.BackgroundColor3 = CurrentTheme.Bg MainFrame.BackgroundTransparency = 0.15 MainFrame.BorderSizePixel = 0 MainFrame.ClipsDescendants = true MainFrame.Visible = false MainFrame.Parent = ScreenGui local MainCorner = Instance.new("UICorner") MainCorner.CornerRadius = UDim.new(0, 12) MainCorner.Parent = MainFrame local MainStroke = Instance.new("UIStroke") MainStroke.Color = CurrentTheme.Stroke MainStroke.Transparency = 0.88 MainStroke.Thickness = 1.2 MainStroke.Parent = MainFrame -- Header local Header = Instance.new("Frame") Header.Name = "Header" Header.Size = UDim2.new(1, 0, 0, 48) Header.BackgroundColor3 = CurrentTheme.Header Header.BackgroundTransparency = 0.5 Header.BorderSizePixel = 0 Header.Parent = MainFrame local HeaderTitle = Instance.new("TextLabel") HeaderTitle.Size = UDim2.new(0, 100, 1, 0) HeaderTitle.Position = UDim2.new(0, 20, 0, 0) HeaderTitle.BackgroundTransparency = 1 HeaderTitle.Text = "LUNAR" HeaderTitle.TextColor3 = CurrentTheme.Text HeaderTitle.TextSize = 17 HeaderTitle.Font = Enum.Font.GothamBold HeaderTitle.TextXAlignment = Enum.TextXAlignment.Left HeaderTitle.Parent = Header local SubTitle = Instance.new("TextLabel") SubTitle.Size = UDim2.new(0, 100, 1, 0) SubTitle.Position = UDim2.new(0, 92, 0, 1) SubTitle.BackgroundTransparency = 1 SubTitle.Text = "v0.0.4" SubTitle.TextColor3 = CurrentTheme.SubText SubTitle.TextSize = 11 SubTitle.Font = Enum.Font.GothamMedium SubTitle.TextXAlignment = Enum.TextXAlignment.Left SubTitle.Parent = Header -- Close Button local CloseBtn = Instance.new("TextButton") CloseBtn.Size = UDim2.new(0, 32, 0, 32) CloseBtn.Position = UDim2.new(1, -38, 0.5, -16) CloseBtn.BackgroundTransparency = 1 CloseBtn.Text = "✕" CloseBtn.TextColor3 = CurrentTheme.SubText CloseBtn.TextSize = 14 CloseBtn.Font = Enum.Font.GothamMedium CloseBtn.Parent = Header CloseBtn.MouseEnter:Connect(function() CloseBtn.TextColor3 = CurrentTheme.Text end) CloseBtn.MouseLeave:Connect(function() CloseBtn.TextColor3 = CurrentTheme.SubText end) CloseBtn.MouseButton1Click:Connect(function() MainFrame.Visible = false ShowReopenToast() end) -- Minimize Button local MinimizeBtn = Instance.new("TextButton") MinimizeBtn.Size = UDim2.new(0, 32, 0, 32) MinimizeBtn.Position = UDim2.new(1, -72, 0.5, -16) MinimizeBtn.BackgroundTransparency = 1 MinimizeBtn.Text = "—" MinimizeBtn.TextColor3 = CurrentTheme.SubText MinimizeBtn.TextSize = 14 MinimizeBtn.Font = Enum.Font.GothamMedium MinimizeBtn.Parent = Header MinimizeBtn.MouseEnter:Connect(function() MinimizeBtn.TextColor3 = CurrentTheme.Text end) MinimizeBtn.MouseLeave:Connect(function() MinimizeBtn.TextColor3 = CurrentTheme.SubText end) MinimizeBtn.MouseButton1Click:Connect(function() MainFrame.Visible = false ShowReopenToast() end) ReopenToast.MouseButton1Click:Connect(function() MainFrame.Visible = true HideReopenToast() end) -- Dragging logic local dragging, dragInput, dragStart, startPos Header.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true dragStart = input.Position startPos = MainFrame.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) Header.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement then dragInput = input end end) UserInputService.InputChanged:Connect(function(input) if input == dragInput and dragging then local delta = input.Position - dragStart MainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) -------------------------------------------------------------------------------- -- SIDEBAR & TABS -------------------------------------------------------------------------------- local Sidebar = Instance.new("Frame") Sidebar.Size = UDim2.new(0, 145, 1, -60) Sidebar.Position = UDim2.new(0, 15, 0, 56) Sidebar.BackgroundTransparency = 1 Sidebar.Parent = MainFrame local SidebarLayout = Instance.new("UIListLayout") SidebarLayout.Padding = UDim.new(0, 6) SidebarLayout.SortOrder = Enum.SortOrder.LayoutOrder SidebarLayout.Parent = Sidebar local ContentArea = Instance.new("Frame") ContentArea.Size = UDim2.new(1, -190, 1, -65) ContentArea.Position = UDim2.new(0, 172, 0, 56) ContentArea.BackgroundTransparency = 1 ContentArea.Parent = MainFrame local Tabs = {} local TabButtons = {} local function CreateTab(name) local Page = Instance.new("ScrollingFrame") Page.Name = name .. "Page" Page.Size = UDim2.new(1, 0, 1, 0) Page.BackgroundTransparency = 1 Page.BorderSizePixel = 0 Page.ScrollBarThickness = 3 Page.ScrollBarImageColor3 = CurrentTheme.SubText Page.Visible = false Page.CanvasSize = UDim2.new(0, 0, 0, 0) Page.Parent = ContentArea local PageLayout = Instance.new("UIListLayout") PageLayout.Padding = UDim.new(0, 8) PageLayout.SortOrder = Enum.SortOrder.LayoutOrder PageLayout.Parent = Page PageLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function() Page.CanvasSize = UDim2.new(0, 0, 0, PageLayout.AbsoluteContentSize.Y + 15) end) local TabBtn = Instance.new("TextButton") TabBtn.Size = UDim2.new(1, 0, 0, 36) TabBtn.BackgroundColor3 = CurrentTheme.Card TabBtn.BackgroundTransparency = 1 TabBtn.Text = " " .. name TabBtn.TextColor3 = CurrentTheme.SubText TabBtn.TextSize = 13 TabBtn.Font = Enum.Font.GothamMedium TabBtn.TextXAlignment = Enum.TextXAlignment.Left TabBtn.Parent = Sidebar local BtnCorner = Instance.new("UICorner") BtnCorner.CornerRadius = UDim.new(0, 6) BtnCorner.Parent = TabBtn TabBtn.MouseButton1Click:Connect(function() for _, tPage in pairs(Tabs) do tPage.Visible = false end for _, button in pairs(TabButtons) do TweenService:Create(button, TweenInfo.new(0.2), { BackgroundTransparency = 1, TextColor3 = CurrentTheme.SubText }):Play() end Page.Visible = true TweenService:Create(TabBtn, TweenInfo.new(0.2), { BackgroundTransparency = 0.6, TextColor3 = CurrentTheme.Text }):Play() end) Tabs[name] = Page table.insert(TabButtons, TabBtn) return Page end local ShooterPage = CreateTab("Shooter") local VisualsPage = CreateTab("Visuals") local MiscPage = CreateTab("Misc") local SettingsPage = CreateTab("Settings") Tabs["Shooter"].Visible = true TabButtons[1].BackgroundTransparency = 0.6 TabButtons[1].TextColor3 = CurrentTheme.Text -------------------------------------------------------------------------------- -- UI COMPONENTS -------------------------------------------------------------------------------- local function CreateToggle(parent, text, default, callback) local Frame = Instance.new("Frame") Frame.Size = UDim2.new(1, -6, 0, 38) Frame.BackgroundColor3 = CurrentTheme.Card Frame.BackgroundTransparency = 0.3 Frame.BorderSizePixel = 0 Frame.Parent = parent local Corner = Instance.new("UICorner") Corner.CornerRadius = UDim.new(0, 6) Corner.Parent = Frame local Stroke = Instance.new("UIStroke") Stroke.Color = CurrentTheme.Stroke Stroke.Transparency = 0.92 Stroke.Thickness = 1 Stroke.Parent = Frame local Label = Instance.new("TextLabel") Label.Size = UDim2.new(1, -60, 1, 0) Label.Position = UDim2.new(0, 12, 0, 0) Label.BackgroundTransparency = 1 Label.Text = text Label.TextColor3 = CurrentTheme.Text Label.TextSize = 13 Label.Font = Enum.Font.GothamMedium Label.TextXAlignment = Enum.TextXAlignment.Left Label.Parent = Frame local Switch = Instance.new("TextButton") Switch.Size = UDim2.new(0, 36, 0, 18) Switch.Position = UDim2.new(1, -48, 0.5, -9) Switch.BackgroundColor3 = default and CurrentTheme.Accent or Color3.fromRGB(40, 40, 48) Switch.BorderSizePixel = 0 Switch.Text = "" Switch.Parent = Frame local SwitchCorner = Instance.new("UICorner") SwitchCorner.CornerRadius = UDim.new(1, 0) SwitchCorner.Parent = Switch local Dot = Instance.new("Frame") Dot.Size = UDim2.new(0, 12, 0, 12) Dot.Position = default and UDim2.new(1, -15, 0.5, -6) or UDim2.new(0, 3, 0.5, -6) Dot.BackgroundColor3 = default and Color3.fromRGB(15, 15, 15) or Color3.fromRGB(160, 160, 170) Dot.BorderSizePixel = 0 Dot.Parent = Switch local DotCorner = Instance.new("UICorner") DotCorner.CornerRadius = UDim.new(1, 0) DotCorner.Parent = Dot local active = default Switch.MouseButton1Click:Connect(function() active = not active if active then TweenService:Create(Switch, TweenInfo.new(0.2), {BackgroundColor3 = CurrentTheme.Accent}):Play() TweenService:Create(Dot, TweenInfo.new(0.2), {Position = UDim2.new(1, -15, 0.5, -6), BackgroundColor3 = Color3.fromRGB(15, 15, 15)}):Play() else TweenService:Create(Switch, TweenInfo.new(0.2), {BackgroundColor3 = Color3.fromRGB(40, 40, 48)}):Play() TweenService:Create(Dot, TweenInfo.new(0.2), {Position = UDim2.new(0, 3, 0.5, -6), BackgroundColor3 = Color3.fromRGB(160, 160, 170)}):Play() end callback(active) end) end local function CreateSlider(parent, text, min, max, default, callback) local Frame = Instance.new("Frame") Frame.Size = UDim2.new(1, -6, 0, 46) Frame.BackgroundColor3 = CurrentTheme.Card Frame.BackgroundTransparency = 0.3 Frame.BorderSizePixel = 0 Frame.Parent = parent local Corner = Instance.new("UICorner") Corner.CornerRadius = UDim.new(0, 6) Corner.Parent = Frame local Stroke = Instance.new("UIStroke") Stroke.Color = CurrentTheme.Stroke Stroke.Transparency = 0.92 Stroke.Thickness = 1 Stroke.Parent = Frame local Label = Instance.new("TextLabel") Label.Size = UDim2.new(0.5, 0, 0, 20) Label.Position = UDim2.new(0, 12, 0, 5) Label.BackgroundTransparency = 1 Label.Text = text Label.TextColor3 = CurrentTheme.Text Label.TextSize = 13 Label.Font = Enum.Font.GothamMedium Label.TextXAlignment = Enum.TextXAlignment.Left Label.Parent = Frame local ValLabel = Instance.new("TextLabel") ValLabel.Size = UDim2.new(0.5, -15, 0, 20) ValLabel.Position = UDim2.new(0.5, 0, 0, 5) ValLabel.BackgroundTransparency = 1 ValLabel.Text = tostring(default) ValLabel.TextColor3 = CurrentTheme.SubText ValLabel.TextSize = 12 ValLabel.Font = Enum.Font.Gotham ValLabel.TextXAlignment = Enum.TextXAlignment.Right ValLabel.Parent = Frame local SliderTrack = Instance.new("Frame") SliderTrack.Size = UDim2.new(1, -24, 0, 4) SliderTrack.Position = UDim2.new(0, 12, 1, -11) SliderTrack.BackgroundColor3 = Color3.fromRGB(40, 40, 50) SliderTrack.BorderSizePixel = 0 SliderTrack.Parent = Frame local TrackCorner = Instance.new("UICorner") TrackCorner.CornerRadius = UDim.new(1, 0) TrackCorner.Parent = SliderTrack local SliderFill = Instance.new("Frame") local initRatio = math.clamp((default - min) / (max - min), 0, 1) SliderFill.Size = UDim2.new(initRatio, 0, 1, 0) SliderFill.BackgroundColor3 = CurrentTheme.Accent SliderFill.BorderSizePixel = 0 SliderFill.Parent = SliderTrack local FillCorner = Instance.new("UICorner") FillCorner.CornerRadius = UDim.new(1, 0) FillCorner.Parent = SliderFill local sliding = false local function Update(input) local pos = math.clamp((input.Position.X - SliderTrack.AbsolutePosition.X) / SliderTrack.AbsoluteSize.X, 0, 1) SliderFill.Size = UDim2.new(pos, 0, 1, 0) local val = math.floor(min + (max - min) * pos) ValLabel.Text = tostring(val) callback(val) end SliderTrack.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then sliding = true Update(input) end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then sliding = false end end) UserInputService.InputChanged:Connect(function(input) if sliding and input.UserInputType == Enum.UserInputType.MouseMovement then Update(input) end end) end local function CreateButton(parent, text, callback) local Btn = Instance.new("TextButton") Btn.Size = UDim2.new(1, -6, 0, 36) Btn.BackgroundColor3 = CurrentTheme.Card Btn.BackgroundTransparency = 0.3 Btn.Text = text Btn.TextColor3 = CurrentTheme.Text Btn.TextSize = 13 Btn.Font = Enum.Font.GothamMedium Btn.Parent = parent local Corner = Instance.new("UICorner") Corner.CornerRadius = UDim.new(0, 6) Corner.Parent = Btn local Stroke = Instance.new("UIStroke") Stroke.Color = CurrentTheme.Stroke Stroke.Transparency = 0.92 Stroke.Thickness = 1 Stroke.Parent = Btn Btn.MouseButton1Click:Connect(callback) end -------------------------------------------------------------------------------- -- 1. SHOOTER TAB & RESIZABLE FOV CIRCLE -------------------------------------------------------------------------------- local AimbotEnabled = false local AimFOV = 120 local AimSmoothness = 5 local AimPart = "Head" local FOVCircle = Instance.new("Frame") FOVCircle.Name = "FOVCircle" FOVCircle.AnchorPoint = Vector2.new(0.5, 0.5) FOVCircle.Size = UDim2.new(0, AimFOV * 2, 0, AimFOV * 2) FOVCircle.Position = UDim2.new(0.5, 0, 0.5, 0) FOVCircle.BackgroundTransparency = 1 FOVCircle.Visible = false FOVCircle.Parent = ScreenGui local FOVCorner = Instance.new("UICorner") FOVCorner.CornerRadius = UDim.new(1, 0) FOVCorner.Parent = FOVCircle local FOVStroke = Instance.new("UIStroke") FOVStroke.Color = CurrentTheme.Accent FOVStroke.Transparency = 0.5 FOVStroke.Thickness = 1.5 FOVStroke.Parent = FOVCircle local function UpdateFOVSize(newRadius) AimFOV = newRadius FOVCircle.Size = UDim2.new(0, AimFOV * 2, 0, AimFOV * 2) end CreateToggle(ShooterPage, "Aimbot Enabled", false, function(v) AimbotEnabled = v end) CreateToggle(ShooterPage, "Draw FOV Circle", false, function(v) FOVCircle.Visible = v end) CreateSlider(ShooterPage, "Aimbot FOV Radius", 30, 600, 120, function(v) UpdateFOVSize(v) end) CreateSlider(ShooterPage, "Smoothness", 1, 25, 5, function(v) AimSmoothness = v end) CreateToggle(ShooterPage, "Target RootPart Instead of Head", false, function(v) AimPart = v and "HumanoidRootPart" or "Head" end) RunService.RenderStepped:Connect(function() local mousePos = UserInputService:GetMouseLocation() FOVCircle.Position = UDim2.new(0, mousePos.X, 0, mousePos.Y) if AimbotEnabled and UserInputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton2) then local target, closestDist = nil, AimFOV for _, plr in ipairs(Players:GetPlayers()) do if plr ~= LocalPlayer and plr.Character then local part = plr.Character:FindFirstChild(AimPart) if part then local screenPos, onScreen = Camera:WorldToViewportPoint(part.Position) if onScreen then local dist = (Vector2.new(screenPos.X, screenPos.Y) - mousePos).Magnitude if dist < closestDist then closestDist = dist target = part end end end end end if target then local currentCF = Camera.CFrame local targetCF = CFrame.new(currentCF.Position, target.Position) Camera.CFrame = currentCF:Lerp(targetCF, 1 / AimSmoothness) end end end) -------------------------------------------------------------------------------- -- 2. VISUALS / NATIVE DRAWING API ESP ENGINE -------------------------------------------------------------------------------- local ESP_Box = false local ESP_Health = false local ESP_Name = false local ESP_Tracers = false local ESP_Skeleton = false local ESP_Chams = false local ESPColor = Color3.fromRGB(255, 255, 255) CreateToggle(VisualsPage, "Box ESP", false, function(v) ESP_Box = v end) CreateToggle(VisualsPage, "Health Bar", false, function(v) ESP_Health = v end) CreateToggle(VisualsPage, "Player Names & Distance", false, function(v) ESP_Name = v end) CreateToggle(VisualsPage, "Tracers (Snaplines)", false, function(v) ESP_Tracers = v end) CreateToggle(VisualsPage, "Skeleton ESP", false, function(v) ESP_Skeleton = v end) CreateToggle(VisualsPage, "Chams (Highlight)", false, function(v) ESP_Chams = v for _, plr in ipairs(Players:GetPlayers()) do if plr ~= LocalPlayer and plr.Character then local h = plr.Character:FindFirstChild("LunarChams") if v then if not h then h = Instance.new("Highlight") h.Name = "LunarChams" h.FillColor = ESPColor h.OutlineColor = Color3.fromRGB(200, 200, 200) h.FillTransparency = 0.5 h.Parent = plr.Character end else if h then h:Destroy() end end end end end) local SkeletonBones = { R15 = { {"Head", "UpperTorso"}, {"UpperTorso", "LowerTorso"}, {"LowerTorso", "LeftUpperLeg"}, {"LeftUpperLeg", "LeftLowerLeg"}, {"LeftLowerLeg", "LeftFoot"}, {"LowerTorso", "RightUpperLeg"}, {"RightUpperLeg", "RightLowerLeg"}, {"RightLowerLeg", "RightFoot"}, {"UpperTorso", "LeftUpperArm"}, {"LeftUpperArm", "LeftLowerArm"}, {"LeftLowerArm", "LeftHand"}, {"UpperTorso", "RightUpperArm"}, {"RightUpperArm", "RightLowerArm"}, {"RightLowerArm", "RightHand"} }, R6 = { {"Head", "Torso"}, {"Torso", "Left Arm"}, {"Torso", "Right Arm"}, {"Torso", "Left Leg"}, {"Torso", "Right Leg"} } } -- Drawing API Object Cache per Player local ESPObjects = {} local function CreateESPObject(plr) if ESPObjects[plr] then return end ESPObjects[plr] = { Box = Drawing.new("Square"), Tracer = Drawing.new("Line"), Name = Drawing.new("Text"), HealthBarBg = Drawing.new("Square"), HealthBar = Drawing.new("Square"), Skeletons = {} } local obj = ESPObjects[plr] obj.Box.Thickness = 1 obj.Box.Filled = false obj.Box.Visible = false obj.Tracer.Thickness = 1 obj.Tracer.Visible = false obj.Name.Size = 13 obj.Name.Center = true obj.Name.Outline = true obj.Name.Visible = false obj.HealthBarBg.Filled = true obj.HealthBarBg.Color = Color3.fromRGB(10, 10, 10) obj.HealthBarBg.Visible = false obj.HealthBar.Filled = true obj.HealthBar.Color = Color3.fromRGB(40, 220, 90) obj.HealthBar.Visible = false for i = 1, 15 do local boneLine = Drawing.new("Line") boneLine.Thickness = 1.5 boneLine.Visible = false table.insert(obj.Skeletons, boneLine) end end local function HideESPObject(plr) local obj = ESPObjects[plr] if not obj then return end obj.Box.Visible = false obj.Tracer.Visible = false obj.Name.Visible = false obj.HealthBarBg.Visible = false obj.HealthBar.Visible = false for _, line in ipairs(obj.Skeletons) do line.Visible = false end end local function RemoveESPObject(plr) local obj = ESPObjects[plr] if not obj then return end obj.Box:Remove() obj.Tracer:Remove() obj.Name:Remove() obj.HealthBarBg:Remove() obj.HealthBar:Remove() for _, line in ipairs(obj.Skeletons) do line:Remove() end ESPObjects[plr] = nil end Players.PlayerRemoving:Connect(RemoveESPObject) RunService.RenderStepped:Connect(function() for _, plr in ipairs(Players:GetPlayers()) do if plr ~= LocalPlayer then CreateESPObject(plr) local obj = ESPObjects[plr] local char = plr.Character local root = char and (char:FindFirstChild("HumanoidRootPart") or char:FindFirstChild("Torso")) local head = char and char:FindFirstChild("Head") local hum = char and char:FindFirstChildOfClass("Humanoid") if char and root and head and hum and hum.Health > 0 then local rootPos, onScreen = Camera:WorldToViewportPoint(root.Position) if onScreen and rootPos.Z > 0 then local headPos = Camera:WorldToViewportPoint(head.Position + Vector3.new(0, 0.7, 0)) local legPos = Camera:WorldToViewportPoint(root.Position - Vector3.new(0, 3.0, 0)) local height = math.abs(headPos.Y - legPos.Y) local width = height * 0.6 local topLeft = Vector2.new(rootPos.X - width / 2, headPos.Y) -- Box if ESP_Box then obj.Box.Size = Vector2.new(width, height) obj.Box.Position = topLeft obj.Box.Color = ESPColor obj.Box.Visible = true else obj.Box.Visible = false end -- Tracer if ESP_Tracers then obj.Tracer.From = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y) obj.Tracer.To = Vector2.new(rootPos.X, rootPos.Y) obj.Tracer.Color = ESPColor obj.Tracer.Visible = true else obj.Tracer.Visible = false end -- Name if ESP_Name then local myHRP = Character and Character:FindFirstChild("HumanoidRootPart") local dist = myHRP and math.floor((myHRP.Position - root.Position).Magnitude) or 0 obj.Name.Text = plr.Name .. " [" .. dist .. "m]" obj.Name.Position = Vector2.new(rootPos.X, topLeft.Y - 16) obj.Name.Color = Color3.fromRGB(255, 255, 255) obj.Name.Visible = true else obj.Name.Visible = false end -- Health Bar if ESP_Health then local hpPercent = math.clamp(hum.Health / hum.MaxHealth, 0, 1) obj.HealthBarBg.Size = Vector2.new(3, height) obj.HealthBarBg.Position = Vector2.new(topLeft.X - 6, topLeft.Y) obj.HealthBarBg.Visible = true obj.HealthBar.Size = Vector2.new(3, height * hpPercent) obj.HealthBar.Position = Vector2.new(topLeft.X - 6, topLeft.Y + (height * (1 - hpPercent))) obj.HealthBar.Visible = true else obj.HealthBarBg.Visible = false obj.HealthBar.Visible = false end -- Skeleton ESP if ESP_Skeleton then local rigType = (hum.RigType == Enum.HumanoidRigType.R15) and "R15" or "R6" local pairsList = SkeletonBones[rigType] for i, line in ipairs(obj.Skeletons) do if pairsList[i] then local partA = char:FindFirstChild(pairsList[i][1]) local partB = char:FindFirstChild(pairsList[i][2]) if partA and partB then local posA, visA = Camera:WorldToViewportPoint(partA.Position) local posB, visB = Camera:WorldToViewportPoint(partB.Position) if visA and visB and posA.Z > 0 and posB.Z > 0 then line.From = Vector2.new(posA.X, posA.Y) line.To = Vector2.new(posB.X, posB.Y) line.Color = ESPColor line.Visible = true else line.Visible = false end else line.Visible = false end else line.Visible = false end end else for _, line in ipairs(obj.Skeletons) do line.Visible = false end end else HideESPObject(plr) end else HideESPObject(plr) end end end end) -------------------------------------------------------------------------------- -- 3. MISC TAB -------------------------------------------------------------------------------- local FlyEnabled = false local FlySpeed = 50 local FlyBodyVel, FlyBodyGyro, FlyConn CreateToggle(MiscPage, "Fly Mode", false, function(v) FlyEnabled = v local myHRP = Character and Character:FindFirstChild("HumanoidRootPart") if FlyEnabled and myHRP then FlyBodyVel = Instance.new("BodyVelocity") FlyBodyVel.MaxForce = Vector3.new(1, 1, 1) * 1e6 FlyBodyVel.Velocity = Vector3.zero FlyBodyVel.Parent = myHRP FlyBodyGyro = Instance.new("BodyGyro") FlyBodyGyro.MaxTorque = Vector3.new(1, 1, 1) * 1e6 FlyBodyGyro.CFrame = myHRP.CFrame FlyBodyGyro.Parent = myHRP FlyConn = RunService.RenderStepped:Connect(function() if not FlyEnabled or not myHRP then return end local move = Vector3.zero if UserInputService:IsKeyDown(Enum.KeyCode.W) then move = move + Camera.CFrame.LookVector end if UserInputService:IsKeyDown(Enum.KeyCode.S) then move = move - Camera.CFrame.LookVector end if UserInputService:IsKeyDown(Enum.KeyCode.A) then move = move - Camera.CFrame.RightVector end if UserInputService:IsKeyDown(Enum.KeyCode.D) then move = move + Camera.CFrame.RightVector end if UserInputService:IsKeyDown(Enum.KeyCode.Space) then move = move + Vector3.new(0, 1, 0) end if UserInputService:IsKeyDown(Enum.KeyCode.LeftShift) then move = move - Vector3.new(0, 1, 0) end FlyBodyVel.Velocity = move * FlySpeed FlyBodyGyro.CFrame = Camera.CFrame end) else if FlyConn then FlyConn:Disconnect() end if FlyBodyVel then FlyBodyVel:Destroy() end if FlyBodyGyro then FlyBodyGyro:Destroy() end end end) CreateSlider(MiscPage, "Fly Speed", 10, 300, 50, function(v) FlySpeed = v end) CreateSlider(MiscPage, "Walk Speed", 16, 300, 16, function(v) local hum = Character and Character:FindFirstChildOfClass("Humanoid") if hum then hum.WalkSpeed = v end end) CreateSlider(MiscPage, "Jump Power", 50, 350, 50, function(v) local hum = Character and Character:FindFirstChildOfClass("Humanoid") if hum then hum.UseJumpPower = true hum.JumpPower = v end end) CreateSlider(MiscPage, "Gravity Control", 0, 196, 196, function(v) workspace.Gravity = v end) local InfJumpConn CreateToggle(MiscPage, "Infinite Jump", false, function(v) if v then InfJumpConn = UserInputService.JumpRequest:Connect(function() local hum = Character and Character:FindFirstChildOfClass("Humanoid") if hum then hum:ChangeState(Enum.HumanoidStateType.Jumping) end end) else if InfJumpConn then InfJumpConn:Disconnect() InfJumpConn = nil end end end) local NoclipConn CreateToggle(MiscPage, "Noclip", false, function(v) if v then NoclipConn = RunService.Stepped:Connect(function() if Character then for _, p in ipairs(Character:GetChildren()) do if p:IsA("BasePart") then p.CanCollide = false end end end end) else if NoclipConn then NoclipConn:Disconnect() NoclipConn = nil end end end) -------------------------------------------------------------------------------- -- 4. SETTINGS TAB (THEMES & CUSTOMIZATION) -------------------------------------------------------------------------------- local function ApplyTheme(theme) CurrentTheme = theme MainFrame.BackgroundColor3 = theme.Bg Header.BackgroundColor3 = theme.Header HeaderTitle.TextColor3 = theme.Text SubTitle.TextColor3 = theme.SubText CloseBtn.TextColor3 = theme.SubText MinimizeBtn.TextColor3 = theme.SubText MainStroke.Color = theme.Stroke FOVStroke.Color = theme.Accent ReopenToast.BackgroundColor3 = theme.Header ReopenToast.TextColor3 = theme.Text ToastStroke.Color = theme.Stroke for _, page in pairs(Tabs) do for _, obj in ipairs(page:GetChildren()) do if obj:IsA("Frame") or obj:IsA("TextButton") then obj.BackgroundColor3 = theme.Card local stroke = obj:FindFirstChildOfClass("UIStroke") if stroke then stroke.Color = theme.Stroke end local lbl = obj:FindFirstChildOfClass("TextLabel") if lbl and lbl.Name ~= "ValLabel" then lbl.TextColor3 = theme.Text end end end end end CreateButton(SettingsPage, "Theme: Dark Classic", function() ApplyTheme(Themes.Dark) end) CreateButton(SettingsPage, "Theme: Midnight Blue", function() ApplyTheme(Themes.Midnight) end) CreateButton(SettingsPage, "Theme: Neon Violet", function() ApplyTheme(Themes.Violet) end) CreateButton(SettingsPage, "Theme: Emerald Green", function() ApplyTheme(Themes.Emerald) end) CreateSlider(SettingsPage, "UI Transparency", 0, 90, 15, function(v) MainFrame.BackgroundTransparency = v / 100 end) CreateButton(SettingsPage, "ESP Color: White", function() ESPColor = Color3.fromRGB(255, 255, 255) end) CreateButton(SettingsPage, "ESP Color: Cyan", function() ESPColor = Color3.fromRGB(0, 230, 255) end) CreateButton(SettingsPage, "ESP Color: Red", function() ESPColor = Color3.fromRGB(255, 60, 60) end) CreateButton(SettingsPage, "ESP Color: Yellow", function() ESPColor = Color3.fromRGB(255, 220, 40) end) -------------------------------------------------------------------------------- -- ANIMATED SHOWCASE INITIALIZATION & KEYBIND -------------------------------------------------------------------------------- task.delay(1.6, function() TweenService:Create(LoadingContainer, TweenInfo.new(0.4), {BackgroundTransparency = 1}):Play() TweenService:Create(Spinner, TweenInfo.new(0.4), {ImageTransparency = 1}):Play() TweenService:Create(LunarLogo, TweenInfo.new(0.4), {TextTransparency = 1}):Play() TweenService:Create(LoadingStroke, TweenInfo.new(0.4), {Transparency = 1}):Play() task.wait(0.4) if spinConn then spinConn:Disconnect() end LoadingContainer:Destroy() MainFrame.Visible = true MainFrame.BackgroundTransparency = 1 MainStroke.Transparency = 1 TweenService:Create(MainFrame, TweenInfo.new(0.35), {BackgroundTransparency = 0.15}):Play() TweenService:Create(MainStroke, TweenInfo.new(0.35), {Transparency = 0.88}):Play() end) UserInputService.InputBegan:Connect(function(input, gameProcessed) if not gameProcessed and input.KeyCode == Enum.KeyCode.RightControl then MainFrame.Visible = not MainFrame.Visible if not MainFrame.Visible then ShowReopenToast() else HideReopenToast() end end end)