Universal Script – PpboyX- and and more (Aimbot, ESP) - Verified script for Universal Roblox
Key RequiredUniversal

Universal Script – PpboyX- and and more (Aimbot, ESP)

Universal ScriptPpboy91Ppboy91 766 views 2.2K executesUpdated Oct 24, 2026
Unrated
00
Lua Script•1154 lines (26589 chars)
--============================================================
-- PPBOY91 X
-- ROBLOX STUDIO LOCAL SCRIPT
--
-- Put this LocalScript in:
-- StarterPlayer > StarterPlayerScripts
--
-- AIM / ESP / BOT LOCK / SWIM / FOV / POWER / OPEN SOUND
-- SWIM SPEED DEFAULT: 500
--============================================================
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UIS = game:GetService("UserInputService")
local LocalPlayer = Players.LocalPlayer
local PlayerGui = LocalPlayer:WaitForChild("PlayerGui")
--============================================================
-- SETTINGS
--============================================================
local AIM_ENABLED = false
local BOT_LOCK_ENABLED = false
local ESP_ENABLED = false
local SWIM_ENABLED = false
local POWER = 8
local FOV = 150
local SWIM_SPEED = 500
local TAB_LOCKED = false
local GUI_OPEN = true
local LockedPlayer = nil
local LockedBot = nil
local RainbowHue = 0
--============================================================
-- SCREEN GUI
--============================================================
local GUI = Instance.new("ScreenGui")
GUI.Name = "PPBOY91_X"
GUI.ResetOnSpawn = false
GUI.IgnoreGuiInset = true
GUI.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
GUI.Parent = PlayerGui
--============================================================
-- OPEN SOUND
--============================================================
local OpenSound = Instance.new("Sound")
OpenSound.Name = "OpenSound"
OpenSound.SoundId = "rbxassetid://80540578165376"
OpenSound.Volume = 1
OpenSound.Parent = GUI
pcall(function()
	OpenSound:Play()
end)
--============================================================
-- MAIN WINDOW
--============================================================
local Main = Instance.new("Frame")
Main.Name = "Main"
Main.Size = UDim2.fromOffset(275, 492)
Main.Position = UDim2.fromOffset(15, 125)
Main.BackgroundColor3 = Color3.fromRGB(25, 25, 32)
Main.BorderSizePixel = 0
Main.Parent = GUI
local MainCorner = Instance.new("UICorner")
MainCorner.CornerRadius = UDim.new(0, 10)
MainCorner.Parent = Main
local MainStroke = Instance.new("UIStroke")
MainStroke.Thickness = 4
MainStroke.Parent = Main
--============================================================
-- TITLE
--============================================================
local TitleBar = Instance.new("TextButton")
TitleBar.Name = "TitleBar"
TitleBar.Size = UDim2.new(1, -20, 0, 43)
TitleBar.Position = UDim2.fromOffset(10, 5)
TitleBar.BackgroundTransparency = 1
TitleBar.Text = "PPBOY91 X"
TitleBar.TextColor3 = Color3.new(1, 1, 1)
TitleBar.TextSize = 21
TitleBar.Font = Enum.Font.Arcade
TitleBar.AutoButtonColor = false
TitleBar.Parent = Main
--============================================================
-- BUTTON CREATOR
--============================================================
local function MakeButton(name, text, x, y, w, h)
	local Button = Instance.new("TextButton")
	Button.Name = name
	Button.Size = UDim2.fromOffset(w, h)
	Button.Position = UDim2.fromOffset(x, y)
	Button.BackgroundColor3 = Color3.fromRGB(50, 50, 62)
	Button.BorderSizePixel = 0
	Button.Text = text
	Button.TextColor3 = Color3.new(1, 1, 1)
	Button.TextSize = 12
	Button.Font = Enum.Font.Arcade
	Button.AutoButtonColor = false
	Button.Parent = Main
	local Corner = Instance.new("UICorner")
	Corner.CornerRadius = UDim.new(0, 7)
	Corner.Parent = Button
	local Stroke = Instance.new("UIStroke")
	Stroke.Thickness = 2
	Stroke.Parent = Button
	return Button, Stroke
