Je commence cette série d’articles sur le scripting d’arma 3, y passant beaucoup (trop) de temps afin d’aider ou préparer des missions pour la communauté Grèce de canards.
Avant de s’attaquer à du concret, pour partir avec les mêmes outils, voyons ce que Bohemia nous propose.
Je pars du principe que ceux qui lisent cette article connaissent déjà un peu le langage sqf. S’il y a de la demande, je pourrais faire un article plus complet pour introduire ce langage.
Pour les habitués de scripts, la localité ou le contexte doit déjà vous parler. Pour ceux qui ont un doute ou ne voient pas, le plus simple est de prendre un exemple.
Premièrement, il faut qu’on soit sûr d’avoir une fenêtre de debug.
Configuration d’EDEN
Eden est le nom de l’éditeur d’arma 3. Par défaut, la mission permettra d’accéder à la fenêtre de debug. On cherche à avoir cette fenêtre pour écrire du code pendant qu’on teste la mission (ENTRER pour lancer la mission depuis Eden).
Pourquoi utiliser la fenêtre en jeu plutôt que celle intégrée dans Eden ? Lorsqu’on lance le jeu, beaucoup de variables sont créées… une bonne partie des fonctions ne fonctionnent pas quand on est sur Eden.
Ainsi pour éviter des problèmes, le plus simple reste d’utiliser la fenêtre de debug en jeu.
A noter toute de même qu’il y a des problèmes d’asynchrone, mais on y reviendra dans un autre article qui ne nous impactera pas pour celui-ci.
Si vous n’avez pas cette fenêtre en faisant ECHAP durant la partie, vérifiez la configuration dans Eden comme suit :
L’option « Available only in editor » fonctionne aussi pour une partie singleplayer en lançant depuis Eden.
Cependant, par habitude, je ne l’utilise pas pour permettre de debug durant des missions.
La 2ème option est pour les admins, si vous la jouez en multijoueur. Il faut bien être soit le serveur soit être connecté via la commande #login, et non seulement via le #vote admin ****.
La dernière option, permet à tout le monde d’avoir la fenêtre de debug.
Exemple de code
_other_context = {
systemChat (_hello + " world");
};
_hello = "Hello";
systemChat _hello;
call _other_context;
Vous pouvez l’exécuter dans la fenêtre de debug, via la touche ENTREE, ou en cliquant sur une des options :

Je n’ai que l’option 3) de proposée n’ayant pas de serveur de lancé, et étant uniquement sur mon client.
Sinon pour l’explication :
1) Permet d’exécuter le code uniquement sur le serveur
2) Permet d’exécuter le code chez tout le monde, (tous les clients, ainsi que le serveur)
3) Permet d’exécuter le code uniquement sur son propre client
On va expliquer le code pour le comprendre, mais le résultat étant simplement d’écrire dans le chat :
Explication du code pour les curieux
_hello = "Hello";
systemChat _hello;
On crée simplement une variable local « _hello » et on demande d’afficher dans le chat son contenu, d’où l’apparition du premier « Hello« .
_other_context = {
systemChat (_hello + " world");
};
call _other_context;
Ici, on vient créer une fonction _other_context, qu’on appelle.
Le fait d’avoir une variable qui va contenir { } signifie qu’elle contiendra du code.
Enfin, la fonction call permet de faire s’exécuter ce code.
systemChat (_hello + " world");
On vient ajouter notre valeur du _hello à un string » world » afin de l’afficher dans le chat.
D’ailleurs on pourra remarquer qu’on a bien gardé la valeur du _hello.
Exemples d’espions
La partie basse est ce qu’on appelle des watchers, spies ou encore espions.
Chaque ligne permet de simplement suivre une variable (ou en tout cas une valeur).
allUnits
AllUnits est un tableau proposé par le moteur pour lister toutes les unités en jeu.
player
player renvoie simplement l’unité du joueur courant, sur un serveur cette variable sera vide, n’ayant pas d’unité propre.
west countSide AllUnits
east countSide AllUnits
west ou east sont des variables définissant les camps (sides) l’un des 4 camps à Blufor, Opfor, Independant et Civil.

CountSide permet de compter le nombre d’unité pour le camps spécifié, dans le tableaux passé en paramètre, soit AllUnits, donc toutes les unités dans notre cas.
Les dossiers importants
Il y a quelques dossiers intéressants à connaitre, le premier est directement copiable dans votre file browser.

Création de missions
Dossier contenant vos missions, pour votre profil principal, dans lequel vous trouverez un dossier missions et un dossier mpmissions.
- %UserProfile%\Documents\Arma 3\
- C:\Users\****\Documents\Arma 3\
Si ces uris ne fonctionnent pas, vous devez passer par un autre profil, vos missions seront donc ici :
- %UserProfile%\Documents\Arma 3 – Other Profiles\VOTRE PROFIL\
- C:\Users\****\Documents\Arma 3 – Other Profiles\VOTRE PROFIL\
Cache et logs
Si vous voulez récupérer une mission que vous avez joué sur un serveur, ou que vous avez besoin des logs pour comprendre une erreur que vous avez eu, tout se trouve dans le dossier :
- %UserProfile%\AppData\Local\Arma 3\
- C:\Users\******\AppData\Local\Arma 3\
A la racine, vous aurez des fichiers « arma3_x64_2019-10-21_14-42-00.rpt » :
en vert le jour, et en bleu l’heure du lancement du jeu.
A noter qu’arma ne garde que les 10 dernières sessions.
Si vous n’avez pas de fichier rpt (report), c’est certainement que vous avez désactivé les logs. Via Steam, vous avez dû ajouter des commandes ou des extensions pour le faire, aussi je ne pourrai pas aider.
Via Arma3Sync, c’est une simple option à décocher :

Enfin, vous avez le dossier MPMissionsCache qui contiendra tous les PBO que vous avez pu jouer sur des serveurs.
Il faut bien que vous ayez les données en local pour jouer 😉
S’il y a des demandes, on pourra voir comment faire pour venir éditer une mission à partir d’un PBO.
Vos missions finies
Quand vous exportez votre mission, vous devrez générer un fichier pbo comme suit (ou via un outil externe) :

Je ne peux pas vous donner le lien direct comme les autres, mais vous devez bien savoir y aller vous même 😉
Les missions se trouve dans votre dossier Steam :
- Steam\steamapps\common\Arma 3\Missions
- Steam\steamapps\common\Arma 3\MPMissions
Missions pour les export vers missions solo, et MPMissions pour les export multijoueur.
Si vous avez un doute de l’emplacement de votre dossier Steam :


Conclusion
Cette article parait très simple 🙂
Mais j’ai travaillé avec plusieurs personnes ne sachant pas forcément utiliser les outils de bases, donc autant les noter dès le début pour bien commencer.
De plus j’espère que les informations disséminées auront pu sustenter ceux qui en auraient besoin.