Dev Hub Fluxo PvP script keyless
Fluxo PVP Keyless
Dev Hub Fluxo PvP script keyless
👤 alexriderr 👁 11 views ❤️ 0 likes ⏱ Jul 2, 2026
This script is developed by Dev Hub and is currently available as an open-source project in its developer testing phase. It includes powerful features such as **Aimlock**, **ESP**, and a variety of gun-related functions designed to enhance your gameplay. With ongoing development and future updates planned, this script is a great option for players who want to test new features and customize the code to suit their needs.
✨ Features
Enable Aim Lock Smoothness Visibility Check Team Check Auto Switch Aim Key ESP Hitbox Expander Hitbox Size Refresh Gun List Gun Models Admin Teleport to Target Stats
📋 Script Code
--[[
    Dev Hub — Complete Edition
    Aimbot | ESP | Hitbox | Recursive Gun Giver | Admin Panel | Stats
]]

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Workspace = game:GetService("Workspace")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TweenService = game:GetService("TweenService")
local CoreGui = game:GetService("CoreGui")

local LocalPlayer = Players.LocalPlayer
local Camera = Workspace:FindFirstChild("CustomCamera")
if not Camera or not Camera:IsA("Camera") then
	Camera = Workspace.CurrentCamera
end

--// SETTINGS
local Settings = {
	AimEnabled = true,
	AimKey = Enum.UserInputType.MouseButton2,
	FOV = 150,
	Smoothness = 1.0,
	YOffset = 1.5,
	VisCheck = false,
	TeamCheck = false,
	AutoSwitch = true,
	OverrideCam = false,

	ESPEnabled = true,
	ESPBoxes = true,
	ESPTracers = true,
	ESPInfo = true,
	ESPDrawFOV = true,
	ESPMaxDist = 5000,

	HitboxEnabled = false,
	HitboxSize = 10,
	HitboxTransparency = 0.6,

	Notifications = true,
}

--// STATE
local CurrentTarget = nil
local HoldingAim = false
local ESPTable = {}
local ScriptActive = true
local ListeningForKey = false
local UI = {}

--// REMOTES (discovered from game)
local Remotes = {
	CheckAdmin = ReplicatedStorage:FindFirstChild("CheckAdminPermission"),
	GetPerms = ReplicatedStorage:FindFirstChild("GetPlayerPermissions"),
	PermEdit = ReplicatedStorage:FindFirstChild("PermEditorEvent"),
	ExploitBan = ReplicatedStorage:FindFirstChild("ExploitBan"),
	Teleport = ReplicatedStorage:FindFirstChild("TeleportPlayer"),
	AimPos = ReplicatedStorage:FindFirstChild("UpdateAimPositionEvent"),
	AdminSkin = ReplicatedStorage:FindFirstChild("AdminSkinManager"),
	AdminEvent = ReplicatedStorage:FindFirstChild("AdminEvent"),
	NPCRemote = ReplicatedStorage:FindFirstChild("NPCRemoteEvent"),
	LoadMap = ReplicatedStorage:FindFirstChild("LoadCurrentMap"),
	Spectate = ReplicatedStorage:FindFirstChild("SpectateEvent"),
	Badge = ReplicatedStorage:FindFirstChild("BadgeNotification"),
}

--// DRAWING
local FOVDraw = Drawing.new("Circle")
FOVDraw.Thickness = 1
FOVDraw.NumSides = 64
FOVDraw.Filled = false
FOVDraw.ZIndex = 1
FOVDraw.Transparency = 1
FOVDraw.Color = Color3.fromRGB(255, 255, 255)

local TargetDraw = Drawing.new("Circle")
TargetDraw.Thickness = 2.5
TargetDraw.NumSides = 32
TargetDraw.Filled = false
TargetDraw.ZIndex = 5
TargetDraw.Color = Color3.fromRGB(255, 50, 50)

