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.
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 :
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 :
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.