Langage scripté de MOHAA annexe C
Architecture d'un script
retour sommaire
Retour au texte principal
Texte original par Bjarne
Grönnevik (vous trouverez en rose les
explications données par Bjarne)
Titre original : Script
architecture
Traduit par
Tropheus (Vous trouverez
en vert des précisions données
par votre traducteur)
Toutes les commandes utilisées dans le scripting sont écrites dans un fichier script. Ce document vous explique comment est construit un fichier script.
* Le fichier *.scr
* Commentaires
* Les "methods"
* Une method spéciale la "main method".
* Le contenu de la "main" method.
* Un exemple complet de fichier *.scr
Toutes les commmandes utilisées dans le scripting sont mises dans un fichier *.scr. C'est un ficher texte standard qui peut être créé avec n'importe quel éditeur de textes (comme Notepad sous windows ou VI &Emac sous UNIX) (ndt :Je déconseille fortement l'utilisation de "wordpad" qui insère bon nombres de caractères supplémentaires ce qui modifie le script. Mais je conseille par ailleurs "Textpad" qui est très intéressant comme soft pour lire et créer les fichiers *.scr). Ces fichiers ont comme extension .scr au lieu de .txt comme l'ont souvent les fichiers textes. (ndt : extension à rajouter à la main directement à l'enregistrement de votre fichier script.exemple vous taperez : ma_map.scr)
L'extension .scr pose quelque fois des problèmes car windows la reconnait comme un économiseur d'écran. Aussi, si vous double-cliquez dessous, vous verrez appraître le message d'erreur suivant "C:\some_catalog\filename.scr is not a valid Wim32 application". Aussi pour ouvrir un tel fichier vous devez le faire à partir de votre éditeur de texte au lieu de double-cliquez dessus.
Les commentaires sont une partie importante du fichier *.scr.
Basiquement tout ce qui est placé après 2 '/' sera igonré par MOH et peut être utilisé par le scripteur pour placer des aides ou des explications sur ce qu'il est en train de se passer au niveau du fichier script. Le tout sans que le jeu n'interprète mal ces indications.
Exemple :
// Faire sauter le casque du premier joueur
s'il en a un... |
revient au même dans le jeu que s'il était écrit :
$player[0] pophelmet |
Dans le fichier *.scr les commandes sont placées dans des "methods". Les" method"s sont des collections de commandes placées dans une zone du fichier avec un nom (nom de la "method") et se terminant par le mot clé end. Ceci ressemble à ceci :
a_good_method_label: // Il n'y a pas de commandes dans cette method, mais il pourrait y en avoir.... // ...Car c'est juste un exemple end |
Une method spéciale "la main method".
La" main" method est une "method" appelée 'main'. Ceci est un peu spécial car c'est une method par defaut. Ce qui signifit que si une commande est donnée pour executer le script appelé mon_script.scr comme ceci :
exec mon_dossier/mon_script.scr |
... il se passe en fait ceci :
exec mon_dossier/mon_script.scr::main |
Et alors? Bien... c'est ce qui se passe avec votre script "connecté" à votre map. Si votre map s'apelle ma_map, et que c'est une map DM, alors MOH tentera automatiquement de faire ceci en chargeant votre map :
exec maps/dm/ma_map.scr |
...et il est absolument nécessaire d'avoir une method 'main' dans votre script si vous voulez qu'il soit executé.
(ndt : la method "main" est la première partie de votre script lue par le jeu. Comme le dit Bjarne elle est lue par defaut ce n'est donc pas la peine de la préciser en mettant "::main")
Le contenu de la method "main".
Il est maintenant temps de construire une method "main". Très simplifée elle ressemble à ceci :
main: |
Pour que ceci ait un sens vous devez comprendre à quels moments les évenements prespawn, spawn et roundstart ont lieu:
prespawn
Le prespawn a lieu pendant le chargement de la map, il prépare en quelque sorte la map à accueillir les joueurs.
spawn
Le spawn a lieu lorsque le premier joueur entre sur la map.
roundstart
Le roundstart ne se rencontre seulement que sur les maps multijoueurs à objectifs. Après qu'au moins un joueur soit apparu dans chacun des camps (un en allié un en axe).
Un exemple complet de fichier *.scr
Ceci est un exemple complet de fichier *.scr avec beaucoup de commentaires expliquant ce qui se passe.
// Cette partie est juste de l'information sur les auteurs de la map
et du script // Ecrivez ici le texte que les joueurs verront // Mettez ici l'image que verront les joueurs quand ils // Construisez ici un effet de brouillard level waittill prespawn // Charge ici de nombreuses données utilisables
dans les jeux multiplayers level waittill spawn // Les Axis empêchent que les bombes soient mises level waittill roundstart // Par la non "installation" des bombes (par le jeu) et le non chargement
des procédures de victoires //************************************************************************************** //************************************************************************************** |
Retour sommaire
Retour texte principal