--// FUNCTIONS
local function Notify(text)
	if not Settings.Notifications then return end
	local gui = Instance.new("ScreenGui")
	gui.Name = "DevNotify"
	gui.ResetOnSpawn = false
	local ok = pcall(function() gui.Parent = CoreGui end)
	if not ok then gui.Parent = LocalPlayer:WaitForChild("PlayerGui") end

	local frame = Instance.new("TextLabel", gui)
	frame.Size = UDim2.new(0, 360, 0, 34)
	frame.Position = UDim2.new(0.5, -180, 0, -50)
	frame.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
	frame.BorderSizePixel = 0
	frame.Text = text
	frame.TextColor3 = Color3.new(1, 1, 1)
	frame.Font = Enum.Font.SourceSansSemibold
	frame.TextSize = 15
	Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 6)

	TweenService:Create(frame, TweenInfo.new(0.3), {Position = UDim2.new(0.5, -180, 0, 20)}):Play()
	task.delay(2.5, function()
		TweenService:Create(frame, TweenInfo.new(0.3), {Position = UDim2.new(0.5, -180, 0, -50)}):Play()
		task.wait(0.35)
		gui:Destroy()
	end)
end

local function IsAlive(char)
	if not char then return false end
	local hum = char:FindFirstChildOfClass("Humanoid")
	return hum and hum.Health > 0
end

local function GetAimPart(char)
	return char:FindFirstChild("HumanoidRootPart") or char.PrimaryPart
end

local function GetAimPosition(part)
	return part.Position + Vector3.new(0, Settings.YOffset, 0)
end

local function GetHealth(char)
	local hum = char:FindFirstChildOfClass("Humanoid")
	if hum then
		return math.floor(hum.Health), math.floor(hum.MaxHealth)
	end
	return 0, 100
end

local function IsVisible(character, worldPos)
	if not Settings.VisCheck then return true end
	local origin = Camera.CFrame.Position
	local direction = worldPos - origin
	local rayParams = RaycastParams.new()
	rayParams.FilterDescendantsInstances = {LocalPlayer.Character, Camera}
	rayParams.FilterType = Enum.RaycastFilterType.Blacklist
	local result = Workspace:Raycast(origin, direction, rayParams)
	if result and result.Instance then
		return result.Instance:IsDescendantOf(character)
	end
	return true
end

local function IsTargetValid(player)
	if player == LocalPlayer then return false end
	if Settings.TeamCheck and player.Team == LocalPlayer.Team then return false end
	return true
end

--// ESP SYSTEM
local function GetESP(player)
	if not ESPTable[player] then
		local box = Drawing.new("Square")
		box.Thickness = 1
		box.Filled = false
		box.Visible = false

		local tracer = Drawing.new("Line")
		tracer.Thickness = 1
		tracer.Visible = false

		local info = Drawing.new("Text")
		info.Size = 13
		info.Center = true
		info.Outline = true
		info.Font = 2
		info.Visible = false

		ESPTable[player] = {Box = box, Tracer = tracer, Info = info}
	end
	return ESPTable[player]
end

local function RemoveESP(player)
	local data = ESPTable[player]
	if data then
		data.Box:Remove()
		data.Tracer:Remove()
		data.Info:Remove()
		ESPTable[player] = nil
	end
end

--// CLOSEST TARGET
local function GetClosestPlayer()
	local screenCenter = Camera.ViewportSize / 2
	local closest = nil
	local closestDist = math.huge

	for _, player in ipairs(Players:GetPlayers()) do
		if not IsTargetValid(player) then continue end

		local char = player.Character
		local part = char and GetAimPart(char)
		if not part or not IsAlive(char) then continue end

		local aimPos = GetAimPosition(part)
		local pos, onScreen = Camera:WorldToViewportPoint(aimPos)
		if not onScreen then continue end

		local screenDist = (Vector2.new(pos.X, pos.Y) - screenCenter).Magnitude
		if screenDist > Settings.FOV then continue end

		if not IsVisible(char, aimPos) then continue end

		local dist3D = (part.Position - Camera.CFrame.Position).Magnitude
		if dist3D < closestDist then
			closestDist = dist3D
			closest = {
				Player = player,
				Part = part,
				Position = pos,
				Distance = dist3D,
				Notified = false,
			}
		end
	end

	return closest
end

