Le contenu d'un répertoire de mission

Les scripts et les missions des [V]Vétérans

Vous pouvez poser vos questions et poster vos scripts, le forum est ouvert à tous.
Avatar de l’utilisateur
Tyrghen
Membre des [V]Vétérans
Messages : 4125
Inscription : 14 oct. 2012, 22:47

Le contenu d'un répertoire de mission

Message par Tyrghen » 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:
mission.altis.zip
(28.17 Kio) Téléchargé 357 fois
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
On va parcourir un peu dans le détails le contenu des différents fichiers.

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;
};
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:

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"
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".

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";
Pour l'appeler depuis le "init.sqf" tapez:

Code : Tout sélectionner

[] execVM "mes_scripts\monscript.sqf";
Le contenu du fichier "monscript.sqf":

Code : Tout sélectionner

hint "J'ai été exécuté!";
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":

Code : Tout sélectionner

["un paramètre",isServer,local player,player] execVM "mes_scripts\parametres.sqf";
Le contenu du fichier "parametres.sqf":

Code : Tout sélectionner

hint format ["%1",_this];
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é:
  • "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.
Et voilà... ce sont les éléments les plus importants du contenu d'un répertoire de mission.
Image

Répondre