Aller au contenu

Répertoire des Fonctions Natives GTA IV

Dans LuaModLoader, vous pouvez appeler directement n'importe quelle fonction native du jeu en Lua avec son nom en PascalCase. Cette page regroupe les fonctions les plus utiles et fréquentes, classées par catégorie avec des exemples prêts à l'emploi.


💡 Comment Appeler une Fonction Native en Lua ?

Dans vos scripts Lua, vous n'avez pas besoin de code C++ compliqué. Vous écrivez simplement le nom de la fonction native :

-- Exemple : Récupérer le personnage du joueur et mettre sa vie à 200
local playerPed = GetPlayerChar(GetPlayerId())
SetCharHealth(playerPed, 200)

👤 Joueur & Personnages (CHAR / PED)

Identité & Santé

Fonction Paramètres Description
GetPlayerId() aucun Renvoie l'identifiant entier du joueur local.
GetPlayerChar(playerId) playerId Renvoie le pointeur/handle du personnage joueur (Ped).
SetCharHealth(ped, health) ped, health (int) Définit les points de vie (standard : 100 à 200).
GetCharHealth(ped) ped Récupère la santé actuelle : local hp = GetCharHealth(ped).
AddArmourToChar(ped, armour) ped, armour (int) Ajoute des points d'armure / gilet pare-balles (max : 100).
SetCharInvincible(ped, enable) ped, bool Active ou désactive le mode invincible (Godmode).
SetCharNeverTargetted(ped, enable) ped, bool Empêche les ennemis de cibler ce personnage.

Position & Déplacement

Fonction Paramètres Description
SetCharCoordinates(ped, x, y, z) ped, x, y, z Téléporte le personnage aux coordonnées 3D.
SetCharHeading(ped, angle) ped, angle (float) Définit l'orientation de regard (0 à 360°).
SetCharVelocity(ped, vx, vy, vz) ped, vx, vy, vz Applique un vecteur de vélocité physique.
GetCharCoordinates(ped) ped Rend la position 3D en trois valeurs : local x, y, z = GetCharCoordinates(ped).

Police & Étoiles de Recherche

Fonction Paramètres Description
AlterWantedLevel(playerId, stars) playerId, stars (0-6) Définit le niveau d'étoiles de police.
ApplyWantedLevelChangeNow(playerId) playerId Applique immédiatement le changement de comportement policier.
ClearCharLastDamageEntity(ped) ped Réinitialise l'état d'agression envers la police.
-- Exemple : Soigner le joueur et effacer les étoiles de police
local ped = GetPlayerChar(GetPlayerId())
SetCharHealth(ped, 200)
AddArmourToChar(ped, 100)
AlterWantedLevel(GetPlayerId(), 0)
ApplyWantedLevelChangeNow(GetPlayerId())

🚗 Véhicules (CAR / VEHICLE)

Création & Réparation

Fonction Paramètres Description
CreateCar(modelHash, x, y, z, createdByScript) hash, x, y, z, bool Fait apparaître un véhicule et renvoie son handle.
DeleteCar(veh) veh Supprime un véhicule.
FixCar(veh) veh Répare entièrement la carrosserie et le moteur du véhicule.
SetCarEngineOn(veh, engineOn, silent) veh, bool, bool Démarre ou coupe le moteur du véhicule.
WarpCharIntoCar(ped, veh) ped, veh Téléporte le joueur directement sur le siège conducteur.

Vitesse & Contrôle

Fonction Paramètres Description
GetCarSpeed(veh) veh Renvoie la vitesse en mètres par seconde (m/s). Multiplier par 3.6 pour des km/h.
SetCarForwardSpeed(veh, speed) veh, speed (float) Applique une vitesse avant en m/s.
IsCharInAnyCar(ped) ped Renvoie true si le personnage est à bord d'un véhicule.
GetCarCharIsUsing(ped) ped Renvoie le handle du véhicule dans lequel se trouve le personnage.
-- Exemple : Réparer et booster la voiture actuelle
local ped = GetPlayerChar(GetPlayerId())
if IsCharInAnyCar(ped) then
    local veh = GetCarCharIsUsing(ped)
    FixCar(veh)
    SetCarForwardSpeed(veh, 50.0) -- Accélération à ~180 km/h
end

🔫 Armes & Équipement (WEAPON)

Fonction Paramètres Description
GiveWeaponToChar(ped, weaponId, ammo, show) ped, weaponId, ammo, bool Donne une arme et ses munitions au personnage.
RemoveAllCharWeapons(ped) ped Retire toutes les armes du personnage.
SetCharAccuracy(ped, accuracy) ped, accuracy (0-100) Définit la précision de tir (pourcentage).
SetCharAmmo(ped, weaponId, ammo) ped, weaponId, ammo Définit le nombre de balles d'une arme spécifique.
-- Exemple : Donner un Desert Eagle (ID 9) et une M4 (ID 15) avec munitions
local ped = GetPlayerChar(GetPlayerId())
GiveWeaponToChar(ped, 9, 100, false)
GiveWeaponToChar(ped, 15, 300, true)

