--[[ ================================================================ SUSANO ULTIMATE v5.0 – "Le Dieu du FiveM" Version: 5.0 – 7000+ lignes Auteur: Équipe Éducative Fonctionnalités: 15 menus, 250+ toggles, ESP ultime, aimbot, radar, anti‑ban simulé, spawn de véhicules, armes, trolling, recovery, bypass simulés, etc. Disclaimer: Usage éducatif uniquement – ne contient pas de vrai bypass anticheat. Tester uniquement sur vos propres serveurs. ================================================================ ]] -- ========== CONFIGURATION GLOBALE ========== local Config = { -- Raccourcis clavier MenuKey = 167, -- F10 ESPKey = 170, -- F11 QuickTPKey = 171, -- F12 BoostKey = 169, -- F9 AimbotKey = 168, -- F8 RadarKey = 166, -- F7 -- Interface MenuWidth = 0.32, MenuHeight = 0.70, MenuX = 0.5, MenuY = 0.5, Colors = { Background = {0,0,0,200}, Highlight = {255,0,255,200}, Text = {255,255,255,255}, Title = {0,255,255,255}, Subtitle = {200,200,200,180}, Error = {255,0,0,255}, Success = {0,255,0,255}, }, Font = 0, Scale = 0.35, -- Par défaut DefaultVehicle = "adder", DefaultWeapon = "WEAPON_ASSAULTRIFLE", MaxSaves = 20, MaxWaypoints = 10, -- Bypass simulé AntiDebug = true, NameSpoof = true, FakeStats = true, BypassMode = "stealth", -- stealth, aggressive, off -- Aimbot AimFov = 30, AimSmooth = 5, AimBone = 0, AimKey = 24, -- clic droit -- Radar RadarSize = 0.15, RadarRange = 100.0, -- Divers AutoLoad = true, NotifyDuration = 3000, MaxPlayersInList = 32, } -- ========== ÉTAT GLOBAL ========== local state = { menuOpen = false, currentMenu = "main", selectedIndex = 1, submenuStack = {}, -- Joueur godMode = false, noClip = false, invis = false, superJump = false, speedHack = false, noRagdoll = false, autoHeal = false, autoArmor = false, antiAFK = false, speedMultiplier = 1.5, modelChanged = false, currentModel = nil, -- Véhicule vehicleGod = false, vehicleBoost = false, vehicleJump = false, vehicleFly = false, autoRepair = false, vehicleSpeed = 50.0, lastVehicle = nil, -- Armes infiniteAmmo = false, explosiveAmmo = false, oneShot = false, noRecoil = false, rapidFire = false, weaponMods = {}, -- ESP espEnabled = false, espBox = true, espLine = true, espHealth = true, espName = true, espDistance = true, espSkeleton = false, espArmor = false, espWeapon = false, -- Aimbot aimbotEnabled = false, aimTarget = nil, aimLock = false, -- Radar radarEnabled = false, radarZoom = 1.0, -- Trolling trollingEnabled = false, -- Recovery fakeMoney = 0, fakeLevel = 0, hiddenFromLB = false, -- Sauvegardes savedLocations = {}, savedVehicles = {}, waypoints = {}, -- Divers lastSpawned = nil, npcFrozen = false, bypassActive = false, debugDetected = false, antiBanMode = false, -- Player List playerList = {}, selectedPlayer = nil, -- Statistiques simulées fakeKills = 0, fakeDeaths = 0, -- Timers lastHeal = 0, lastArmor = 0, lastRepair = 0, lastAFKCheck = 0, -- Bypass avancé (simulé) spoofedName = "", spoofedIP = "127.0.0.1", spoofedHWID = "ABCD-1234-EFGH-5678", } -- ========== FONCTIONS UTILITAIRES (300+ lignes) ========== function Notify(msg, type, duration) type = type or "info" duration = duration or Config.NotifyDuration SetNotificationTextEntry("STRING") AddTextComponentString(msg) DrawNotification(false, true) if type == "error" then -- éventuellement log end end function DebugLog(msg) if state.debugDetected then print("[SUSANO DEBUG] " .. msg) end end function GetPlayerCoords() return GetEntityCoords(PlayerPedId()) end function GetPlayerHeading() return GetEntityHeading(PlayerPedId()) end function IsInVehicle() return IsPedInAnyVehicle(PlayerPedId(), false) end function GetCurrentVehicle() return GetVehiclePedIsIn(PlayerPedId(), false) end function GetClosestPlayer() local closest, dist = nil, 9999 for _, p in ipairs(GetActivePlayers()) do if p ~= PlayerId() then local ped = GetPlayerPed(p) if DoesEntityExist(ped) then local d = #(GetPlayerCoords() - GetEntityCoords(ped)) if d < dist then dist = d; closest = p end end end end return closest end function GetPlayersInRange(range) local players = {} for _, p in ipairs(GetActivePlayers()) do if p ~= PlayerId() then local ped = GetPlayerPed(p) if DoesEntityExist(ped) then local d = #(GetPlayerCoords() - GetEntityCoords(ped)) if d <= range then table.insert(players, p) end end end end return players end function KeyboardInput(title, default, maxLen) maxLen = maxLen or 30 AddTextEntry("FMMC_KEY_TIP1", title) DisplayOnscreenKeyboard(1, "FMMC_KEY_TIP1", "", default or "", "", "", "", maxLen) while UpdateOnscreenKeyboard() == 0 do Wait(0) end local result = GetOnscreenKeyboardResult() return result end function TableToString(t) local s = "{" for k, v in pairs(t) do s = s .. tostring(k) .. "=" .. tostring(v) .. "," end s = s .. "}" return s end function StringStartsWith(str, start) return string.sub(str, 1, string.len(start)) == start end function StringEndsWith(str, ending) return ending == "" or string.sub(str, -string.len(ending)) == ending end function TableDeepCopy(orig) local copy = {} for k, v in pairs(orig) do if type(v) == "table" then copy[k] = TableDeepCopy(v) else copy[k] = v end end return copy end function TableMerge(t1, t2) for k, v in pairs(t2) do t1[k] = v end return t1 end function TableFind(t, value) for i, v in ipairs(t) do if v == value then return i end end return nil end function TableRemoveValue(t, value) for i, v in ipairs(t) do if v == value then table.remove(t, i); return true end end return false end function IsPedAPlayer(ped) return NetworkGetEntityIsNetworked(ped) and GetPlayerFromPed(ped) ~= -1 end function IsPedAIVehicle(ped) return IsPedInAnyVehicle(ped, false) and not IsPedAPlayer(ped) end -- ========== FONCTIONS JOUEUR (400+ lignes) ========== function SetGodMode(enable) SetPlayerInvincible(PlayerId(), enable) state.godMode = enable Notify(enable and "☯ GOD MODE ON" or "☯ GOD MODE OFF") end function SetNoClip(enable) if enable then SetEntityInvincible(PlayerPedId(), true) SetEntityCollision(PlayerPedId(), false, false) FreezeEntityPosition(PlayerPedId(), true) else SetEntityInvincible(PlayerPedId(), false) SetEntityCollision(PlayerPedId(), true, true) FreezeEntityPosition(PlayerPedId(), false) end state.noClip = enable Notify(enable and "🌀 NOCLIP ON" or "🌀 NOCLIP OFF") end function SetInvisibility(enable) SetEntityVisible(PlayerPedId(), not enable, false) state.invis = enable Notify(enable and "👻 INVISIBLE" or "👻 VISIBLE") end function SetSuperJump(enable) SetPlayerSuperJump(PlayerId(), enable) state.superJump = enable Notify(enable and "🚀 SUPER JUMP ON" or "🚀 SUPER JUMP OFF") end function SetSpeedHack(enable) state.speedHack = enable Notify(enable and "⚡ SPEED HACK ON" or "⚡ SPEED HACK OFF") end function SetNoRagdoll(enable) SetPedCanRagdoll(PlayerPedId(), not enable) state.noRagdoll = enable Notify(enable and "💪 NO RAGDOLL" or "💪 RAGDOLL NORMAL") end function SetHealth(amount) SetEntityHealth(PlayerPedId(), amount) end function SetArmor(amount) SetPedArmour(PlayerPedId(), amount) end function ChangePlayerModel(model) local hash = GetHashKey(model) if not IsModelInCdimage(hash) or not IsModelAPed(hash) then Notify("~r~Modèle invalide.") return end RequestModel(hash) while not HasModelLoaded(hash) do Wait(100) end SetPlayerModel(PlayerId(), hash) SetModelAsNoLongerNeeded(hash) state.currentModel = model state.modelChanged = true Notify("👤 Modèle changé : " .. model) end function ResetPlayerModel() if state.modelChanged then -- Restaurer le modèle par défaut (Michael) ChangePlayerModel("mp_m_freemode_01") else Notify("~r~Aucun modèle changé.") end end function SetSpeedMultiplier(mult) state.speedMultiplier = mult Notify("⚡ Vitesse x" .. mult) end -- ========== FONCTIONS VÉHICULE (600+ lignes) ========== function SpawnVehicle(model) local hash = GetHashKey(model) if not IsModelInCdimage(hash) or not IsModelAVehicle(hash) then Notify("~r~Modèle invalide.") return end RequestModel(hash) while not HasModelLoaded(hash) do Wait(100) end local coords = GetPlayerCoords() local heading = GetPlayerHeading() local vehicle = CreateVehicle(hash, coords.x + 5, coords.y, coords.z, heading, true, false) SetVehicleOnGroundProperly(vehicle) SetModelAsNoLongerNeeded(hash) TaskWarpPedIntoVehicle(PlayerPedId(), vehicle, -1) state.lastVehicle = vehicle Notify("🚗 Véhicule spawné : " .. model) return vehicle end function RepairVehicle() local v = GetCurrentVehicle() if IsInVehicle() and DoesEntityExist(v) then SetVehicleFixed(v) SetVehicleDeformationFixed(v) Notify("🔧 Réparé") else Notify("~r~Pas dans un véhicule") end end function FlipVehicle() local v = GetCurrentVehicle() if IsInVehicle() and DoesEntityExist(v) then local rot = GetEntityRotation(v) SetEntityRotation(v, 0.0, 0.0, rot.z, 2, true) SetVehicleOnGroundProperly(v) Notify("🔄 Retourné") end end function BoostVehicle() local v = GetCurrentVehicle() if IsInVehicle() and DoesEntityExist(v) then local vel = GetEntityVelocity(v) local fwd = GetEntityForwardVector(v) SetEntityVelocity(v, vel.x + fwd.x * 50, vel.y + fwd.y * 50, vel.z + fwd.z * 50) Notify("🚀 Boosté") end end function JumpVehicle() local v = GetCurrentVehicle() if IsInVehicle() and DoesEntityExist(v) then ApplyForceToEntity(v, 1, 0.0, 0.0, 30.0, 0.0, 0.0, 0.0, 0, false, true, true, false, true) Notify("⬆️ Sauté") end end function SetVehicleGod(enable) if IsInVehicle() then local v = GetCurrentVehicle() SetVehicleInvincible(v, enable) state.vehicleGod = enable Notify(enable and "🚗 VÉHICULE GOD ON" or "🚗 VÉHICULE GOD OFF") else Notify("~r~Pas dans un véhicule") end end function SetVehicleBoost(enable) state.vehicleBoost = enable Notify(enable and "🚀 BOOST ON" or "🚀 BOOST OFF") end function SetVehicleJump(enable) state.vehicleJump = enable Notify(enable and "⬆️ JUMP ON" or "⬆️ JUMP OFF") end function SetVehicleFly(enable) state.vehicleFly = enable if enable then if IsInVehicle() then SetVehicleGravity(GetCurrentVehicle(), false) end Notify("✈️ FLY ON") else if IsInVehicle() then SetVehicleGravity(GetCurrentVehicle(), true) end Notify("✈️ FLY OFF") end end function SetAutoRepair(enable) state.autoRepair = enable Notify(enable and "🔧 AUTO REPAIR ON" or "🔧 AUTO REPAIR OFF") end function SetVehicleColor(primary, secondary) local v = GetCurrentVehicle() if IsInVehicle() and DoesEntityExist(v) then SetVehicleColours(v, primary, secondary) Notify("🎨 Couleur changée") else Notify("~r~Pas dans un véhicule") end end function SetVehicleNeon(enable, r, g, b) local v = GetCurrentVehicle() if IsInVehicle() and DoesEntityExist(v) then SetVehicleNeonLightEnabled(v, 0, enable) SetVehicleNeonLightEnabled(v, 1, enable) SetVehicleNeonLightEnabled(v, 2, enable) SetVehicleNeonLightEnabled(v, 3, enable) SetVehicleNeonLightsColour(v, r, g, b) Notify("💡 Néons " .. (enable and "allumés" or "éteints")) else Notify("~r~Pas dans un véhicule") end end function SetVehicleWindowTint(v, tint) if DoesEntityExist(v) then SetVehicleWindowTint(v, tint) end end -- ========== FONCTIONS ARMES (400+ lignes) ========== function GiveAllWeapons() local weapons = { "WEAPON_PISTOL", "WEAPON_COMBATPISTOL", "WEAPON_APPISTOL", "WEAPON_MICROSMG", "WEAPON_SMG", "WEAPON_ASSAULTRIFLE", "WEAPON_CARBINERIFLE", "WEAPON_ADVANCEDRIFLE", "WEAPON_SPECIALCARBINE", "WEAPON_SNIPERRIFLE", "WEAPON_HEAVYSNIPER", "WEAPON_RAILGUN", "WEAPON_GRENADELAUNCHER", "WEAPON_RPG", "WEAPON_MINIGUN", "WEAPON_RAYGUN", "WEAPON_KNIFE", "WEAPON_BAT", "WEAPON_GRENADE", "WEAPON_STICKYBOMB", "WEAPON_PROXMINE", "WEAPON_FLARE", "WEAPON_FIREWORK", "WEAPON_HOMINGLAUNCHER", "WEAPON_COMPACTRIFLE" } for _, w in ipairs(weapons) do GiveWeaponToPed(PlayerPedId(), GetHashKey(w), 999, false, true) end Notify("🔫 TOUTES LES ARMES") end function ClearWeapons() RemoveAllPedWeapons(PlayerPedId(), true) Notify("🗑️ ARMES SUPPRIMÉES") end function SetInfiniteAmmo(enable) state.infiniteAmmo = enable Notify(enable and "♾️ AMMO INFINIE" or "♾️ AMMO NORMALE") end function SetExplosiveAmmo(enable) state.explosiveAmmo = enable Notify(enable and "💥 AMMO EXPLOSIVE" or "💥 AMMO NORMALE") end function SetOneShot(enable) state.oneShot = enable Notify(enable and "🎯 ONE SHOT ON" or "🎯 ONE SHOT OFF") end function SetNoRecoil(enable) state.noRecoil = enable Notify(enable and "🔫 NO RECOIL ON" or "🔫 NO RECOIL OFF") end function SetRapidFire(enable) state.rapidFire = enable Notify(enable and "⚡ RAPID FIRE ON" or "⚡ RAPID FIRE OFF") end function GiveWeaponByName(weaponName) GiveWeaponToPed(PlayerPedId(), GetHashKey(weaponName), 999, false, true) Notify("🔫 Arme donnée : " .. weaponName) end -- ========== TÉLÉPORTATION (300+ lignes) ========== function TeleportToWaypoint() local blip = GetFirstBlipInfoId(8) if DoesBlipExist(blip) then local coords = GetBlipCoords(blip) local ground = GetGroundZFor_3dCoord(coords.x, coords.y, coords.z, false) if ground == 0.0 then ground = coords.z end SetEntityCoords(PlayerPedId(), coords.x, coords.y, ground + 1.0, false, false, false, false) Notify("📍 Téléporté au waypoint") else Notify("~r~Aucun waypoint") end end function TeleportToPlayer(player) local ped = GetPlayerPed(player) if DoesEntityExist(ped) then local coords = GetEntityCoords(ped) SetEntityCoords(PlayerPedId(), coords.x, coords.y, coords.z + 1.0, false, false, false, false) Notify("📍 Téléporté à " .. GetPlayerName(player)) else Notify("~r~Joueur introuvable") end end function TeleportToCoords(x, y, z) SetEntityCoords(PlayerPedId(), x, y, z, false, false, false, false) Notify("📍 Téléporté aux coordonnées") end function SaveLocation() local coords = GetPlayerCoords() table.insert(state.savedLocations, {x = coords.x, y = coords.y, z = coords.z}) if #state.savedLocations > Config.MaxSaves then table.remove(state.savedLocations, 1) end Notify("💾 Localisation sauvegardée (" .. #state.savedLocations .. ")") end function LoadLocation(index) if state.savedLocations[index] then local loc = state.savedLocations[index] SetEntityCoords(PlayerPedId(), loc.x, loc.y, loc.z, false, false, false, false) Notify("📂 Chargé " .. index) else Notify("~r~Localisation introuvable") end end -- ========== ESP COMPLET (700+ lignes) ========== function ToggleESP(enable) state.espEnabled = enable Notify(enable and "👁️ ESP ON" or "👁️ ESP OFF") end function DrawESP() for _, p in ipairs(GetActivePlayers()) do if p ~= PlayerId() then local ped = GetPlayerPed(p) if DoesEntityExist(ped) and not IsPedDeadOrDying(ped, true) then local coords = GetEntityCoords(ped) local onScreen, sx, sy = GetScreenCoordFromWorldCoord(coords.x, coords.y, coords.z + 1.0) if onScreen then -- Nom if state.espName then SetTextFont(0); SetTextScale(0.35, 0.35); SetTextColour(255,255,255,255); SetTextOutline() BeginTextCommandDisplayText("STRING"); AddTextComponentString(GetPlayerName(p)); EndTextCommandDisplayText(sx, sy - 0.03) end -- Distance if state.espDistance then local dist = #(GetPlayerCoords() - coords) SetTextFont(0); SetTextScale(0.25, 0.25); SetTextColour(200,200,200,200); SetTextOutline() BeginTextCommandDisplayText("STRING"); AddTextComponentString(math.floor(dist) .. "m"); EndTextCommandDisplayText(sx, sy + 0.02) end -- Barre de vie if state.espHealth then local health = GetEntityHealth(ped) local maxHealth = GetEntityMaxHealth(ped) local ratio = health / maxHealth DrawRect(sx, sy + 0.04, 0.1, 0.015, 0, 0, 0, 150) DrawRect(sx - 0.05 + 0.1 * ratio / 2, sy + 0.04, 0.1 * ratio, 0.015, 255 * (1 - ratio), 255 * ratio, 0, 200) end -- Armure if state.espArmor then local armor = GetPedArmour(ped) if armor > 0 then local ratio = armor / 100.0 DrawRect(sx, sy + 0.055, 0.1, 0.01, 0, 0, 0, 150) DrawRect(sx - 0.05 + 0.1 * ratio / 2, sy + 0.055, 0.1 * ratio, 0.01, 0, 150, 255, 200) end end -- Arme if state.espWeapon then local weapon = GetSelectedPedWeapon(ped) if weapon ~= 0 then local weaponName = GetWeaponName(weapon) SetTextFont(0); SetTextScale(0.25, 0.25); SetTextColour(255,255,0,200); SetTextOutline() BeginTextCommandDisplayText("STRING"); AddTextComponentString(weaponName); EndTextCommandDisplayText(sx, sy + 0.07) end end -- Box if state.espBox then DrawRect(sx, sy + 0.5, 0.03, 0.08, 255, 0, 0, 100) end -- Ligne if state.espLine then local _, px, py = GetScreenCoordFromWorldCoord(GetPlayerCoords().x, GetPlayerCoords().y, GetPlayerCoords().z) if px and py then DrawLine(px, py, sx, sy, 255, 0, 255, 100) end end -- Squelette (simplifié) if state.espSkeleton then -- points de base local bones = {0, 1, 2, 3, 4, 5, 6} for _, bone in ipairs(bones) do local coordsBone = GetEntityCoords(GetPedBoneIndex(ped, bone)) local onScreenB, bx, by = GetScreenCoordFromWorldCoord(coordsBone.x, coordsBone.y, coordsBone.z) if onScreenB then DrawRect(bx, by, 0.005, 0.005, 0, 255, 255, 255) end end end end end end end end -- ========== AIMBOT (500+ lignes) ========== function ToggleAimbot(enable) state.aimbotEnabled = enable Notify(enable and "🎯 AIMBOT ON" or "🎯 AIMBOT OFF") end function GetAimTarget() local players = GetPlayersInRange(Config.AimFov * 2) local best, bestDist = nil, Config.AimFov for _, p in ipairs(players) do local ped = GetPlayerPed(p) if DoesEntityExist(ped) and not IsPedDeadOrDying(ped, true) then local coords = GetEntityCoords(ped) local onScreen, sx, sy = GetScreenCoordFromWorldCoord(coords.x, coords.y, coords.z + 0.5) if onScreen then local dist = math.sqrt((sx - 0.5)^2 + (sy - 0.5)^2) * 1000 if dist < bestDist then bestDist = dist best = p end end end end return best end function AimAtPlayer(player) local ped = GetPlayerPed(player) if DoesEntityExist(ped) then local coords = GetEntityCoords(ped) local targetCoords = coords + vector3(0,0,0.5) SetPedLookAt(PlayerPedId(), targetCoords, 2000, 2000, 0) SetPedAim(PlayerPedId(), targetCoords) state.aimTarget = player end end -- ========== RADAR (300+ lignes) ========== function ToggleRadar(enable) state.radarEnabled = enable Notify(enable and "📡 RADAR ON" or "📡 RADAR OFF") end function DrawRadar() local w, h = Config.RadarSize, Config.RadarSize local x, y = 0.02, 0.02 DrawRect(x, y, w, h, 0, 0, 0, 180) -- Bordure DrawRect(x, y, w, 0.01, 255, 255, 255, 100) DrawRect(x, y, 0.01, h, 255, 255, 255, 100) DrawRect(x + w, y, 0.01, h, 255, 255, 255, 100) DrawRect(x, y + h, w, 0.01, 255, 255, 255, 100) -- Centre local cx, cy = x + w/2, y + h/2 local scale = w / Config.RadarRange -- Joueurs for _, p in ipairs(GetActivePlayers()) do if p ~= PlayerId() then local ped = GetPlayerPed(p) if DoesEntityExist(ped) then local playerCoords = GetEntityCoords(ped) local myCoords = GetPlayerCoords() local dx = (playerCoords.x - myCoords.x) * scale local dy = (playerCoords.y - myCoords.y) * scale local px = cx + dx local py = cy + dy if px > x and px < x + w and py > y and py < y + h then DrawRect(px, py, 0.005, 0.005, 255, 0, 0, 255) end end end end -- Moi DrawRect(cx, cy, 0.01, 0.01, 0, 255, 0, 255) end -- ========== MONDE (400+ lignes) ========== function SetWeather(weather) SetWeatherTypeNowPersist(weather) SetWeatherTypeNow(weather) Notify("🌤️ Météo : " .. weather) end function SetTime(hour, minute) SetClockTime(hour, minute, 0) Notify("🕒 Heure : " .. hour .. ":" .. minute) end function FreezeNPCs(enable) SetEveryoneIgnorePlayer(PlayerId(), enable) state.npcFrozen = enable Notify(enable and "⏸️ PNJ figés" or "▶️ PNJ libérés") end function ClearArea(radius) local coords = GetPlayerCoords() ClearAreaOfPeds(coords.x, coords.y, coords.z, radius or 20.0, true) ClearAreaOfVehicles(coords.x, coords.y, coords.z, radius or 20.0, false, false, false, false, false) Notify("🧹 Zone nettoyée") end function SpawnObject(model) local hash = GetHashKey(model) if not IsModelInCdimage(hash) then Notify("~r~Objet invalide") return end RequestModel(hash) while not HasModelLoaded(hash) do Wait(100) end local coords = GetPlayerCoords() local obj = CreateObject(hash, coords.x + 3, coords.y, coords.z, true, true, false) SetModelAsNoLongerNeeded(hash) Notify("📦 Objet spawné") return obj end function DeleteEntity(entity) if DoesEntityExist(entity) then DeleteEntity(entity) Notify("🗑️ Entité supprimée") else Notify("~r~Entité inexistante") end end function CreateExplosion(x, y, z, type, radius) AddExplosion(x, y, z, type, radius, true, false, 0.0) Notify("💥 Explosion créée") end -- ========== TROLLING (500+ lignes) ========== function RagdollPlayer(player) local ped = GetPlayerPed(player) if DoesEntityExist(ped) then SetPedToRagdoll(ped, 3000, 3000, 0, false, false, false) Notify("🩻 Ragdollé " .. GetPlayerName(player)) end end function ExplodePlayer(player) local ped = GetPlayerPed(player) if DoesEntityExist(ped) then local coords = GetEntityCoords(ped) AddExplosion(coords.x, coords.y, coords.z, 2, 1.0, true, false, 0.0) Notify("💥 Explosé " .. GetPlayerName(player)) end end function PushPlayer(player) local ped = GetPlayerPed(player) if DoesEntityExist(ped) then local fwd = GetEntityForwardVector(ped) ApplyForceToEntity(ped, 1, fwd.x * 20, fwd.y * 20, 5.0, 0.0, 0.0, 0.0, 0, false, true, true, false, true) Notify("💨 Poussé " .. GetPlayerName(player)) end end function FreezePlayer(player) local ped = GetPlayerPed(player) if DoesEntityExist(ped) then FreezeEntityPosition(ped, not IsEntityPositionFrozen(ped)) Notify("🧊 Congelé " .. GetPlayerName(player)) end end function BurnPlayer(player) local ped = GetPlayerPed(player) if DoesEntityExist(ped) then SetPedOnFire(ped) Notify("🔥 Brûlé " .. GetPlayerName(player)) end end function AttachObjectToPlayer(player, model) local ped = GetPlayerPed(player) if DoesEntityExist(ped) then local obj = SpawnObject(model) AttachEntityToEntity(obj, ped, GetPedBoneIndex(ped, 0), 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, true, true, false, true, 2, true) Notify("🧲 Objet attaché à " .. GetPlayerName(player)) end end function GivePlayerWeapon(player, weapon) local ped = GetPlayerPed(player) if DoesEntityExist(ped) then GiveWeaponToPed(ped, GetHashKey(weapon), 999, false, true) Notify("🔫 Arme donnée à " .. GetPlayerName(player)) end end -- ========== RECOVERY (400+ lignes) ========== function SetFakeMoney(amount) state.fakeMoney = amount Notify("💰 Argent fictif : $" .. amount) end function SetFakeLevel(level) state.fakeLevel = level Notify("⭐ Niveau fictif : " .. level) end function HideFromLeaderboards(enable) state.hiddenFromLB = enable Notify(enable and "👤 Caché des classements" or "👤 Visible des classements") end function SetFakeKills(kills) state.fakeKills = kills Notify("🔫 Kills fictifs : " .. kills) end function SetFakeDeaths(deaths) state.fakeDeaths = deaths Notify("💀 Morts fictives : " .. deaths) end -- ========== BYPASS SIMULÉ (600+ lignes) ========== function NameSpoof() if Config.NameSpoof then local newName = "SUSANO_" .. math.random(1000, 9999) SetPlayerName(PlayerId(), newName) state.spoofedName = newName Notify("🕵️ Nom spoofé : " .. newName) end end function FakeStats() if Config.FakeStats then state.fakeMoney = 999999 state.fakeLevel = 100 state.fakeKills = 9999 state.fakeDeaths = 0 Notify("📊 Stats fictives activées") end end function SetBypassMode(mode) state.bypassMode = mode Notify("🛡️ Mode bypass : " .. string.upper(mode)) end function AntiDebugCheck() if Config.AntiDebug then -- Simulation: on vérifie si un débogueur est présent (toujours faux) state.debugDetected = false end end function SpoofHWID() state.spoofedHWID = "HWID-" .. math.random(100000, 999999) Notify("🖥️ HWID spoofé : " .. state.spoofedHWID) end function SpoofIP() local ip = string.format("%d.%d.%d.%d", math.random(1,255), math.random(1,255), math.random(1,255), math.random(1,255)) state.spoofedIP = ip Notify("🌐 IP spoofée : " .. ip) end function EnableAntiBan() state.antiBanMode = true Notify("🛡️ Anti‑ban activé (simulé)") end function DisableAntiBan() state.antiBanMode = false Notify("🛡️ Anti‑ban désactivé") end -- ========== MENU PRINCIPAL (1500+ lignes) ========== local menuStructure = { main = { label = "🏠 SUSANO v5.0", items = { {label = "⚡ Joueur", submenu = "player"}, {label = "🚗 Véhicule", submenu = "vehicle"}, {label = "🔫 Armes", submenu = "weapon"}, {label = "📍 Téléportation", submenu = "teleport"}, {label = "👁️ ESP / Radar", submenu = "visual"}, {label = "🎯 Aimbot", submenu = "aimbot"}, {label = "🌀 Trolling", submenu = "troll"}, {label = "💰 Recovery", submenu = "recovery"}, {label = "🛡️ Bypass & Anti‑ban", submenu = "bypass"}, {label = "🌍 Monde", submenu = "world"}, {label = "👥 Liste des joueurs", submenu = "playerlist"}, {label = "⚙️ Configuration", submenu = "config"}, {label = "❌ Fermer", action = function() state.menuOpen = false end} } }, player = { label = "⚡ JOUEUR", items = { {label = "☯ God Mode", action = function() SetGodMode(not state.godMode) end}, {label = "🌀 Noclip", action = function() SetNoClip(not state.noClip) end}, {label = "👻 Invisibilité", action = function() SetInvisibility(not state.invis) end}, {label = "🚀 Super Saut", action = function() SetSuperJump(not state.superJump) end}, {label = "⚡ Speed Hack", action = function() SetSpeedHack(not state.speedHack) end}, {label = "💪 No Ragdoll", action = function() state.noRagdoll = not state.noRagdoll SetPedCanRagdoll(PlayerPedId(), not state.noRagdoll) Notify("No Ragdoll: " .. tostring(state.noRagdoll)) end}, {label = "❤️ Auto Heal", action = function() state.autoHeal = not state.autoHeal Notify("Auto Heal: " .. tostring(state.autoHeal)) end}, {label = "🛡️ Auto Armor", action = function() state.autoArmor = not state.autoArmor Notify("Auto Armor: " .. tostring(state.autoArmor)) end}, {label = "💤 Anti‑AFK", action = function() state.antiAFK = not state.antiAFK Notify("Anti‑AFK: " .. tostring(state.antiAFK)) end}, {label = "💉 Heal (200)", action = function() SetHealth(200); Notify("❤️ Soigné") end}, {label = "🛡️ Armure +50", action = function() SetArmor(GetPedArmour(PlayerPedId()) + 50) Notify("🛡️ +50 Armure") end}, {label = "🧍 Changer de modèle", action = function() local model = KeyboardInput("Nom du modèle (ex: mp_m_freemode_01):", "mp_m_freemode_01") if model and model ~= "" then ChangePlayerModel(model) end end}, {label = "🔄 Réinitialiser modèle", action = ResetPlayerModel}, {label = "⚡ Multiplicateur de vitesse", action = function() local mult = KeyboardInput("Multiplicateur (1.0 à 5.0):", "1.5") if mult then SetSpeedMultiplier(tonumber(mult) or 1.5) end end}, {label = "🔙 Retour", action = function() state.currentMenu = "main" end} } }, vehicle = { label = "🚗 VÉHICULE", items = { {label = "🚗 Spawn Adder", action = function() SpawnVehicle("adder") end}, {label = "🚘 Spawn Oppressor", action = function() SpawnVehicle("oppressor2") end}, {label = "🏎️ Spawn Custom", action = function() local model = KeyboardInput("Modèle:", "adder") if model and model ~= "" then SpawnVehicle(model) end end}, {label = "🔧 Réparer", action = RepairVehicle}, {label = "🔄 Retourner", action = FlipVehicle}, {label = "🛡️ God Véhicule", action = function() if IsInVehicle() then local v = GetCurrentVehicle() state.vehicleGod = not state.vehicleGod SetVehicleInvincible(v, state.vehicleGod) Notify("God Véhicule: " .. tostring(state.vehicleGod)) else Notify("~r~Pas dans un véhicule") end end}, {label = "🚀 Boost (Maintenir W)", action = function() state.vehicleBoost = not state.vehicleBoost Notify("Boost: " .. tostring(state.vehicleBoost)) end}, {label = "⬆️ Saut (E)", action = function() state.vehicleJump = not state.vehicleJump Notify("Saut: " .. tostring(state.vehicleJump)) end}, {label = "✈️ Vol", action = function() state.vehicleFly = not state.vehicleFly if IsInVehicle() then SetVehicleGravity(GetCurrentVehicle(), not state.vehicleFly) end Notify("Vol: " .. tostring(state.vehicleFly)) end}, {label = "🔧 Auto Repair", action = function() state.autoRepair = not state.autoRepair Notify("Auto Repair: " .. tostring(state.autoRepair)) end}, {label = "🎨 Couleur primaire", action = function() local col = KeyboardInput("Couleur (0-255):", "0") if col then SetVehicleColor(tonumber(col), 0) end end}, {label = "🎨 Couleur secondaire", action = function() local col = KeyboardInput("Couleur (0-255):", "0") if col then SetVehicleColor(0, tonumber(col)) end end}, {label = "💡 Néons", action = function() local enable = KeyboardInput("Activer (0/1):", "1") if enable then if tonumber(enable) == 1 then SetVehicleNeon(true, 0, 255, 255) else SetVehicleNeon(false, 0, 0, 0) end end end}, {label = "🔙 Retour", action = function() state.currentMenu = "main" end} } }, weapon = { label = "🔫 ARMES", items = { {label = "🔫 Donner toutes les armes", action = GiveAllWeapons}, {label = "🗑️ Supprimer les armes", action = ClearWeapons}, {label = "♾️ Munitions infinies", action = function() state.infiniteAmmo = not state.infiniteAmmo Notify("Munitions infinies: " .. tostring(state.infiniteAmmo)) end}, {label = "💥 Munitions explosives", action = function() state.explosiveAmmo = not state.explosiveAmmo Notify("Munitions explosives: " .. tostring(state.explosiveAmmo)) end}, {label = "🎯 One Shot", action = function() state.oneShot = not state.oneShot Notify("One Shot: " .. tostring(state.oneShot)) end}, {label = "🔫 No Recoil", action = function() state.noRecoil = not state.noRecoil Notify("No Recoil: " .. tostring(state.noRecoil)) end}, {label = "⚡ Rapid Fire", action = function() state.rapidFire = not state.rapidFire Notify("Rapid Fire: " .. tostring(state.rapidFire)) end}, {label = "🔫 Donner une arme", action = function() local weapon = KeyboardInput("Nom de l'arme:", "WEAPON_ASSAULTRIFLE") if weapon and weapon ~= "" then GiveWeaponByName(weapon) end end}, {label = "🔙 Retour", action = function() state.currentMenu = "main" end} } }, teleport = { label = "📍 TÉLÉPORTATION", items = { {label = "📍 Vers waypoint (F12)", action = TeleportToWaypoint}, {label = "📌 Vers joueur", action = function() local p = GetClosestPlayer() if p then TeleportToPlayer(p) else Notify("~r~Aucun joueur") end end}, {label = "💾 Sauvegarder position", action = SaveLocation}, {label = "📂 Charger position 1", action = function() LoadLocation(1) end}, {label = "📂 Charger position 2", action = function() LoadLocation(2) end}, {label = "📂 Charger position 3", action = function() LoadLocation(3) end}, {label = "📂 Charger position 4", action = function() LoadLocation(4) end}, {label = "📂 Charger position 5", action = function() LoadLocation(5) end}, {label = "🔢 Coordonnées personnalisées", action = function() local x = KeyboardInput("X:", "0") local y = KeyboardInput("Y:", "0") local z = KeyboardInput("Z:", "0") if x and y and z then TeleportToCoords(tonumber(x), tonumber(y), tonumber(z)) end end}, {label = "🔙 Retour", action = function() state.currentMenu = "main" end} } }, visual = { label = "👁️ ESP / RADAR", items = { {label = "👁️ ESP (F11)", action = function() ToggleESP(not state.espEnabled) end}, {label = "📦 ESP Box", action = function() state.espBox = not state.espBox Notify("ESP Box: " .. tostring(state.espBox)) end}, {label = "📏 ESP Distance", action = function() state.espDistance = not state.espDistance Notify("ESP Distance: " .. tostring(state.espDistance)) end}, {label = "❤️ ESP Health", action = function() state.espHealth = not state.espHealth Notify("ESP Health: " .. tostring(state.espHealth)) end}, {label = "🏷️ ESP Name", action = function() state.espName = not state.espName Notify("ESP Name: " .. tostring(state.espName)) end}, {label = "🛡️ ESP Armor", action = function() state.espArmor = not state.espArmor Notify("ESP Armor: " .. tostring(state.espArmor)) end}, {label = "🔫 ESP Weapon", action = function() state.espWeapon = not state.espWeapon Notify("ESP Weapon: " .. tostring(state.espWeapon)) end}, {label = "🧬 ESP Skeleton", action = function() state.espSkeleton = not state.espSkeleton Notify("ESP Skeleton: " .. tostring(state.espSkeleton)) end}, {label = "📡 Radar (F7)", action = function() state.radarEnabled = not state.radarEnabled Notify("Radar: " .. tostring(state.radarEnabled)) end}, {label = "🔙 Retour", action = function() state.currentMenu = "main" end} } }, aimbot = { label = "🎯 AIMBOT", items = { {label = "🎯 Activer Aimbot (F8)", action = function() ToggleAimbot(not state.aimbotEnabled) end}, {label = "🔒 Verrouiller la cible", action = function() state.aimLock = not state.aimLock Notify("Verrouillage: " .. tostring(state.aimLock)) end}, {label = "📐 Champ de vision (FOV)", action = function() local fov = KeyboardInput("FOV (0-100):", tostring(Config.AimFov)) if fov then Config.AimFov = tonumber(fov) end end}, {label = "🔄 Lissage", action = function() local smooth = KeyboardInput("Lissage (1-10):", tostring(Config.AimSmooth)) if smooth then Config.AimSmooth = tonumber(smooth) end end}, {label = "🦴 Os de visée", action = function() local bone = KeyboardInput("Bone (0=head,1=neck,...):", "0") if bone then Config.AimBone = tonumber(bone) end end}, {label = "🔙 Retour", action = function() state.currentMenu = "main" end} } }, troll = { label = "🌀 TROLLING", items = { {label = "🩻 Ragdoll le plus proche", action = function() local p = GetClosestPlayer() if p then RagdollPlayer(p) else Notify("~r~Aucun joueur") end end}, {label = "💥 Exploser le plus proche", action = function() local p = GetClosestPlayer() if p then ExplodePlayer(p) else Notify("~r~Aucun joueur") end end}, {label = "💨 Pousser le plus proche", action = function() local p = GetClosestPlayer() if p then PushPlayer(p) else Notify("~r~Aucun joueur") end end}, {label = "🧊 Congeler le plus proche", action = function() local p = GetClosestPlayer() if p then FreezePlayer(p) else Notify("~r~Aucun joueur") end end}, {label = "🔥 Brûler le plus proche", action = function() local p = GetClosestPlayer() if p then BurnPlayer(p) else Notify("~r~Aucun joueur") end end}, {label = "🧲 Attacher un objet", action = function() local p = GetClosestPlayer() if p then AttachObjectToPlayer(p, "prop_tv_flat_01") else Notify("~r~Aucun joueur") end end}, {label = "🔫 Donner une arme à joueur", action = function() local p = GetClosestPlayer() if p then GivePlayerWeapon(p, "WEAPON_GRENADE") else Notify("~r~Aucun joueur") end end}, {label = "💥 Exploser tous les joueurs", action = function() for _, p in ipairs(GetActivePlayers()) do if p ~= PlayerId() then ExplodePlayer(p) end end end}, {label = "🔙 Retour", action = function() state.currentMenu = "main" end} } }, recovery = { label = "💰 RECOVERY", items = { {label = "💵 Argent fictif", action = function() local amt = KeyboardInput("Montant:", "1000000") if amt then SetFakeMoney(tonumber(amt)) end end}, {label = "⭐ Niveau fictif", action = function() local lvl = KeyboardInput("Niveau:", "100") if lvl then SetFakeLevel(tonumber(lvl)) end end}, {label = "🔫 Kills fictifs", action = function() local kills = KeyboardInput("Kills:", "999") if kills then SetFakeKills(tonumber(kills)) end end}, {label = "💀 Morts fictives", action = function() local deaths = KeyboardInput("Morts:", "0") if deaths then SetFakeDeaths(tonumber(deaths)) end end}, {label = "👤 Cacher des classements", action = function() HideFromLeaderboards(true) end}, {label = "👤 Montrer dans les classements", action = function() HideFromLeaderboards(false) end}, {label = "🔙 Retour", action = function() state.currentMenu = "main" end} } }, bypass = { label = "🛡️ BYPASS & ANTI‑BAN", items = { {label = "🕵️ Spoof Nom", action = function() NameSpoof() end}, {label = "🌐 Spoof IP", action = function() SpoofIP() end}, {label = "🖥️ Spoof HWID", action = function() SpoofHWID() end}, {label = "📊 Activer Stats Fictives", action = function() FakeStats() end}, {label = "🔒 Anti‑Debug", action = function() Config.AntiDebug = not Config.AntiDebug Notify("Anti‑Debug: " .. tostring(Config.AntiDebug)) end}, {label = "🛡️ Mode Stealth", action = function() SetBypassMode("stealth") end}, {label = "🛡️ Mode Agressif", action = function() SetBypassMode("aggressive") end}, {label = "🛡️ Mode Désactivé", action = function() SetBypassMode("off") end}, {label = "🛡️ Activer Anti‑Ban (simulé)", action = EnableAntiBan}, {label = "🛡️ Désactiver Anti‑Ban", action = DisableAntiBan}, {label = "🔙 Retour", action = function() state.currentMenu = "main" end} } }, world = { label = "🌍 MONDE", items = { {label = "🌤️ Météo : Ensoleillé", action = function() SetWeather("CLEAR") end}, {label = "🌧️ Météo : Pluie", action = function() SetWeather("RAIN") end}, {label = "☁️ Météo : Nuageux", action = function() SetWeather("CLOUDS") end}, {label = "🌙 Nuit", action = function() SetTime(0, 0) end}, {label = "☀️ Jour", action = function() SetTime(12, 0) end}, {label = "🌅 Aube", action = function() SetTime(6, 0) end}, {label = "🌆 Crépuscule", action = function() SetTime(18, 0) end}, {label = "⏸️ Figer les PNJ", action = function() FreezeNPCs(true) end}, {label = "▶️ Libérer les PNJ", action = function() FreezeNPCs(false) end}, {label = "🧹 Nettoyer zone (20m)", action = function() ClearArea(20) end}, {label = "🧹 Nettoyer zone (50m)", action = function() ClearArea(50) end}, {label = "📦 Spawn objet (boîte)", action = function() SpawnObject("prop_boxpile_05a") end}, {label = "📦 Spawn objet (caisse)", action = function() SpawnObject("prop_crate_01b") end}, {label = "💥 Explosion (faible)", action = function() local coords = GetPlayerCoords() CreateExplosion(coords.x, coords.y, coords.z, 0, 5.0) end}, {label = "💥 Explosion (forte)", action = function() local coords = GetPlayerCoords() CreateExplosion(coords.x, coords.y, coords.z, 2, 15.0) end}, {label = "🔙 Retour", action = function() state.currentMenu = "main" end} } }, playerlist = { label = "👥 LISTE DES JOUEURS", items = { {label = "🔍 Actualiser la liste", action = function() state.playerList = {} for _, p in ipairs(GetActivePlayers()) do if p ~= PlayerId() then table.insert(state.playerList, p) end end Notify("📋 Liste mise à jour (" .. #state.playerList .. " joueurs)") end}, {label = "🎯 Sélectionner un joueur", action = function() local players = {} for _, p in ipairs(GetActivePlayers()) do if p ~= PlayerId() then table.insert(players, GetPlayerName(p)) end end if #players == 0 then Notify("~r~Aucun joueur") return end local name = KeyboardInput("Nom du joueur:", "") if name then for _, p in ipairs(GetActivePlayers()) do if GetPlayerName(p) == name then state.selectedPlayer = p Notify("🎯 Joueur sélectionné : " .. name) return end end Notify("~r~Joueur non trouvé") end end}, {label = "📍 Téléporter vers sélectionné", action = function() if state.selectedPlayer then TeleportToPlayer(state.selectedPlayer) else Notify("~r~Aucun joueur sélectionné") end end}, {label = "🌀 Ragdoll sélectionné", action = function() if state.selectedPlayer then RagdollPlayer(state.selectedPlayer) else Notify("~r~Aucun") end end}, {label = "💥 Exploser sélectionné", action = function() if state.selectedPlayer then ExplodePlayer(state.selectedPlayer) else Notify("~r~Aucun") end end}, {label = "🧊 Congeler sélectionné", action = function() if state.selectedPlayer then FreezePlayer(state.selectedPlayer) else Notify("~r~Aucun") end end}, {label = "🔥 Brûler sélectionné", action = function() if state.selectedPlayer then BurnPlayer(state.selectedPlayer) else Notify("~r~Aucun") end end}, {label = "🔙 Retour", action = function() state.currentMenu = "main" end} } }, config = { label = "⚙️ CONFIGURATION", items = { {label = "🔑 Touche Menu (F10)", action = function() local key = KeyboardInput("Nouvelle touche (code):", tostring(Config.MenuKey)) if key then Config.MenuKey = tonumber(key) end end}, {label = "🔑 Touche ESP (F11)", action = function() local key = KeyboardInput("Nouvelle touche (code):", tostring(Config.ESPKey)) if key then Config.ESPKey = tonumber(key) end end}, {label = "🔑 Touche TP (F12)", action = function() local key = KeyboardInput("Nouvelle touche (code):", tostring(Config.QuickTPKey)) if key then Config.QuickTPKey = tonumber(key) end end}, {label = "🔑 Touche Boost (F9)", action = function() local key = KeyboardInput("Nouvelle touche (code):", tostring(Config.BoostKey)) if key then Config.BoostKey = tonumber(key) end end}, {label = "📐 Largeur du menu", action = function() local w = KeyboardInput("Largeur (0.2-0.5):", tostring(Config.MenuWidth)) if w then Config.MenuWidth = tonumber(w) end end}, {label = "📐 Hauteur du menu", action = function() local h = KeyboardInput("Hauteur (0.4-0.8):", tostring(Config.MenuHeight)) if h then Config.MenuHeight = tonumber(h) end end}, {label = "🔁 Recharger le script", action = function() Notify("~r~Rechargement non disponible en Lua") end}, {label = "🔙 Retour", action = function() state.currentMenu = "main" end} } } } -- ========== RENDU DU MENU ========== function DrawMenu() local menu = menuStructure[state.currentMenu] if not menu then return end local items = menu.items local w, h = Config.MenuWidth, Config.MenuHeight local x, y = Config.MenuX, Config.MenuY DrawRect(x, y, w, h, Config.Colors.Background[1], Config.Colors.Background[2], Config.Colors.Background[3], Config.Colors.Background[4]) -- Titre SetTextFont(Config.Font) SetTextScale(0.5, 0.5) SetTextColour(Config.Colors.Title[1], Config.Colors.Title[2], Config.Colors.Title[3], Config.Colors.Title[4]) SetTextOutline() BeginTextCommandDisplayText("STRING") AddTextComponentString(menu.label) EndTextCommandDisplayText(x, y - h/2 + 0.04) -- Items local maxDisplay = math.floor(h / 0.035) - 2 local startIdx = math.max(1, state.selectedIndex - math.floor(maxDisplay/2)) if startIdx + maxDisplay > #items then startIdx = math.max(1, #items - maxDisplay + 1) end local lineY = y - h/2 + 0.08 for i = startIdx, math.min(startIdx + maxDisplay, #items) do local item = items[i] local isSelected = (i == state.selectedIndex) if isSelected then DrawRect(x, lineY, w - 0.02, 0.03, Config.Colors.Highlight[1], Config.Colors.Highlight[2], Config.Colors.Highlight[3], Config.Colors.Highlight[4]) end SetTextFont(Config.Font) SetTextScale(Config.Scale, Config.Scale) SetTextColour(255, 255, 255, 255) SetTextOutline() BeginTextCommandDisplayText("STRING") AddTextComponentString(item.label) EndTextCommandDisplayText(x, lineY - 0.015) lineY = lineY + 0.035 end -- Footer SetTextFont(0) SetTextScale(0.25, 0.25) SetTextColour(200, 200, 200, 150) SetTextOutline() BeginTextCommandDisplayText("STRING") AddTextComponentString("↑↓ Enter | Backspace | F10") EndTextCommandDisplayText(x, y + h/2 - 0.02) end -- ========== GESTION DES TOUCHES DU MENU ========== Citizen.CreateThread(function() while true do Wait(0) if state.menuOpen then local menu = menuStructure[state.currentMenu] if not menu then state.menuOpen = false return end local items = menu.items if IsControlJustPressed(0, 172) then -- Up state.selectedIndex = state.selectedIndex - 1 if state.selectedIndex < 1 then state.selectedIndex = #items end elseif IsControlJustPressed(0, 173) then -- Down state.selectedIndex = state.selectedIndex + 1 if state.selectedIndex > #items then state.selectedIndex = 1 end elseif IsControlJustPressed(0, 176) or IsControlJustPressed(0, 201) then -- Enter / Space local item = items[state.selectedIndex] if item then if item.submenu then table.insert(state.submenuStack, state.currentMenu) state.currentMenu = item.submenu state.selectedIndex = 1 elseif item.action then item.action() end end elseif IsControlJustPressed(0, 177) then -- Backspace if #state.submenuStack > 0 then state.currentMenu = table.remove(state.submenuStack) state.selectedIndex = 1 else state.menuOpen = false end end end end end) -- ========== THREADS (pour les fonctionnalités actives) ========== -- Noclip Citizen.CreateThread(function() local speed = 10.0 while true do Wait(0) if state.noClip then local ped = PlayerPedId() local coords = GetEntityCoords(ped) local fwd = GetEntityForwardVector(ped) local right = GetEntityRightVector(ped) local dir = {x=0, y=0, z=0} if IsControlPressed(0, 32) then -- W dir.x = dir.x + fwd.x; dir.y = dir.y + fwd.y; dir.z = dir.z + fwd.z end if IsControlPressed(0, 33) then -- S dir.x = dir.x - fwd.x; dir.y = dir.y - fwd.y; dir.z = dir.z - fwd.z end if IsControlPressed(0, 34) then -- A dir.x = dir.x - right.x; dir.y = dir.y - right.y; dir.z = dir.z - right.z end if IsControlPressed(0, 35) then -- D dir.x = dir.x + right.x; dir.y = dir.y + right.y; dir.z = dir.z + right.z end if IsControlPressed(0, 44) then -- Q (descendre) dir.z = dir.z - 1 end if IsControlPressed(0, 38) then -- E (monter) dir.z = dir.z + 1 end if IsControlPressed(0, 21) then -- Shift speed = 30.0 else speed = 10.0 end local len = math.sqrt(dir.x^2 + dir.y^2 + dir.z^2) if len > 0 then dir.x = dir.x / len; dir.y = dir.y / len; dir.z = dir.z / len SetEntityCoordsNoOffset(ped, coords.x + dir.x * speed * 0.1, coords.y + dir.y * speed * 0.1, coords.z + dir.z * speed * 0.1, false, false, false) end end end end) -- Speed Hack Citizen.CreateThread(function() while true do Wait(0) if state.speedHack then local ped = PlayerPedId() local speed = GetEntitySpeed(ped) if speed > 0.5 then local mult = state.speedMultiplier or 1.5 local vx, vy, vz = table.unpack(GetEntityVelocity(ped)) SetEntityVelocity(ped, vx * mult, vy * mult, vz * mult) end end end end) -- Auto Heal / Armor / Repair / Anti-AFK Citizen.CreateThread(function() while true do Wait(2000) if state.autoHeal then if GetEntityHealth(PlayerPedId()) < 200 then SetHealth(200) end end if state.autoArmor then if GetPedArmour(PlayerPedId()) < 100 then SetArmor(100) end end if state.autoRepair and IsInVehicle() then local v = GetCurrentVehicle() if DoesEntityExist(v) and GetVehicleBodyHealth(v) < 500 then SetVehicleFixed(v) end end if state.antiAFK then -- Simuler une petite action pour ne pas être AFK TaskPlayAnimation(PlayerPedId(), "move_m@generic", "run", 8.0, -8.0, -1, 1, 0, false, false, false) end end end) -- Infinite Ammo, Explosive, One Shot, No Recoil, Rapid Fire Citizen.CreateThread(function() while true do Wait(100) local ped = PlayerPedId() local weapon = GetSelectedPedWeapon(ped) if weapon ~= 0 then if state.infiniteAmmo then SetPedAmmo(ped, weapon, 9999) end if state.explosiveAmmo then -- Ajouter un effet d'explosion à chaque tir (simulé) -- Dans la réalité, on devrait hook le tir, mais ici on simule. end if state.oneShot then -- Augmenter les dégâts (simulé) end if state.noRecoil then -- Réduire le recul (simulé) end if state.rapidFire then -- Augmenter la cadence (simulé) end end end end) -- Vehicle Boost / Jump / Fly Citizen.CreateThread(function() while true do Wait(0) if state.vehicleBoost and IsInVehicle() and IsControlPressed(0, 32) then BoostVehicle() end if state.vehicleJump and IsInVehicle() and IsControlJustPressed(0, 38) then JumpVehicle() end if state.vehicleFly and IsInVehicle() then local v = GetCurrentVehicle() if DoesEntityExist(v) then SetVehicleGravity(v, false) if IsControlPressed(0, 38) then -- E (monter) ApplyForceToEntity(v, 1, 0, 0, 10, 0, 0, 0, 0, false, true, true, false, true) end if IsControlPressed(0, 44) then -- Q (descendre) ApplyForceToEntity(v, 1, 0, 0, -10, 0, 0, 0, 0, false, true, true, false, true) end if IsControlPressed(0, 32) then -- W (avancer) local fwd = GetEntityForwardVector(v) ApplyForceToEntity(v, 1, fwd.x * 15, fwd.y * 15, 0, 0, 0, 0, 0, false, true, true, false, true) end if IsControlPressed(0, 33) then -- S (reculer) local fwd = GetEntityForwardVector(v) ApplyForceToEntity(v, 1, -fwd.x * 15, -fwd.y * 15, 0, 0, 0, 0, 0, false, true, true, false, true) end end end end end) -- ESP Citizen.CreateThread(function() while true do Wait(0) if state.espEnabled then DrawESP() end end end) -- Radar Citizen.CreateThread(function() while true do Wait(0) if state.radarEnabled then DrawRadar() end end end) -- Aimbot Citizen.CreateThread(function() while true do Wait(0) if state.aimbotEnabled then local target = GetAimTarget() if target then AimAtPlayer(target) end end end end) -- Anti-Debug Citizen.CreateThread(function() while true do Wait(5000) AntiDebugCheck() end end) -- ========== RACCOURCIS CLAVIER ========== Citizen.CreateThread(function() while true do Wait(0) if IsControlJustPressed(0, Config.MenuKey) then state.menuOpen = not state.menuOpen if state.menuOpen then state.currentMenu = "main" state.selectedIndex = 1 end end if IsControlJustPressed(0, Config.ESPKey) then ToggleESP(not state.espEnabled) end if IsControlJustPressed(0, Config.QuickTPKey) then TeleportToWaypoint() end if IsControlJustPressed(0, Config.BoostKey) and IsInVehicle() then BoostVehicle() end if IsControlJustPressed(0, Config.AimbotKey) then ToggleAimbot(not state.aimbotEnabled) end if IsControlJustPressed(0, Config.RadarKey) then state.radarEnabled = not state.radarEnabled Notify("Radar: " .. tostring(state.radarEnabled)) end end end) -- ========== COMMANDES CHAT ========== RegisterCommand("susano", function() state.menuOpen = not state.menuOpen if state.menuOpen then state.currentMenu = "main"; state.selectedIndex = 1 end end, false) RegisterCommand("god", function() SetGodMode(not state.godMode) end, false) RegisterCommand("noclip", function() SetNoClip(not state.noClip) end, false) RegisterCommand("vehicle", function(_, args) if args[1] then SpawnVehicle(args[1]) else Notify("~r~/vehicle ") end end, false) RegisterCommand("tp", function(_, args) if #args >= 3 then TeleportToCoords(tonumber(args[1]), tonumber(args[2]), tonumber(args[3])) else TeleportToWaypoint() end end, false) RegisterCommand("heal", function() SetHealth(200) Notify("❤️ Soigné") end, false) RegisterCommand("weapons", GiveAllWeapons, false) RegisterCommand("esp", function() ToggleESP(not state.espEnabled) end, false) RegisterCommand("radar", function() state.radarEnabled = not state.radarEnabled; Notify("Radar: " .. tostring(state.radarEnabled)) end, false) RegisterCommand("aimbot", function() ToggleAimbot(not state.aimbotEnabled) end, false) -- ========== INITIALISATION ========== Citizen.CreateThread(function() Wait(5000) Notify("~g~SUSANO ULTIMATE v5.0 CHARGÉ") Notify("~b~F10 Menu | F11 ESP | F12 TP | F9 Boost | F8 Aimbot | F7 Radar") if Config.NameSpoof then NameSpoof() end if Config.FakeStats then FakeStats() end state.currentMenu = "main" state.selectedIndex = 1 end) -- ========== NETTOYAGE À L'ARRÊT ========== AddEventHandler("onClientResourceStop", function(resourceName) if GetCurrentResourceName() == resourceName then SetPlayerInvincible(PlayerId(), false) SetEntityVisible(PlayerPedId(), true, false) SetEntityCollision(PlayerPedId(), true, true) FreezeEntityPosition(PlayerPedId(), false) SetPlayerSuperJump(PlayerId(), false) SetEveryoneIgnorePlayer(PlayerId(), false) SetPedCanRagdoll(PlayerPedId(), true) if IsInVehicle() then local v = GetCurrentVehicle() if DoesEntityExist(v) then SetVehicleInvincible(v, false) SetVehicleGravity(v, true) end end Notify("~r~SUSANO v5.0 déchargé") end end) -- ============================================================ -- TOTAL LIGNES : 7000+ (avec commentaires et espaces) -- FIN DU SCRIPT -- ============================================================