
Key RequiredUniversal

-- Ariel Cheats - Aimbot & ESP Script with Draggable Menu and Tabs
if not game:IsLoaded() then game.Loaded:Wait() end
wait(2)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local CoreGui = game:GetService("CoreGui")
local TweenService = game:GetService("TweenService")
local GuiService = game:GetService("GuiService")
local player = Players.LocalPlayer
local mouse = player:GetMouse()
local camera = workspace.CurrentCamera
-- Settings
local settings = {
aimbot = true,
esp = true,
fovCircle = true,
boxes2d = true,
tracers = true,
names = true,
distance = true,
healthbar = true,
skeleton = true,
consoleDetection = true,
teamCheck = true,
-- Misc settings (default off)
godmode = false,
superSpeed = false,
gunESP = true, -- Changed to auto ON
smoothness = 3,
fovSize = 150,
maxDistance = 2000,
-- Speed multiplier
speedMultiplier = 3
}
local menuOpen = false
local drawings = {}
local espData = {}
local currentTab = "Aimbot" -- Default tab
local playerPlatforms = {} -- Cache for player platforms
local originalWalkSpeed = 16 -- Default Roblox walk speed
-- Team check function
local function isTeammate(targetPlayer)
if not settings.teamCheck then
return false -- Show everyone if team check is disabled
end
-- Check if player is on the same team
if player.Team and targetPlayer.Team then
return player.Team == targetPlayer.Team
end
-- Alternative method: Check leaderboard
local success, result = pcall(function()
local leaderstats = player:FindFirstChild("leaderstats")
local targetLeaderstats = targetPlayer:FindFirstChild("leaderstats")
if leaderstats and targetLeaderstats then
-- Check for team-related values in leaderstats
local playerTeam = leaderstats:FindFirstChild("Team") or leaderstats:FindFirstChild("team")
local targetTeam = targetLeaderstats:FindFirstChild("Team") or targetLeaderstats:FindFirstChild("team")
if playerTeam and targetTeam and playerTeam.Value == targetTeam.Value then
return true
end
end
return false
end)
if not success then
return false
end
return result
end
-- Godmode function
local function updateGodmode()
if not player.Character then return end
local humanoid = player.Character:FindFirstChild("Humanoid")
if humanoid then
if settings.godmode then
humanoid.Health = humanoid.MaxHealth
-- Prevent damage by disconnecting connections
for _, connection in pairs(getconnections(humanoid.HealthChanged)) do
connection:Disable()
end
else
-- Re-enable connections (this is simplified - in practice you'd need to track original state)
for _, connection in pairs(getconnections(humanoid.HealthChanged)) do
connection:Enable()
end
end
end
end
-- Super Speed function
local function updateSuperSpeed()
if not player.Character then return end
local humanoid = player.Character:FindFirstChild("Humanoid")
if humanoid then
if settings.superSpeed then
humanoid.WalkSpeed = originalWalkSpeed * settings.speedMultiplier
else
humanoid.WalkSpeed = originalWalkSpeed
end
end
end
-- Teleport function
local function teleportToPlayer(playerName)
local targetPlayer = nil
-- Find player by name
for _, p in pairs(Players:GetPlayers()) do
if string.lower(p.Name) == string.lower(playerName) or string.lower(p.DisplayName) == string.lower(playerName) then
targetPlayer = p
break
end
end
if not targetPlayer then
print("❌ Player not found: " .. playerName)
return false
end
if not targetPlayer.Character then
print("❌ Player has no character: " .. playerName)
return false
end
local targetRoot = targetPlayer.Character:FindFirstChild("HumanoidRootPart")
if not targetRoot then
print("❌ Player has no HumanoidRootPart: " .. playerName)
return false
end
if not player.Character then
print("❌ You have no character")
return false
end
local playerRoot = player.Character:FindFirstChild("HumanoidRootPart")
if not playerRoot then
print("❌ You have no HumanoidRootPart")
return false
end
-- Teleport
playerRoot.CFrame = targetRoot.CFrame + Vector3.new(0, 3, 0) -- Slightly above to avoid getting stuck
print("✅ Teleported to: " .. targetPlayer.Name)
return true
end
-- Get weapon/tool name from player
local function getPlayerWeapon(targetPlayer)
if not targetPlayer.Character then return "None" end
local tool = nil
-- Check for equipped tool in character
for _, item in pairs(targetPlayer.Character:GetChildren()) do
if item:IsA("Tool") then
tool = item
break
end
end
-- If no equipped tool, check backpack
if not tool and targetPlayer:FindFirstChild("Backpack") then
for _, item in pairs(targetPlayer.Backpack:GetChildren()) do
if item:IsA("Tool") then
tool = item
break
end
end
end
-- Check for other weapon-like items
if not tool then
for _, item in pairs(targetPlayer.Character:GetChildren()) do
if item:IsA("Model") and (string.find(string.lower(item.Name), "gun") or
string.find(string.lower(item.Name), "weapon") or
string.find(string.lower(item.Name), "sword") or
string.find(string.lower(item.Name), "rifle") or
string.find(string.lower(item.Name), "pistol") or
string.find(string.lower(item.Name), "bow")) then
tool = item
break
end
end
end
return tool and tool.Name or "None"
end
-- WORKING Console detection function
local function getPlayerPlatform(targetPlayer)
-- Check cache first
if playerPlatforms[targetPlayer] then
return playerPlatforms[targetPlayer]
end
local platform = "PC" -- Default to PC
-- Method 1: Check PlayerGui for mobile touch elements
local success1, result1 = pcall(function()
if targetPlayer:FindFirstChild("PlayerGui") then
local playerGui = targetPlayer.PlayerGui
-- Check for mobile-specific GUI elements
for _, gui in pairs(playerGui:GetChildren()) do
if string.find(string.lower(gui.Name), "touch") or
string.find(string.lower(gui.Name), "mobile") or
string.find(string.lower(gui.Name), "phone") then
return "MOBILE"
end
end
end
return nil
end)
if success1 and result1 then
platform = result1
end
-- Method 2: Check player's character for platform-specific accessories
if platform == "PC" then
local success2, result2 = pcall(function()
if targetPlayer.Character then
-- Check for console-specific accessories or gear
for _, item in pairs(targetPlayer.Character:GetChildren()) do
if item:IsA("Accessory") or item:IsA("Tool") then
local itemName = string.lower(item.Name)
if string.find(itemName, "xbox") or string.find(itemName, "console") then
return "XBOX"
elseif string.find(itemName, "ps") or string.find(itemName, "playstation") then
return "PLAYSTATION"
elseif string.find(itemName, "mobile") or string.find(itemName, "phone") then
return "MOBILE"
end
end
end
end
return nil
end)
if success2 and result2 then
platform = result2
end
end
-- Method 3: Check player's appearance/outfit for platform hints
if platform == "PC" then
local success3, result3 = pcall(function()
if targetPlayer:FindFirstChild("Character") and targetPlayer.Character:FindFirstChild("Head") then
local head = targetPlayer.Character.Head
-- Check for platform-specific decals or meshes
for _, face in pairs(head:GetChildren()) do
if face:IsA("Decal") or face:IsA("Texture") then
local faceName = string.lower(face.Name)
if string.find(faceName, "xbox") or string.find(faceName, "console") then
return "XBOX"
elseif string.find(faceName, "ps") or string.find(faceName, "playstation") then
return "PLAYSTATION"
end
end
end
end
return nil
end)
if success3 and result3 then
platform = result3
end
end
-- Method 4: Check player's name for platform indicators
if platform == "PC" then
local playerName = string.lower(targetPlayer.Name)
local displayName = string.lower(targetPlayer.DisplayName)
if string.find(playerName, "xbox") or string.find(playerName, "_xb") or string.find(playerName, "[xbox]") or
string.find(displayName, "xbox") or string.find(displayName, "_xb") or string.find(displayName, "[xbox]") then
platform = "XBOX"
elseif string.find(playerName, "ps") or string.find(playerName, "playstation") or string.find(playerName, "_ps") or
string.find(displayName, "ps") or string.find(displayName, "playstation") or string.find(displayName, "_ps") then
platform = "PLAYSTATION"
elseif string.find(playerName, "mobile") or string.find(playerName, "phone") or string.find(playerName, "android") or string.find(playerName, "ios") or
string.find(displayName, "mobile") or string.find(displayName, "phone") or string.find(displayName, "android") or string.find(displayName, "ios") then
platform = "MOBILE"
end
end
-- Method 5: Use movement analysis to detect mobile vs console vs PC
if platform == "PC" and targetPlayer.Character then
local success5, result5 = pcall(function()
local humanoid = targetPlayer.Character:FindFirstChild("Humanoid")
if humanoid then
-- Mobile players often have more "jittery" movement
local moveDir = humanoid.MoveDirection
-- This is a simple heuristic
if moveDir.Magnitude > 0 then
-- Check for very smooth movement (common on consoles with analog sticks)
local isVerySmooth = math.abs(moveDir.X) > 0.1 and math.abs(moveDir.X) < 0.9 and
math.abs(moveDir.Z) > 0.1 and math.abs(moveDir.Z) < 0.9
if isVerySmooth then
return "CONSOLE"
end
end
end
return nil
end)
if success5 and result5 then
platform = result5
end
end
-- Method 6: Check if player is in console-specific groups
if platform == "PC" then
local success6, result6 = pcall(function()
-- Xbox players often have specific group IDs
local inXboxGroup = false
local inPSGroup = false
for _, groupId in pairs(targetPlayer:GetGroups()) do
-- Common Xbox-related group IDs
if groupId == 1 or groupId == 7 or groupId == 1200769 then -- Some known Xbox groups
inXboxGroup = true
end
-- Common PlayStation-related group IDs
if groupId == 2 or groupId == 8 then -- Some known PlayStation groups
inPSGroup = true
end
end
if inXboxGroup then return "XBOX" end
if inPSGroup then return "PLAYSTATION" end
return nil
end)
if success6 and result6 then
platform = result6
end
end
-- Cache and return the result
playerPlatforms[targetPlayer] = platform
return platform
end
-- Function to manually override platform detection (for testing)
local function setPlayerPlatform(targetPlayer, platform)
playerPlatforms[targetPlayer] = platform
print("🎮 Manually set " .. targetPlayer.Name .. " to: " .. platform)
end
-- Function to simulate different platforms for testing
local function simulatePlatforms()
print("🧪 Simulating platforms for testing...")
local allPlayers = Players:GetPlayers()
-- Set first other player as Xbox
if #allPlayers >= 2 then
setPlayerPlatform(allPlayers[2], "XBOX")
end
-- Set second other player as PlayStation
if #allPlayers >= 3 then
setPlayerPlatform(allPlayers[3], "PLAYSTATION")
end
-- Set third other player as Mobile
if #allPlayers >= 4 then
setPlayerPlatform(allPlayers[4], "MOBILE")
end
print("✅ Platform simulation complete")
end
-- Ariel Cheats Notification
local function createNotification()
local notif = Instance.new("ScreenGui")
notif.Name = "ArielCheatsNotification"
notif.Parent = CoreGui
local frame = Instance.new("Frame")
frame.Size = UDim2.new(0, 300, 0, 80)
frame.Position = UDim2.new(0.5, -150, 0.1, 0)
frame.BackgroundColor3 = Color3.new(0,0,0)
frame.BorderSizePixel = 2
frame.BorderColor3 = Color3.fromRGB(148, 0, 211) -- Purple border
frame.Parent = notif
local label = Instance.new("TextLabel")
label.Size = UDim2.new(1,0,1,0)
label.BackgroundTransparency = 1
label.Text = "Ariel Cheats Loaded\nRight Shift = Menu\nRight Click = Aimbot"
label.TextColor3 = Color3.new(1,1,1)
label.TextScaled = true
label.Parent = frame
delay(5, function()
if notif then
notif:Destroy()
end
end)
end
createNotification()
-- Create FOV Circle
local function createFOVCircle()
local circle = Drawing.new("Circle")
circle.Visible = settings.fovCircle
circle.Transparency = 1
circle.Color = Color3.new(1, 1, 1) -- White color (original)
circle.Thickness = 2
circle.NumSides = 64
circle.Radius = settings.fovSize
circle.Filled = false
return circle
end
-- Create ESP for player
local function createESP(targetPlayer)
if targetPlayer == player then return end
local esp = {
box = {}, -- Changed to table for multiple box lines
tracer = Drawing.new("Line"),
name = Drawing.new("Text"),
distance = Drawing.new("Text"),
healthbar = Drawing.new("Line"),
healthtext = Drawing.new("Text"),
skeleton = {},
console = Drawing.new("Text"),
weapon = Drawing.new("Text") -- New weapon ESP
}
-- Initialize box lines (4 lines for the box)
for i = 1, 4 do
esp.box[i] = Drawing.new("Line")
esp.box[i].Visible = false
esp.box[i].Thickness = 2
esp.box[i].Color = Color3.new(1, 1, 1) -- White (original)
end
esp.tracer.Visible = false
esp.tracer.Thickness = 1
esp.tracer.Color = Color3.new(1, 1, 1) -- White (original)
esp.name.Visible = false
esp.name.Size = 14
esp.name.Outline = true
esp.name.Color = Color3.new(1, 1, 1) -- White (original)
esp.distance.Visible = false
esp.distance.Size = 12
esp.distance.Outline = true
esp.distance.Color = Color3.new(0.7, 0.7, 1) -- Light blue (original)
esp.healthbar.Visible = false
esp.healthbar.Thickness = 3
esp.healthbar.Color = Color3.new(0, 1, 0) -- Green (original)
esp.healthtext.Visible = false
esp.healthtext.Size = 12
esp.healthtext.Outline = true
esp.healthtext.Color = Color3.new(1, 1, 1) -- White (original)
esp.console.Visible = false
esp.console.Size = 12
esp.console.Outline = true
esp.console.Color = Color3.new(1, 0.5, 0) -- Orange for console text
esp.weapon.Visible = false
esp.weapon.Size = 12
esp.weapon.Outline = true
esp.weapon.Color = Color3.new(1, 1, 0) -- Yellow for weapon text
-- Create skeleton lines (red - original)
local boneConnections = {
{"Head", "UpperTorso"},
{"UpperTorso", "LowerTorso"},
{"UpperTorso", "LeftUpperArm"}, {"LeftUpperArm", "LeftLowerArm"}, {"LeftLowerArm", "LeftHand"},
{"UpperTorso", "RightUpperArm"}, {"RightUpperArm", "RightLowerArm"}, {"RightLowerArm", "RightHand"},
{"LowerTorso", "LeftUpperLeg"}, {"LeftUpperLeg", "LeftLowerLeg"}, {"LeftLowerLeg", "LeftFoot"},
{"LowerTorso", "RightUpperLeg"}, {"RightUpperLeg", "RightLowerLeg"}, {"RightLowerLeg", "RightFoot"}
}
for i = 1, #boneConnections do
local line = Drawing.new("Line")
line.Visible = false
line.Thickness = 1
line.Color = Color3.new(1, 0, 0) -- Red skeleton lines (original)
esp.skeleton[i] = line
end
return esp
end
-- Update Box ESP (head to toe)
local function updateBoxESP(esp, character)
if not settings.boxes2d then
for i = 1, 4 do
if esp.box[i] then
esp.box[i].Visible = false
end
end
return
end
local head = character:FindFirstChild("Head")
local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
local leftFoot = character:FindFirstChild("LeftFoot") or character:FindFirstChild("LeftLowerLeg")
local rightFoot = character:FindFirstChild("RightFoot") or character:FindFirstChild("RightLowerLeg")
if not head or not humanoidRootPart then
for i = 1, 4 do
if esp.box[i] then
esp.box[i].Visible = false
end
end
return
end
-- Get screen positions for key body parts
local headPos, headVisible = camera:WorldToViewportPoint(head.Position)
local rootPos, rootVisible = camera:WorldToViewportPoint(humanoidRootPart.Position)
-- Calculate foot position (average of both feet or use root position as fallback)
local footPos
if leftFoot and rightFoot then
local leftPos = camera:WorldToViewportPoint(leftFoot.Position)
local rightPos = camera:WorldToViewportPoint(rightFoot.Position)
if leftPos.Z > 0 and rightPos.Z > 0 then
footPos = Vector2.new((leftPos.X + rightPos.X) / 2, math.max(leftPos.Y, rightPos.Y))
else
footPos = Vector2.new(rootPos.X, rootPos.Y + 50) -- Fallback
end
else
footPos = Vector2.new(rootPos.X, rootPos.Y + 50) -- Fallback
end
if headVisible and rootVisible then
local headScreenPos = Vector2.new(headPos.X, headPos.Y)
local footScreenPos = footPos
-- Calculate box dimensions
local height = math.abs(footScreenPos.Y - headScreenPos.Y)
local width = height * 0.5 -- Width is half of height
-- Calculate box corners
local topLeft = Vector2.new(headScreenPos.X - width/2, headScreenPos.Y)
local topRight = Vector2.new(headScreenPos.X + width/2, headScreenPos.Y)
local bottomLeft = Vector2.new(headScreenPos.X - width/2, footScreenPos.Y)
local bottomRight = Vector2.new(headScreenPos.X + width/2, footScreenPos.Y)
-- Update box lines
if esp.box[1] then -- Top line
esp.box[1].From = topLeft
esp.box[1].To = topRight
esp.box[1].Visible = true
end
if esp.box[2] then -- Right line
esp.box[2].From = topRight
esp.box[2].To = bottomRight
esp.box[2].Visible = true
end
if esp.box[3] then -- Bottom line
esp.box[3].From = bottomRight
esp.box[3].To = bottomLeft
esp.box[3].Visible = true
end
if esp.box[4] then -- Left line
esp.box[4].From = bottomLeft
esp.box[4].To = topLeft
esp.box[4].Visible = true
end
else
for i = 1, 4 do
if esp.box[i] then
esp.box[i].Visible = false
end
end
end
end
-- Update Skeleton ESP
local function updateSkeleton(esp, character)
if not settings.skeleton then
for i = 1, #esp.skeleton do
if esp.skeleton[i] then
esp.skeleton[i].Visible = false
end
end
return
end
local boneConnections = {
{"Head", "UpperTorso"},
{"UpperTorso", "LowerTorso"},
{"UpperTorso", "LeftUpperArm"}, {"LeftUpperArm", "LeftLowerArm"}, {"LeftLowerArm", "LeftHand"},
{"UpperTorso", "RightUpperArm"}, {"RightUpperArm", "RightLowerArm"}, {"RightLowerArm", "RightHand"},
{"LowerTorso", "LeftUpperLeg"}, {"LeftUpperLeg", "LeftLowerLeg"}, {"LeftLowerLeg", "LeftFoot"},
{"LowerTorso", "RightUpperLeg"}, {"RightUpperLeg", "RightLowerLeg"}, {"RightLowerLeg", "RightFoot"}
}
for i, connection in ipairs(boneConnections) do
local part1 = character:FindFirstChild(connection[1])
local part2 = character:FindFirstChild(connection[2])
if part1 and part2 and esp.skeleton[i] then
local screenPos1, visible1 = camera:WorldToViewportPoint(part1.Position)
local screenPos2, visible2 = camera:WorldToViewportPoint(part2.Position)
if visible1 and visible2 then
esp.skeleton[i].From = Vector2.new(screenPos1.X, screenPos1.Y)
esp.skeleton[i].To = Vector2.new(screenPos2.X, screenPos2.Y)
esp.skeleton[i].Visible = true
else
esp.skeleton[i].Visible = false
end
elseif esp.skeleton[i] then
esp.skeleton[i].Visible = false
end
end
end
-- Update Weapon ESP
local function updateWeaponESP(esp, targetPlayer, screenPosition)
if not settings.gunESP then
if esp.weapon then
esp.weapon.Visible = false
end
return
end
local weaponName = getPlayerWeapon(targetPlayer)
if weaponName and esp.weapon then
esp.weapon.Text = "Weapon: " .. weaponName
esp.weapon.Position = Vector2.new(screenPosition.X, screenPosition.Y + 60)
esp.weapon.Visible = true
elseif esp.weapon then
esp.weapon.Visible = false
end
end
-- Update ESP
local function updateESP()
if not settings.esp then
for _, esp in pairs(espData) do
for name, drawing in pairs(esp) do
if name == "skeleton" then
for i, bone in ipairs(drawing) do
if bone then bone.Visible = false end
end
elseif name == "box" then
for i, line in ipairs(drawing) do
if line then line.Visible = false end
end
elseif drawing then
drawing.Visible = false
end
end
end
return
end
for _, targetPlayer in pairs(Players:GetPlayers()) do
if targetPlayer ~= player and targetPlayer.Character then
-- Check if player is teammate (skip if they are)
if isTeammate(targetPlayer) then
if espData[targetPlayer] then
local esp = espData[targetPlayer]
for name, drawing in pairs(esp) do
if name == "skeleton" then
for i, bone in ipairs(drawing) do
if bone then bone.Visible = false end
end
elseif name == "box" then
for i, line in ipairs(drawing) do
if line then line.Visible = false end
end
elseif drawing then
drawing.Visible = false
end
end
end
continue -- Skip this player
end
local character = targetPlayer.Character
local humanoid = character:FindFirstChild("Humanoid")
local rootPart = character:FindFirstChild("HumanoidRootPart")
if humanoid and humanoid.Health > 0 and rootPart then
local screenPosition, onScreen = camera:WorldToViewportPoint(rootPart.Position)
if onScreen then
if not espData[targetPlayer] then
espData[targetPlayer] = createESP(targetPlayer)
end
local esp = espData[targetPlayer]
local distance = (rootPart.Position - camera.CFrame.Position).Magnitude
-- Box ESP (head to toe)
updateBoxESP(esp, character)
-- Tracers
if settings.tracers then
esp.tracer.From = Vector2.new(camera.ViewportSize.X / 2, camera.ViewportSize.Y)
esp.tracer.To = Vector2.new(screenPosition.X, screenPosition.Y)
esp.tracer.Visible = true
else
esp.tracer.Visible = false
end
-- Name
if settings.names then
esp.name.Text = targetPlayer.Name
esp.name.Position = Vector2.new(screenPosition.X, screenPosition.Y - 50)
esp.name.Visible = true
else
esp.name.Visible = false
end
-- Distance
if settings.distance then
esp.distance.Text = math.floor(distance) .. "m"
esp.distance.Position = Vector2.new(screenPosition.X, screenPosition.Y - 35)
esp.distance.Visible = true
else
esp.distance.Visible = false
end
-- Console Detection
if settings.consoleDetection then
local platform = getPlayerPlatform(targetPlayer)
esp.console.Text = "[" .. platform .. "]"
esp.console.Position = Vector2.new(screenPosition.X, screenPosition.Y - 65)
esp.console.Visible = true
else
esp.console.Visible = false
end
-- Weapon ESP
updateWeaponESP(esp, targetPlayer, screenPosition)
-- Health Bar
if settings.healthbar then
local healthPercent = humanoid.Health / humanoid.MaxHealth
local barLength = 40
local barY = screenPosition.Y + 45
esp.healthbar.From = Vector2.new(screenPosition.X - barLength/2, barY)
esp.healthbar.To = Vector2.new(screenPosition.X - barLength/2 + barLength * healthPercent, barY)
esp.healthbar.Color = Color3.new(1 - healthPercent, healthPercent, 0)
esp.healthbar.Visible = true
esp.healthtext.Text = math.floor(humanoid.Health) .. "/" .. math.floor(humanoid.MaxHealth)
esp.healthtext.Position = Vector2.new(screenPosition.X, barY + 10)
esp.healthtext.Visible = true
else
esp.healthbar.Visible = false
esp.healthtext.Visible = false
end
-- Skeleton ESP
updateSkeleton(esp, character)
else
if espData[targetPlayer] then
local esp = espData[targetPlayer]
for name, drawing in pairs(esp) do
if name == "skeleton" then
for i, bone in ipairs(drawing) do
if bone then bone.Visible = false end
end
elseif name == "box" then
for i, line in ipairs(drawing) do
if line then line.Visible = false end
end
elseif drawing then
drawing.Visible = false
end
end
end
end
else
if espData[targetPlayer] then
local esp = espData[targetPlayer]
for name, drawing in pairs(esp) do
if name == "skeleton" then
for i, bone in ipairs(drawing) do
if bone then bone.Visible = false end
end
elseif name == "box" then
for i, line in ipairs(drawing) do
if line then line.Visible = false end
end
elseif drawing then
drawing.Visible = false
end
end
end
end
else
if espData[targetPlayer] then
local esp = espData[targetPlayer]
for name, drawing in pairs(esp) do
if name == "skeleton" then
for i, bone in ipairs(drawing) do
if bone then bone.Visible = false end
end
elseif name == "box" then
for i, line in ipairs(drawing) do
if line then line.Visible = false end
end
elseif drawing then
drawing.Visible = false
end
end
end
end
end
end
-- AIMBOT FUNCTIONS
local function findTarget()
if not settings.aimbot then return nil end
if not player.Character then return nil end
local closest = nil
local closestDistance = settings.maxDistance
local myPosition = player.Character:FindFirstChild("HumanoidRootPart")
if not myPosition then return nil end
for _, targetPlayer in pairs(Players:GetPlayers()) do
if targetPlayer ~= player and targetPlayer.Character then
-- Skip teammates for aimbot too
if isTeammate(targetPlayer) then
continue
end
local targetRoot = targetPlayer.Character:FindFirstChild("HumanoidRootPart")
local humanoid = targetPlayer.Character:FindFirstChild("Humanoid")
if targetRoot and humanoid and humanoid.Health > 0 then
local screenPoint = camera:WorldToViewportPoint(targetRoot.Position)
local mousePos = Vector2.new(mouse.X, mouse.Y)
local targetScreenPos = Vector2.new(screenPoint.X, screenPoint.Y)
local screenDistance = (targetScreenPos - mousePos).Magnitude
local worldDistance = (targetRoot.Position - myPosition.Position).Magnitude
if screenDistance <= settings.fovSize and worldDistance <= settings.maxDistance then
if worldDistance < closestDistance then
closestDistance = worldDistance
closest = targetRoot
end
end
end
end
end
return closest
end
local function aimAt(target)
if not target then return end
local cameraCFrame = camera.CFrame
local targetPosition = target.Position
local head = target.Parent:FindFirstChild("Head")
if head then
targetPosition = head.Position
end
local lookVector = (targetPosition - cameraCFrame.Position).Unit
local newCFrame = CFrame.new(cameraCFrame.Position, cameraCFrame.Position + lookVector)
local smoothness = math.max(1, settings.smoothness)
camera.CFrame = cameraCFrame:Lerp(newCFrame, 1 / smoothness)
end
-- Create Ariel Cheats Menu with Draggable Functionality and Tabs
local menuGui = Instance.new("ScreenGui")
menuGui.Name = "ArielCheatsMenu"
menuGui.Parent = CoreGui
-- Increase menu height to fit all content
local menuFrame = Instance.new("Frame")
menuFrame.Size = UDim2.new(0, 300, 0, 520) -- Increased height for new content
menuFrame.Position = UDim2.new(0.5, -150, 0.5, -260) -- Adjusted position for new height
menuFrame.BackgroundColor3 = Color3.new(0.1, 0.1, 0.1)
menuFrame.BorderSizePixel = 2
menuFrame.BorderColor3 = Color3.fromRGB(148, 0, 211) -- Purple border
menuFrame.Visible = false
menuFrame.Parent = menuGui
-- Make title bar draggable
local titleBar = Instance.new("Frame")
titleBar.Size = UDim2.new(1, 0, 0, 30)
titleBar.BackgroundColor3 = Color3.fromRGB(75, 0, 130) -- Dark purple
titleBar.BorderSizePixel = 0
titleBar.Parent = menuFrame
local title = Instance.new("TextLabel")
title.Text = "ARIEL CHEATS v1.4"
title.Size = UDim2.new(1, 0, 1, 0)
title.BackgroundTransparency = 1
title.TextColor3 = Color3.new(1, 1, 1)
title.TextScaled = true
title.Parent = titleBar
-- Tab buttons
local tabFrame = Instance.new("Frame")
tabFrame.Size = UDim2.new(1, 0, 0, 30)
tabFrame.Position = UDim2.new(0, 0, 0, 30)
tabFrame.BackgroundColor3 = Color3.new(0.15, 0.15, 0.15)
tabFrame.BorderSizePixel = 0
tabFrame.Parent = menuFrame
local aimbotTab = Instance.new("TextButton")
aimbotTab.Text = "AIMBOT"
aimbotTab.Size = UDim2.new(0.33, 0, 1, 0)
aimbotTab.Position = UDim2.new(0, 0, 0, 0)
aimbotTab.BackgroundColor3 = Color3.fromRGB(148, 0, 211) -- Purple
aimbotTab.TextColor3 = Color3.new(1, 1, 1)
aimbotTab.Parent = tabFrame
local espTab = Instance.new("TextButton")
espTab.Text = "ESP"
espTab.Size = UDim2.new(0.33, 0, 1, 0)
espTab.Position = UDim2.new(0.33, 0, 0, 0)
espTab.BackgroundColor3 = Color3.new(0.15, 0.15, 0.15)
espTab.TextColor3 = Color3.new(0.7, 0.7, 0.7)
espTab.Parent = tabFrame
local miscTab = Instance.new("TextButton")
miscTab.Text = "MISC"
miscTab.Size = UDim2.new(0.34, 0, 1, 0)
miscTab.Position = UDim2.new(0.66, 0, 0, 0)
miscTab.BackgroundColor3 = Color3.new(0.15, 0.15, 0.15)
miscTab.TextColor3 = Color3.new(0.7, 0.7, 0.7)
miscTab.Parent = tabFrame
-- Content frames for tabs
local contentFrame = Instance.new("Frame")
contentFrame.Size = UDim2.new(1, 0, 1, -170) -- Adjusted for new content
contentFrame.Position = UDim2.new(0, 0, 0, 60)
contentFrame.BackgroundTransparency = 1
contentFrame.Parent = menuFrame
-- Aimbot content frame
local aimbotContent = Instance.new("Frame")
aimbotContent.Size = UDim2.new(1, 0, 1, 0)
aimbotContent.BackgroundTransparency = 1
aimbotContent.Visible = true
aimbotContent.Parent = contentFrame
-- ESP content frame
local espContent = Instance.new("Frame")
espContent.Size = UDim2.new(1, 0, 1, 0)
espContent.BackgroundTransparency = 1
espContent.Visible = false
espContent.Parent = contentFrame
-- Misc content frame
local miscContent = Instance.new("Frame")
miscContent.Size = UDim2.new(1, 0, 1, 0)
miscContent.BackgroundTransparency = 1
miscContent.Visible = false
miscContent.Parent = contentFrame
-- Function to switch tabs
local function switchTab(tab)
currentTab = tab
-- Reset all tabs
aimbotTab.BackgroundColor3 = Color3.new(0.15, 0.15, 0.15)
aimbotTab.TextColor3 = Color3.new(0.7, 0.7, 0.7)
espTab.BackgroundColor3 = Color3.new(0.15, 0.15, 0.15)
espTab.TextColor3 = Color3.new(0.7, 0.7, 0.7)
miscTab.BackgroundColor3 = Color3.new(0.15, 0.15, 0.15)
miscTab.TextColor3 = Color3.new(0.7, 0.7, 0.7)
-- Hide all content
aimbotContent.Visible = false
espContent.Visible = false
miscContent.Visible = false
-- Activate selected tab
if tab == "Aimbot" then
aimbotTab.BackgroundColor3 = Color3.fromRGB(148, 0, 211)
aimbotTab.TextColor3 = Color3.new(1, 1, 1)
aimbotContent.Visible = true
elseif tab == "ESP" then
espTab.BackgroundColor3 = Color3.fromRGB(148, 0, 211)
espTab.TextColor3 = Color3.new(1, 1, 1)
espContent.Visible = true
elseif tab == "Misc" then
miscTab.BackgroundColor3 = Color3.fromRGB(148, 0, 211)
miscTab.TextColor3 = Color3.new(1, 1, 1)
miscContent.Visible = true
end
end
aimbotTab.MouseButton1Click:Connect(function()
switchTab("Aimbot")
end)
espTab.MouseButton1Click:Connect(function()
switchTab("ESP")
end)
miscTab.MouseButton1Click:Connect(function()
switchTab("Misc")
end)
-- Dragging variables
local dragging = false
local dragInput, dragStart, startPos
-- Dragging functions
local function updateInput(input)
local delta = input.Position - dragStart
menuFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end
titleBar.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = true
dragStart = input.Position
startPos = menuFrame.Position
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then
dragging = false
end
end)
end
end)
titleBar.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement then
dragInput = input
end
end)
UserInputService.InputChanged:Connect(function(input)
if input == dragInput and dragging then
updateInput(input)
end
end)
-- Toggle function
local function addToggle(text, settingName, parentFrame, yPosition)
local toggleFrame = Instance.new("Frame")
toggleFrame.Size = UDim2.new(0.9, 0, 0, 25)
toggleFrame.Position = UDim2.new(0.05, 0, 0, yPosition)
toggleFrame.BackgroundTransparency = 1
toggleFrame.Parent = parentFrame
local label = Instance.new("TextLabel")
label.Text = text
label.Size = UDim2.new(0.6, 0, 1, 0)
label.BackgroundTransparency = 1
label.TextColor3 = Color3.new(1, 1, 1)
label.TextXAlignment = Enum.TextXAlignment.Left
label.Parent = toggleFrame
local button = Instance.new("TextButton")
button.Size = UDim2.new(0.3, 0, 0.8, 0)
button.Position = UDim2.new(0.7, 0, 0.1, 0)
button.Text = settings[settingName] and "ON" or "OFF"
button.BackgroundColor3 = settings[settingName] and Color3.fromRGB(0, 200, 0) or Color3.fromRGB(200, 0, 0)
button.Parent = toggleFrame
button.MouseButton1Click:Connect(function()
settings[settingName] = not settings[settingName]
button.Text = settings[settingName] and "ON" or "OFF"
button.BackgroundColor3 = settings[settingName] and Color3.fromRGB(0, 200, 0) or Color3.fromRGB(200, 0, 0)
-- Update features when toggled
if settingName == "superSpeed" then
updateSuperSpeed()
elseif settingName == "godmode" then
updateGodmode()
end
end)
return yPosition + 30
end
-- Simple slider implementation
local function createSlider(text, settingName, min, max, parentFrame, yPosition)
local sliderFrame = Instance.new("Frame")
sliderFrame.Size = UDim2.new(0.9, 0, 0, 40)
sliderFrame.Position = UDim2.new(0.05, 0, 0, yPosition)
sliderFrame.BackgroundTransparency = 1
sliderFrame.Parent = parentFrame
local label = Instance.new("TextLabel")
label.Text = text .. ": " .. settings[settingName]
label.Size = UDim2.new(1, 0, 0, 20)
label.BackgroundTransparency = 1
label.TextColor3 = Color3.new(1, 1, 1)
label.Parent = sliderFrame
local increase = Instance.new("TextButton")
increase.Text = "+"
increase.Size = UDim2.new(0.2, 0, 0, 20)
increase.Position = UDim2.new(0.8, 0, 0, 20)
increase.BackgroundColor3 = Color3.fromRGB(148, 0, 211) -- Purple
increase.Parent = sliderFrame
local decrease = Instance.new("TextButton")
decrease.Text = "-"
decrease.Size = UDim2.new(0.2, 0, 0, 20)
decrease.Position = UDim2.new(0.6, 0, 0, 20)
decrease.BackgroundColor3 = Color3.fromRGB(75, 0, 130) -- Dark purple
decrease.Parent = sliderFrame
increase.MouseButton1Click:Connect(function()
settings[settingName] = math.min(max, settings[settingName] + 1)
label.Text = text .. ": " .. settings[settingName]
if settingName == "speedMultiplier" then
updateSuperSpeed()
end
end)
decrease.MouseButton1Click:Connect(function()
settings[settingName] = math.max(min, settings[settingName] - 1)
label.Text = text .. ": " .. settings[settingName]
if settingName == "speedMultiplier" then
updateSuperSpeed()
end
end)
return yPosition + 45
end
-- Add content to Aimbot tab
local aimbotYPos = 10
aimbotYPos = addToggle("Aimbot", "aimbot", aimbotContent, aimbotYPos)
aimbotYPos = addToggle("FOV Circle", "fovCircle", aimbotContent, aimbotYPos)
aimbotYPos = createSlider("Smoothness", "smoothness", 1, 10, aimbotContent, aimbotYPos)
aimbotYPos = createSlider("FOV Size", "fovSize", 50, 500, aimbotContent, aimbotYPos)
aimbotYPos = createSlider("Max Distance", "maxDistance", 100, 5000, aimbotContent, aimbotYPos)
-- Add content to ESP tab
local espYPos = 10
espYPos = addToggle("ESP", "esp", espContent, espYPos)
espYPos = addToggle("2D Boxes", "boxes2d", espContent, espYPos)
espYPos = addToggle("Tracers", "tracers", espContent, espYPos)
espYPos = addToggle("Names", "names", espContent, espYPos)
espYPos = addToggle("Distance", "distance", espContent, espYPos)
espYPos = addToggle("Health Bar", "healthbar", espContent, espYPos)
espYPos = addToggle("Skeleton ESP", "skeleton", espContent, espYPos)
espYPos = addToggle("Console Detection", "consoleDetection", espContent, espYPos)
espYPos = addToggle("Team Check", "teamCheck", espContent, espYPos)
espYPos = addToggle("Gun ESP", "gunESP", espContent, espYPos)
-- Add content to Misc tab
local miscYPos = 10
miscYPos = addToggle("Godmode", "godmode", miscContent, miscYPos)
miscYPos = addToggle("Super Speed", "superSpeed", miscContent, miscYPos)
miscYPos = createSlider("Speed Multiplier", "speedMultiplier", 1, 10, miscContent, miscYPos)
-- Add teleport input to Misc tab
local teleportFrame = Instance.new("Frame")
teleportFrame.Size = UDim2.new(0.9, 0, 0, 60)
teleportFrame.Position = UDim2.new(0.05, 0, 0, miscYPos)
teleportFrame.BackgroundTransparency = 1
teleportFrame.Parent = miscContent
local teleportLabel = Instance.new("TextLabel")
teleportLabel.Text = "Teleport to Player:"
teleportLabel.Size = UDim2.new(1, 0, 0, 20)
teleportLabel.BackgroundTransparency = 1
teleportLabel.TextColor3 = Color3.new(1, 1, 1)
teleportLabel.TextXAlignment = Enum.TextXAlignment.Left
teleportLabel.Parent = teleportFrame
local teleportInput = Instance.new("TextBox")
teleportInput.Size = UDim2.new(1, 0, 0, 25)
teleportInput.Position = UDim2.new(0, 0, 0, 25)
teleportInput.BackgroundColor3 = Color3.new(0.2, 0.2, 0.2)
teleportInput.TextColor3 = Color3.new(1, 1, 1)
teleportInput.PlaceholderText = "Enter player name"
teleportInput.Parent = teleportFrame
local teleportButton = Instance.new("TextButton")
teleportButton.Text = "TELEPORT"
teleportButton.Size = UDim2.new(1, 0, 0, 25)
teleportButton.Position = UDim2.new(0, 0, 0, 55)
teleportButton.BackgroundColor3 = Color3.fromRGB(148, 0, 211)
teleportButton.TextColor3 = Color3.new(1, 1, 1)
teleportButton.Parent = teleportFrame
teleportButton.MouseButton1Click:Connect(function()
local playerName = teleportInput.Text
if playerName and playerName ~= "" then
teleportToPlayer(playerName)
teleportInput.Text = ""
end
end)
-- Adjust button positions to avoid overlap
local platformTestBtn = Instance.new("TextButton")
platformTestBtn.Text = "TEST PLATFORMS"
platformTestBtn.Size = UDim2.new(0.8, 0, 0, 25)
platformTestBtn.Position = UDim2.new(0.1, 0, 0, 400) -- Adjusted position
platformTestBtn.BackgroundColor3 = Color3.fromRGB(255, 165, 0) -- Orange
platformTestBtn.TextColor3 = Color3.new(1, 1, 1)
platformTestBtn.Parent = menuFrame
platformTestBtn.MouseButton1Click:Connect(function()
simulatePlatforms()
end)
-- Discord Button
local discordBtn = Instance.new("TextButton")
discordBtn.Text = "JOIN OUR DISCORD"
discordBtn.Size = UDim2.new(0.8, 0, 0, 30)
discordBtn.Position = UDim2.new(0.1, 0, 0, 430) -- Adjusted position
discordBtn.BackgroundColor3 = Color3.fromRGB(88, 101, 242) -- Discord blue
discordBtn.TextColor3 = Color3.new(1, 1, 1)
discordBtn.Parent = menuFrame
discordBtn.MouseButton1Click:Connect(function()
-- Create notification
local discordNotif = Instance.new("ScreenGui")
discordNotif.Name = "DiscordNotification"
discordNotif.Parent = CoreGui
local notifFrame = Instance.new("Frame")
notifFrame.Size = UDim2.new(0, 250, 0, 60)
notifFrame.Position = UDim2.new(0.5, -125, 0.2, 0)
notifFrame.BackgroundColor3 = Color3.new(0.1, 0.1, 0.1)
notifFrame.BorderSizePixel = 2
notifFrame.BorderColor3 = Color3.fromRGB(88, 101, 242)
notifFrame.Parent = discordNotif
local notifLabel = Instance.new("TextLabel")
notifLabel.Size = UDim2.new(1, 0, 1, 0)
notifLabel.BackgroundTransparency = 1
notifLabel.Text = "Opening Discord...\ndiscord.gg/arielcheats"
notifLabel.TextColor3 = Color3.new(1, 1, 1)
notifLabel.TextScaled = true
notifLabel.Parent = notifFrame
-- Open Discord link
local success, result = pcall(function()
game:GetService("StarterGui"):SetCore("OpenBrowserWindow", {
URL = "https://discord.gg/arielcheats"
})
end)
if not success then
notifLabel.Text = "Failed to open browser\nCopy: discord.gg/arielcheats"
end
delay(3, function()
if discordNotif then
discordNotif:Destroy()
end
end)
end)
-- Close Button
local closeBtn = Instance.new("TextButton")
closeBtn.Text = "CLOSE MENU"
closeBtn.Size = UDim2.new(0.8, 0, 0, 30)
closeBtn.Position = UDim2.new(0.1, 0, 0, 470) -- Adjusted position
closeBtn.BackgroundColor3 = Color3.fromRGB(200, 0, 0)
closeBtn.TextColor3 = Color3.new(1, 1, 1)
closeBtn.Parent = menuFrame
closeBtn.MouseButton1Click:Connect(function()
menuFrame.Visible = false
menuOpen = false
end)
-- Right Shift detection
UserInputService.InputBegan:Connect(function(input)
if input.KeyCode == Enum.KeyCode.RightShift then
menuOpen = not menuOpen
menuFrame.Visible = menuOpen
print("Ariel Cheats Menu toggled: " .. tostring(menuOpen))
end
end)
-- Create FOV Circle
drawings.fovCircle = createFOVCircle()
-- Main Game Loop
RunService.RenderStepped:Connect(function()
-- Update FOV Circle
if drawings.fovCircle then
drawings.fovCircle.Visible = settings.fovCircle
drawings.fovCircle.Radius = settings.fovSize
drawings.fovCircle.Position = Vector2.new(mouse.X, mouse.Y + 36)
end
-- Update ESP
updateESP()
-- Update Misc features
if settings.godmode then
updateGodmode()
end
if settings.superSpeed then
updateSuperSpeed()
end
-- AIMBOT
if settings.aimbot and not menuOpen then
if UserInputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton2) then
local target = findTarget()
if target then
aimAt(target)
end
end
end
end)
-- Test function to show detected platforms and teams
local function testPlatformDetection()
print("🔍 Testing platform detection...")
for _, targetPlayer in pairs(Players:GetPlayers()) do
local platform = getPlayerPlatform(targetPlayer)
local teammate = isTeammate(targetPlayer)
local weapon = getPlayerWeapon(targetPlayer)
print("🎮 " .. targetPlayer.Name .. " | Platform: " .. platform .. " | Teammate: " .. tostring(teammate) .. " | Weapon: " .. weapon)
end
print("✅ Platform detection test completed")
end
-- Run test after 5 seconds
delay(5, testPlatformDetection)
print("🎯 Ariel Cheats v1.4 loaded successfully!")
print("⚡ Features: Aimbot, ESP, FOV Circle, 2D Boxes, Tracers, Skeleton")
print("🎮 IMPROVED: Working Console Detection with Simulation")
print("🤝 NEW: Team ESP - Teammates are hidden when Team Check is enabled")
print("📦 UPDATED: Box ESP now goes from head to toe (like skeleton)")
print("🛡️ NEW MISC: Godmode, Super Speed, Teleport, Gun ESP")
print("🔫 GUN ESP: Auto ON - Shows weapons players are holding")
print("🔧 Controls: Right Shift = Menu, Right Click = Aimbot")
print("📊 Settings: Smoothness=" .. settings.smoothness .. ", FOV=" .. settings.fovSize)
print("🖱️ Drag the menu by clicking and holding the title bar")
print("🧪 Use 'TEST PLATFORMS' button to simulate different platforms")
print("💜 Menu: Purple theme | 🎯 ESP: Original colors")
wait(3)
print("✅ Ariel Cheats system fully operational!")



Told you guys I would cook leave suggestions in my discord at "Https://discord.gg/arielcheats"
Forgot to mention if esp doesn't show up in a game go to the esp tab and turn off team check