WIKI ADO

Accueil > ArmA3 > Edition de missions > Briefing

Briefing

- Publié le 08 Mai 2013 à 23h44 - Modifié le 11 Novembre 2013 à 12h26
Le briefing est un élément indispensable de votre mission. En effet, il permet de donner les objectifs à accomplir.
Vous pouvez aussi donner diverses informations sur la mission.

Il est possible sur ArmA3 de créer son briefing directement sur l'éditeur sans passer par les fichiers.
Mais je trouve que cette solution n'est pas franchement facile à mettre en place ou à gérer.


Pour commencer, vous devez créer les 2 fichiers suivants dans le dossier de votre mission.

Sous Vista/Seven :
C:\Users\monNom\Documents\ArmA 3 Other Profiles\monPseudo\missions\maMission.x\
Sous XP :
C:\Documents and Settings\monNom\Mes documents\ArmA3 Other Profiles\monPseudo\missions\maMission.x\
Si vous utilisez le profil d'origine,
il faut remplacer "ArmA3 Other Profiles" par "ArmA3" :

C:\Users\monNom\Documents\ArmA 3\monPseudo\

init.sqf


Ce fichier va nous permettre d'appeler le script "briefing.sqf" qui sera exécuté au lancement de la mission.
Pour se faire, insérer la commande suivante dans le fichier "init.sqf" :

execVM "briefing.sqf";

briefing.sqf


Ce fichier va nous permettre de créer le briefing qui comportera les notes et les objectifs de la mission.

Les notes


Dans un premier temps, nous allons créer nos notes.
La logique d'ArmA3 veut que l'on écrive les notes dans l'ordre décroissant.
Pour cela, nous utilisons la commande createDiaryRecord :

player createDiaryRecord ["Diary", ["NOTE_TITRE", "NOTE_CONTENU"]];
Exemple :

player createDiaryRecord ["Diary", ["Crédits", "Mission réalisée par : The-KiLLeR<br/><br/>
Clan ADO<br/>
www.clan-ado.fr"
]];

player createDiaryRecord ["Diary", ["Renseignements", "D'après nos images satellites, nous avons aperçu plusieurs véhicules blindés ainsi que des défenses anti-aériennes.<br/>
Nous avons également aperçu au large des bateaux armés."
]];

player createDiaryRecord ["Diary", ["Contexte", "Messieurs, l'heure est grave,<br/>
Les forces ennemies se sont emparées de l'aéroport de Stratis.<br/>
Nous devons par tous les moyens le reprendre !"
]];

Erreur Image

Les objectifs


Dans un second temps, il faut créer les différents objectifs de la mission.
La création d'un objectif se fait à l'aide de 3 commandes :

OBJ_NOM = player createSimpleTask["OBJ_TITRE"];
OBJ_NOM setSimpleTaskDescription["OBJ_DESCRIPTION", "OBJ_TITRE", "OBJ_TITRE"];
OBJ_NOM setSimpleTaskDestination (getMarkerPos "OBJ_MARQUEUR");

Exemple :

obj1 = player createSimpleTask["Reprendre l'aéroport"];
obj1 setSimpleTaskDescription["Nettoyer la zone de l'aéroport et reprenez le !", "Reprendre l'aéroport", "Reprendre l'aéroport"];
obj1 setSimpleTaskDestination (getMarkerPos "m_aeroport");

obj2 = player createSimpleTask["Détruire les défenses AA"];
obj2 setSimpleTaskDescription["Détruisez les défenses anti-aériennes.", "Détruire les défenses AA", "Détruire les défenses AA"];
obj2 setSimpleTaskDestination (getMarkerPos "m_aa");

Erreur Image

Objectif courant


Il est possible de définir l'objectif en cours avec la commande setCurrentTask :

player setCurrentTask OBJ_NOM;
Exemple :

player setCurrentTask obj1;
Vous pouvez repérer l'objectif en cours dans le briefing grâce à l'icône suivante : Erreur Image

Informations




Status des objectifs


Maintenant il faut pouvoir gérer le status des différents objectifs.
Le status d'un objectif est défini avec la commande setTaskState.
Cette commande est à insérer soit dans un déclencheur, soit dans un script au moment du changement du status.

OBJ_NOM setTaskState "OBJ_STATUS";
Exemple : L'objectif 1 est accompli