--// UI BUILDER
local function BuildUI()
	local screen = Instance.new("ScreenGui")
	screen.Name = "DevHubUI"
	screen.ResetOnSpawn = false
	screen.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
	local ok = pcall(function() screen.Parent = CoreGui end)
	if not ok then screen.Parent = LocalPlayer:WaitForChild("PlayerGui") end

	local main = Instance.new("Frame", screen)
	main.Name = "Main"
	main.Size = UDim2.new(0, 540, 0, 400)
	main.Position = UDim2.new(0.5, -270, 0.5, -200)
	main.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
	main.BorderSizePixel = 0
	main.Active = true
	main.Draggable = true
	Instance.new("UICorner", main).CornerRadius = UDim.new(0, 6)

	local title = Instance.new("TextLabel", main)
	title.Size = UDim2.new(1, 0, 0, 34)
	title.BackgroundColor3 = Color3.fromRGB(18, 18, 18)
	title.BorderSizePixel = 0
	title.Text = "  Dev Hub | Developer Testing"
	title.TextColor3 = Color3.new(1, 1, 1)
	title.Font = Enum.Font.SourceSansBold
	title.TextSize = 18
	title.TextXAlignment = Enum.TextXAlignment.Left
	Instance.new("UICorner", title).CornerRadius = UDim.new(0, 6)

	local sidebar = Instance.new("Frame", main)
	sidebar.Position = UDim2.new(0, 6, 0, 42)
	sidebar.Size = UDim2.new(0, 100, 1, -50)
	sidebar.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
	Instance.new("UICorner", sidebar).CornerRadius = UDim.new(0, 6)

	local content = Instance.new("Frame", main)
	content.Position = UDim2.new(0, 112, 0, 42)
	content.Size = UDim2.new(1, -120, 1, -50)
	content.BackgroundColor3 = Color3.fromRGB(32, 32, 32)
	Instance.new("UICorner", content).CornerRadius = UDim.new(0, 6)

	local tabButtons = {}
	local tabFrames = {}

	local function SwitchTab(name)
		for k, btn in pairs(tabButtons) do
			btn.BackgroundColor3 = (k == name) and Color3.fromRGB(60, 130, 220) or Color3.fromRGB(50, 50, 50)
		end
		for k, frame in pairs(tabFrames) do
			frame.Visible = (k == name)
		end
	end

	local function AddTab(name, order)
		local btn = Instance.new("TextButton", sidebar)
		btn.Size = UDim2.new(1, -10, 0, 30)
		btn.Position = UDim2.new(0, 5, 0, 5 + (order - 1) * 35)
		btn.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
		btn.BorderSizePixel = 0
		btn.Text = name
		btn.TextColor3 = Color3.new(1, 1, 1)
		btn.Font = Enum.Font.SourceSansSemibold
		btn.TextSize = 15
		Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 4)
		btn.MouseButton1Click:Connect(function() SwitchTab(name) end)
		tabButtons[name] = btn

		local frame = Instance.new("ScrollingFrame", content)
		frame.Name = name
		frame.Size = UDim2.new(1, -8, 1, -8)
		frame.Position = UDim2.new(0, 4, 0, 4)
		frame.BackgroundTransparency = 1
		frame.BorderSizePixel = 0
		frame.ScrollBarThickness = 3
		frame.AutomaticCanvasSize = Enum.AutomaticSize.Y
		local layout = Instance.new("UIListLayout", frame)
		layout.Padding = UDim.new(0, 5)
		tabFrames[name] = frame
		frame.Visible = false
		return frame
	end

	local pageAim = AddTab("Aim", 1)
	local pageESP = AddTab("ESP", 2)
	local pageHit = AddTab("Hitbox", 3)
	local pageGun = AddTab("Guns", 4)
	local pageAdmin = AddTab("Admin", 5)
	local pageStats = AddTab("Stats", 6)
	local pageMisc = AddTab("Misc", 7)
	SwitchTab("Aim")

	-- Helpers
	local function AddToggle(parent, text, setting, callback)
		local f = Instance.new("Frame", parent)
		f.Size = UDim2.new(1, 0, 0, 28)
		f.BackgroundTransparency = 1

		local lbl = Instance.new("TextLabel", f)
		lbl.Size = UDim2.new(1, -60, 1, 0)
		lbl.BackgroundTransparency = 1
		lbl.Text = text
		lbl.TextColor3 = Color3.fromRGB(230, 230, 230)
		lbl.Font = Enum.Font.SourceSans
		lbl.TextSize = 16
		lbl.TextXAlignment = Enum.TextXAlignment.Left

		local btn = Instance.new("TextButton", f)
		btn.Size = UDim2.new(0, 52, 0, 22)
		btn.Position = UDim2.new(1, -56, 0.5, -11)
		btn.BackgroundColor3 = Settings[setting] and Color3.fromRGB(45, 200, 75) or Color3.fromRGB(200, 55, 55)
		btn.BorderSizePixel = 0
		btn.Text = Settings[setting] and "ON" or "OFF"
		btn.TextColor3 = Color3.new(1, 1, 1)
		btn.Font = Enum.Font.SourceSansBold
		btn.TextSize = 13
		Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 4)

		btn.MouseButton1Click:Connect(function()
			Settings[setting] = not Settings[setting]
			btn.Text = Settings[setting] and "ON" or "OFF"
			btn.BackgroundColor3 = Settings[setting] and Color3.fromRGB(45, 200, 75) or Color3.fromRGB(200, 55, 55)
			if callback then callback(Settings[setting]) end
		end)
	end

	local function AddSlider(parent, text, setting, min, max, inc)
		local f = Instance.new("Frame", parent)
		f.Size = UDim2.new(1, 0, 0, 42)
		f.BackgroundTransparency = 1

		local lbl = Instance.new("TextLabel", f)
		lbl.Size = UDim2.new(1, 0, 0, 18)
		lbl.BackgroundTransparency = 1
		lbl.Text = text .. ": " .. Settings[setting]
		lbl.TextColor3 = Color3.fromRGB(230, 230, 230)
		lbl.Font = Enum.Font.SourceSans
		lbl.TextSize = 15
		lbl.TextXAlignment = Enum.TextXAlignment.Left

		local track = Instance.new("Frame", f)
		track.Size = UDim2.new(1, -12, 0, 8)
		track.Position = UDim2.new(0, 6, 0, 26)
		track.BackgroundColor3 = Color3.fromRGB(55, 55, 55)
		track.BorderSizePixel = 0
		Instance.new("UICorner", track).CornerRadius = UDim.new(1, 0)
		track.Active = true

		local fill = Instance.new("Frame", track)
		local pct = (Settings[setting] - min) / (max - min)
		fill.Size = UDim2.new(pct, 0, 1, 0)
		fill.BackgroundColor3 = Color3.fromRGB(60, 130, 220)
		fill.BorderSizePixel = 0
		Instance.new("UICorner", fill).CornerRadius = UDim.new(1, 0)

		local function Update(input)
			local rel = math.clamp((input.Position.X - track.AbsolutePosition.X) / track.AbsoluteSize.X, 0, 1)
			local val = min + (max - min) * rel
			if inc then val = math.floor(val / inc + 0.5) * inc end
			val = math.clamp(val, min, max)
			val = tonumber(string.format("%.3f", val))
			Settings[setting] = val
			lbl.Text = text .. ": " .. val
			local npct = (val - min) / (max - min)
			fill.Size = UDim2.new(npct, 0, 1, 0)
		end

		track.InputBegan:Connect(function(input)
			if input.UserInputType == Enum.UserInputType.MouseButton1 then
				Update(input)
			end
		end)
		track.InputChanged:Connect(function(input)
			if input.UserInputType == Enum.UserInputType.MouseMovement and UserInputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) then
				Update(input)
			end
		end)
	end

	local function AddButton(parent, text, callback)
		local btn = Instance.new("TextButton", parent)
		btn.Size = UDim2.new(1, 0, 0, 28)
		btn.BackgroundColor3 = Color3.fromRGB(60, 130, 220)
		btn.BorderSizePixel = 0
		btn.Text = text
		btn.TextColor3 = Color3.new(1, 1, 1)
		btn.Font = Enum.Font.SourceSansSemibold
		btn.TextSize = 16
		Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 4)
		btn.MouseButton1Click:Connect(callback)
		return btn
	end

	local function AddLabel(parent, text)
		local lbl = Instance.new("TextLabel", parent)
		lbl.Size = UDim2.new(1, 0, 0, 16)
		lbl.BackgroundTransparency = 1
		lbl.Text = text
		lbl.TextColor3 = Color3.fromRGB(180, 180, 180)
		lbl.Font = Enum.Font.SourceSansItalic
		lbl.TextSize = 14
		lbl.TextWrapped = true
		lbl.TextXAlignment = Enum.TextXAlignment.Left
	end

	-- AIM TAB
	AddToggle(pageAim, "Enable Aim Lock", "AimEnabled", function(v) Notify("Aim: " .. tostring(v)) end)
	AddSlider(pageAim, "FOV Radius", "FOV", 10, 800, 1)
	AddSlider(pageAim, "Smoothness (1=Hard)", "Smoothness", 0.01, 1, 0.01)
	AddSlider(pageAim, "Y-Offset", "YOffset", 0, 5, 0.1)
	AddToggle(pageAim, "Visibility Check", "VisCheck")
	AddToggle(pageAim, "Team Check", "TeamCheck")
	AddToggle(pageAim, "Auto Switch", "AutoSwitch")
	AddToggle(pageAim, "Override Camera", "OverrideCam")

	local kf = Instance.new("Frame", pageAim)
	kf.Size = UDim2.new(1, 0, 0, 28)
	kf.BackgroundTransparency = 1
	local kl = Instance.new("TextLabel", kf)
	kl.Size = UDim2.new(1, -130, 1, 0)
	kl.BackgroundTransparency = 1
	kl.Text = "Aim Key: RightMouse"
	kl.TextColor3 = Color3.fromRGB(230, 230, 230)
	kl.Font = Enum.Font.SourceSans
	kl.TextSize = 16
	kl.TextXAlignment = Enum.TextXAlignment.Left
	local kb = Instance.new("TextButton", kf)
	kb.Size = UDim2.new(0, 120, 0, 24)
	kb.Position = UDim2.new(1, -125, 0.5, -12)
	kb.BackgroundColor3 = Color3.fromRGB(70, 70, 70)
	kb.BorderSizePixel = 0
	kb.Text = "Change"
	kb.TextColor3 = Color3.new(1, 1, 1)
	kb.Font = Enum.Font.SourceSansBold
	kb.TextSize = 14
	Instance.new("UICorner", kb).CornerRadius = UDim.new(0, 4)
	kb.MouseButton1Click:Connect(function()
		ListeningForKey = true
		kb.Text = "Press key..."
		kb.BackgroundColor3 = Color3.fromRGB(200, 150, 0)
	end)
	UI.KeyBtn = kb
	UI.KeyLbl = kl

	-- ESP TAB
	AddToggle(pageESP, "Master ESP", "ESPEnabled")
	AddToggle(pageESP, "Boxes", "ESPBoxes")
	AddToggle(pageESP, "Tracers", "ESPTracers")
	AddToggle(pageESP, "Player Info", "ESPInfo")
	AddToggle(pageESP, "FOV Circle", "ESPDrawFOV")
	AddSlider(pageESP, "Max Distance", "ESPMaxDist", 50, 5000, 10)

	-- HITBOX TAB
	AddToggle(pageHit, "Hitbox Expander", "HitboxEnabled", function(v) Notify("Hitbox: " .. tostring(v)) end)
	AddSlider(pageHit, "Hitbox Size", "HitboxSize", 1, 30, 0.5)
	AddSlider(pageHit, "Hitbox Visibility", "HitboxTransparency", 0, 1, 0.1)

	-- GUN TAB — recursively scans GunModels for Tools
	AddLabel(pageGun, "Recursively scanning GunModels...")
	local function RecursiveFindTools(folder, path, results)
		results = results or {}
		for _, obj in ipairs(folder:GetChildren()) do
			if obj:IsA("Tool") then
				table.insert(results, {Path = path .. obj.Name, Tool = obj})
			elseif obj:IsA("Folder") or obj:IsA("Model") then
				RecursiveFindTools(obj, path .. obj.Name .. ".", results)
			end
		end
		return results
	end

	local function RefreshGunButtons()
		for _, c in ipairs(pageGun:GetChildren()) do
			if c:IsA("TextButton") and c.Text ~= "Refresh Gun List" then c:Destroy() end
		end

		local folder = ReplicatedStorage:FindFirstChild("GunModels")
		if not folder then
			AddLabel(pageGun, "No GunModels folder!")
			return
		end

		local guns = RecursiveFindTools(folder, "GunModels.")
		if #guns == 0 then
			AddLabel(pageGun, "No Tools found inside GunModels.")
			return
		end

		for _, entry in ipairs(guns) do
			AddButton(pageGun, entry.Path, function()
				local bp = LocalPlayer:FindFirstChildOfClass("Backpack")
				if not bp then Notify("No backpack found!") return end
				local clone = entry.Tool:Clone()
				clone.Parent = bp
				local char = LocalPlayer.Character
				local hum = char and char:FindFirstChildOfClass("Humanoid")
				if hum and char and not char:FindFirstChildOfClass("Tool") then
					pcall(function() hum:EquipTool(clone) end)
				end
				Notify("Gave: " .. entry.Path)
			end)
		end
	end

	AddButton(pageGun, "Refresh Gun List", function()
		RefreshGunButtons()
		Notify("Gun list refreshed. Found tools in nested folders.")
	end)
	RefreshGunButtons()

	-- ADMIN PANEL
	AddLabel(pageAdmin, "Fire discovered remotes. Use with caution.")
	AddLabel(pageAdmin, "Remotes scan:")

	for name, remote in pairs(Remotes) do
		if remote then
			AddButton(pageAdmin, "Fire: " .. name, function()
				local ok, err = pcall(function()
					if remote:IsA("RemoteEvent") then
						remote:FireServer()
					elseif remote:IsA("RemoteFunction") then
						remote:InvokeServer()
					elseif remote:IsA("BindableEvent") then
						remote:Fire()
					end
				end)
				if ok then
					Notify("Fired: " .. name)
				else
					Notify("Failed: " .. name .. " | " .. tostring(err))
				end
			end)
		else
			AddLabel(pageAdmin, "Missing: " .. name)
		end
	end

	AddButton(pageAdmin, "Give Admin (Try PermEdit)", function()
		if Remotes.PermEdit then
			Remotes.PermEdit:FireServer(LocalPlayer.Name, "Admin")
			Notify("Sent PermEdit for Admin")
		else
			Notify("PermEditorEvent not found")
		end
	end)

	AddButton(pageAdmin, "Teleport to Target (test)", function()
		if Remotes.Teleport then
			Remotes.Teleport:FireServer(workspace.CurrentCamera.CFrame.Position + Vector3.new(0,5,0))
			Notify("Fired TeleportPlayer")
		end
	end)

	-- STATS TAB (leaderstats editor)
	AddLabel(pageStats, "Edit your leaderstats directly.")
	local function AddStatEdit(name, statName)
		local f = Instance.new("Frame", pageStats)
		f.Size = UDim2.new(1, 0, 0, 28)
		f.BackgroundTransparency = 1
		local lbl = Instance.new("TextLabel", f)
		lbl.Size = UDim2.new(0.4, 0, 1, 0)
		lbl.BackgroundTransparency = 1
		lbl.Text = name .. ":"
		lbl.TextColor3 = Color3.fromRGB(230, 230, 230)
		lbl.Font = Enum.Font.SourceSans
		lbl.TextSize = 16
		lbl.TextXAlignment = Enum.TextXAlignment.Left

		local box = Instance.new("TextBox", f)
		box.Size = UDim2.new(0.3, 0, 1, -4)
		box.Position = UDim2.new(0.42, 0, 0, 2)
		box.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
		box.TextColor3 = Color3.new(1, 1, 1)
		box.Text = "0"
		box.Font = Enum.Font.SourceSans
		box.TextSize = 16
		Instance.new("UICorner", box).CornerRadius = UDim.new(0, 4)

		local btn = Instance.new("TextButton", f)
		btn.Size = UDim2.new(0.24, 0, 1, -4)
		btn.Position = UDim2.new(0.75, 0, 0, 2)
		btn.BackgroundColor3 = Color3.fromRGB(60, 130, 220)
		btn.Text = "Set"
		btn.TextColor3 = Color3.new(1, 1, 1)
		btn.Font = Enum.Font.SourceSansBold
		btn.TextSize = 14
		Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 4)

		btn.MouseButton1Click:Connect(function()
			local ls = LocalPlayer:FindFirstChild("leaderstats")
			if not ls then Notify("No leaderstats!") return end
			local stat = ls:FindFirstChild(statName)
			if stat and stat:IsA("IntValue") or stat:IsA("NumberValue") then
				stat.Value = tonumber(box.Text) or 0
				Notify(name .. " set to " .. stat.Value)
			else
				Notify("Stat not found: " .. statName)
			end
		end)
	end

	AddStatEdit("Kills", "Kills")
	AddStatEdit("Deaths", "Deaths")
	AddStatEdit("HZM", "HZM")
	AddStatEdit("XP", "XP")
	AddStatEdit("Level", "Level")
	AddStatEdit("RequiredXP", "RequiredXP")
	AddStatEdit("Headshots", "Headshots")

	-- MISC TAB
	AddToggle(pageMisc, "Notifications", "Notifications")
	AddButton(pageMisc, "Unload Script", function()
		ScriptActive = false
		for _, p in ipairs(Players:GetPlayers()) do
			RemoveESP(p)
		end
		FOVDraw:Remove()
		TargetDraw:Remove()
		screen:Destroy()
		Notify("Unloaded.")
	end)