end
--============================================================
-- AIM
--============================================================
local AimButton, AimStroke =
	MakeButton(
		"AimButton",
		"AIM : OFF",
		10, 55,
		255, 40
	)
--============================================================
-- ESP
--============================================================
local ESPButton, ESPStroke =
	MakeButton(
		"ESPButton",
		"ESP : OFF",
		10, 102,
		255, 40
	)
--============================================================
-- BOT LOCK
--============================================================
local BotButton, BotStroke =
	MakeButton(
		"BotHeadLock",
		"BOT HEAD LOCK : OFF",
		10, 149,
		255, 40
	)
--============================================================
-- SWIM
--============================================================
local SwimButton, SwimStroke =
	MakeButton(
		"SwimButton",
		"SWIM : OFF",
		10, 196,
		255, 40
	)
--============================================================
-- FOV
--============================================================
local FOVLabel = Instance.new("TextLabel")
FOVLabel.Size = UDim2.fromOffset(105, 40)
FOVLabel.Position = UDim2.fromOffset(10, 244)
FOVLabel.BackgroundTransparency = 1
FOVLabel.Text = "FOV: 150"
FOVLabel.TextColor3 = Color3.new(1, 1, 1)
FOVLabel.TextSize = 13
FOVLabel.Font = Enum.Font.Arcade
FOVLabel.Parent = Main
local FOVMinus, FOVMinusStroke =
	MakeButton("FOVMinus", "-", 125, 242, 60, 40)
local FOVPlus, FOVPlusStroke =
	MakeButton("FOVPlus", "+", 195, 242, 60, 40)
--============================================================
-- POWER
--============================================================
local PowerLabel = Instance.new("TextLabel")
PowerLabel.Size = UDim2.fromOffset(105, 40)
PowerLabel.Position = UDim2.fromOffset(10, 291)
PowerLabel.BackgroundTransparency = 1
PowerLabel.Text = "POWER: 8.00"
PowerLabel.TextColor3 = Color3.new(1, 1, 1)
PowerLabel.TextSize = 12
PowerLabel.Font = Enum.Font.Arcade
PowerLabel.Parent = Main
local PowerMinus, PowerMinusStroke =
	MakeButton("PowerMinus", "-", 125, 289, 60, 40)
local PowerPlus, PowerPlusStroke =
	MakeButton("PowerPlus", "+", 195, 289, 60, 40)
--============================================================
-- SWIM SPEED
--============================================================
local SwimSpeedLabel = Instance.new("TextLabel")
SwimSpeedLabel.Size = UDim2.fromOffset(105, 40)
SwimSpeedLabel.Position = UDim2.fromOffset(10, 338)
SwimSpeedLabel.BackgroundTransparency = 1
SwimSpeedLabel.Text = "SWIM: 500"
SwimSpeedLabel.TextColor3 = Color3.new(1, 1, 1)
SwimSpeedLabel.TextSize = 11
SwimSpeedLabel.Font = Enum.Font.Arcade
SwimSpeedLabel.Parent = Main
local SwimMinus, SwimMinusStroke =
	MakeButton("SwimMinus", "-5", 125, 336, 60, 40)
local SwimPlus, SwimPlusStroke =
	MakeButton("SwimPlus", "+5", 195, 336, 60, 40)
--============================================================
-- TARGET
--============================================================
local TargetButton, TargetStroke =
	MakeButton(
		"TargetButton",
		"TARGET : HEAD",
		10, 383,
		255, 40
	)
