Le contenu d'un répertoire de mission
Publié : 21 nov. 2013, 11:22
Lorsqu'on crée une mission, on peut se contenter des éléments placés dans l'éditeur, mais si on souhaite créer des missions plus complexes, il deviendra vite nécessaire pour rendre l'édition plus confortable d'utiliser des fichiers externes.
De base, un répertoire de mission créé avec ArmA ne contient que le fichier "mission.sqm" qui contient les éléments placés avec l'éditeur.
Mais il en existe plusieurs autres qui forment la base de la création de mission.
Un fichier ZIP avec la mission d'exemple utilisée ici est disponible: Les fichiers de base sont:
Description.ext
Ce fichier sert à affiner la configuration de la mission. Par exemple, si on souhaite avoir un nom ou une image qui s'affiche lors du chargement de la mission, c'est ici que ça se passe.
Pour commencer, un exemple de contenu:
Toutes les explications peuvent être retrouvées sur le Wiki de BIS:
http://community.bistudio.com/wiki/Description.ext
onLoadName : Le nom de la mission affiché au dessus de l'écran de chargement
onLoadMission : Le texte de la mission affiché au bas de l'écran de chargement
author : Le nom de l'auteur de la mission
onLoadIntro : Un message à afficher lors du chargement de la mission
onLoadIntroTime : Défini si oui ou non on affiche l'heure et le jour lors du chargement de l'intro
onLoadMissionTime : Défini si oui ou non on affiche l'heure et le jour lors du chargement de la mission
loadScreen : Le chemin vers l'image (PAA ou JPG) qui sera affichée dans l'écran de chargement
disableAI : Si sur "1", les postes non pris par des joueurs ne pourront PAS être attribués à des IAs
debriefing : Défini si le débriefing est affiché ou non à la fin de la mission
showGPS : Si sur "0" la mini carte du GPS ne s'affiche plus
La classe Header défini les informations affichées dans la sélection de mission et dans le listing des serveurs.
gameType : COOP, CTF, etc. (BIS Wiki)
La plupart du temps, si une interface existe dans un script, un lien devra être ajouté dans Description.ext qui pointe vers le fichier de définition de cette interface.
Par exemple:
Stringtable.csv
C'est tout simplement le fichier qui contient les traductions de la mission.
Le fichier doit impérativement commencer par "LANGUAGE", suivi de la liste des langues dans l'ordre où elles seront données par la suite.
Chaque clé devra donc être suivie par la traduction en Anglais (la première langue est celle qui sera choisie par défaut, pour un joueur russe par exemple), Allemand, Français et Italien.
A noter que la dénomination "STR_..." n'est pas obligatoire, mais c'est une bonne habitude à prendre et c'est utilisé par tout le monde.
Donc faites-le!!!
Init.sqf
C'est le premier et seul script lancé par la mission sans qu'on ai besoin de l'appeler.
Donc, tous vos appels de scripts, s'ils ne sont pas appelés par un déclencheur ou dans la ligne d'initialisation d'une unité, seront appelés à partir d'ici.
Ci-dessous j'ai mis un exemple très simple qui crée du logging dans le fichier RPT (c'est comme ça que vous pourrez débugger vos missions) et qui donne directement une erreur. De cette manière vous verrez directement ce que ça donne dans le RPT et avec "-showScriptErrors".
mes_scripts\monscript.sqf et mes_scripts\parametres.sqf
Ce sont des scripts très simples, qu'on peut appeler tant dans la mission que dans le code pour tester l'appel de scripts.
Ces scripts se contentent d'afficher un message.
Pour appeler "monscript.sqf" depuis un élément de la mission (un déclencheur ou l'initialisation d'un objet) tapez:
Pour l'appeler depuis le "init.sqf" tapez:
Le contenu du fichier "monscript.sqf":
De la même manière le fichier "parametres.sqf" peut être appelé depuis un élément de la mission ou le fichier init.sqf, mais celui-ci accepte des paramètres.
Essayez par exemple dans le "init.sqf":
Le contenu du fichier "parametres.sqf":
La variable "_this" est ce qu'on appele une variable magique, elle est automatiquement créée et remplie avec le(s) paramètres donné(s) au script.
Dans ce cas ci, on a donné:
De base, un répertoire de mission créé avec ArmA ne contient que le fichier "mission.sqm" qui contient les éléments placés avec l'éditeur.
Mais il en existe plusieurs autres qui forment la base de la création de mission.
Un fichier ZIP avec la mission d'exemple utilisée ici est disponible: Les fichiers de base sont:
- mission.sqm : contient les objets placés avec l'éditeur, NE JAMAIS l'éditer à la main!
- description.ext : contient les informations de configuration de la mission
- stringtable.csv : contient les traductions des textes de la mission
- init.sqf : c'est le premier script exécuté dans une mission
- Les scripts du créateur de mission
Description.ext
Ce fichier sert à affiner la configuration de la mission. Par exemple, si on souhaite avoir un nom ou une image qui s'affiche lors du chargement de la mission, c'est ici que ça se passe.
Pour commencer, un exemple de contenu:
Code : Tout sélectionner
onLoadName = "Le nom de ma mission";
onLoadMission = "$STR_DESCRIPTION_MISSION";
author="[V]Tyrghen";
onLoadIntro = "";
onLoadIntroTime = false;
onLoadMissionTime = false;
loadScreen = "intro-logo.paa";
disabledAI=1;
debriefing=0;
showGPS=1;
class Header
{
gameType = "COOP";
minPlayers = 1;
maxPlayers = 16;
};
http://community.bistudio.com/wiki/Description.ext
onLoadName : Le nom de la mission affiché au dessus de l'écran de chargement
onLoadMission : Le texte de la mission affiché au bas de l'écran de chargement
author : Le nom de l'auteur de la mission
onLoadIntro : Un message à afficher lors du chargement de la mission
onLoadIntroTime : Défini si oui ou non on affiche l'heure et le jour lors du chargement de l'intro
onLoadMissionTime : Défini si oui ou non on affiche l'heure et le jour lors du chargement de la mission
loadScreen : Le chemin vers l'image (PAA ou JPG) qui sera affichée dans l'écran de chargement
disableAI : Si sur "1", les postes non pris par des joueurs ne pourront PAS être attribués à des IAs
debriefing : Défini si le débriefing est affiché ou non à la fin de la mission
showGPS : Si sur "0" la mini carte du GPS ne s'affiche plus
La classe Header défini les informations affichées dans la sélection de mission et dans le listing des serveurs.
gameType : COOP, CTF, etc. (BIS Wiki)
La plupart du temps, si une interface existe dans un script, un lien devra être ajouté dans Description.ext qui pointe vers le fichier de définition de cette interface.
Par exemple:
Code : Tout sélectionner
#include mon_script\interface.hpp
Stringtable.csv
C'est tout simplement le fichier qui contient les traductions de la mission.
Le fichier doit impérativement commencer par "LANGUAGE", suivi de la liste des langues dans l'ordre où elles seront données par la suite.
Chaque clé devra donc être suivie par la traduction en Anglais (la première langue est celle qui sera choisie par défaut, pour un joueur russe par exemple), Allemand, Français et Italien.
Code : Tout sélectionner
LANGUAGE,English,German,French,Italian
// On peut commenter le fichier des traductions
STR_MON_TEXTE,"This is my text","Das ist mein Text","Ceci est mon texte","Questo è il mio testo"
STR_DESCRIPTION_MISSION,"My mission description","Meine Mission Beschreibung","La description de ma mission","La mia descrizione missione"
Donc faites-le!!!
Init.sqf
C'est le premier et seul script lancé par la mission sans qu'on ai besoin de l'appeler.
Donc, tous vos appels de scripts, s'ils ne sont pas appelés par un déclencheur ou dans la ligne d'initialisation d'une unité, seront appelés à partir d'ici.
Ci-dessous j'ai mis un exemple très simple qui crée du logging dans le fichier RPT (c'est comme ça que vous pourrez débugger vos missions) et qui donne directement une erreur. De cette manière vous verrez directement ce que ça donne dans le RPT et avec "-showScriptErrors".
Code : Tout sélectionner
sleep 3;
if (isServer) then {
diag_log ["Je suis sur le serveur",isServer];
};
if (!isDedicated) then {
diag_log ["Je suis sur le client",isDedicated];
};
sleep 5;
// Cette ligne de code va générer une erreur
getPos [];
mes_scripts\monscript.sqf et mes_scripts\parametres.sqf
Ce sont des scripts très simples, qu'on peut appeler tant dans la mission que dans le code pour tester l'appel de scripts.
Ces scripts se contentent d'afficher un message.
Pour appeler "monscript.sqf" depuis un élément de la mission (un déclencheur ou l'initialisation d'un objet) tapez:
Code : Tout sélectionner
nul = [] execVM "mes_scripts\monscript.sqf";
Code : Tout sélectionner
[] execVM "mes_scripts\monscript.sqf";
Code : Tout sélectionner
hint "J'ai été exécuté!";
Essayez par exemple dans le "init.sqf":
Code : Tout sélectionner
["un paramètre",isServer,local player,player] execVM "mes_scripts\parametres.sqf";
Code : Tout sélectionner
hint format ["%1",_this];
Dans ce cas ci, on a donné:
- "un paramètre": une chaîne de caractère
- isServer: le contenu d'une variable prédéfinie
- local player: le résultat d'une commande interne d'ArmA
- player: le contenu d'une variable globale, ici, le joueur.