end

--// INPUT
UserInputService.InputBegan:Connect(function(input, gameProcessed)
	if gameProcessed then return end
	if ListeningForKey then
		local key = input.UserInputType == Enum.UserInputType.Keyboard and input.KeyCode or input.UserInputType
		Settings.AimKey = key
		local name = tostring(key):gsub("Enum%.UserInputType%.", ""):gsub("Enum%.KeyCode%.", "")
		UI.KeyLbl.Text = "Aim Key: " .. name
		UI.KeyBtn.Text = "Change"
		UI.KeyBtn.BackgroundColor3 = Color3.fromRGB(70, 70, 70)
		ListeningForKey = false
		Notify("Key set: " .. name)
		return
	end

	local match = false
	if Settings.AimKey.EnumType == Enum.KeyCode then
		match = input.KeyCode == Settings.AimKey
	elseif Settings.AimKey.EnumType == Enum.UserInputType then
		match = input.UserInputType == Settings.AimKey
	end
	if match then
		HoldingAim = true
	end
end)

UserInputService.InputEnded:Connect(function(input, gameProcessed)
	local match = false
	if Settings.AimKey.EnumType == Enum.KeyCode then
		match = input.KeyCode == Settings.AimKey
	elseif Settings.AimKey.EnumType == Enum.UserInputType then
		match = input.UserInputType == Settings.AimKey
	end
	if match then
		HoldingAim = false
		CurrentTarget = nil
	end
end)

