Aller au contenu

Créer son Premier Mod Lua

Bienvenue dans le modding de GTA IV avec LuaModLoader ! Ce guide s'adresse aux débutants : vous n'avez pas besoin de connaissances en C++ ni d'outils compliqués pour commencer.


Comment fonctionne un Mod Lua ?

Un mod est simplement un fichier texte avec l'extension .lua placé dans le dossier de votre jeu. LuaModLoader lit ce fichier et exécute automatiquement vos instructions dans GTA IV.

📁 Dossier principal de GTA IV/
├── 📁 mods/
│   └── 📁 MonPremierMod/
│       ├── 📄 manifest.lua   <-- déclare le mod (obligatoire)
│       └── 📄 main.lua       <-- Votre code va ici !
├── 📄 dinput8.dll
└── 📄 LuaModLoader.dll

L'éditeur peut faire les étapes 1 à 3 pour vous

Jeu lancé, appuyez sur F6, faites un clic droit dans la liste des mods et choisissez New mod. Vous obtenez le dossier, un manifest.lua commenté et un main.lua prêt à remplir. Les étapes ci-dessous sont la même chose à la main.

Étape 1 : Créer le dossier de votre mod

  1. Ouvrez le dossier de votre jeu GTA IV (là où se trouve GTAIV.exe).
  2. Ouvrez (ou créez s'il n'existe pas) le dossier nommé mods.
  3. Dans mods, créez un nouveau sous-dossier, par exemple MonPremierMod.
  4. Dans ce sous-dossier, créez un fichier texte nommé main.lua.

Étape 2 : Écrire votre premier script

Ouvrez main.lua avec le Bloc-notes, VS Code ou l'éditeur de votre choix, puis collez ce code :

-- Au chargement du mod, affiche un message à l'écran
Console.MsgBox("Bienvenue sur LuaModLoader !")

-- Cette fonction s'exécute automatiquement en boucle à chaque image du jeu
Thread.Create(function()
    while true do
        -- Vérifie si la touche F4 (code 0x73) est appuyée
        if Input.IsKeyDown(0x73) then
            local playerPed = GetPlayerChar(GetPlayerId())

            -- Remet la vie du joueur au maximum (200)
            SetCharHealth(playerPed, 200)

            -- Ajoute du gilet pare-balles (armure 100)
            AddArmourToChar(playerPed, 100)

            Log.Print("Vie et armure remises au maximum !")
        end
        Thread.Wait(0)
    end
end)

Étape 3 : Déclarer le mod (manifest.lua)

C'est le manifeste qui fait du dossier un mod : sans lui, le loader passe devant sans s'arrêter et votre script n'apparaît nulle part. Ajoutez un manifest.lua à côté de main.lua :

name 'Mon Premier Mod'
author 'Vous'
description 'Soigne le joueur sur F4.'
version '1.0.0'
autostart = true

client_scripts {
    'main.lua',
}

Chaque ligne est un simple appel Lua, d'où l'absence de = devant les chaînes. L'exception est autostart, qui est un booléen, et f true n'est pas du Lua valide : écrivez autostart = true ou autostart(true). Il vaut false par défaut, c'est donc cette ligne qui décide si le mod démarre tout seul.

La page Structure d'un mod porte la référence complète du manifeste, qui couvre les mods multi-fichiers, MOD_DIR et les formats hérités.


Étape 4 : Tester et modifier en direct dans le jeu (Touche F6)

Pas besoin de redémarrer le jeu à chaque modification :

  1. Lancez GTA IV.
  2. Appuyez sur F6 en jeu pour ouvrir l'Éditeur de code intégré.
  3. Vous pouvez taper du code Lua et l'exécuter immédiatement en direct !
  4. Réappuyez sur F6 pour refermer l'éditeur et continuer à jouer.

💡 Nommage : les natifs sont en PascalCase

Chaque natif GTA IV est une fonction globale sous son nom PascalCase :

SetCharHealth(ped, 200)
GetPlayerChar(GetPlayerId())

Ce sont les mêmes noms que ceux qu'utilisent les scripts ScriptHookDotNet et les trainers classiques : un portage n'a rien à renommer.

Le nom canonique SNAKE_CASE n'est pas une fonction globale. Il reste joignable à deux endroits :

  • la table natives, avec natives.SET_CHAR_HEALTH(ped, 200).
  • Native.Call("SET_CHAR_HEALTH", ped, 200). Là, le nom doit être en SNAKE_CASE, la résolution étant une correspondance exacte sur le nom canonique.

Tout ce que le loader fournit lui-même vit dans un namespace : Thread, Console, Log, Draw, Color, Input, Gamepad, Native, Memory, Vehicle, Script. Voir la référence de l'API.