obj1 setTaskState "SUCCEEDED";
Liste des différents status possibles :

Erreur ImageCREATEDNouvel objectif
Erreur ImageCANCELEDObjectif annulé
Erreur ImageSUCCEEDEDObjectif accompli
Erreur ImageFAILEDObjectif échoué



Les notifications


Les notifications permettent d'afficher un message lors d'un changement de status d'un objectif.
Je ne vais pas rentrer dans les détails, un article est consacré à cela : Lire l'article.

Erreur Image



Exemple général


Voici un exemple de briefing pour une mission :

init.sqf


execVM "briefing.sqf";

briefing.sqf


// ----- Notes -----
player createDiaryRecord ["Diary", ["Crédits", "Mission réalisée par : The-KiLLeR<br/><br/>
Clan ADO<br/>
www.clan-ado.fr"
]];

player createDiaryRecord ["Diary", ["Renseignements", "D'après nos images satellites, nous avons aperçu plusieurs véhicules blindés ainsi que des défenses anti-aériennes.<br/>
Nous avons également aperçu au large des bateaux armés."
]];

player createDiaryRecord ["Diary", ["Contexte", "Messieurs, l'heure est grave,<br/>
Les forces ennemies se sont emparées de l'aéroport de Stratis.<br/>
Nous devons par tous les moyens le reprendre !"
]];

// ----- Objectifs -----
obj1 = player createSimpleTask["Reprendre l'aéroport"];
obj1 setSimpleTaskDescription["Nettoyer la zone de l'aéroport et reprenez le !", "Reprendre l'aéroport", "Reprendre l'aéroport"];
obj1 setSimpleTaskDestination (getMarkerPos "m_aeroport");

obj2 = player createSimpleTask["Détruire les défenses AA"];
obj2 setSimpleTaskDescription["Détruisez les défenses anti-aériennes.", "Détruire les défenses AA", "Détruire les défenses AA"];
obj2 setSimpleTaskDestination (getMarkerPos "m_aa");

// ----- Objectif en cours -----
player setCurrentTask obj1;



Briefing multi-camps


Pour réaliser un briefing multi-camps, il faut utiliser un "switch" avec les différents camps : (Toujours dans le fichier Briefing.sqf)

switch (playerSide) do
{
        case west :
        {
                // Objectifs du camp Ouest
        };
        case east :
        {
                // Objectifs du camp Est
        };
        case resistance :
        {
                // Objectifs du camp Indépendant
        };
        case civilian :
        {
                // Objectifs du camp Civil
        };
};

Exemple : Un objectif différent pour le camp Ouest et Est :

switch (playerSide) do
{
        case west :
        {
                obj1 = player createSimpleTask["Détruire les blindés"];
                obj1 setSimpleTaskDescription["Détruire les blindés", "Détruire les blindés", "Détruire les blindés"];
                obj1 setSimpleTaskDestination (getMarkerPos "m_obj1");
        };
        case east :
        {
                obj1 = player createSimpleTask["Défendre les blindés"];
                obj1 setSimpleTaskDescription["Défendre les blindés", "Défendre les blindés", "Défendre les blindés"];
                obj1 setSimpleTaskDestination (getMarkerPos "m_obj1");
        };
        case resistance : {};
        case civilian : {};
};



Briefing multi-langues


Pour réaliser un briefing multi-langues, il faut utiliser la méthode du Stringtable.

Exemple :

stringtable.xml


<?xml version="1.0" encoding="utf-8"?>

<Key ID="STR_OBJ1_NOM">
        <English>Defend the base</English>
        <French>Défendre la base</French>
</Key>
<Key ID="STR_OBJ1_DESCRIPTION">
        <English>Defend the base against the Russian attack</English>
        <French>Défendre la base contre l'attaque Russe</French>
</Key>

briefing.sqf


obj1 = player createSimpleTask[Localize "STR_OBJ1_NOM"];
obj1 setSimpleTaskDescription[Localize "STR_OBJ1_DESCRIPTION", Localize "STR_OBJ1_NOM", Localize "STR_OBJ1_NOM"];
obj1 setSimpleTaskDestination (getMarkerPos "m_obj1");

Pour plus d'informations concernant les briefings, consultez le tutoriel proposé par JonyBIgooD.