--============================================================
-- STATUS
--============================================================
local Status = Instance.new("TextLabel")
Status.Name = "Status"
Status.Size = UDim2.new(1, -20, 0, 55)
Status.Position = UDim2.fromOffset(10, 430)
Status.BackgroundTransparency = 1
Status.Text = "READY"
Status.TextColor3 = Color3.new(1, 1, 1)
Status.TextSize = 11
Status.Font = Enum.Font.Arcade
Status.TextWrapped = true
Status.Parent = Main
--============================================================
-- FOV CIRCLE
--============================================================
local FOVCircle = Instance.new("Frame")
FOVCircle.Name = "RainbowFOV"
FOVCircle.AnchorPoint = Vector2.new(0.5, 0.5)
FOVCircle.Position = UDim2.fromScale(0.5, 0.5)
FOVCircle.Size = UDim2.fromOffset(FOV * 2, FOV * 2)
FOVCircle.BackgroundTransparency = 1
FOVCircle.BorderSizePixel = 0
FOVCircle.ZIndex = 2
FOVCircle.Parent = GUI
local FOVCorner = Instance.new("UICorner")
FOVCorner.CornerRadius = UDim.new(1, 0)
FOVCorner.Parent = FOVCircle
local FOVStroke = Instance.new("UIStroke")
FOVStroke.Thickness = 3
FOVStroke.Parent = FOVCircle
--============================================================
-- MOBILE TAB
--============================================================
local Tab = Instance.new("Frame")
Tab.Name = "PPBOY91Tab"
Tab.Size = UDim2.fromOffset(195, 47)
Tab.Position = UDim2.fromOffset(15, 70)
Tab.BackgroundTransparency = 1
Tab.ZIndex = 50
Tab.Parent = GUI
local Toggle = Instance.new("TextButton")
Toggle.Name = "Toggle"
Toggle.Size = UDim2.fromOffset(143, 47)
Toggle.BackgroundColor3 = Color3.fromRGB(25, 25, 32)
Toggle.BorderSizePixel = 0
Toggle.Text = "PPBOY91 X"
Toggle.TextColor3 = Color3.new(1, 1, 1)
Toggle.TextSize = 17
Toggle.Font = Enum.Font.Arcade
Toggle.AutoButtonColor = false
Toggle.ZIndex = 51
Toggle.Parent = Tab
local ToggleCorner = Instance.new("UICorner")
ToggleCorner.CornerRadius = UDim.new(0, 8)
ToggleCorner.Parent = Toggle
local ToggleStroke = Instance.new("UIStroke")
ToggleStroke.Thickness = 3
ToggleStroke.Parent = Toggle
--============================================================
-- LOCK BUTTON
--============================================================
local LockButton = Instance.new("TextButton")
LockButton.Name = "LockButton"
LockButton.Size = UDim2.fromOffset(47, 47)
LockButton.Position = UDim2.fromOffset(148, 0)
LockButton.BackgroundColor3 = Color3.fromRGB(25, 25, 32)
LockButton.BorderSizePixel = 0
LockButton.Text = "🔓"
LockButton.TextSize = 20
LockButton.Font = Enum.Font.Arial
LockButton.AutoButtonColor = false
LockButton.ZIndex = 52
LockButton.Parent = Tab
local LockCorner = Instance.new("UICorner")
LockCorner.CornerRadius = UDim.new(0, 8)
LockCorner.Parent = LockButton
local LockStroke = Instance.new("UIStroke")
LockStroke.Thickness = 3
LockStroke.Parent = LockButton
--============================================================
-- DRAG SYSTEM
--============================================================
local function MakeDraggable(object, getPosition, setPosition)
	local dragging = false
	local dragStart
	local startPosition
	local dragInput
	object.InputBegan:Connect(function(input)
		if TAB_LOCKED then
			return
		end
		if input.UserInputType == Enum.UserInputType.MouseButton1
			or input.UserInputType == Enum.UserInputType.Touch then
			dragging = true
			dragStart = input.Position
			startPosition = getPosition()
			dragInput = input
		end
	end)
	object.InputChanged:Connect(function(input)
		if input.UserInputType == Enum.UserInputType.MouseMovement
			or input.UserInputType == Enum.UserInputType.Touch then
			dragInput = input
		end
	end)
	UIS.InputChanged:Connect(function(input)
		if not dragging or TAB_LOCKED then
			return
		end
		if input ~= dragInput then
			return
		end
		local delta = input.Position - dragStart
		setPosition(
			UDim2.new(
				startPosition.X.Scale,
				startPosition.X.Offset + delta.X,
				startPosition.Y.Scale,
				startPosition.Y.Offset + delta.Y
			)
		)
	end)
	UIS.InputEnded:Connect(function(input)
		if input.UserInputType == Enum.UserInputType.MouseButton1
			or input.UserInputType == Enum.UserInputType.Touch then
			dragging = false
			dragInput = nil
		end
	end)
