Aller au contenu

LuaModLoader

Un chargeur de mods basé sur Lua pour la réédition Steam de 2020 de GTA IV ("Complete Edition", build 1.2.0.59, x86).

Puisque le classique ASI Loader et ScriptHookIV ne fonctionnent pas sur cette version spécifique de GTA IV, LuaModLoader offre une alternative moderne : il permet d'exécuter des scripts et des mods directement en Lua sans avoir besoin de manipuler la mémoire brute ou d'écrire du code C++.

Architecture et Fonctionnement

Le projet est divisé en deux composants principaux :

  • binkw32.dll (Proxy Loader) : Un proxy léger chargé automatiquement par le jeu (similaire à Ultimate ASI Loader). Il redirige les vrais appels Bink vers le fichier original (binkw32_orig.dll) et charge silencieusement la vraie DLL du mod en arrière-plan.
  • LuaModLoader.dll (Native Payload) : Le cœur du programme. Il inclut un interpréteur Lua 5.4, des hooks DirectX pour le rendu (D3D9), des hooks d'entrée (DirectInput), et un éditeur de texte intégré.

Fonctionnalités Clés

  • Éditeur de Code en jeu : Appuyez sur F6 pour ouvrir l'éditeur Lua (propulsé par Scintilla) pour écrire, exécuter ou tester du code en direct sans relancer le jeu ou utiliser un programme externe.
  • Double Convention de Nommage (SNAKE_CASE & PascalCase) : Appelez directement plus de 3100+ fonctions natives du jeu en utilisant soit le format canonique SNAKE_CASE (ex : SET_CHAR_HEALTH(ped, 200)), soit le format PascalCase (ex : SetCharHealth(ped, 200) / GetPlayerId()) pour une compatibilité totale avec les scripts existants type ScriptHookDotNet.
  • Rendu et Entrées : Dessinez des rectangles/textes à l'écran par-dessus le jeu, et interceptez proprement les touches (is_key_down, set_menu_open) pour isoler les entrées du jeu lorsque votre mod est actif.

Exemple de Mod et Scripts Compatibles

LuaModLoader rend la création de mods très accessible. Voici un exemple simple d'un script utilisant l'API native du chargeur :

-- Exemple de mod Lua : Définir la santé et l'armure du joueur
local player_index = GET_PLAYER_ID()
local player_ped = GET_PLAYER_CHAR(player_index)

SET_CHAR_HEALTH(player_ped, 200)
ADD_ARMOUR_TO_CHAR(player_ped, 100)
msgbox("Santé et armure mises à jour !")

Voici des scripts et mods compatibles :


📚 Liens Rapides de la Documentation


Installation (Utilisateurs)

Vous n'avez pas besoin de compiler le projet pour l'utiliser.

[!TIP] Un installateur automatique sera bientôt disponible pour rendre ce processus encore plus facile ! En attendant, voici la méthode manuelle :

  1. Allez dans l'onglet Releases et téléchargez la dernière version (binkw32.dll, LuaModLoader.dll, Scintilla.dll, Lexilla.dll).
  2. Allez dans le dossier racine de GTA IV.
  3. Renommez le fichier binkw32.dll existant en binkw32_orig.dll (TRÈS IMPORTANT, ce fichier gère la vidéo et l'audio du jeu).
  4. Copiez les 4 fichiers téléchargés dans ce même dossier.

Pour désinstaller : supprimez les 4 fichiers copiés et renommez binkw32_orig.dll en binkw32.dll.

Compilation (Développeurs)

Prérequis :

  • Visual Studio 2026 ("Développement Desktop avec C++", toolset x86)
  • CMake

[!WARNING] Ciblez toujours Win32/x86 - GTAIV.exe est un processus 32 bits. Une DLL compilée en x64 ne fonctionnera jamais avec ce jeu.

cmake -S . -B build -G "Visual Studio 18 2026" -A Win32
cmake --build build --config Release

Sortie générée dans le dossier build\out\Release\ :

  • LuaModLoader.dll
  • binkw32.dll
  • (Scintilla.dll et Lexilla.dll y seront automatiquement copiés).