
Universal Script – PpboyX- and and more (Aimbot, ESP)
--============================================================
-- 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
View Author ProfileFeatures & Information
Script Changelog (1)
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.


![Ez Hub [Open Source] [150+ games] - Verified script for Universal Script](https://media.kocakz.me/b74a9ac15370ba766b2fa9531f17c9dad2c0befb2b951693ae723e4c7d2c3fb6.webp)

![[KEYLESS] Moondiety Script | 20+ supported Games - Verified script for Universal Script](https://media.kocakz.me/6834c33a36c9fbe66afae4c6754c2b80386ce636b2f972464a95866f4b6a42eb.webp)