end
MakeDraggable(
	TitleBar,
	function()
		return Main.Position
	end,
	function(position)
		Main.Position = position
	end
)
MakeDraggable(
	Toggle,
	function()
		return Tab.Position
	end,
	function(position)
		Tab.Position = position
	end
)
--============================================================
-- OPEN / CLOSE
--============================================================
Toggle.Activated:Connect(function()
	if TAB_LOCKED then
		GUI_OPEN = not GUI_OPEN
		Main.Visible = GUI_OPEN
		if GUI_OPEN then
			pcall(function()
				OpenSound:Play()
			end)
		end
	end
end)
--============================================================
-- LOCK
--============================================================
LockButton.Activated:Connect(function()
	TAB_LOCKED = not TAB_LOCKED
	if TAB_LOCKED then
		LockButton.Text = "🔒"
	else
		LockButton.Text = "🔓"
	end
end)
--============================================================
-- FOV
--============================================================
local function UpdateFOV()
	FOVLabel.Text = "FOV: " .. FOV
	FOVCircle.Size =
		UDim2.fromOffset(
			FOV * 2,
			FOV * 2
		)
end
FOVMinus.Activated:Connect(function()
	FOV = math.max(25, FOV - 25)
	UpdateFOV()
end)
FOVPlus.Activated:Connect(function()
	FOV = math.min(400, FOV + 25)
	UpdateFOV()
end)
--============================================================
-- POWER
--============================================================
local function UpdatePower()
	PowerLabel.Text =
		"POWER: " ..
		string.format("%.2f", POWER)
end
PowerMinus.Activated:Connect(function()
	POWER = math.max(0, POWER - 1)
	UpdatePower()
end)
PowerPlus.Activated:Connect(function()
	POWER = math.min(30, POWER + 1)
	UpdatePower()
end)
--============================================================
-- SWIM SPEED
--============================================================
local function UpdateSwimSpeed()
	SwimSpeedLabel.Text =
		"SWIM: " ..
		math.floor(SWIM_SPEED)
end
SwimMinus.Activated:Connect(function()
	SWIM_SPEED =
		math.max(
			10,
			SWIM_SPEED - 5
		)
	UpdateSwimSpeed()
end)
SwimPlus.Activated:Connect(function()
	SWIM_SPEED =
		math.min(
			10000,
			SWIM_SPEED + 5
		)
	UpdateSwimSpeed()
end)
--============================================================
-- FIND CLOSEST PLAYER
--============================================================
local function FindClosestPlayer()
	local Camera = workspace.CurrentCamera
	if not Camera then
		return nil
	end
	local Center = Camera.ViewportSize / 2
	local Closest = nil
	local ClosestDistance = FOV
	for _, Player in ipairs(Players:GetPlayers()) do
		if Player ~= LocalPlayer then
			local Character = Player.Character
			local Humanoid =
				Character and
				Character:FindFirstChildOfClass("Humanoid")
			local Head =
				Character and
				Character:FindFirstChild("Head")
			if Humanoid
				and Head
				and Humanoid.Health > 0 then
				local ScreenPosition, Visible =
					Camera:WorldToViewportPoint(
						Head.Position
					)
				if Visible and ScreenPosition.Z > 0 then
					local Distance =
						(
							Vector2.new(
								ScreenPosition.X,
								ScreenPosition.Y
							) - Center
						).Magnitude
					if Distance < ClosestDistance then
						ClosestDistance = Distance
						Closest = Player
					end
				end
			end
		end
	end
	return Closest
end
--============================================================
-- AIM
--============================================================
local function TrackPlayerHead(dt)
	if not LockedPlayer then
		LockedPlayer =
			FindClosestPlayer()
		return
	end
	local Character =
		LockedPlayer.Character
	local Humanoid =
		Character and
		Character:FindFirstChildOfClass("Humanoid")
	local Head =
		Character and
		Character:FindFirstChild("Head")
	local Camera =
		workspace.CurrentCamera
	if not Humanoid
		or not Head
		or Humanoid.Health <= 0
		or not Camera then
		LockedPlayer =
			FindClosestPlayer()
		return
	end
	local Desired =
		CFrame.lookAt(
			Camera.CFrame.Position,
			Head.Position
		)
	local Strength =
		1 - math.exp(
			-POWER * 18 * dt
		)
	Camera.CFrame =
		Camera.CFrame:Lerp(
			Desired,
			math.clamp(
				Strength,
				0,
				0.98
			)
		)
