-- 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!")