Contents Up Previous Next

Les modules

Si vous travaillez sur un gros jeu, vous remarquerez que votre script global peut vite devenir imposant et déroutant. Heureusement, il y a les Modules -- à la base il vous permettent d'avoir plusieur scripts globaux différents, et de séparer votre code en plusieurs parcelles oganisées.

Le script global principal doit contenir toutes les fonctions d'interaction (les scripts Look At Character, Interact With Inventory et autres) et tous les éléments du GUI (btnSave_Click, etc.).
Mais si vous avez des fonctions personnelles alors vous pouvez les placer dans des modules séparés pour diviser votre code. Les modules ont l'avantage de pouvoir être facilement exportés ou importés, si vous voulez partager du code avec d'autres gens, ou même simplement le réutiliser dans plusieurs jeux.

Les modules sont accessibles à l'aide du "Module Manager" dans le menu Script. Chaque module a son propre script header, où vous placerez vos déclarations import pour le module afin que le reste de votre jeu puisse y accéder correctement.

L'odre desmodules est important. Un module peut utiliser une fonction d'un autre module uniquement si celui-ci se trouve avant lui dans la liste. Le script global et les scripts des pièces peuvent accéder à tous les modules, mais les modules ne peuvent pas accéder au script global ni aux scripts des pièces.

Par exemple, supposez que vous vouliez une fonction spécialle AdditionnerNombres dans un module. Vous devrez créer un nouveau module dans le Module Manager, puis insérer ceci dans le header du module :

import function AdditionnerNombres(int a, int b);
Puis, dans le script du module vous mettriez :
function AdditionnerNombres(int a, int b) {
  return a + b;
}
Comme vous le voyez, les modules fonctionnent sur le même principe que le script global et le script header, mais vous permettent de diviser votre code en plusieurs morceaux plus maniables.

Fonctions spéciales

Les modules peuvent-ils utiliser des fonctions spéciales comme game_start et repeatedly_execute ? Eh bien, oui et non. Les modules peuvent uniquement contenir les fonctions suivantes, qui seront appelées juste avant celles du script global :

Toutes les autres fonctions spéciales, comme dialog_request, ne seront pas appelées dans le module même si elles y existent. Si vous avez besoin de manipuler ces fonctions dans des modules, vous pouvez simplement créer une fonction personnelle dans le module et l'appeler à partir du script global.

La commande ClaimEvent fonctionne pour on_key_press, on_mouse_click et on_event. L'utiliser empêche le reste des modules et le script global d'être appelés pour l'événement correspondant.