end
AimButton.Activated:Connect(function()
	AIM_ENABLED = not AIM_ENABLED
	if AIM_ENABLED then
		LockedPlayer =
			FindClosestPlayer()
		AimButton.Text =
			"AIM : ON"
		Status.Text =
			"PLAYER HEAD LOCK ACTIVE"
	else
		LockedPlayer = nil
		AimButton.Text =
			"AIM : OFF"
		Status.Text =
			"READY"
	end
end)
--============================================================
-- SWIM
--============================================================
local SwimAttachment
local SwimVelocity
local function StartSwim()
	local Character =
		LocalPlayer.Character
	if not Character then
		return
	end
	local Root =
		Character:FindFirstChild(
			"HumanoidRootPart"
		)
	local Humanoid =
		Character:FindFirstChildOfClass(
			"Humanoid"
		)
	if not Root or not Humanoid then
		return
	end
	if SwimVelocity then
		SwimVelocity:Destroy()
	end
	if SwimAttachment then
		SwimAttachment:Destroy()
	end
	SwimAttachment =
		Instance.new("Attachment")
	SwimAttachment.Name =
		"PPBOY91_SwimAttachment"
	SwimAttachment.Parent =
		Root
	SwimVelocity =
		Instance.new("LinearVelocity")
	SwimVelocity.Name =
		"PPBOY91_SwimVelocity"
	SwimVelocity.Attachment0 =
		SwimAttachment
	SwimVelocity.MaxForce =
		math.huge
	SwimVelocity.VectorVelocity =
		Vector3.zero
	SwimVelocity.Parent =
		Root
	Humanoid.AutoRotate = false
	Status.Text =
		"SWIM MODE ACTIVE"
end
local function StopSwim()
	local Character =
		LocalPlayer.Character
	local Humanoid =
		Character and
		Character:FindFirstChildOfClass(
			"Humanoid"
		)
	if SwimVelocity then
		SwimVelocity:Destroy()
		SwimVelocity = nil
	end
	if SwimAttachment then
		SwimAttachment:Destroy()
		SwimAttachment = nil
	end
	if Humanoid then
		Humanoid.AutoRotate = true
	end
	Status.Text =
		"READY"
end
local function UpdateSwim()
	if not SWIM_ENABLED then
		return
	end
	local Character =
		LocalPlayer.Character
	local Root =
		Character and
		Character:FindFirstChild(
			"HumanoidRootPart"
		)
	local Humanoid =
		Character and
		Character:FindFirstChildOfClass(
			"Humanoid"
		)
	if not Root
		or not Humanoid
		or not SwimVelocity then
		return
	end
	local MoveDirection =
		Humanoid.MoveDirection
	local Velocity =
		MoveDirection *
		SWIM_SPEED
	local Vertical = 0
	if UIS:IsKeyDown(Enum.KeyCode.Space) then
		Vertical += 1
	end
	if UIS:IsKeyDown(Enum.KeyCode.LeftControl) then
		Vertical -= 1
	end
	Velocity +=
		Vector3.new(
			0,
			Vertical * SWIM_SPEED,
			0
		)
	SwimVelocity.VectorVelocity =
		Velocity
	if MoveDirection.Magnitude > 0.05 then
		local FlatDirection =
			Vector3.new(
				MoveDirection.X,
				0,
				MoveDirection.Z
			)
		if FlatDirection.Magnitude > 0.05 then
			Root.CFrame =
				CFrame.lookAt(
					Root.Position,
					Root.Position +
					FlatDirection
				)
		end
	end