🧠 Intelligence Artificielle & Tâches (TASK)

Fonction Paramètres Description
TaskWanderStandard(ped) ped Fait marcher le piéton aléatoirement dans la rue.
TaskCombat(ped, targetPed) ped, targetPed Ordonne au personnage d'attaquer la cible.
TaskCarDriveWander(ped, veh, speed, drivingStyle) ped, veh, speed, style Fait conduire le personnage aléatoirement.
TaskHandsUp(ped, duration) ped, duration (ms) Fait lever les mains en l'air au piéton.
ClearCharTasks(ped) ped Annule immédiatement toutes les actions de l'IA.

🌍 Environnement & Monde de Jeu

Fonction Paramètres Description
SetTimeOfDay(hours, minutes) hours (0-23), minutes (0-59) Modifie l'heure du jeu.
ForceWeatherNow(weatherId) weatherId (0-7) Change immédiatement la météo.
AddExplosion(x, y, z, type, radius, sound, visual, camShake) x, y, z, type, radius, bool, bool, float Déclenche une explosion dans le monde.
DrawLightWithRange(x, y, z, r, g, b, range, intensity) x, y, z, r, g, b, range, intensity Crée une source de lumière dynamique aux coordonnées.

📍 Blips & Points sur la Carte (BLIP)

Fonction Paramètres Description
AddBlipForCoord(x, y, z) x, y, z Crée un repère sur la carte aux coordonnées.
AddBlipForChar(ped) ped Attache un repère GPS sur un personnage. Rend le handle du repère.
AddBlipForCar(veh) veh Attache un repère GPS sur un véhicule.
ChangeBlipColour(blip, colorId) blip, colorId (0-4) Change la couleur (0=Blanc, 1=Rouge, 2=Vert, 3=Bleu, 4=Jaune).
RemoveBlip(blip) blip Supprime un repère de la carte.

Natifs qui demandaient autrefois un contournement

Trois formes de natifs étaient impossibles à appeler, ou appelables mais silencieusement fausses, par leur globale PascalCase typée. Les trois marchent désormais normalement. Si vous lisez du code de mod plus ancien qui les fait passer par Native.Call / Native.CallOut, ce détour n'a plus lieu d'être.

Natifs prenant un handle par pointeur

DELETE_CAR, DELETE_CHAR, DELETE_OBJECT, MARK_CAR_AS_NO_LONGER_NEEDED, MARK_CHAR_AS_NO_LONGER_NEEDED, MARK_OBJECT_AS_NO_LONGER_NEEDED et leurs parents CREATE_GROUP / CREATE_VIEWPORT / COPY_*_DECISION_MAKER prennent tous un pointeur vers un handle : le jeu lit le handle à travers lui, puis le remet à zéro.

Ces paramètres étaient enregistrés comme de pures sorties : la globale typée tendait au jeu un buffer vide et ne lisait jamais votre argument - DeleteCar(veh) s'exécutait sans toucher à veh. Ils portent maintenant un troisième rôle, isInputPointer : le thunk encadre votre argument, tend son adresse au natif, puis redécode vers Lua le buffer réécrit.

DeleteCar(veh)   -- le supprime ; rend le handle que le natif a remis à zéro

AddBlipForChar(ped)

Ses deux paramètres étaient enregistrés comme des sorties : la globale ne prenait aucune entrée et ne voyait jamais votre ped - tous les repères atterrissaient sur le ped 0. Seul le second est une sortie (le Blip* que le natif écrit), donc la globale prend le ped et rend le repère :

local blip = AddBlipForChar(ped)

AddBlipForCar(veh) et AddBlipForCoord(x, y, z) ont toujours été corrects.

Natifs rendant un Vector3

GET_BLIP_COORDS et sa famille reçoivent un seul pointeur pour trois flottants. Il manquait deux choses : NativeContext::SetVectorResults(), qui recopie le vecteur temporaire du moteur vers le buffer fourni par l'appelant (sans elle ces natifs rendent toujours 0, 0, 0), et une signature - les parseurs écartent toute déclaration portant un Vector3 *.

Les deux sont en place, et une sortie Vector3 s'écrit comme trois sorties float consécutives, les buffers de sortie du thunk étant contigus :

local x, y, z = GetBlipCoords(blip)

Un repère attaché à une entité rend toujours 0, 0, 0 : il suit l'entité et ne porte aucune coordonnée propre. C'est le comportement du jeu, pas un défaut de signature.

Comment vérifier n'importe quel natif vous-même

Native.Info("UN_NATIF") rend la signature enregistrée, dont un champ confidence qui dit d'où elle vient. Tout ce qui n'est pas x32dbg_live_verified_* mérite une contre-vérification. La même information se trouve dans la base de natifs, où un paramètre marqué out signifie que la valeur revient vers Lua au lieu d'être passée.