--// RENDER LOOP
RunService.RenderStepped:Connect(function()
	if not ScriptActive then return end
	if not Camera or not Camera.Parent then
		Camera = Workspace:FindFirstChild("CustomCamera")
		if not Camera or not Camera:IsA("Camera") then
			Camera = Workspace.CurrentCamera
		end
	end
	if not Camera then return end

	-- FOV Circle
	if Settings.ESPDrawFOV then
		FOVDraw.Position = Camera.ViewportSize / 2
		FOVDraw.Radius = Settings.FOV
		FOVDraw.Visible = true
	else
		FOVDraw.Visible = false
	end

	-- AIMBOT
	if Settings.AimEnabled and HoldingAim then
		local valid = false

		if CurrentTarget then
			local char = CurrentTarget.Player.Character
			local part = char and GetAimPart(char)
			if part and IsAlive(char) and IsTargetValid(CurrentTarget.Player) then
				local aimPos = GetAimPosition(part)
				local pos, onScreen = Camera:WorldToViewportPoint(aimPos)
				if onScreen then
					local sd = (Vector2.new(pos.X, pos.Y) - Camera.ViewportSize / 2).Magnitude
					if sd = 0.99 then
				Camera.CFrame = targetCF
			else
				Camera.CFrame = Camera.CFrame:Lerp(targetCF, Settings.Smoothness)
			end

			local pos, onScreen = Camera:WorldToViewportPoint(aimPos)
			if onScreen then
				TargetDraw.Position = Vector2.new(pos.X, pos.Y)
				TargetDraw.Radius = math.clamp(500 / pos.Z, 5, 30)
				TargetDraw.Visible = true
			else
				TargetDraw.Visible = false
			end

			if not CurrentTarget.Notified then
				CurrentTarget.Notified = true
				Notify("Locked: " .. CurrentTarget.Player.Name .. " | " .. math.floor(CurrentTarget.Distance) .. "s")
			end
		else
			TargetDraw.Visible = false
		end
	else
		CurrentTarget = nil
		TargetDraw.Visible = false
	end

	-- ESP
	for _, player in ipairs(Players:GetPlayers()) do
		if player == LocalPlayer then continue end

		local data = GetESP(player)
		data.Box.Visible = false
		data.Tracer.Visible = false
		data.Info.Visible = false

		if not Settings.ESPEnabled then continue end

		local char = player.Character
		local part = char and GetAimPart(char)
		if not part or not IsAlive(char) or not IsTargetValid(player) then continue end

		local dist = (part.Position - Camera.CFrame.Position).Magnitude
		if dist > Settings.ESPMaxDist then continue end

		local pos, onScreen = Camera:WorldToViewportPoint(part.Position)
		if not onScreen then continue end

		local screenPos = Vector2.new(pos.X, pos.Y)
		local hp, maxHp = GetHealth(char)
		local locked = CurrentTarget and CurrentTarget.Player == player

		if Settings.ESPTracers then
			data.Tracer.From = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y)
			data.Tracer.To = screenPos
			data.Tracer.Color = locked and Color3.fromRGB(255, 0, 0) or Color3.fromRGB(255, 255, 255)
			data.Tracer.Transparency = locked and 1 or 0.6
			data.Tracer.Visible = true
		end

		if Settings.ESPBoxes then
			local scale = math.clamp(800 / pos.Z, 20, 90)
			data.Box.Size = Vector2.new(scale / 2, scale)
			data.Box.Position = screenPos - data.Box.Size / 2
			data.Box.Color = locked and Color3.fromRGB(255, 0, 0) or Color3.fromRGB(0, 255, 100)
			data.Box.Visible = true
		end

		if Settings.ESPInfo then
			data.Info.Position = screenPos - Vector2.new(0, 40)
			data.Info.Text = player.Name .. "\nHP:" .. hp .. "/" .. maxHp .. " | " .. math.floor(dist) .. "s"
			data.Info.Color = locked and Color3.fromRGB(255, 200, 50) or Color3.fromRGB(255, 255, 255)
			data.Info.Visible = true
		end
	end

	-- HITBOX EXPANDER
	if Settings.HitboxEnabled then
		for _, player in ipairs(Players:GetPlayers()) do
			if player == LocalPlayer then continue end
			local char = player.Character
			if not char then continue end
			local hrp = char:FindFirstChild("HumanoidRootPart")
			if not hrp then continue end

			local expander = char:FindFirstChild("DevHitbox")
			if not expander then
				expander = Instance.new("Part")
				expander.Name = "DevHitbox"
				expander.Shape = Enum.PartType.Ball
				expander.Material = Enum.Material.ForceField
				expander.Color = Color3.fromRGB(255, 0, 0)
				expander.CanCollide = false
				expander.Anchored = false
				expander.Parent = char
				local weld = Instance.new("Weld", expander)
				weld.Part0 = hrp
				weld.Part1 = expander
			end
			expander.Size = Vector3.new(Settings.HitboxSize, Settings.HitboxSize, Settings.HitboxSize)
			expander.Transparency = 1 - Settings.HitboxTransparency
		end
	else
		for _, player in ipairs(Players:GetPlayers()) do
			if player == LocalPlayer then continue end
			local char = player.Character
			if char then
				local old = char:FindFirstChild("DevHitbox")
				if old then old:Destroy() end
			end
		end
	end