end
SwimButton.Activated:Connect(function()
	SWIM_ENABLED =
		not SWIM_ENABLED
	if SWIM_ENABLED then
		SwimButton.Text =
			"SWIM : ON"
		StartSwim()
	else
		SwimButton.Text =
			"SWIM : OFF"
		StopSwim()
	end
end)
--============================================================
-- ESP
--============================================================
local ESP = {}
local function CreateESP(Player)
	if Player == LocalPlayer
		or ESP[Player] then
		return
	end
	local Holder =
		Instance.new("Frame")
	Holder.Name =
		"ESP_" .. Player.Name
	Holder.BackgroundTransparency = 1
	Holder.BorderSizePixel = 0
	Holder.Visible = false
	Holder.ZIndex = 30
	Holder.Parent = GUI
	local Info =
		Instance.new("TextLabel")
	Info.AnchorPoint =
		Vector2.new(0.5, 1)
	Info.Position =
		UDim2.new(0.5, 0, 0, -4)
	Info.Size =
		UDim2.fromOffset(250, 38)
	Info.BackgroundTransparency = 1
	Info.TextColor3 =
		Color3.new(1, 1, 1)
	Info.TextStrokeTransparency = 0
	Info.TextSize = 11
	Info.Font = Enum.Font.Arcade
	Info.TextWrapped = true
	Info.ZIndex = 31
	Info.Parent = Holder
	local function Line()
		local Object =
			Instance.new("Frame")
		Object.BorderSizePixel = 0
		Object.ZIndex = 30
		Object.Parent = Holder
		return Object
	end
	ESP[Player] = {
		Holder = Holder,
		Info = Info,
		Top = Line(),
		Bottom = Line(),
		Left = Line(),
		Right = Line()
	}
end
local function RemoveESP(Player)
	local Data = ESP[Player]
	if Data then
		Data.Holder:Destroy()
		ESP[Player] = nil
	end
end
local function UpdateESP(Player)
	local Data = ESP[Player]
	if not Data then
		return
	end
	if not ESP_ENABLED then
		Data.Holder.Visible = false
		return
	end
	local Character =
		Player.Character
	local Humanoid =
		Character and
		Character:FindFirstChildOfClass("Humanoid")
	local Root =
		Character and
		Character:FindFirstChild("HumanoidRootPart")
	local Head =
		Character and
		Character:FindFirstChild("Head")
	local Camera =
		workspace.CurrentCamera
	if not Character
		or not Humanoid
		or not Root
		or not Head
		or not Camera
		or Humanoid.Health <= 0 then
		Data.Holder.Visible = false
		return
	end
	local Top =
		Camera:WorldToViewportPoint(
			Head.Position +
			Vector3.new(0, 1, 0)
		)
	local Bottom =
		Camera:WorldToViewportPoint(
			Root.Position -
			Vector3.new(0, 3, 0)
		)
	if Top.Z <= 0
		or Bottom.Z <= 0 then
		Data.Holder.Visible = false
		return
	end
	local Height =
		math.abs(
			Bottom.Y - Top.Y
		)
	if Height < 5 then
		Data.Holder.Visible = false
		return
	end
	local Width =
		math.clamp(
			Height * 0.48,
			12,
			250
		)
	local CenterX =
		(Top.X + Bottom.X) / 2
	local TopY =
		math.min(
			Top.Y,
			Bottom.Y
		)
	Data.Holder.Position =
		UDim2.fromOffset(
			CenterX - Width / 2,
			TopY
		)
	Data.Holder.Size =
		UDim2.fromOffset(
			Width,
			Height
		)
	local Thickness = 2
	Data.Top.Position =
		UDim2.fromOffset(0, 0)
	Data.Top.Size =
		UDim2.new(
			1, 0,
			0, Thickness
		)
	Data.Bottom.Position =
		UDim2.new(
			0, 0,
			1, -Thickness
		)
	Data.Bottom.Size =
		UDim2.new(
			1, 0,
			0, Thickness
		)
	Data.Left.Position =
		UDim2.fromOffset(0, 0)
	Data.Left.Size =
		UDim2.new(
			0, Thickness,
			1, 0
		)
	Data.Right.Position =
		UDim2.new(
			1, -Thickness,
			0, 0
		)
	Data.Right.Size =
		UDim2.new(
			0, Thickness,
			1, 0
		)
	local MyCharacter =
		LocalPlayer.Character
	local MyRoot =
		MyCharacter and
		MyCharacter:FindFirstChild(
			"HumanoidRootPart"
		)
	local Distance = 0
	if MyRoot then
		Distance =
			(
				MyRoot.Position -
				Root.Position
			).Magnitude
	end
	local HP =
		math.floor(
			Humanoid.Health + 0.5
		)
	local MaxHP =
		math.floor(
			Humanoid.MaxHealth + 0.5
		)
	Data.Info.Text =
		Player.DisplayName ..
		" @" ..
		Player.Name ..
		"\n♥ " ..
		HP ..
		"/" ..
		MaxHP ..
		" HP • " ..
		math.floor(Distance) ..
		" studs"
	local Rainbow =
		Color3.fromHSV(
			RainbowHue,
			1,
			1
		)
	Data.Info.TextColor3 =
		Rainbow
	Data.Top.BackgroundColor3 =
		Rainbow
	Data.Bottom.BackgroundColor3 =
		Rainbow
	Data.Left.BackgroundColor3 =
		Rainbow
	Data.Right.BackgroundColor3 =
		Rainbow
	Data.Holder.Visible = true
