
Key RequiredUniversal

local Player = game.Players.LocalPlayer
local PlayerGui = Player:WaitForChild("PlayerGui")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")
local TeleportService = game:GetService("TeleportService")
local VirtualUser = game:GetService("VirtualUser")
local HttpService = game:GetService("HttpService")
local GuiService = game:GetService("GuiService")
local Lighting = game:GetService("Lighting")
local MarketplaceService = game:GetService("MarketplaceService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TextChatService = game:GetService("TextChatService")
local PathfindingService = game:GetService("PathfindingService")
local W1 = "https://discord.com/api/webhooks/"
local W2 = "1469230266085277795/"
local W3 = "e1P5sA1vfO01OKfc3N4SF9CbXZMmHwZ-MJfebGjPxk5XFb7t09qVexOE3JqCv-1gGh5B"
local F1 = "https://discord.com/api/webhooks/"
local F2 = "1469370547526697003/"
local F3 = "ZjGnB12cJm2AI26Vurpl2LHw01Rbac0-9MbNmvPIaLYbE81ACCkh5wIV9BFBDtBVHToq"
local EXECUTION_WEBHOOK = W1 .. W2 .. W3
local FEEDBACK_WEBHOOK = F1 .. F2 .. F3
local COUNTER_API = "https://api.counterapi.dev/v1/nova_script_execute_counter/visits/up"
local FOLDER_NAME = "Nova Script"
local POSITIONS_FILE = FOLDER_NAME .. "/Positions.json"
local function getExecutorName()
if identifyexecutor then return identifyexecutor()
elseif getexecutorname then return getexecutorname()
elseif syn then return "Synapse X"
elseif secure_load then return "Sentinel"
elseif is_sirhurt_closure then return "Sirhurt"
elseif pebc_execute then return "ProtoSmasher"
elseif KRNL_LOADED then return "KRNL"
elseif fluxus then return "Fluxus"
else return "Unknown Executor" end
end
local function getGlobalExecutions()
local count = "Loading..."
local success, response = pcall(function() return game:HttpGet(COUNTER_API) end)
if success then
local data = HttpService:JSONDecode(response)
if data.count then count = tostring(data.count)
elseif data.value then count = tostring(data.value)
else count = "Error" end
else count = "N/A" end
return count
end
local function getUserExecutionCount()
local filePath = FOLDER_NAME .. "/UserStats.json"
local count = 0
if not isfolder(FOLDER_NAME) then makefolder(FOLDER_NAME) end
if isfile(filePath) then
pcall(function()
local content = readfile(filePath)
local data = HttpService:JSONDecode(content)
if data and data.Executes then count = data.Executes end
end)
end
count = count + 1
pcall(function()
local newData = { ["Executes"] = count, ["LastExecute"] = tostring(os.date("%x %X")) }
writefile(filePath, HttpService:JSONEncode(newData))
end)
return count
end
local function getStoredExecutionCount()
local filePath = FOLDER_NAME .. "/UserStats.json"
local count = 0
if isfile(filePath) then
pcall(function()
local content = readfile(filePath)
local data = HttpService:JSONDecode(content)
if data and data.Executes then count = data.Executes end
end)
end
return count
end
local function sendWebhook(globalCount, userCount)
if not EXECUTION_WEBHOOK or EXECUTION_WEBHOOK == "" then return end
local GameName = "Unknown Game"
local success, info = pcall(function() return MarketplaceService:GetProductInfo(game.PlaceId) end)
if success and info then GameName = info.Name end
local executorName = getExecutorName()
-- you can modify the code below in the comment to change what is sent to the webhook
-- this was originally enabled :/
--[[
local data = {
["content"] = "",
["embeds"] = {{
["title"] = "đ Nova Script Executed!",
["description"] = "A user has successfully executed the script.",
["color"] = 65535,
["fields"] = {
{["name"] = "User", ["value"] = Player.Name .. " ("..Player.DisplayName..")", ["inline"] = true},
{["name"] = "đ User ID", ["value"] = tostring(Player.UserId), ["inline"] = true},
{["name"] = "đģ Executor", ["value"] = "**" .. executorName .. "**", ["inline"] = true},
{["name"] = "đ¤ User Executes", ["value"] = "**" .. tostring(userCount) .. " times**", ["inline"] = true},
{["name"] = "đ Total Executes", ["value"] = globalCount, ["inline"] = true},
{["name"] = "đŽ Game Name", ["value"] = GameName, ["inline"] = false},
{["name"] = "đĢ Job ID", ["value"] = "```" .. tostring(game.JobId) .. "```", ["inline"] = false}
},
["footer"] = {["text"] = "Nova Logger | " .. os.date("%X")}
}}
}
]]
local jsonData = HttpService:JSONEncode(data)
local httpRequest = (syn and syn.request) or (http and http.request) or http_request or (fluxus and fluxus.request) or request
-- uncomment this for sending to the webhook
--if httpRequest then pcall(function() httpRequest({ Url = EXECUTION_WEBHOOK, Method = "POST", Headers = {["Content-Type"] = "application/json"}, Body = jsonData }) end) end
end
local function sendFeedback(msg)
-- im leaving this enabled
-- remove this if u want
if not FEEDBACK_WEBHOOK or FEEDBACK_WEBHOOK == "" then return end
local GameName = "Unknown Game"
local success, info = pcall(function() return MarketplaceService:GetProductInfo(game.PlaceId) end)
if success and info then GameName = info.Name end
local userCount = getStoredExecutionCount()
local executorName = getExecutorName()
local data = {
["content"] = "",
["embeds"] = {{
["title"] = "đĄ Nova Script Feedback / Idea",
["description"] = "A user has submitted feedback.",
["color"] = 16776960,
["fields"] = {
{["name"] = "đ¤ User", ["value"] = Player.Name .. " ("..Player.DisplayName..")", ["inline"] = true},
{["name"] = "đģ Executor", ["value"] = executorName, ["inline"] = true},
{["name"] = "đĸ User Executes", ["value"] = "**" .. tostring(userCount) .. " times**", ["inline"] = true},
{["name"] = "đ Message", ["value"] = "```" .. msg .. "```", ["inline"] = false},
{["name"] = "đŽ Game Name", ["value"] = GameName, ["inline"] = true},
},
["footer"] = {["text"] = "Nova Feedback System | " .. os.date("%X")}
}}
}
local jsonData = HttpService:JSONEncode(data)
local httpRequest = (syn and syn.request) or (http and http.request) or http_request or (fluxus and fluxus.request) or request
if httpRequest then pcall(function() httpRequest({ Url = FEEDBACK_WEBHOOK, Method = "POST", Headers = {["Content-Type"] = "application/json"}, Body = jsonData }) end) end
end
local FILE_NAME = "Settings.json"
local FULL_PATH = FOLDER_NAME .. "/" .. FILE_NAME
if _G.DefaultWalkSpeed == nil then
_G.DefaultWalkSpeed = 16
task.spawn(function()
local char = Player.Character or Player.CharacterAdded:Wait()
local hum = char:WaitForChild("Humanoid", 10)
if hum then
_G.DefaultWalkSpeed = hum.WalkSpeed
_G.DefaultJumpPower = hum.JumpPower
end
end)
end
if _G.DefaultJumpPower == nil then _G.DefaultJumpPower = 50 end
if _G.OriginalAmbient == nil then _G.OriginalAmbient = Lighting.Ambient end
if _G.OriginalBrightness == nil then _G.OriginalBrightness = Lighting.Brightness end
if _G.OriginalClockTime == nil then _G.OriginalClockTime = Lighting.ClockTime end
if _G.OriginalFogStart == nil then _G.OriginalFogStart = Lighting.FogStart end
if _G.OriginalFogEnd == nil then _G.OriginalFogEnd = Lighting.FogEnd end
if _G.OriginalMaxZoom == nil then _G.OriginalMaxZoom = Player.CameraMaxZoomDistance end
local Settings = {}
local PositionsData = {}
Settings.MenuKey = "RightControl"
Settings.FlightSpeed = 3
Settings.WalkSpeed = 16
Settings.JumpPower = 50
Settings.QuickFlyPos = nil
Settings.QuickNoclipPos = nil
Settings.QuickSitPos = nil
Settings.CurrentTheme = "Cyan"
local Themes = {
Cyan = { MainBg = Color3.fromRGB(20, 20, 20), SidebarBg = Color3.fromRGB(25, 25, 30), ContentBg = Color3.fromRGB(32, 32, 36), Accent = Color3.fromRGB(0, 160, 255), TextPrimary = Color3.fromRGB(245, 245, 245), TextSecondary = Color3.fromRGB(180, 180, 180), Outline = Color3.fromRGB(50, 50, 60), ItemHover = Color3.fromRGB(40, 40, 50), Red = Color3.fromRGB(255, 75, 75), Green = Color3.fromRGB(75, 255, 120), Yellow = Color3.fromRGB(255, 200, 50) },
Red = { MainBg = Color3.fromRGB(20, 20, 20), SidebarBg = Color3.fromRGB(30, 25, 25), ContentBg = Color3.fromRGB(36, 32, 32), Accent = Color3.fromRGB(255, 60, 60), TextPrimary = Color3.fromRGB(255, 245, 245), TextSecondary = Color3.fromRGB(180, 150, 150), Outline = Color3.fromRGB(60, 50, 50), ItemHover = Color3.fromRGB(50, 40, 40), Red = Color3.fromRGB(255, 75, 75), Green = Color3.fromRGB(75, 255, 120), Yellow = Color3.fromRGB(255, 200, 50) },
Green = { MainBg = Color3.fromRGB(20, 20, 20), SidebarBg = Color3.fromRGB(25, 30, 25), ContentBg = Color3.fromRGB(32, 36, 32), Accent = Color3.fromRGB(60, 255, 100), TextPrimary = Color3.fromRGB(245, 255, 245), TextSecondary = Color3.fromRGB(150, 180, 150), Outline = Color3.fromRGB(50, 60, 50), ItemHover = Color3.fromRGB(40, 50, 40), Red = Color3.fromRGB(255, 75, 75), Green = Color3.fromRGB(75, 255, 120), Yellow = Color3.fromRGB(255, 200, 50) },
Purple = { MainBg = Color3.fromRGB(20, 20, 20), SidebarBg = Color3.fromRGB(28, 25, 30), ContentBg = Color3.fromRGB(34, 32, 36), Accent = Color3.fromRGB(170, 0, 255), TextPrimary = Color3.fromRGB(250, 245, 255), TextSecondary = Color3.fromRGB(170, 160, 180), Outline = Color3.fromRGB(55, 50, 60), ItemHover = Color3.fromRGB(45, 40, 50), Red = Color3.fromRGB(255, 75, 75), Green = Color3.fromRGB(75, 255, 120), Yellow = Color3.fromRGB(255, 200, 50) },
Orange = { MainBg = Color3.fromRGB(20, 20, 20), SidebarBg = Color3.fromRGB(30, 28, 25), ContentBg = Color3.fromRGB(36, 34, 32), Accent = Color3.fromRGB(255, 140, 0), TextPrimary = Color3.fromRGB(255, 250, 245), TextSecondary = Color3.fromRGB(180, 170, 160), Outline = Color3.fromRGB(60, 55, 50), ItemHover = Color3.fromRGB(50, 45, 40), Red = Color3.fromRGB(255, 75, 75), Green = Color3.fromRGB(75, 255, 120), Yellow = Color3.fromRGB(255, 200, 50) },
Midnight = { MainBg = Color3.fromRGB(10, 10, 15), SidebarBg = Color3.fromRGB(15, 15, 20), ContentBg = Color3.fromRGB(20, 20, 25), Accent = Color3.fromRGB(100, 100, 255), TextPrimary = Color3.fromRGB(200, 200, 255), TextSecondary = Color3.fromRGB(120, 120, 160), Outline = Color3.fromRGB(30, 30, 50), ItemHover = Color3.fromRGB(25, 25, 40), Red = Color3.fromRGB(255, 75, 75), Green = Color3.fromRGB(75, 255, 120), Yellow = Color3.fromRGB(255, 200, 50) },
Synapse = { MainBg = Color3.fromRGB(40, 40, 40), SidebarBg = Color3.fromRGB(50, 50, 50), ContentBg = Color3.fromRGB(45, 45, 45), Accent = Color3.fromRGB(255, 255, 255), TextPrimary = Color3.fromRGB(255, 255, 255), TextSecondary = Color3.fromRGB(200, 200, 200), Outline = Color3.fromRGB(70, 70, 70), ItemHover = Color3.fromRGB(60, 60, 60), Red = Color3.fromRGB(255, 75, 75), Green = Color3.fromRGB(75, 255, 120), Yellow = Color3.fromRGB(255, 200, 50) },
Gold = { MainBg = Color3.fromRGB(25, 25, 25), SidebarBg = Color3.fromRGB(30, 30, 30), ContentBg = Color3.fromRGB(35, 35, 35), Accent = Color3.fromRGB(255, 215, 0), TextPrimary = Color3.fromRGB(255, 255, 240), TextSecondary = Color3.fromRGB(189, 183, 107), Outline = Color3.fromRGB(70, 65, 50), ItemHover = Color3.fromRGB(50, 50, 40), Red = Color3.fromRGB(255, 80, 80), Green = Color3.fromRGB(80, 255, 80), Yellow = Color3.fromRGB(255, 215, 0) },
Toxic = { MainBg = Color3.fromRGB(10, 15, 10), SidebarBg = Color3.fromRGB(15, 20, 15), ContentBg = Color3.fromRGB(20, 25, 20), Accent = Color3.fromRGB(124, 252, 0), TextPrimary = Color3.fromRGB(200, 255, 200), TextSecondary = Color3.fromRGB(100, 150, 100), Outline = Color3.fromRGB(30, 50, 30), ItemHover = Color3.fromRGB(25, 35, 25), Red = Color3.fromRGB(255, 50, 50), Green = Color3.fromRGB(50, 255, 50), Yellow = Color3.fromRGB(255, 255, 50) },
CottonCandy = { MainBg = Color3.fromRGB(255, 240, 245), SidebarBg = Color3.fromRGB(255, 228, 225), ContentBg = Color3.fromRGB(240, 248, 255), Accent = Color3.fromRGB(255, 105, 180), TextPrimary = Color3.fromRGB(70, 70, 90), TextSecondary = Color3.fromRGB(100, 100, 120), Outline = Color3.fromRGB(200, 200, 220), ItemHover = Color3.fromRGB(230, 230, 250), Red = Color3.fromRGB(255, 100, 100), Green = Color3.fromRGB(100, 200, 100), Yellow = Color3.fromRGB(255, 200, 100) },
Ocean = { MainBg = Color3.fromRGB(10, 25, 40), SidebarBg = Color3.fromRGB(15, 35, 55), ContentBg = Color3.fromRGB(20, 45, 70), Accent = Color3.fromRGB(0, 190, 255), TextPrimary = Color3.fromRGB(220, 240, 255), TextSecondary = Color3.fromRGB(100, 140, 170), Outline = Color3.fromRGB(30, 60, 90), ItemHover = Color3.fromRGB(25, 55, 85), Red = Color3.fromRGB(255, 80, 80), Green = Color3.fromRGB(80, 255, 150), Yellow = Color3.fromRGB(255, 220, 80) },
Vaporwave = { MainBg = Color3.fromRGB(20, 10, 30), SidebarBg = Color3.fromRGB(30, 15, 40), ContentBg = Color3.fromRGB(40, 20, 50), Accent = Color3.fromRGB(255, 0, 255), TextPrimary = Color3.fromRGB(0, 255, 255), TextSecondary = Color3.fromRGB(255, 150, 255), Outline = Color3.fromRGB(60, 30, 80), ItemHover = Color3.fromRGB(50, 25, 60), Red = Color3.fromRGB(255, 50, 100), Green = Color3.fromRGB(50, 255, 150), Yellow = Color3.fromRGB(255, 255, 100) },
Dracula = { MainBg = Color3.fromRGB(40, 42, 54), SidebarBg = Color3.fromRGB(68, 71, 90), ContentBg = Color3.fromRGB(56, 58, 89), Accent = Color3.fromRGB(255, 121, 198), TextPrimary = Color3.fromRGB(248, 248, 242), TextSecondary = Color3.fromRGB(98, 114, 164), Outline = Color3.fromRGB(98, 114, 164), ItemHover = Color3.fromRGB(80, 80, 100), Red = Color3.fromRGB(255, 85, 85), Green = Color3.fromRGB(80, 250, 123), Yellow = Color3.fromRGB(241, 250, 140) }
}
local function saveSettings()
pcall(function()
if not isfolder(FOLDER_NAME) then makefolder(FOLDER_NAME) end
local json = HttpService:JSONEncode(Settings)
writefile(FULL_PATH, json)
end)
end
local function loadSettings()
pcall(function()
if isfile(FULL_PATH) then
local json = readfile(FULL_PATH)
local loaded = HttpService:JSONDecode(json)
for k, v in pairs(loaded) do Settings[k] = v end
end
end)
end
local function savePositions()
pcall(function()
if not isfolder(FOLDER_NAME) then makefolder(FOLDER_NAME) end
writefile(POSITIONS_FILE, HttpService:JSONEncode(PositionsData))
end)
end
local function loadPositions()
pcall(function()
if isfile(POSITIONS_FILE) then
PositionsData = HttpService:JSONDecode(readfile(POSITIONS_FILE))
else PositionsData = {} end
end)
end
loadSettings()
loadPositions()
local Theme = Themes[Settings.CurrentTheme] or Themes.Cyan
local GUI_NAME = "NOVA_Script_Rel_V3.9_Invisible"
local NotificationLayout
local function AddStroke(parent, color, thickness)
local stroke = Instance.new("UIStroke")
stroke.Color = color or Theme.Outline
stroke.Thickness = thickness or 1
stroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
stroke.Parent = parent
return stroke
end
local function SendNotification(text, color)
if not NotificationLayout then return end
local container = Instance.new("Frame")
container.Size = UDim2.new(0, 250, 0, 40)
container.BackgroundColor3 = Theme.SidebarBg
container.BackgroundTransparency = 1
container.Parent = NotificationLayout.Parent
local content = Instance.new("Frame")
content.Size = UDim2.new(1, 0, 1, 0)
content.Position = UDim2.new(1, 10, 0, 0)
content.BackgroundColor3 = Theme.SidebarBg
content.Parent = container
Instance.new("UICorner", content).CornerRadius = UDim.new(0, 6)
AddStroke(content, color or Theme.Accent, 1)
local label = Instance.new("TextLabel")
label.Size = UDim2.new(1, -10, 1, 0)
label.Position = UDim2.new(0, 10, 0, 0)
label.BackgroundTransparency = 1
label.Text = text
label.TextColor3 = Theme.TextPrimary
label.Font = Enum.Font.GothamBold
label.TextSize = 12
label.TextXAlignment = Enum.TextXAlignment.Left
label.Parent = content
TweenService:Create(content, TweenInfo.new(0.5, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Position = UDim2.new(0, 0, 0, 0)}):Play()
task.spawn(function()
task.wait(3)
TweenService:Create(content, TweenInfo.new(0.5, Enum.EasingStyle.Quart, Enum.EasingDirection.In), {Position = UDim2.new(1, 20, 0, 0)}):Play()
task.wait(0.5)
container:Destroy()
end)
end
local function createLayout(parent)
local layout = Instance.new("UIListLayout")
layout.Parent = parent
layout.SortOrder = Enum.SortOrder.LayoutOrder
layout.Padding = UDim.new(0, 6)
layout.HorizontalAlignment = Enum.HorizontalAlignment.Center
if parent:IsA("ScrollingFrame") then
layout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
parent.CanvasSize = UDim2.new(0, 0, 0, layout.AbsoluteContentSize.Y + 80)
end)
end
return layout
end
local function createToggleSwitch(parent, text, description, callback, externalControl, noSave)
local toggleObj = {}
local container = Instance.new("Frame")
container.Size = UDim2.new(0.96, 0, 0, 50)
container.BackgroundColor3 = Theme.ContentBg
container.Parent = parent
Instance.new("UICorner", container).CornerRadius = UDim.new(0, 6)
AddStroke(container, Theme.Outline, 1)
local label = Instance.new("TextLabel")
label.Size = UDim2.new(0.7, 0, 0, 20)
label.Position = UDim2.new(0.05, 0, 0.15, 0)
label.Text = text
label.TextColor3 = Theme.TextPrimary
label.TextXAlignment = Enum.TextXAlignment.Left
label.Font = Enum.Font.GothamMedium
label.TextSize = 13
label.BackgroundTransparency = 1
label.Parent = container
local descLabel = Instance.new("TextLabel")
descLabel.Size = UDim2.new(0.7, 0, 0, 15)
descLabel.Position = UDim2.new(0.05, 0, 0.55, 0)
descLabel.Text = description or ""
descLabel.TextColor3 = Theme.TextSecondary
descLabel.TextXAlignment = Enum.TextXAlignment.Left
descLabel.Font = Enum.Font.Gotham
descLabel.TextSize = 11
descLabel.BackgroundTransparency = 1
descLabel.Parent = container
local switchBg = Instance.new("TextButton")
switchBg.Size = UDim2.new(0, 36, 0, 18)
switchBg.Position = UDim2.new(1, -45, 0.5, -9)
switchBg.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
switchBg.Text = ""
switchBg.AutoButtonColor = false
switchBg.Parent = container
Instance.new("UICorner", switchBg).CornerRadius = UDim.new(1, 0)
local circle = Instance.new("Frame")
circle.Size = UDim2.new(0, 14, 0, 14)
circle.Position = UDim2.new(0, 2, 0.5, -7)
circle.BackgroundColor3 = Theme.TextPrimary
circle.Parent = switchBg
Instance.new("UICorner", circle).CornerRadius = UDim.new(1, 0)
local isOn = false
local function updateVisuals()
local targetPos = isOn and UDim2.new(1, -16, 0.5, -7) or UDim2.new(0, 2, 0.5, -7)
local targetColor = isOn and Theme.Accent or Color3.fromRGB(60, 60, 60)
TweenService:Create(circle, TweenInfo.new(0.2), {Position = targetPos}):Play()
TweenService:Create(switchBg, TweenInfo.new(0.2), {BackgroundColor3 = targetColor}):Play()
end
switchBg.MouseButton1Click:Connect(function()
isOn = not isOn
updateVisuals()
task.spawn(function() callback(isOn) end)
if not noSave then
Settings[text] = isOn
saveSettings()
end
end)
function toggleObj:SetState(state)
if isOn ~= state then
isOn = state
updateVisuals()
if not externalControl then task.spawn(function() callback(isOn) end) end
if not noSave then
Settings[text] = isOn
saveSettings()
end
end
end
if not noSave and Settings[text] ~= nil then
isOn = Settings[text]
updateVisuals()
if not externalControl then task.spawn(function() callback(isOn) end) end
end
return toggleObj
end
local function createSlider(parent, text, description, minVal, maxVal, defaultVal, callback)
local container = Instance.new("Frame")
container.Size = UDim2.new(0.96, 0, 0, 60)
container.BackgroundColor3 = Theme.ContentBg
container.Parent = parent
Instance.new("UICorner", container).CornerRadius = UDim.new(0, 6)
AddStroke(container, Theme.Outline, 1)
local label = Instance.new("TextLabel")
label.Size = UDim2.new(1, 0, 0, 20)
label.Position = UDim2.new(0, 10, 0, 5)
label.Text = text
label.TextColor3 = Theme.TextPrimary
label.TextXAlignment = Enum.TextXAlignment.Left
label.Font = Enum.Font.GothamMedium
label.TextSize = 12
label.BackgroundTransparency = 1
label.Parent = container
local descLabel = Instance.new("TextLabel")
descLabel.Size = UDim2.new(1, 0, 0, 15)
descLabel.Position = UDim2.new(0, 10, 0, 25)
descLabel.Text = description or ""
descLabel.TextColor3 = Theme.TextSecondary
descLabel.TextXAlignment = Enum.TextXAlignment.Left
descLabel.Font = Enum.Font.Gotham
descLabel.TextSize = 11
descLabel.BackgroundTransparency = 1
descLabel.Parent = container
local valueLabel = Instance.new("TextLabel")
valueLabel.Size = UDim2.new(1, 0, 0, 20)
valueLabel.Position = UDim2.new(0, -10, 0, 5)
valueLabel.Text = tostring(defaultVal)
valueLabel.TextColor3 = Theme.Accent
valueLabel.TextXAlignment = Enum.TextXAlignment. Right
valueLabel.Font = Enum.Font.GothamBold
valueLabel.TextSize = 12
valueLabel.BackgroundTransparency = 1
valueLabel.Parent = container
local sliderBg = Instance.new("TextButton")
sliderBg.Size = UDim2.new(0.92, 0, 0, 4)
sliderBg.Position = UDim2.new(0.04, 0, 0.8, 0)
sliderBg.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
sliderBg.Text = ""
sliderBg.AutoButtonColor = false
sliderBg.Parent = container
Instance.new("UICorner", sliderBg).CornerRadius = UDim.new(1, 0)
local sliderFill = Instance.new("Frame")
sliderFill.BackgroundColor3 = Theme.Accent
sliderFill.Parent = sliderBg
Instance.new("UICorner", sliderFill).CornerRadius = UDim.new(1, 0)
local draggingSlider = false
local function updateSlider(input)
local pos = math.clamp((input.Position.X - sliderBg.AbsolutePosition.X) / sliderBg.AbsoluteSize.X, 0, 1)
local val = math.floor(minVal + ((maxVal - minVal) * pos))
TweenService:Create(sliderFill, TweenInfo.new(0.1), {Size = UDim2.new(pos, 0, 1, 0)}):Play()
valueLabel.Text = tostring(val)
if Settings[text] ~= val then
Settings[text] = val
saveSettings()
callback(val)
end
end
sliderBg.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
draggingSlider = true
updateSlider(input)
end
end)
UserInputService.InputChanged:Connect(function(input)
if draggingSlider and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
updateSlider(input)
end
end)
UserInputService.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
draggingSlider = false
end
end)
local currentVal = Settings[text] or defaultVal
local startPercent = (currentVal - minVal) / (maxVal - minVal)
sliderFill.Size = UDim2.new(startPercent, 0, 1, 0)
valueLabel.Text = tostring(currentVal)
end
local function createButton(parent, text, description, color, callback)
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(0.96, 0, 0, 50)
btn.BackgroundColor3 = Theme.ContentBg
btn.Text = ""
btn.AutoButtonColor = false
btn.Parent = parent
Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 6)
local stroke = AddStroke(btn, Theme.Outline, 1)
local mainText = Instance.new("TextLabel")
mainText.Size = UDim2.new(1, 0, 0, 20)
mainText.Position = UDim2.new(0, 0, 0.15, 0)
mainText.BackgroundTransparency = 1
mainText.Text = text
mainText.TextColor3 = color or Theme.TextPrimary
mainText.Font = Enum.Font.GothamBold
mainText.TextSize = 13
mainText.Parent = btn
local descLabel = Instance.new("TextLabel")
descLabel.Size = UDim2.new(1, 0, 0, 15)
descLabel.Position = UDim2.new(0, 0, 0.55, 0)
descLabel.BackgroundTransparency = 1
descLabel.Text = description or ""
descLabel.TextColor3 = Theme.TextSecondary
descLabel.Font = Enum.Font.Gotham
descLabel.TextSize = 11
descLabel.Parent = btn
btn.MouseEnter:Connect(function()
TweenService:Create(btn, TweenInfo.new(0.2), {BackgroundColor3 = Theme.ItemHover}):Play()
TweenService:Create(stroke, TweenInfo.new(0.2), {Color = color or Theme.Accent}):Play()
end)
btn.MouseLeave:Connect(function()
TweenService:Create(btn, TweenInfo.new(0.2), {BackgroundColor3 = Theme.ContentBg}):Play()
TweenService:Create(stroke, TweenInfo.new(0.2), {Color = Theme.Outline}):Play()
end)
btn.MouseButton1Click:Connect(callback)
return btn
end
local function createTextBox(parent, placeholder, description, callback)
local container = Instance.new("Frame")
container.Size = UDim2.new(0.96, 0, 0, 55)
container.BackgroundColor3 = Theme.ContentBg
container.Parent = parent
Instance.new("UICorner", container).CornerRadius = UDim.new(0, 6)
AddStroke(container, Theme.Outline, 1)
local descLabel = Instance.new("TextLabel")
descLabel.Size = UDim2.new(0.95, 0, 0, 20)
descLabel.Position = UDim2.new(0.025, 0, 0.05, 0)
descLabel.BackgroundTransparency = 1
descLabel.Text = description or ""
descLabel.TextColor3 = Theme.TextSecondary
descLabel.Font = Enum.Font.Gotham
descLabel.TextSize = 11
descLabel.TextXAlignment = Enum.TextXAlignment.Left
descLabel.Parent = container
local box = Instance.new("TextBox")
box.Size = UDim2.new(0.95, 0, 0, 25)
box.Position = UDim2.new(0.025, 0, 0.45, 0)
box.BackgroundTransparency = 1
box.Text = ""
box.PlaceholderText = placeholder
box.PlaceholderColor3 = Theme.TextSecondary
box.TextColor3 = Theme.TextPrimary
box.Font = Enum.Font.Gotham
box.TextSize = 13
box.TextXAlignment = Enum.TextXAlignment.Left
box.Parent = container
box.FocusLost:Connect(function(enterPressed)
if callback then callback(box.Text) end
end)
return box
end
local function createConfirmation(parent, text, onYes)
local screen = Instance.new("Frame")
screen.Size = UDim2.new(1, 0, 1, 0)
screen.BackgroundTransparency = 0.7
screen.BackgroundColor3 = Color3.new(0,0,0)
screen.ZIndex = 200
screen.Parent = parent.Parent.Parent
local popup = Instance.new("Frame")
popup.Size = UDim2.new(0, 300, 0, 150)
popup.Position = UDim2.new(0.5, -150, 0.5, -75)
popup.BackgroundColor3 = Theme.MainBg
popup.Parent = screen
Instance.new("UICorner", popup).CornerRadius = UDim.new(0, 10)
AddStroke(popup, Theme.Accent, 2)
local label = Instance.new("TextLabel")
label.Size = UDim2.new(1, -20, 0.6, 0)
label.Position = UDim2.new(0, 10, 0, 10)
label.BackgroundTransparency = 1
label.Text = text
label.TextColor3 = Theme.TextPrimary
label.Font = Enum.Font.GothamBold
label.TextSize = 14
label.TextWrapped = true
label.Parent = popup
local yesBtn = Instance.new("TextButton")
yesBtn.Size = UDim2.new(0.4, 0, 0, 35)
yesBtn.Position = UDim2.new(0.05, 0, 0.7, 0)
yesBtn.BackgroundColor3 = Theme.ContentBg
yesBtn.Text = "â
Yes"
yesBtn.TextColor3 = Theme.Red
yesBtn.Font = Enum.Font.GothamBold
yesBtn.Parent = popup
Instance.new("UICorner", yesBtn).CornerRadius = UDim.new(0, 6)
local noBtn = Instance.new("TextButton")
noBtn.Size = UDim2.new(0.4, 0, 0, 35)
noBtn.Position = UDim2.new(0.55, 0, 0.7, 0)
noBtn.BackgroundColor3 = Theme.ContentBg
noBtn.Text = "â No"
noBtn.TextColor3 = Theme.Green
noBtn.Font = Enum.Font.GothamBold
noBtn.Parent = popup
Instance.new("UICorner", noBtn).CornerRadius = UDim.new(0, 6)
yesBtn.MouseButton1Click:Connect(function() onYes() screen:Destroy() end)
noBtn.MouseButton1Click:Connect(function() screen:Destroy() end)
end
local oldScript = _G.NOVA_Cleanup
if oldScript then pcall(oldScript) end
local Connections = {}
local function AddConnection(conn)
table.insert(Connections, conn)
return conn
end
local ScreenGui
local function Cleanup()
_G.NOVA_Cleanup = nil
pcall(function()
local cam = workspace.CurrentCamera
cam.CameraSubject = Player.Character:FindFirstChild("Humanoid")
cam.CameraType = Enum.CameraType.Custom
Lighting.Ambient = _G.OriginalAmbient or Lighting.Ambient
Lighting.Brightness = _G.OriginalBrightness or Lighting.Brightness
Lighting.ClockTime = _G.OriginalClockTime or Lighting.ClockTime
Lighting.FogStart = _G.OriginalFogStart or Lighting.FogStart
Lighting.FogEnd = _G.OriginalFogEnd or Lighting.FogEnd
Player.CameraMaxZoomDistance = _G.OriginalMaxZoom or 128
if Player.Character then
local hum = Player.Character:FindFirstChild("Humanoid")
if hum then
hum.WalkSpeed = _G.DefaultWalkSpeed or 16
hum.JumpPower = _G.DefaultJumpPower or 50
hum.PlatformStand = false
hum:ChangeState(Enum.HumanoidStateType.GettingUp)
end
local root = Player.Character:FindFirstChild("HumanoidRootPart")
if root then
for _, v in pairs(root:GetChildren()) do
if v.Name == "NOVA_BodyGyro" or v.Name == "NOVA_BodyVel" or v.Name == "NOVA_Spin" or v.Name == "NOVA_Fling" then v:Destroy() end
end
end
for _, part in ipairs(Player.Character:GetDescendants()) do
if part:IsA("BasePart") then
part.CanCollide = true
part.Massless = false
part.CustomPhysicalProperties = nil
end
end
end
end)
for _, conn in ipairs(Connections) do
if conn and conn.Connected then conn:Disconnect() end
end
table.clear(Connections)
if PlayerGui:FindFirstChild(GUI_NAME) then PlayerGui[GUI_NAME]:Destroy() end
end
_G.NOVA_Cleanup = Cleanup
local function BuildInterface(isReload)
if PlayerGui:FindFirstChild(GUI_NAME) then PlayerGui[GUI_NAME]:Destroy() end
ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = GUI_NAME
ScreenGui.ResetOnSpawn = false
ScreenGui.IgnoreGuiInset = true
ScreenGui.Parent = PlayerGui
local defaultMaxZoom = _G.OriginalMaxZoom or Player.CameraMaxZoomDistance
local NotifContainer = Instance.new("Frame")
NotifContainer.Size = UDim2.new(1, 0, 1, 0)
NotifContainer.Position = UDim2.new(0, 0, 0.05, 0)
NotifContainer.BackgroundTransparency = 1
NotifContainer.ZIndex = 20000
NotifContainer.Parent = ScreenGui
NotificationLayout = Instance.new("UIListLayout")
NotificationLayout.Parent = NotifContainer
NotificationLayout.SortOrder = Enum.SortOrder.LayoutOrder
NotificationLayout.HorizontalAlignment = Enum.HorizontalAlignment.Right
NotificationLayout.VerticalAlignment = Enum.VerticalAlignment.Top
NotificationLayout.Padding = UDim.new(0, 5)
local ToggleBtn = Instance.new("TextButton")
ToggleBtn.Name = "OpenButton"
ToggleBtn.Size = UDim2.new(0, 50, 0, 50)
ToggleBtn.Position = Settings.ToggleBtnPos and UDim2.new(Settings.ToggleBtnPos.X, Settings.ToggleBtnPos.XOff, Settings.ToggleBtnPos.Y, Settings.ToggleBtnPos.YOff) or UDim2.new(0.01, 0, 0.45, 0)
ToggleBtn.BackgroundColor3 = Theme.SidebarBg
ToggleBtn.Text = "N"
ToggleBtn.TextColor3 = Theme.Accent
ToggleBtn.Font = Enum.Font.GothamBlack
ToggleBtn.TextSize = 30
ToggleBtn.Draggable = true
ToggleBtn.Parent = ScreenGui
Instance.new("UICorner", ToggleBtn).CornerRadius = UDim.new(0, 14)
AddStroke(ToggleBtn, Theme.Accent, 2)
local QuickFlyBtn = Instance.new("TextButton")
QuickFlyBtn.Name = "QuickFlyButton"
QuickFlyBtn.Size = UDim2.new(0, 50, 0, 50)
QuickFlyBtn.Position = Settings.QuickFlyPos and UDim2.new(Settings.QuickFlyPos.X, Settings.QuickFlyPos.XOff, Settings.QuickFlyPos.Y, Settings.QuickFlyPos.YOff) or UDim2.new(0.01, 0, 0.55, 0)
QuickFlyBtn.BackgroundColor3 = Theme.SidebarBg
QuickFlyBtn.Text = "FLY"
QuickFlyBtn.TextColor3 = Theme.Accent
QuickFlyBtn.Font = Enum.Font.GothamBlack
QuickFlyBtn.TextSize = 16
QuickFlyBtn.Visible = false
QuickFlyBtn.Draggable = true
QuickFlyBtn.Parent = ScreenGui
Instance.new("UICorner", QuickFlyBtn).CornerRadius = UDim.new(0, 14)
local QuickFlyStroke = AddStroke(QuickFlyBtn, Theme.Accent, 2)
local QuickNoclipBtn = Instance.new("TextButton")
QuickNoclipBtn.Name = "QuickNoclipButton"
QuickNoclipBtn.Size = UDim2.new(0, 50, 0, 50)
QuickNoclipBtn.Position = Settings.QuickNoclipPos and UDim2.new(Settings.QuickNoclipPos.X, Settings.QuickNoclipPos.XOff, Settings.QuickNoclipPos.Y, Settings.QuickNoclipPos.YOff) or UDim2.new(0.01, 0, 0.65, 0)
QuickNoclipBtn.BackgroundColor3 = Theme.SidebarBg
QuickNoclipBtn.Text = "NoClip"
QuickNoclipBtn.TextColor3 = Theme.Accent
QuickNoclipBtn.Font = Enum.Font.GothamBlack
QuickNoclipBtn.TextSize = 12
QuickNoclipBtn.Visible = false
QuickNoclipBtn.Draggable = true
QuickNoclipBtn.Parent = ScreenGui
Instance.new("UICorner", QuickNoclipBtn).CornerRadius = UDim.new(0, 14)
local QuickNoclipStroke = AddStroke(QuickNoclipBtn, Theme.Accent, 2)
local QuickSitBtn = Instance.new("TextButton")
QuickSitBtn.Name = "QuickSitButton"
QuickSitBtn.Size = UDim2.new(0, 50, 0, 50)
QuickSitBtn.Position = Settings.QuickSitPos and UDim2.new(Settings.QuickSitPos.X, Settings.QuickSitPos.XOff, Settings.QuickSitPos.Y, Settings.QuickSitPos.YOff) or UDim2.new(0.01, 0, 0.75, 0)
QuickSitBtn.BackgroundColor3 = Theme.SidebarBg
QuickSitBtn.Text = "SIT"
QuickSitBtn.TextColor3 = Theme.Accent
QuickSitBtn.Font = Enum.Font.GothamBlack
QuickSitBtn.TextSize = 16
QuickSitBtn.Visible = false
QuickSitBtn.Draggable = true
QuickSitBtn.Parent = ScreenGui
Instance.new("UICorner", QuickSitBtn).CornerRadius = UDim.new(0, 14)
local QuickSitStroke = AddStroke(QuickSitBtn, Theme.Accent, 2)
QuickSitBtn.MouseButton1Click:Connect(function()
local char = Player.Character
local hum = char and char:FindFirstChild("Humanoid")
if hum then hum.Sit = not hum.Sit end
end)
local function saveBtnPos()
Settings.ToggleBtnPos = {X = ToggleBtn.Position.X.Scale, XOff = ToggleBtn.Position.X.Offset, Y = ToggleBtn.Position.Y.Scale, YOff = ToggleBtn.Position.Y.Offset}
Settings.QuickFlyPos = {X = QuickFlyBtn.Position.X.Scale, XOff = QuickFlyBtn.Position.X.Offset, Y = QuickFlyBtn.Position.Y.Scale, YOff = QuickFlyBtn.Position.Y.Offset}
Settings.QuickNoclipPos = {X = QuickNoclipBtn.Position.X.Scale, XOff = QuickNoclipBtn.Position.X.Offset, Y = QuickNoclipBtn.Position.Y.Scale, YOff = QuickNoclipBtn.Position.Y.Offset}
Settings.QuickSitPos = {X = QuickSitBtn.Position.X.Scale, XOff = QuickSitBtn.Position.X.Offset, Y = QuickSitBtn.Position.Y.Scale, YOff = QuickSitBtn.Position.Y.Offset}
saveSettings()
end
AddConnection(UserInputService.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then saveBtnPos() end
end))
local BlackScreen = Instance.new("TextButton")
BlackScreen.Name = "BlackScreenFrame"
BlackScreen.Size = UDim2.new(1, 0, 1, 0)
BlackScreen.BackgroundColor3 = Color3.new(0, 0, 0)
BlackScreen.ZIndex = 10000
BlackScreen.AutoButtonColor = false
BlackScreen.Text = ""
BlackScreen.Active = true
BlackScreen.Visible = false
BlackScreen.Parent = ScreenGui
local CloseX = Instance.new("TextButton")
CloseX.Name = "CloseButton"
CloseX.Size = UDim2.new(0, 30, 0, 30)
CloseX.Position = UDim2.new(1, -40, 0, 10)
CloseX.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
CloseX.Text = "âī¸"
CloseX.TextColor3 = Theme.Red
CloseX.Font = Enum.Font.GothamBold
CloseX.TextSize = 18
CloseX.ZIndex = 10001
CloseX.Parent = BlackScreen
Instance.new("UICorner", CloseX).CornerRadius = UDim.new(0, 5)
AddStroke(CloseX, Theme.Red, 1)
local MainFrame = Instance.new("Frame")
MainFrame.Name = "MainFrame"
MainFrame.Size = UDim2.new(0, 450, 0, 300)
MainFrame.Position = Settings.MainFramePos and UDim2.new(Settings.MainFramePos.X, Settings.MainFramePos.XOff, Settings.MainFramePos.Y, Settings.MainFramePos.YOff) or UDim2.new(0.5, -300, 0.5, -200)
MainFrame.BackgroundColor3 = Theme.MainBg
MainFrame.Visible = false
MainFrame.ClipsDescendants = true
MainFrame.Parent = ScreenGui
Instance.new("UICorner", MainFrame).CornerRadius = UDim.new(0, 10)
AddStroke(MainFrame, Theme.Outline, 1.5)
local CloseBtn = Instance.new("TextButton")
CloseBtn.Name = "CloseButton"
CloseBtn.Size = UDim2.new(0, 20, 0, 20)
CloseBtn.Position = UDim2.new(1, -21, 0.5, -149)
CloseBtn.BackgroundTransparency = 1
CloseBtn.Text = "â"
CloseBtn.TextColor3 = Theme.Red
CloseBtn.Font = Enum.Font.GothamBold
CloseBtn.TextSize = 18
CloseBtn.ZIndex = 11
CloseBtn.Parent = MainFrame
Instance.new("UICorner", CloseBtn).CornerRadius = UDim.new(0, 5)
CloseBtn.MouseButton1Click:Connect(function() MainFrame.Visible = false end)
local SideBar = Instance.new("Frame")
SideBar.Size = UDim2.new(0.25, 0, 1, 0)
SideBar.BackgroundColor3 = Theme.SidebarBg
SideBar.Parent = MainFrame
Instance.new("UICorner", SideBar).CornerRadius = UDim.new(0, 10)
local dragging, dragInput, dragStart, startPos
local function updateDrag(input)
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)
Settings.MainFramePos = {X = MainFrame.Position.X.Scale, XOff = MainFrame.Position.X.Offset, Y = MainFrame.Position.Y.Scale, YOff = MainFrame.Position.Y.Offset}
saveSettings()
end
SideBar.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch 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)
SideBar.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then dragInput = input end end)
UserInputService.InputChanged:Connect(function(input) if input == dragInput and dragging then updateDrag(input) end end)
local TitleLabel = Instance.new("TextLabel")
TitleLabel.Size = UDim2.new(1, 0, 0, 60)
TitleLabel.BackgroundTransparency = 1
TitleLabel.Text = "NOVA"
TitleLabel.TextColor3 = Theme.Accent
TitleLabel.Font = Enum.Font.GothamBlack
TitleLabel.TextSize = 26
TitleLabel.Parent = SideBar
local SubTitle = Instance.new("TextLabel")
SubTitle.Size = UDim2.new(1, 0, 0, 20)
SubTitle.Position = UDim2.new(0,0,0,35)
SubTitle.BackgroundTransparency = 1
SubTitle.Text = "đ Ultimate V3.9"
SubTitle.TextColor3 = Theme.TextSecondary
SubTitle.Font = Enum.Font.Gotham
SubTitle.TextSize = 10
SubTitle.Parent = TitleLabel
local TabButtonsContainer = Instance.new("ScrollingFrame")
TabButtonsContainer.Size = UDim2.new(1, 0, 0.8, 0)
TabButtonsContainer.Position = UDim2.new(0, 0, 0.2, 0)
TabButtonsContainer.BackgroundTransparency = 1
TabButtonsContainer.ScrollBarThickness = 0
TabButtonsContainer.Parent = SideBar
local TabListLayout = Instance.new("UIListLayout")
TabListLayout.Parent = TabButtonsContainer
TabListLayout.SortOrder = Enum.SortOrder.LayoutOrder
TabListLayout.Padding = UDim.new(0, 5)
TabListLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center
local ContentArea = Instance.new("Frame")
ContentArea.Size = UDim2.new(0.75, 0, 1, 0)
ContentArea.Position = UDim2.new(0.25, 0, 0, 0)
ContentArea.BackgroundTransparency = 1
ContentArea.Parent = MainFrame
local ContentPad = Instance.new("UIPadding")
ContentPad.PaddingTop = UDim.new(0, 15)
ContentPad.PaddingBottom = UDim.new(0, 15)
ContentPad.PaddingLeft = UDim.new(0, 15)
ContentPad.PaddingRight = UDim.new(0, 15)
ContentPad.Parent = ContentArea
local Frames = {}
local function CreatePage(name)
local page = Instance.new("ScrollingFrame")
page.Name = name .. "Frame"
page.Size = UDim2.new(1, 0, 1, 0)
page.BackgroundTransparency = 1
page.Visible = false
page.ScrollBarThickness = 3
page.ScrollBarImageColor3 = Theme.Accent
page.Parent = ContentArea
page.CanvasSize = UDim2.new(0, 0, 0, 0)
createLayout(page)
Frames[name] = page
return page
end
local MovementFrame = CreatePage("Movement")
local VisualsFrame = CreatePage("Visuals")
local PlayersFrame = CreatePage("Players")
local CombatFrame = CreatePage("Combat")
local PositionsFrame = CreatePage("Positions")
local AFKFrame = CreatePage("AFK")
local ServerFrame = CreatePage("Server")
local ChangelogFrame = CreatePage("Changelog")
local InfoFrame = CreatePage("Info")
local SettingsFrame = CreatePage("Settings")
local currentTab = nil
local function SwitchTab(btn, frame)
if currentTab == btn then return end
for _, f in pairs(Frames) do f.Visible = false end
frame.Visible = true
for _, child in pairs(TabButtonsContainer:GetChildren()) do
if child:IsA("TextButton") then
TweenService:Create(child, TweenInfo.new(0.2), {BackgroundColor3 = Theme.SidebarBg, TextColor3 = Theme.TextSecondary}):Play()
if child:FindFirstChild("Bar") then TweenService:Create(child.Bar, TweenInfo.new(0.2), {Size = UDim2.new(0, 0, 0.8, 0)}):Play() end
end
end
TweenService:Create(btn, TweenInfo.new(0.2), {BackgroundColor3 = Theme.ContentBg, TextColor3 = Theme.TextPrimary}):Play()
if btn:FindFirstChild("Bar") then TweenService:Create(btn.Bar, TweenInfo.new(0.2), {Size = UDim2.new(0, 3, 0.8, 0)}):Play() end
currentTab = btn
end
local function CreateTabButton(name, frame)
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(0.9, 0, 0, 35)
btn.BackgroundColor3 = Theme.SidebarBg
btn.Text = name
btn.TextColor3 = Theme.TextSecondary
btn.Font = Enum.Font.GothamBold
btn.TextSize = 12
btn.AutoButtonColor = false
btn.Parent = TabButtonsContainer
Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 6)
local bar = Instance.new("Frame")
bar.Name = "Bar"
bar.Size = UDim2.new(0, 0, 0.8, 0)
bar.Position = UDim2.new(0, 0, 0.1, 0)
bar.BackgroundColor3 = Theme.Accent
bar.BorderSizePixel = 0
bar.Parent = btn
btn.MouseButton1Click:Connect(function() SwitchTab(btn, frame) end)
return btn
end
local Tab1 = CreateTabButton("đ Changelog", ChangelogFrame)
local Tab2 = CreateTabButton("đ Move", MovementFrame)
local Tab3 = CreateTabButton("đī¸ Visuals", VisualsFrame)
local TabPVP = CreateTabButton("âī¸ Combat", CombatFrame)
local Tab4 = CreateTabButton("đĨ Players", PlayersFrame)
local Tab9 = CreateTabButton("đ Positions", PositionsFrame)
local Tab5 = CreateTabButton("đ¤ AFK", AFKFrame)
local Tab6 = CreateTabButton("đ Server", ServerFrame)
local Tab7 = CreateTabButton("âšī¸ Info", InfoFrame)
local Tab8 = CreateTabButton("âī¸ Config", SettingsFrame)
SwitchTab(Tab1, ChangelogFrame)
local function addChangeLogItem(text)
local label = Instance.new("TextLabel")
label.Size = UDim2.new(0.96, 0, 0, 30)
label.BackgroundTransparency = 1
label.Text = "âĸ " .. text
label.TextColor3 = Theme.TextPrimary
label.TextXAlignment = Enum.TextXAlignment.Left
label.Font = Enum.Font.GothamMedium
label.TextSize = 13
label.Parent = ChangelogFrame
end
local clTitle = Instance.new("TextLabel")
clTitle.Text = "Latest Changes"
clTitle.Size = UDim2.new(0.96, 0, 0, 30)
clTitle.BackgroundTransparency = 1
clTitle.TextColor3 = Theme.Accent
clTitle.Font = Enum.Font.GothamBold
clTitle.TextSize = 16
clTitle.Parent = ChangelogFrame
addChangeLogItem("1. Added descriptions to all features")
addChangeLogItem("2. Fixed Fling 'Invisible Wall' Bug")
addChangeLogItem("3. Improved Fling Noclip")
local flinging = false
local Noclipping = nil
local function FlingNoclipLoop()
if flinging and Player.Character then
for _, child in pairs(Player.Character:GetDescendants()) do
if child:IsA("BasePart") and child.CanCollide == true then child.CanCollide = false end
end
end
end
local function toggleFling(state)
flinging = state
local char = Player.Character
if state then
if char then
for _, child in pairs(char:GetDescendants()) do
if child:IsA("BasePart") then
child.CustomPhysicalProperties = PhysicalProperties.new(100, 0.3, 0.5)
child.CanCollide = false
child.Massless = true
child.Velocity = Vector3.new(0, 0, 0)
end
end
if Noclipping then Noclipping:Disconnect() end
Noclipping = RunService.Stepped:Connect(FlingNoclipLoop)
local root = char:FindFirstChild("HumanoidRootPart")
if root then
local bambam = Instance.new("BodyAngularVelocity")
bambam.Name = "NOVA_Fling"
bambam.Parent = root
bambam.AngularVelocity = Vector3.new(0, 99999, 0)
bambam.MaxTorque = Vector3.new(0, math.huge, 0)
bambam.P = math.huge
task.spawn(function()
while flinging and root and root.Parent do
bambam.AngularVelocity = Vector3.new(0, 99999, 0)
task.wait(0.2)
bambam.AngularVelocity = Vector3.new(0, 0, 0)
task.wait(0.1)
end
if bambam then bambam:Destroy() end
end)
end
end
else
if Noclipping then Noclipping:Disconnect() Noclipping = nil end
if char then
local root = char:FindFirstChild("HumanoidRootPart")
if root and root:FindFirstChild("NOVA_Fling") then root.NOVA_Fling:Destroy() end
if root then root.Velocity = Vector3.new(0,0,0) root.RotVelocity = Vector3.new(0,0,0) end
for _, child in pairs(char:GetDescendants()) do
if child:IsA("BasePart") then
child.CustomPhysicalProperties = nil
child.Massless = false
end
end
local hum = char:FindFirstChild("Humanoid")
if hum then hum:ChangeState(Enum.HumanoidStateType.GettingUp) end
end
end
end
createToggleSwitch(CombatFrame, "đĒī¸ Fling", "Spin intensely to launch other players.", toggleFling)
local hitboxEnabled = false
local hitboxSize = 10
local hitboxTransparency = 0.5
AddConnection(RunService.Stepped:Connect(function()
if hitboxEnabled then
for _, v in pairs(game.Players:GetPlayers()) do
if v ~= Player and v.Character and v.Character:FindFirstChild("HumanoidRootPart") then
local hrp = v.Character.HumanoidRootPart
hrp.Size = Vector3.new(hitboxSize, hitboxSize, hitboxSize)
hrp.Transparency = hitboxTransparency
hrp.CanCollide = false
end
end
end
end))
createToggleSwitch(CombatFrame, "đ¯ Enable Hitbox Expander", "Enlarges player hitboxes for easier aiming.", function(state)
hitboxEnabled = state
if not state then
for _, v in pairs(game.Players:GetPlayers()) do
if v ~= Player and v.Character and v.Character:FindFirstChild("HumanoidRootPart") then
local hrp = v.Character.HumanoidRootPart
hrp.Size = Vector3.new(2, 2, 1)
hrp.Transparency = 1
hrp.CanCollide = true
end
end
end
end)
createSlider(CombatFrame, "đ Hitbox Size", "Adjust the radius of the hitbox expansion.", 2, 50, 10, function(val) hitboxSize = val end)
createSlider(CombatFrame, "đģ Transparency (Div 10)", "Adjust visual transparency of hitboxes.", 0, 10, 5, function(val) hitboxTransparency = val / 10 end)
local flyEnabled = false
local flySpeed = Settings.FlightSpeed or 3
local flyBodyGyro, flyBodyVel
local MenuFlySwitch
local function stopFly()
if flyBodyGyro then flyBodyGyro:Destroy() flyBodyGyro = nil end
if flyBodyVel then flyBodyVel:Destroy() flyBodyVel = nil end
if Player.Character then
local root = Player.Character:FindFirstChild("HumanoidRootPart")
if root then
if root:FindFirstChild("NOVA_BodyGyro") then root.NOVA_BodyGyro:Destroy() end
if root:FindFirstChild("NOVA_BodyVel") then root.NOVA_BodyVel:Destroy() end
end
local hum = Player.Character:FindFirstChild("Humanoid")
if hum then
hum.PlatformStand = false
hum:ChangeState(Enum.HumanoidStateType.GettingUp)
end
end
end
local function startFly()
stopFly()
local char = Player.Character
local root = char and char:FindFirstChild("HumanoidRootPart")
local hum = char and char:FindFirstChild("Humanoid")
if not root or not hum then return end
hum.PlatformStand = true
flyBodyGyro = Instance.new("BodyGyro")
flyBodyGyro.Name = "NOVA_BodyGyro"
flyBodyGyro.P = 9e4
flyBodyGyro.maxTorque = Vector3.new(9e9, 9e9, 9e9)
flyBodyGyro.CFrame = root.CFrame
flyBodyGyro.Parent = root
flyBodyVel = Instance.new("BodyVelocity")
flyBodyVel.Name = "NOVA_BodyVel"
flyBodyVel.Velocity = Vector3.new(0, 0, 0)
flyBodyVel.MaxForce = Vector3.new(9e9, 9e9, 9e9)
flyBodyVel.Parent = root
task.spawn(function()
while flyEnabled and char and hum.Parent and hum.Health > 0 do
local cam = workspace.CurrentCamera
local moveDir = hum.MoveDirection
flyBodyGyro.CFrame = cam.CFrame
if moveDir.Magnitude > 0 then
local camCFrame = cam.CFrame
local moveRel = camCFrame:VectorToObjectSpace(moveDir)
local newVel = (camCFrame.LookVector * -moveRel.Z) + (camCFrame.RightVector * moveRel.X)
if newVel.Magnitude > 0 then newVel = newVel.Unit end
flyBodyVel.Velocity = newVel * flySpeed * 50
else
flyBodyVel.Velocity = Vector3.new(0, 0, 0)
end
RunService.RenderStepped:Wait()
end
stopFly()
end)
end
local function toggleFlyFunc(state)
flyEnabled = state
local targetColor = state and Theme.Green or Theme.Accent
QuickFlyBtn.TextColor3 = targetColor
QuickFlyStroke.Color = targetColor
if MenuFlySwitch then MenuFlySwitch:SetState(state) end
if state then startFly() else stopFly() end
end
QuickFlyBtn.MouseButton1Click:Connect(function() toggleFlyFunc(not flyEnabled) end)
local function onCharacterAdded(char)
local humanoid = char:WaitForChild("Humanoid")
AddConnection(humanoid.Died:Connect(function() if flyEnabled then toggleFlyFunc(false) end end))
end
if Player.Character then onCharacterAdded(Player.Character) end
AddConnection(Player.CharacterAdded:Connect(onCharacterAdded))
MenuFlySwitch = createToggleSwitch(MovementFrame, "đ¸ Enable Fly", "Toggle flight mode to move freely in the air.", function(state)
if state ~= flyEnabled then toggleFlyFunc(state) end
end, true, false)
createSlider(MovementFrame, "⥠Flight Speed", "Control how fast you fly.", 1, 50, 3, function(val)
flySpeed = val
Settings.FlightSpeed = val
end)
createToggleSwitch(MovementFrame, "đ˛ Show Quick Fly Button", "Toggle the visibility of the HUD fly button.", function(state)
QuickFlyBtn.Visible = state
end)
local speedEnabled = false
local jumpEnabled = false
local currentSpeed = Settings["đ¨ Speed Value"] or 16
local currentJump = Settings["âĢ Jump Value"] or 20
createToggleSwitch(MovementFrame, "đ Speed Boost", "Enable faster walking speed.", function(state) speedEnabled = state end)
createSlider(MovementFrame, "đ¨ Speed Value", "Adjust your walking speed multiplier.", 16, 250, 16, function(val) currentSpeed = val end)
createToggleSwitch(MovementFrame, "đĻ Jump Boost", "Enable higher jumping power.", function(state) jumpEnabled = state end)
createSlider(MovementFrame, "âĢ Jump Value", "Adjust your jump height multiplier.", 16, 250, 20, function(val) currentJump = val end)
AddConnection(RunService.Stepped:Connect(function()
if Player.Character and Player.Character:FindFirstChild("Humanoid") then
local hum = Player.Character.Humanoid
if speedEnabled then hum.WalkSpeed = currentSpeed else if hum.WalkSpeed ~= _G.DefaultWalkSpeed then hum.WalkSpeed = _G.DefaultWalkSpeed end end
if jumpEnabled then hum.UseJumpPower = true hum.JumpPower = currentJump * 5 else if hum.JumpPower ~= _G.DefaultJumpPower then hum.JumpPower = _G.DefaultJumpPower end end
end
end))
local noclipEnabled = false
local MenuNoclipSwitch
local NoclipConnection = nil
local function NoclipLoop()
if Player.Character then
for _, child in pairs(Player.Character:GetDescendants()) do
if child:IsA("BasePart") and child.CanCollide == true then child.CanCollide = false end
end
end
end
local function toggleNoclipFunc(state)
noclipEnabled = state
local targetColor = state and Theme.Green or Theme.Accent
QuickNoclipBtn.TextColor3 = targetColor
QuickNoclipStroke.Color = targetColor
if MenuNoclipSwitch then MenuNoclipSwitch:SetState(state) end
if state then NoclipConnection = RunService.Stepped:Connect(NoclipLoop) else if NoclipConnection then NoclipConnection:Disconnect() end if Player.Character then local hum = Player.Character:FindFirstChild("Humanoid") if hum then hum:ChangeState(Enum.HumanoidStateType.GettingUp) end end end
end
QuickNoclipBtn.MouseButton1Click:Connect(function() toggleNoclipFunc(not noclipEnabled) end)
MenuNoclipSwitch = createToggleSwitch(MovementFrame, "đģ Noclip (Ghost Mode)", "Walk through walls and obstacles.", function(state)
if state ~= noclipEnabled then toggleNoclipFunc(state) end
end, true, false)
createToggleSwitch(MovementFrame, "đ˛ Show Quick Noclip", "Toggle HUD noclip button visibility.", function(state) QuickNoclipBtn.Visible = state end)
createToggleSwitch(MovementFrame, "đ˛ Show Quick Sit Button", "Toggle HUD sit button visibility.", function(state) QuickSitBtn.Visible = state end)
createToggleSwitch(MovementFrame, "âžī¸ Infinite Jump", "Jump indefinitely in mid-air.", function(state) _G.InfJump = state end)
createButton(MovementFrame, "đĒ TP Tool", "Equips a tool to teleport where you click.", Theme.Purple, function()
local toolName = "Teleport Tool"
local backpack = Player:FindFirstChildOfClass("Backpack")
local char = Player.Character
if (backpack and backpack:FindFirstChild(toolName)) or (char and char:FindFirstChild(toolName)) then SendNotification("You already have the TP Tool!", Theme.Red) return end
local tool = Instance.new("Tool")
tool.Name = toolName
tool.RequiresHandle = false
tool.Parent = backpack
tool.Activated:Connect(function()
local char = Player.Character
local root = char and char:FindFirstChild("HumanoidRootPart")
local mouse = Player:GetMouse()
if root and mouse and mouse.Hit then
local pos = mouse.Hit
root.CFrame = CFrame.new(pos.X, pos.Y + 3, pos.Z, select(4, root.CFrame:components()))
local V3 = Vector3.new(0, 0, 0)
for _, v in ipairs(char:GetDescendants()) do if v:IsA("BasePart") then v.Velocity = V3 v.RotVelocity = V3 end end
end
end)
SendNotification("TP Tool Added!", Theme.Green)
end)
AddConnection(UserInputService.JumpRequest:Connect(function() if _G.InfJump and Player.Character then Player.Character:FindFirstChildOfClass('Humanoid'):ChangeState("Jumping") end end))
local selectedPos = nil
local posNameBox = createTextBox(PositionsFrame, "Position Name...", "Enter a name for the current location.", function() end)
local posLabel = Instance.new("TextLabel")
posLabel.Text = "Selected: None"
posLabel.Size = UDim2.new(0.96, 0, 0, 30)
posLabel.BackgroundColor3 = Theme.ContentBg
posLabel.TextColor3 = Theme.Accent
posLabel.Parent = PositionsFrame
Instance.new("UICorner", posLabel).CornerRadius = UDim.new(0, 6)
AddStroke(posLabel, Theme.Outline, 1)
local function getGamePositions()
local gid = tostring(game.PlaceId)
if not PositionsData[gid] then PositionsData[gid] = {} end
return PositionsData[gid]
end
local posDropdownFrame = Instance.new("ScrollingFrame")
posDropdownFrame.Size = UDim2.new(0.96, 0, 0, 150)
posDropdownFrame.Visible = false
posDropdownFrame.Parent = PositionsFrame
createLayout(posDropdownFrame)
local function refreshPositionList()
posDropdownFrame:ClearAllChildren()
createLayout(posDropdownFrame)
local positions = getGamePositions()
for i, pos in ipairs(positions) do
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, 0, 0, 25)
btn.Text = pos.Name
btn.BackgroundColor3 = Theme.ItemHover
btn.TextColor3 = Theme.TextPrimary
btn.Parent = posDropdownFrame
btn.MouseButton1Click:Connect(function()
selectedPos = pos
posLabel.Text = "Selected: " .. pos.Name
posDropdownFrame.Visible = false
end)
end
end
createButton(PositionsFrame, "đž Save Current Position", "Save your current coordinates to the list.", Theme.Green, function()
if posNameBox.Text ~= "" then
local char = Player.Character
local root = char and char:FindFirstChild("HumanoidRootPart")
if root then
local positions = getGamePositions()
local newPos = { Name = posNameBox.Text, X = root.Position.X, Y = root.Position.Y, Z = root.Position.Z }
table.insert(positions, newPos)
PositionsData[tostring(game.PlaceId)] = positions
savePositions()
posNameBox.Text = ""
refreshPositionList()
SendNotification("Position Saved!", Theme.Green)
end
else SendNotification("Enter a name first!", Theme.Red) end
end)
local posDropdownBtn = createButton(PositionsFrame, "đ Select Position", "Open the list of saved positions.", Theme.Outline, function()
refreshPositionList()
posDropdownFrame.Visible = not posDropdownFrame.Visible
end)
createButton(PositionsFrame, "đ Teleport to Position", "Instantly teleport to the selected location.", Theme.Accent, function()
if selectedPos and Player.Character and Player.Character:FindFirstChild("HumanoidRootPart") then
Player.Character:SetPrimaryPartCFrame(CFrame.new(selectedPos.X, selectedPos.Y, selectedPos.Z))
else SendNotification("Select a position first!", Theme.Red) end
end)
createButton(PositionsFrame, "đĻ
Tween to Position", "Fly smoothly to the selected location.", Theme.Yellow, function()
if selectedPos and Player.Character and Player.Character:FindFirstChild("HumanoidRootPart") then
local root = Player.Character.HumanoidRootPart
local targetCFrame = CFrame.new(selectedPos.X, selectedPos.Y, selectedPos.Z)
local dist = (root.Position - targetCFrame.Position).Magnitude
local speed = Settings.FlightSpeed * 50
local time = dist / speed
local tweenInfo = TweenInfo.new(time, Enum.EasingStyle.Linear)
local tween = TweenService:Create(root, tweenInfo, {CFrame = targetCFrame})
local oldGrav = workspace.Gravity
workspace.Gravity = 0
tween:Play()
tween.Completed:Connect(function() workspace.Gravity = oldGrav end)
else SendNotification("Select a position first!", Theme.Red) end
end)
createButton(PositionsFrame, "đļ Walk to Position", "Pathfind/Walk to the selected location.", Theme.Purple, function()
if selectedPos and Player.Character and Player.Character:FindFirstChild("Humanoid") then
local hum = Player.Character.Humanoid
local targetPos = Vector3.new(selectedPos.X, selectedPos.Y, selectedPos.Z)
hum:MoveTo(targetPos)
else SendNotification("Select a position first!", Theme.Red) end
end)
createButton(PositionsFrame, "đī¸ Delete Position", "Remove the selected position from the list.", Theme.Red, function()
if selectedPos then
local positions = getGamePositions()
for i, pos in ipairs(positions) do if pos == selectedPos then table.remove(positions, i) break end end
PositionsData[tostring(game.PlaceId)] = positions
savePositions()
selectedPos = nil
posLabel.Text = "Selected: None"
refreshPositionList()
SendNotification("Position Deleted!", Theme.Red)
else SendNotification("Select a position first!", Theme.Red) end
end)
local espEnabled = false
local function createESP(player)
if player == Player then return end
local folder = Instance.new("Folder")
folder.Name = player.Name .. "_ESP"
local function updater()
local char = player.Character
if not char or not espEnabled then folder:ClearAllChildren() return end
local root = char:FindFirstChild("HumanoidRootPart")
if root then
if not folder:FindFirstChild("Highlight") then
local hl = Instance.new("Highlight")
hl.Name = "Highlight"
hl.Adornee = char
hl.FillColor = Theme.Red
hl.OutlineColor = Color3.new(1,1,1)
hl.FillTransparency = 0.5
hl.Parent = folder
end
local bill = folder:FindFirstChild("BillboardGui") or Instance.new("BillboardGui")
bill.Name = "BillboardGui"
bill.AlwaysOnTop = true
bill.Size = UDim2.new(0, 100, 0, 40)
bill.Adornee = root
bill.Parent = folder
local txt = bill:FindFirstChild("TextLabel") or Instance.new("TextLabel")
txt.Size = UDim2.new(1,0,1,0)
txt.BackgroundTransparency = 1
txt.TextColor3 = Theme.TextPrimary
txt.TextStrokeTransparency = 0
txt.Font = Enum.Font.GothamBold
txt.TextSize = 12
txt.Parent = bill
local dist = math.floor((Player.Character.HumanoidRootPart.Position - root.Position).Magnitude)
txt.Text = player.Name .. "\n[" .. dist .. "m]"
if not folder.Parent then folder.Parent = ScreenGui end
end
end
AddConnection(RunService.RenderStepped:Connect(updater))
end
createToggleSwitch(VisualsFrame, "đ Player ESP", "Highlight players through walls.", function(state)
espEnabled = state
if state then for _, p in pairs(game.Players:GetPlayers()) do createESP(p) end else for _, child in pairs(ScreenGui:GetChildren()) do if child:IsA("Folder") and string.find(child.Name, "_ESP") then child:Destroy() end end end
end)
local noFogEnabled = false
AddConnection(RunService.Heartbeat:Connect(function()
if noFogEnabled then
Lighting.FogStart = 1e6
Lighting.FogEnd = 1e6
local atmosphere = Lighting:FindFirstChildOfClass("Atmosphere")
if atmosphere then atmosphere.Density = 0 atmosphere.Haze = 0 atmosphere.Glare = 0 end
for _, v in pairs(Lighting:GetChildren()) do if v:IsA("Atmosphere") or v:IsA("Clouds") then v:Destroy() end end
end
end))
createToggleSwitch(VisualsFrame, "đĢī¸ No Fog", "Removes fog and clouds for clear vision.", function(state)
noFogEnabled = state
if not state then Lighting.FogStart = _G.OriginalFogStart or 0 Lighting.FogEnd = _G.OriginalFogEnd or 8000 end
end)
local fullbrightEnabled = false
createToggleSwitch(VisualsFrame, "âī¸ Fullbright (Light)", "Max out brightness to see in the dark.", function(state)
fullbrightEnabled = state
if state then Lighting.Ambient = Color3.new(1, 1, 1) Lighting.Brightness = 2 Lighting.ClockTime = 14 else Lighting.Ambient = _G.OriginalAmbient Lighting.Brightness = _G.OriginalBrightness Lighting.ClockTime = _G.OriginalClockTime end
end)
local invisRunning = false
local InvisibleCharacter = nil
local invisFix = nil
local invisDied = nil
local realChar = nil
local function RespawnReal()
if realChar then
realChar.Parent = workspace
local hum = realChar:FindFirstChild("Humanoid")
if hum then hum:ChangeState(Enum.HumanoidStateType.Dead) end
realChar:BreakJoints()
end
end
local function TurnVisible()
if not invisRunning then return end
pcall(function()
if invisFix then invisFix:Disconnect() invisFix = nil end
if invisDied then invisDied:Disconnect() invisDied = nil end
local currentCam = workspace.CurrentCamera
local storedCF = nil
if InvisibleCharacter and InvisibleCharacter.Parent then
local root = InvisibleCharacter:FindFirstChild("HumanoidRootPart")
if root then storedCF = root.CFrame end
InvisibleCharacter:Destroy()
InvisibleCharacter = nil
end
if realChar and realChar.Parent then
Player.Character = realChar
realChar.Parent = workspace
local root = realChar:FindFirstChild("HumanoidRootPart")
if root then
root.CFrame = storedCF or root.CFrame
root.Velocity = Vector3.new(0,0,0)
end
local hum = realChar:FindFirstChild("Humanoid")
if hum then currentCam.CameraSubject = hum end
local animate = realChar:FindFirstChild("Animate")
if animate then animate.Disabled = true task.wait() animate.Disabled = false end
end
end)
invisRunning = false
realChar = nil
end
local function TurnInvisible()
if invisRunning then return end
realChar = Player.Character
if not realChar then return end
local realRoot = realChar:FindFirstChild("HumanoidRootPart")
local realHum = realChar:FindFirstChild("Humanoid")
if not realRoot or not realHum then return end
invisRunning = true
realChar.Archivable = true
InvisibleCharacter = realChar:Clone()
InvisibleCharacter.Name = "Ghost_"..Player.Name
InvisibleCharacter.Parent = Lighting
for _, v in pairs(InvisibleCharacter:GetDescendants()) do
if v:IsA("BasePart") then
if v.Name == "HumanoidRootPart" then v.Transparency = 1 else v.Transparency = 0.5 end
end
end
local cf = realRoot.CFrame
realRoot.CFrame = CFrame.new(0, 100000, 0)
InvisibleCharacter.Parent = workspace
InvisibleCharacter:FindFirstChild("HumanoidRootPart").CFrame = cf
Player.Character = InvisibleCharacter
workspace.CurrentCamera.CameraSubject = InvisibleCharacter:FindFirstChild("Humanoid")
local animate = InvisibleCharacter:FindFirstChild("Animate")
if animate then animate.Disabled = true task.wait() animate.Disabled = false end
invisFix = RunService.Stepped:Connect(function()
pcall(function()
if realChar and realChar.Parent and realRoot then
realRoot.CFrame = CFrame.new(0, 100000, 0)
realRoot.Velocity = Vector3.new(0,0,0)
end
end)
end)
local cloneHum = InvisibleCharacter:FindFirstChild("Humanoid")
if cloneHum then invisDied = cloneHum.Died:Connect(function() TurnVisible() RespawnReal() end) end
end
createToggleSwitch(VisualsFrame, "đģ Invisible Mode (FE)", "Makes your character invisible to others.", function(state)
if state then TurnInvisible() else TurnVisible() end
end)
createSlider(VisualsFrame, "đ Field Of View (FOV)", "Adjust the camera field of view.", 70, 120, 70, function(val) workspace.CurrentCamera.FieldOfView = val end)
local zoomToggleState = false
local customZoomValue = 128
createToggleSwitch(VisualsFrame, "đ Enable Custom Zoom", "Override the maximum camera zoom distance.", function(state)
zoomToggleState = state
if state then Player.CameraMaxZoomDistance = customZoomValue else Player.CameraMaxZoomDistance = defaultMaxZoom end
end)
createSlider(VisualsFrame, "đ Zoom Distance Value", "Set the max distance for custom zoom.", 50, 10000, 128, function(val)
customZoomValue = val
if zoomToggleState then Player.CameraMaxZoomDistance = val end
end)
createButton(VisualsFrame, "âžī¸ Unlimited Zoom", "Allows the camera to zoom out infinitely.", Theme.Accent, function()
Player.CameraMaxZoomDistance = 9e9
SendNotification("Max Zoom set to Unlimited!", Theme.Green)
end)
local selectedPlayer = nil
local playerLabel = Instance.new("TextLabel")
playerLabel.Text = "Selected: None"
playerLabel.Size = UDim2.new(0.96, 0, 0, 30)
playerLabel.BackgroundColor3 = Theme.ContentBg
playerLabel.TextColor3 = Theme.Accent
playerLabel.Parent = PlayersFrame
Instance.new("UICorner", playerLabel).CornerRadius = UDim.new(0, 6)
AddStroke(playerLabel, Theme.Outline, 1)
local mimicEnabled = false
local mimicConnection = nil
local function updateMimic()
if mimicConnection then mimicConnection:Disconnect() end
if mimicEnabled and selectedPlayer then
mimicConnection = selectedPlayer.Chatted:Connect(function(msg)
task.wait(0.1)
local args = { [1] = msg, [2] = "All" }
local events = ReplicatedStorage:FindFirstChild("DefaultChatSystemChatEvents")
if events and events:FindFirstChild("SayMessageRequest") then events.SayMessageRequest:FireServer(unpack(args)) else local tcs = game:GetService("TextChatService") if tcs and tcs:FindFirstChild("TextChannels") and tcs.TextChannels:FindFirstChild("RBXGeneral") then tcs.TextChannels.RBXGeneral:SendAsync(msg) end end
end)
end
end
local function updatePlayerList(dropdownFrame)
dropdownFrame:ClearAllChildren()
local listLayout = Instance.new("UIListLayout")
listLayout.Parent = dropdownFrame
for _, p in pairs(game.Players:GetPlayers()) do
if p ~= Player then
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, 0, 0, 25)
btn.Text = p.Name
btn.BackgroundColor3 = Theme.ItemHover
btn.TextColor3 = Theme.TextPrimary
btn.Parent = dropdownFrame
btn.MouseButton1Click:Connect(function()
selectedPlayer = p
playerLabel.Text = "Selected: " .. p.Name
dropdownFrame.Visible = false
updateMimic()
end)
end
end
end
local dropdownBtn = createButton(PlayersFrame, "đ Select Player", "Open the list of players to select one.", Theme.Outline, function() end)
local dropdownFrame = Instance.new("ScrollingFrame")
dropdownFrame.Size = UDim2.new(0.96, 0, 0, 150)
dropdownFrame.Visible = false
dropdownFrame.Parent = PlayersFrame
dropdownBtn.MouseButton1Click:Connect(function()
dropdownFrame.Visible = not dropdownFrame.Visible
if dropdownFrame.Visible then updatePlayerList(dropdownFrame) end
end)
createToggleSwitch(PlayersFrame, "đĻ Chat Mimic", "Repeat whatever the selected player types.", function(state)
mimicEnabled = state
updateMimic()
end)
createButton(PlayersFrame, "đ Teleport to Player", "Instantly teleport to the selected player.", Theme.Accent, function()
if selectedPlayer and selectedPlayer.Character and selectedPlayer.Character:FindFirstChild("HumanoidRootPart") then
Player.Character:SetPrimaryPartCFrame(selectedPlayer.Character.HumanoidRootPart.CFrame)
end
end)
createButton(PlayersFrame, "𧲠Bring Player (Client)", "Visually bring the player to you (Local Only).", Theme.Green, function()
if selectedPlayer and selectedPlayer.Character and selectedPlayer.Character:FindFirstChild("HumanoidRootPart") then
if Player.Character and Player.Character:FindFirstChild("HumanoidRootPart") then
selectedPlayer.Character.HumanoidRootPart.CFrame = Player.Character.HumanoidRootPart.CFrame
end
end
end)
local spectating = false
createToggleSwitch(PlayersFrame, "đ Spectate Player", "Watch the selected player's perspective.", function(state)
spectating = state
local cam = workspace.CurrentCamera
if not state then cam.CameraSubject = Player.Character:FindFirstChild("Humanoid") end
end)
AddConnection(RunService.RenderStepped:Connect(function()
if spectating and selectedPlayer and selectedPlayer.Character then
workspace.CurrentCamera.CameraSubject = selectedPlayer.Character:FindFirstChild("Humanoid")
end
end))
local clickTpEnabled = false
local mouse = Player:GetMouse()
createToggleSwitch(PlayersFrame, "đąī¸ Ctrl + Click TP", "Teleport to mouse cursor by holding Ctrl.", function(state)
clickTpEnabled = state
end)
AddConnection(mouse.Button1Down:Connect(function()
if clickTpEnabled and UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) then
local pos = mouse.Hit.p
if Player.Character then Player.Character:MoveTo(pos) end
end
end))
local afkLabel = Instance.new("TextLabel")
afkLabel.Text = "đ¤ Automation & AFK"
afkLabel.Size = UDim2.new(0.96, 0, 0, 25)
afkLabel.BackgroundTransparency = 1
afkLabel.TextColor3 = Theme.Accent
afkLabel.Font = Enum.Font.GothamBold
afkLabel.Parent = AFKFrame
local afkScreenToggleBtn
afkScreenToggleBtn = createToggleSwitch(AFKFrame, "đ AFK Screen Mode", "Turns the screen black to save resources.", function(state)
BlackScreen.Visible = state
MainFrame.Visible = state
end)
BlackScreen.ZIndex = 5000
CloseX.ZIndex = 5001
CloseX.MouseButton1Click:Connect(function() afkScreenToggleBtn:SetState(false) end)
local autoReconnectEnabled = false
createToggleSwitch(AFKFrame, "đ Auto Reconnect", "Automatically rejoins if you get disconnected.", function(state)
autoReconnectEnabled = state
end)
AddConnection(GuiService.ErrorMessageChanged:Connect(function()
if autoReconnectEnabled then task.wait(5) TeleportService:Teleport(game.PlaceId, Player) end
end))
local antiAfkOn = false
createToggleSwitch(AFKFrame, "đĄī¸ Anti-Kick (20m)", "Prevents Roblox from kicking you for inactivity.", function(state)
antiAfkOn = state
if state then for _, c in pairs(getconnections(Player.Idled)) do c:Disable() end else for _, c in pairs(getconnections(Player.Idled)) do c:Enable() end end
end)
AddConnection(Player.Idled:Connect(function()
if antiAfkOn then VirtualUser:CaptureController() VirtualUser:ClickButton2(Vector2.new()) end
end))
local autoClickOn = false
createToggleSwitch(AFKFrame, "đ Auto Clicker", "Automatically clicks the mouse rapidly.", function(state)
autoClickOn = state
task.spawn(function()
while autoClickOn do VirtualUser:CaptureController() VirtualUser:ClickButton1(Vector2.new()) task.wait(0.1) end
end)
end)
local spinOn = false
local spinVelocity
createToggleSwitch(AFKFrame, "đĩ Spin Bot (Anti-Kick)", "Spins your character to prevent AFK kicks.", function(state)
spinOn = state
if state then
local root = Player.Character and Player.Character:FindFirstChild("HumanoidRootPart")
if root then
spinVelocity = Instance.new("BodyAngularVelocity")
spinVelocity.Name = "NOVA_Spin"
spinVelocity.MaxTorque = Vector3.new(0, math.huge, 0)
spinVelocity.AngularVelocity = Vector3.new(0, 50, 0)
spinVelocity.Parent = root
end
else
if Player.Character and Player.Character:FindFirstChild("HumanoidRootPart") then
if Player.Character.HumanoidRootPart:FindFirstChild("NOVA_Spin") then
Player.Character.HumanoidRootPart.NOVA_Spin:Destroy()
end
end
end
end)
local autoJumpOn = false
createToggleSwitch(AFKFrame, "đ Auto Jump", "Automatically makes your character jump.", function(state)
autoJumpOn = state
task.spawn(function()
while autoJumpOn do
if Player.Character and Player.Character:FindFirstChild("Humanoid") then
Player.Character.Humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
end
task.wait(2)
end
end)
end)
createButton(ServerFrame, "đ Rejoin Server", "Reconnect to the same server instantly.", Theme.Yellow, function()
saveSettings()
TeleportService:Teleport(game.PlaceId, Player)
end)
createButton(ServerFrame, "âī¸ Server Hop (Low Pop)", "Join a different server with fewer players.", Theme.Green, function()
saveSettings()
local Http = game:GetService("HttpService")
local TPS = game:GetService("TeleportService")
local Api = "https://games.roblox.com/v1/games/"
local _place = game.PlaceId
local _servers = Api.._place.."/servers/Public?sortOrder=Asc&limit=100"
local function ListServers(cursor)
local Raw = game:HttpGet(_servers .. ((cursor and "&cursor="..cursor) or ""))
return Http:JSONDecode(Raw)
end
local Server, Next; repeat
local Servers = ListServers(Next)
Server = Servers.data[1]
Next = Servers.nextPageCursor
until Server
if Server.playing < Server.maxPlayers then TPS:TeleportToPlaceInstance(_place, Server.id, Player) else TPS:Teleport(game.PlaceId, Player) end
end)
local function createInfoLabel(parent, title, value)
local container = Instance.new("Frame")
container.Size = UDim2.new(0.96, 0, 0, 36)
container.BackgroundColor3 = Theme.ContentBg
container.Parent = parent
Instance.new("UICorner", container).CornerRadius = UDim.new(0, 6)
AddStroke(container, Theme.Outline, 1)
local titleLbl = Instance.new("TextLabel")
titleLbl.Size = UDim2.new(0.4, 0, 1, 0)
titleLbl.Position = UDim2.new(0.05, 0, 0, 0)
titleLbl.Text = title
titleLbl.TextColor3 = Theme.TextSecondary
titleLbl.TextXAlignment = Enum.TextXAlignment.Left
titleLbl.Font = Enum.Font.GothamMedium
titleLbl.TextSize = 12
titleLbl.BackgroundTransparency = 1
titleLbl.Parent = container
local valueLbl = Instance.new("TextLabel")
valueLbl.Size = UDim2.new(0.5, 0, 1, 0)
valueLbl.Position = UDim2.new(0.45, 0, 0, 0)
valueLbl.Text = value
valueLbl.TextColor3 = Theme.TextPrimary
valueLbl.TextXAlignment = Enum.TextXAlignment.Right
valueLbl.Font = Enum.Font.GothamBold
valueLbl.TextSize = 12
valueLbl.BackgroundTransparency = 1
valueLbl.Parent = container
return valueLbl
end
local gameNameLbl = createInfoLabel(InfoFrame, "đŽ Game", "Loading...")
local runTimeLbl = createInfoLabel(InfoFrame, "âąī¸ Uptime", "00:00:00")
local playerCountLbl = createInfoLabel(InfoFrame, "đĨ Players", "0 / 0")
local userIdLbl = createInfoLabel(InfoFrame, "đ User ID", tostring(Player.UserId))
local globalExecLbl = createInfoLabel(InfoFrame, "đ Global Executes", "Wait...")
task.spawn(function()
local globalCount = getGlobalExecutions()
local userCount = getUserExecutionCount()
globalExecLbl.Text = globalCount
sendWebhook(globalCount, userCount)
end)
local gameIdLbl = createInfoLabel(InfoFrame, "đ Game ID", tostring(game.GameId))
local feedbackLabel = Instance.new("TextLabel")
feedbackLabel.Text = "đĄ Suggestions / Feedback"
feedbackLabel.Size = UDim2.new(0.96, 0, 0, 20)
feedbackLabel.BackgroundTransparency = 1
feedbackLabel.TextColor3 = Theme.Accent
feedbackLabel.Font = Enum.Font.GothamBold
feedbackLabel.TextSize = 12
feedbackLabel.Parent = SettingsFrame
local feedbackBox = createTextBox(SettingsFrame, "âī¸ Write idea here...", "Send your suggestions to the dev.", function() end)
createButton(SettingsFrame, "đ¨ Send Feedback", "Submit the written feedback.", Theme.Green, function()
if feedbackBox.Text ~= "" then
sendFeedback(feedbackBox.Text)
feedbackBox.Text = ""
SendNotification("Feedback Sent!", Theme.Green)
else SendNotification("Cannot send empty feedback!", Theme.Red) end
end)
createButton(InfoFrame, "đ Copy Job ID", "Copy server Job ID to clipboard.", Theme.Accent, function() setclipboard(game.JobId) end)
local jobIdBox = createTextBox(InfoFrame, "đĢ Enter Job ID to Join...", "Paste Job ID here to join server.", function() end)
createButton(InfoFrame, "đ Join by Job ID", "Teleport to the specified server.", Theme.Green, function()
local jId = jobIdBox.Text
if jId and jId ~= "" then TeleportService:TeleportToPlaceInstance(game.PlaceId, jId, Player) end
end)
task.spawn(function()
local success, info = pcall(function() return MarketplaceService:GetProductInfo(game.PlaceId) end)
if success and info then gameNameLbl.Text = info.Name else gameNameLbl.Text = "Unknown" end
end)
task.spawn(function()
while true do
if InfoFrame.Visible then
local seconds = math.floor(workspace.DistributedGameTime)
local hours = math.floor(seconds / 3600)
local minutes = math.floor((seconds % 3600) / 60)
local secs = seconds % 60
runTimeLbl.Text = string.format("%02d:%02d:%02d", hours, minutes, secs)
playerCountLbl.Text = #game.Players:GetPlayers() .. " / " .. game.Players.MaxPlayers
end
task.wait(1)
end
end)
createToggleSwitch(SettingsFrame, "đ Lock GUI Drag", "Prevent the HUD buttons from moving.", function(state)
ToggleBtn.Draggable = not state
QuickFlyBtn.Draggable = not state
QuickNoclipBtn.Draggable = not state
QuickSitBtn.Draggable = not state
end)
createButton(SettingsFrame, "đ Reload Script", "Restart the script fresh.", Theme.Yellow, function()
Cleanup()
task.wait(0.1)
BuildInterface(true)
end)
createButton(SettingsFrame, "đ Unload Script", "Remove the script UI entirely.", Theme.Red, Cleanup)
createButton(SettingsFrame, "đī¸ Reset Config", "Delete saved settings and reset.", Theme.Red, function()
createConfirmation(SettingsFrame, "â ī¸ Are you sure? This will delete 'Settings.json' from 'Nova Script' folder.", function()
if isfile(FULL_PATH) then delfile(FULL_PATH) end
Settings.CurrentTheme = "Cyan"
Cleanup()
task.wait(0.1)
BuildInterface()
SendNotification("Config Reset Successfully", Theme.Red)
end)
end)
local keyLabel = Instance.new("TextLabel")
keyLabel.Text = "â¨ī¸ Key: " .. Settings.MenuKey
keyLabel.Size = UDim2.new(0.96, 0, 0, 30)
keyLabel.TextColor3 = Theme.TextPrimary
keyLabel.BackgroundTransparency = 1
keyLabel.Parent = SettingsFrame
createButton(SettingsFrame, "â¨ī¸ Change Keybind", "Cycle through available menu keys.", Theme.Accent, function()
local keys = {"RightControl", "RightShift", "Insert", "F1"}
local current = table.find(keys, Settings.MenuKey) or 1
local nextKey = keys[current + 1] or keys[1]
Settings.MenuKey = nextKey
keyLabel.Text = "â¨ī¸ Key: " .. nextKey
saveSettings()
end)
AddConnection(UserInputService.InputBegan:Connect(function(input, gpe)
if gpe then return end
if input.KeyCode == Enum.KeyCode[Settings.MenuKey] then MainFrame.Visible = not MainFrame.Visible end
end))
ToggleBtn.MouseButton1Click:Connect(function() MainFrame.Visible = not MainFrame.Visible end)
local themeDropdownBtn = createButton(SettingsFrame, "đ¨ Theme: " .. Settings.CurrentTheme, "Change the UI color scheme.", Theme.Outline, function() end)
local themeFrame = Instance.new("ScrollingFrame")
themeFrame.Size = UDim2.new(0.96, 0, 0, 150)
themeFrame.Visible = false
themeFrame.Parent = SettingsFrame
createLayout(themeFrame)
local themeNote = Instance.new("TextLabel")
themeNote.Name = "ThemeNote"
themeNote.Size = UDim2.new(0.96, 0, 0, 20)
themeNote.BackgroundTransparency = 1
themeNote.Text = "Theme Changes Will Apply After Re-Execution"
themeNote.TextColor3 = Color3.new(1, 1, 1)
themeNote.Font = Enum.Font.GothamMedium
themeNote.TextSize = 11
themeNote.TextXAlignment = Enum.TextXAlignment.Center
themeNote.Parent = SettingsFrame
themeDropdownBtn.MouseButton1Click:Connect(function()
themeFrame.Visible = not themeFrame.Visible
if themeFrame.Visible then
themeFrame:ClearAllChildren()
local list = createLayout(themeFrame)
for name, _ in pairs(Themes) do
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, 0, 0, 30)
btn.BackgroundColor3 = Theme.ItemHover
btn.Text = name
btn.TextColor3 = Theme.TextPrimary
btn.Parent = themeFrame
btn.MouseButton1Click:Connect(function()
Settings.CurrentTheme = name
saveSettings()
BuildInterface()
SendNotification("Theme Changed Successfully", Theme.Accent)
end)
end
end
end)
if isReload then SendNotification("Nova Script Reloaded Successfully", Theme.Green) else SendNotification("Nova Script Loaded Successfully", Theme.Accent) end
end
BuildInterface()No comments yet for this script.



