--// Bendecido Silent Aim - Shindo Life 2 (Mobile Optimized & Compact UI Edition) --// Engine: Janus & Tesavek Optimizations local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local Workspace = game:GetService("Workspace") local CoreGui = game:GetService("CoreGui") local LocalPlayer = Players.LocalPlayer local Camera = Workspace.CurrentCamera local Settings = { Enabled = true, FOV = 120, -- Reducido por defecto para pantallas móviles ShowFOV = true, TeamCheck = false, Prediction = 0.165, TargetPart = "HumanoidRootPart", AbilityInfRange = false, UseWhitelist = false, UseBlacklist = false, Whitelist = {}, Blacklist = {} } local GuiVisible = true -- Cache de funciones para 0 Lag local getrawmetatable = getrawmetatable or get_raw_metatable local hookmetamethod = hookmetamethod or hook_meta_method local getnamecallmethod = getnamecallmethod or get_namecall_method local Vector2_new = Vector2.new local CFrame_new = CFrame.new local math_floor = math.floor local WorldToViewportPoint = Camera.WorldToViewportPoint local CurrentTarget = nil local IsDragging = false --// GUI SETUP (COMPACTO PARA CELULAR) local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "Irving_MobileAim_" .. math.random(10000,99999) ScreenGui.Parent = CoreGui ScreenGui.ResetOnSpawn = false -- Botón Flotante para Ocultar/Mostrar el Menú Completo en Celular local FloatingToggleBtn = Instance.new("TextButton") FloatingToggleBtn.Size = UDim2.new(0, 45, 0, 45) FloatingToggleBtn.Position = UDim2.new(0.02, 0, 0.15, 0) FloatingToggleBtn.BackgroundColor3 = Color3.fromRGB(20, 20, 30) FloatingToggleBtn.Text = "⚙️" FloatingToggleBtn.TextSize = 20 FloatingToggleBtn.Parent = ScreenGui Instance.new("UICorner", FloatingToggleBtn).CornerRadius = UDim.new(1, 0) local MainFrame = Instance.new("Frame") MainFrame.Size = UDim2.new(0, 240, 0, 270) MainFrame.Position = UDim2.new(0.15, 0, 0.2, 0) MainFrame.BackgroundColor3 = Color3.fromRGB(15, 15, 22) MainFrame.BorderSizePixel = 0 MainFrame.Visible = true MainFrame.Parent = ScreenGui Instance.new("UICorner", MainFrame).CornerRadius = UDim.new(0, 8) local Title = Instance.new("TextLabel") Title.Size = UDim2.new(1, 0, 0, 25) Title.BackgroundColor3 = Color3.fromRGB(25, 25, 38) Title.Text = "🔥 Irving Mobile Aim" Title.TextColor3 = Color3.fromRGB(255, 80, 80) Title.TextSize = 12 Title.Font = Enum.Font.GothamBold Title.Parent = MainFrame Instance.new("UICorner", Title).CornerRadius = UDim.new(0, 8) local StatusLabel = Instance.new("TextLabel") StatusLabel.Size = UDim2.new(1, -10, 0, 20) StatusLabel.Position = UDim2.new(0, 5, 0, 30) StatusLabel.BackgroundTransparency = 1 StatusLabel.Text = "Estado: ✅ ACTIVADO" StatusLabel.TextColor3 = Color3.fromRGB(0, 255, 100) StatusLabel.TextSize = 10 StatusLabel.Font = Enum.Font.GothamBold StatusLabel.TextXAlignment = Enum.TextXAlignment.Left StatusLabel.Parent = MainFrame local FOVToggle = Instance.new("TextButton") FOVToggle.Size = UDim2.new(0.9, 0, 0, 26) FOVToggle.Position = UDim2.new(0.05, 0, 0, 55) FOVToggle.BackgroundColor3 = Color3.fromRGB(50, 50, 70) FOVToggle.Text = "👁️ FOV Visible: ON" FOVToggle.TextColor3 = Color3.fromRGB(255, 255, 255) FOVToggle.TextSize = 10 FOVToggle.Font = Enum.Font.GothamBold FOVToggle.Parent = MainFrame Instance.new("UICorner", FOVToggle).CornerRadius = UDim.new(0, 6) local TeamToggle = Instance.new("TextButton") TeamToggle.Size = UDim2.new(0.9, 0, 0, 26) TeamToggle.Position = UDim2.new(0.05, 0, 0, 87) TeamToggle.BackgroundColor3 = Color3.fromRGB(150, 50, 50) TeamToggle.Text = "👥 TeamCheck: OFF" TeamToggle.TextColor3 = Color3.fromRGB(255, 255, 255) TeamToggle.TextSize = 10 TeamToggle.Font = Enum.Font.GothamBold TeamToggle.Parent = MainFrame Instance.new("UICorner", TeamToggle).CornerRadius = UDim.new(0, 6) local InfRangeToggle = Instance.new("TextButton") InfRangeToggle.Size = UDim2.new(0.9, 0, 0, 26) InfRangeToggle.Position = UDim2.new(0.05, 0, 0, 119) InfRangeToggle.BackgroundColor3 = Color3.fromRGB(150, 50, 50) InfRangeToggle.Text = "🌀 Skills Inf Range: OFF" InfRangeToggle.TextColor3 = Color3.fromRGB(255, 255, 255) InfRangeToggle.TextSize = 10 InfRangeToggle.Font = Enum.Font.GothamBold InfRangeToggle.Parent = MainFrame Instance.new("UICorner", InfRangeToggle).CornerRadius = UDim.new(0, 6) -- Botón Maestro de Encendido/Apagado Rápido en UI local MasterToggle = Instance.new("TextButton") MasterToggle.Size = UDim2.new(0.9, 0, 0, 32) MasterToggle.Position = UDim2.new(0.05, 0, 0, 155) MasterToggle.BackgroundColor3 = Color3.fromRGB(40, 120, 80) MasterToggle.Text = "⚡ ON / OFF AIMBOT" MasterToggle.TextColor3 = Color3.fromRGB(255, 255, 255) MasterToggle.TextSize = 11 MasterToggle.Font = Enum.Font.GothamBold MasterToggle.Parent = MainFrame Instance.new("UICorner", MasterToggle).CornerRadius = UDim.new(0, 6) local InfoLabel = Instance.new("TextLabel") InfoLabel.Size = UDim2.new(0.9, 0, 0, 60) InfoLabel.Position = UDim2.new(0.05, 0, 0, 195) InfoLabel.BackgroundTransparency = 1 InfoLabel.Text = "💡 Tip: Usa el botón ⚙️ flotante para minimizar la interfaz y evitar estorbos." InfoLabel.TextColor3 = Color3.fromRGB(150, 150, 170) InfoLabel.TextSize = 9 InfoLabel.Font = Enum.Font.Gotham InfoLabel.TextWrapped = true InfoLabel.Parent = MainFrame -- FOV Circle local FOVCircle = Drawing.new("Circle") FOVCircle.Position = Vector2_new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2) FOVCircle.Radius = Settings.FOV FOVCircle.Color = Color3.fromRGB(255, 255, 255) FOVCircle.Thickness = 1.2 FOVCircle.Filled = false FOVCircle.Transparency = 1 FOVCircle.Visible = Settings.ShowFOV --// TARGET DETECTION local function GetBestTarget() local bestTarget = nil local shortestDistance = Settings.FOV -- En móviles usamos el centro de la pantalla si no hay puntero de ratón físico local screenCenter = Vector2_new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2) local myChar = LocalPlayer.Character local myTeam = LocalPlayer.Team if not myChar then return nil end for _, player in ipairs(Players:GetPlayers()) do if player ~= LocalPlayer and player.Character then if Settings.UseWhitelist and not Settings.Whitelist[player.Name] then continue end if Settings.UseBlacklist and Settings.Blacklist[player.Name] then continue end if Settings.TeamCheck and player.Team and myTeam and player.Team == myTeam then continue end local char = player.Character local hum = char:FindFirstChild("Humanoid") local root = char:FindFirstChild(Settings.TargetPart) if hum and root and hum.Health > 0 then local screenPos, onScreen = WorldToViewportPoint(Camera, root.Position) if onScreen then local dist = (Vector2_new(screenPos.X, screenPos.Y) - screenCenter).Magnitude if dist < shortestDistance then shortestDistance = dist bestTarget = { Player = player, Root = root, Position = root.Position, Velocity = root.AssemblyLinearVelocity, Distance = dist } end end end end end return bestTarget end --// BACKGROUND LOOPS task.spawn(function() while true do CurrentTarget = Settings.Enabled and GetBestTarget() or nil task.wait(0.05) end end) RunService.RenderStepped:Connect(function() if Settings.ShowFOV and GuiVisible then FOVCircle.Position = Vector2_new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2) end end) --// __NAMECALL NETWORK INTERCEPTION HOOK local oldNamecall oldNamecall = hookmetamethod(game, "__namecall", function(self, ...) if not Settings.Enabled or not CurrentTarget then return oldNamecall(self, ...) end local method = getnamecallmethod() local args = {...} if Settings.AbilityInfRange and (method == "Raycast" or method == "raycast") then local origin = args[1] local targetPos = CurrentTarget.Root.Position + (CurrentTarget.Velocity * Settings.Prediction) args[2] = (targetPos - origin).Unit * 4.999999721059845e+27 return oldNamecall(self, unpack(args)) end if method == "FireServer" or method == "fireServer" or method == "InvokeServer" then local modified = false local predictedLocation = CurrentTarget.Root.Position + (CurrentTarget.Velocity * Settings.Prediction) for i, arg in pairs(args) do if typeof(arg) == "Vector3" then args[i] = predictedLocation modified = true elseif typeof(arg) == "CFrame" then if Settings.AbilityInfRange then args[i] = CFrame_new(predictedLocation) else args[i] = CFrame_new(LocalPlayer.Character.Head.Position, predictedLocation) end modified = true elseif type(arg) == "table" then for k, v in pairs(arg) do if typeof(v) == "Vector3" then arg[k] = predictedLocation modified = true elseif typeof(v) == "CFrame" then if Settings.AbilityInfRange then arg[k] = CFrame_new(predictedLocation) else arg[k] = CFrame_new(LocalPlayer.Character.Head.Position, predictedLocation) end modified = true end end end end if modified then return oldNamecall(self, unpack(args)) end end return oldNamecall(self, ...) end) --// UI INTERACTIONS & TOUCH EVENTS FloatingToggleBtn.MouseButton1Click:Connect(function() GuiVisible = not GuiVisible MainFrame.Visible = GuiVisible FOVCircle.Visible = Settings.Enabled and Settings.ShowFOV and GuiVisible FloatingToggleBtn.BackgroundColor3 = GuiVisible and Color3.fromRGB(20, 20, 30) or Color3.fromRGB(120, 40, 40) end) MasterToggle.MouseButton1Click:Connect(function() Settings.Enabled = not Settings.Enabled StatusLabel.Text = Settings.Enabled and "Estado: ✅ ACTIVADO" or "Estado: ❌ DESACTIVADO" StatusLabel.TextColor3 = Settings.Enabled and Color3.fromRGB(0, 255, 100) or Color3.fromRGB(255, 50, 50) MasterToggle.BackgroundColor3 = Settings.Enabled and Color3.fromRGB(40, 120, 80) or Color3.fromRGB(150, 50, 50) FOVCircle.Visible = Settings.Enabled and Settings.ShowFOV and GuiVisible end) FOVToggle.MouseButton1Click:Connect(function() Settings.ShowFOV = not Settings.ShowFOV FOVCircle.Visible = Settings.ShowFOV and GuiVisible and Settings.Enabled FOVToggle.Text = Settings.ShowFOV and "👁️ FOV Visible: ON" or "👁️ FOV Visible: OFF" FOVToggle.BackgroundColor3 = Settings.ShowFOV and Color3.fromRGB(50, 50, 70) or Color3.fromRGB(70, 40, 40) end) TeamToggle.MouseButton1Click:Connect(function() Settings.TeamCheck = not Settings.TeamCheck TeamToggle.Text = Settings.TeamCheck and "👥 TeamCheck: ON" or "👥 TeamCheck: OFF" TeamToggle.BackgroundColor3 = Settings.TeamCheck and Color3.fromRGB(40, 120, 80) or Color3.fromRGB(150, 50, 50) end) InfRangeToggle.MouseButton1Click:Connect(function() Settings.AbilityInfRange = not Settings.AbilityInfRange InfRangeToggle.Text = Settings.AbilityInfRange and "🌀 Skills Inf Range: ON" or "🌀 Skills Inf Range: OFF" InfRangeToggle.BackgroundColor3 = Settings.AbilityInfRange and Color3.fromRGB(40, 120, 80) or Color3.fromRGB(150, 50, 50) end) -- Arrastre Táctil para el MainFrame (Móvil Friendly) local dragging, dragInput, dragStart, startPos Title.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = MainFrame.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) UserInputService.InputChanged:Connect(function(input) if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then local delta = input.Position - dragStart MainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end)