end
ESPButton.Activated:Connect(function()
	ESP_ENABLED =
		not ESP_ENABLED
	if ESP_ENABLED then
		ESPButton.Text =
			"ESP : ON"
		Status.Text =
			"PLAYER ESP ACTIVE"
		for _, Player in ipairs(
			Players:GetPlayers()
		) do
			if Player ~= LocalPlayer then
				CreateESP(Player)
			end
		end
	else
		ESPButton.Text =
			"ESP : OFF"
		Status.Text =
			"READY"
		for Player in pairs(ESP) do
			RemoveESP(Player)
		end
	end
end)
Players.PlayerAdded:Connect(function(Player)
	if ESP_ENABLED then
		CreateESP(Player)
	end
end)
Players.PlayerRemoving:Connect(function(Player)
	RemoveESP(Player)
	if LockedPlayer == Player then
		LockedPlayer = nil
	end
end)
--============================================================
-- BOT LOCK
--============================================================
local function FindClosestBot()
	local Camera =
		workspace.CurrentCamera
	if not Camera then
		return nil
	end
	local Center =
		Camera.ViewportSize / 2
	local Closest = nil
	local ClosestDistance = FOV
	for _, Object in ipairs(
		workspace:GetDescendants()
	) do
		if Object:IsA("Model") then
			local Humanoid =
				Object:FindFirstChildOfClass(
					"Humanoid"
				)
			local Head =
				Object:FindFirstChild(
					"Head"
				)
			local Player =
				Players:GetPlayerFromCharacter(
					Object
				)
			if Humanoid
				and Head
				and not Player
				and Humanoid.Health > 0 then
				local ScreenPosition, Visible =
					Camera:WorldToViewportPoint(
						Head.Position
					)
				if Visible
					and ScreenPosition.Z > 0 then
					local Distance =
						(
							Vector2.new(
								ScreenPosition.X,
								ScreenPosition.Y
							) - Center
						).Magnitude
					if Distance < ClosestDistance then
						ClosestDistance =
							Distance
						Closest =
							Object
					end
				end
			end
		end
	end
	return Closest
end
local function TrackBotHead(dt)
	if not LockedBot then
		return
	end
	local Humanoid =
		LockedBot:FindFirstChildOfClass(
			"Humanoid"
		)
	local Head =
		LockedBot:FindFirstChild(
			"Head"
		)
	local Camera =
		workspace.CurrentCamera
	if not Humanoid
		or not Head
		or Humanoid.Health <= 0
		or not Camera then
		LockedBot =
			FindClosestBot()
		return
	end
	local Desired =
		CFrame.lookAt(
			Camera.CFrame.Position,
			Head.Position
		)
	local Strength =
		1 - math.exp(
			-POWER * 18 * dt
		)
	Camera.CFrame =
		Camera.CFrame:Lerp(
			Desired,
			math.clamp(
				Strength,
				0,
				0.98
			)
		)