end)

--// CLEANUP
Players.PlayerRemoving:Connect(function(player)
	RemoveESP(player)
	if CurrentTarget and CurrentTarget.Player == player then
		CurrentTarget = nil
	end
end)

--// INIT
BuildUI()
Notify("Dev Hub Loaded | Recursive Guns | Admin Panel Ready")
🎮 Similar Scripts
💬 Comments (0)
Login to post a comment
No comments yet. Be the first!
Script Info
Game Fluxo PVP
TypeKeyless
Authoralexriderr
Views11
Likes0
PublishedJul 2, 2026
🎮 Play Game on Roblox
🕐 Recent Scripts
Fluxo PvP Aimbot Script by Vision (No Keys)
Fluxo PvP Aimbot Script by Vision (No Keys)
Fluxo PVP • 👁 11
Keyless
Auto Fish and Scrape all fish OP Keyless
Auto Fish and Scrape all fish OP Keyless
Scale Slimy Fish • 👁 11
Keyless
Blade Ball Auto Parry script op (No Keys)
Blade Ball Auto Parry script op (No Keys)
Blade Ball • 👁 13
Keyless
HACX Hub Sell Lemons Script OP (No Keys) – Auto Farm Fruits
HACX Hub Sell Lemons Script OP (No Keys) – Auto Farm Fruits
Sell Lemons 🍋 • 👁 12
Keyless
New SCRIPT! Auto Teleport to Final
New SCRIPT! Auto Teleport to Final
Tower of Hell • 👁 10
Keyless