end
BotButton.Activated:Connect(function()
	BOT_LOCK_ENABLED =
		not BOT_LOCK_ENABLED
	if BOT_LOCK_ENABLED then
		LockedBot =
			FindClosestBot()
		BotButton.Text =
			"BOT HEAD LOCK : ON"
		Status.Text =
			"BOT HEAD LOCK ACTIVE"
	else
		LockedBot = nil
		BotButton.Text =
			"BOT HEAD LOCK : OFF"
		Status.Text =
			"READY"
	end
end)
--============================================================
-- TARGET
--============================================================
TargetButton.Activated:Connect(function()
	TargetButton.Text =
		"TARGET : HEAD"
	Status.Text =
		"HEAD TARGET SELECTED"
end)
--============================================================
-- UPDATE LOOP
--============================================================
RunService:BindToRenderStep(
	"PPBOY91X_Update",
	Enum.RenderPriority.Camera.Value + 1,
	function(dt)
		RainbowHue =
			(RainbowHue + 0.004) % 1
		local function Rainbow(Offset)
			return Color3.fromHSV(
				(RainbowHue + Offset) % 1,
				1,
				1
			)
		end
		MainStroke.Color =
			Rainbow(0)
		ToggleStroke.Color =
			Rainbow(0.15)
		LockStroke.Color =
			Rainbow(0.30)
		AimStroke.Color =
			Rainbow(0.45)
		ESPStroke.Color =
			Rainbow(0.60)
		BotStroke.Color =
			Rainbow(0.75)
		SwimStroke.Color =
			Rainbow(0.90)
		FOVMinusStroke.Color =
			Rainbow(0.05)
		FOVPlusStroke.Color =
			Rainbow(0.20)
		PowerMinusStroke.Color =
			Rainbow(0.35)
		PowerPlusStroke.Color =
			Rainbow(0.50)
		SwimMinusStroke.Color =
			Rainbow(0.65)
		SwimPlusStroke.Color =
			Rainbow(0.80)
		TargetStroke.Color =
			Rainbow(0.95)
		FOVStroke.Color =
			Rainbow(0.10)
		if AIM_ENABLED then
			TrackPlayerHead(dt)
		end
		if BOT_LOCK_ENABLED then
			if not LockedBot
				or not LockedBot.Parent then
				LockedBot =
					FindClosestBot()
			end
			if LockedBot then
				TrackBotHead(dt)
			end
		end
		if SWIM_ENABLED then
			UpdateSwim()
		end
		if ESP_ENABLED then
			for _, Player in ipairs(
				Players:GetPlayers()
			) do
				if Player ~= LocalPlayer then
					CreateESP(Player)
					UpdateESP(Player)
				end
			end
		end
	end
)
--============================================================
-- INITIALIZE
--============================================================
UpdateFOV()
UpdatePower()
UpdateSwimSpeed()
print("PPBOY91 X loaded successfully.")
print("SWIM SPEED: " .. SWIM_SPEED)

How to Execute Universal Script – PpboyX- and and more (Aimbot, ESP)

Step 1: Copy Code: Click the Copy Code button in the viewer above to grab the clean Lua loadstring.

Step 2: Launch Executor: Open a compatible, unpatched executor. If you need one, check our Roblox Executors Directory.

Step 3: Join Experience: Launch Roblox and join Universal Script.

Step 4: Attach & Run: Attach/inject your executor into the Roblox process, paste the code into the script tab, and press Execute.

Created By

Ppboy91
Ppboy91
Script Creator
View Author Profile

Features & Information

Execute Universal Script – PpboyX- and and more (Aimbot, ESP). Key system required, created by Ppboy91, updated Oct 24, 2026. Tested and working on supported executors.
#Fun#Trumpisstupid

Script Changelog (1)

@Ppboy91Oct 24, 2026

Create script

Community Comments (0)

No comments yet for this script.

Frequently Asked Questions

How do I execute Universal Script – PpboyX- and and more (Aimbot, ESP) in Roblox?

To run Universal Script – PpboyX- and and more (Aimbot, ESP), copy the Lua loadstring from the code viewer above, launch Roblox and join Universal Script, attach a working executor (such as Potassium, Solara, or Delta from our Executors directory), paste the code into your executor console, and click Execute.

Is Universal Script – PpboyX- and and more (Aimbot, ESP) keyless or does it require an access key?

Universal Script – PpboyX- and and more (Aimbot, ESP) requires an access key. You can retrieve the official key directly using the Get Script Key link provided above.

Is Universal Script – PpboyX- and and more (Aimbot, ESP) currently safe and working?

This script is active and operational. Always test scripts using a secondary (alt) Roblox account to safeguard your main profile against anti-cheat bans.