WIKI ADO

Accueil > ArmA2 > Edition de missions > Les scripts SQS et SQF

Les scripts SQS et SQF

- Publié le 15 Avril 2013 à 13h21 - Modifié le 25 Avril 2013 à 22h30
Les scripts sont des fichiers texte aillant comme extensions .sqs ou .sqf composés de diverses commandes.
Ces fichiers permettent de réaliser diverses actions ou phénomènes pour vos missions.

Création d'un fichier SQS/SQF


La création d'un fichier se fait avec Bloc Note. (N'importe quel logiciel de traitement de texte fera l'affaire)

Erreur Image

Ensuite, il faut bien vérifier que votre fichier ne se nomme pas monScript.sqs.txt.
Si c'est le cas, renommer le en supprimant le .txt.

Erreur Image

Attention, souvent les extensions des fichiers sont cachés. Pour les afficher, procéder de la façon suivante :

XP : Allez dans un dossier, cliquez sur le menu Outils, allez dans : "Options des dossiers / Affichage" puis décocher la case "Masquer les extensions des fichiers dont le type est connu".
Vista/7 : Allez dans un dossier, cliquez sur le menu Organiser, allez dans "Options des dossiers et de recherche / Affichage" puis décocher la case "Masquer les extensions des fichiers dont le type est connu".

Réalisation d'un fichier SQS/SQF


Vous me direz, quelle est la différence entre .sqs et .sqf ?
La réponse est simple, ce n'est pas le même codage. Le sqf ressemble énormément aux langages qui existent dans le monde du développement tels que le C++.

A savoir que généralement, le sqs est utilisé pour les petits scripts, et le sqf pour les gros scripts.

Important :
Après chaque commande ou ligne dans les fichiers sqf, il faut mettre un ;

Les commentaires


Les commentaires permettent de placer des mots ou phrases expliquant les différentes parties du script. Ceci est souvent nécessaire dans les gros scripts.
Pour placer des commentaires dans vos fichiers, il faut procéder de cette façon :

; Mes commentaires
// Mes commentaires
 
/* Mes commentaires
de mon fichier */

 
comment "Mes commentaires";

Les conditions


La condition dans un script permet d'attendre que celle-ci soit réalisée avant de passer à la suite.
Par exemple, tant que le général X n'est pas mort, le script ne passera pas à la suite.

@ CONDITION

// Exemple :
@ !alive X

WaitUntil {CONDITION};

// Exemple :
WaitUntil {!alive X};

Il existe aussi les conditions qui lorsqu'elles sont activées, elles déclenches d'autres actions.
Par exemple si le général X est mort, alors on affichera un texte.

? CONDITION : CONSEQUENCE

// Exemple :
? !alive X : hint "Le général est mort"

if(CONDITION) then {CONSEQUENCE};

// Exemple :
if(!alive X) then {hint "Le général est mort"};

Il est également possible de mettre plusieurs conditions en même temps :

? CONDITION : Allez CONSEQUENCE_1
...
#CONSEQUENCE_1
...
#fin

// Exemple :
? !alive X : goto "cons1"
hint "le général est vivant"
goto "fin"
#cons1
hint "le général est mort"
#fin

if(CONDITION) then {CONSEQUENCE_1} else {CONSEQUENCE_2};
 
// Exemple :
if(!alive X) then {hint "Le général est mort"} else {hint "Le général est vivant"};

Les temporisations


Il est possible de mettre des temporisations de x secondes.

~DUREE

// Exemple :
~5

sleep DUREE;

// Exemple :
sleep 5;

Les boucles


Passons maintenant aux boucles.

#boucle
...
? CONDITION : goto "boucle"

// Exemple :
#boucle
hint "Le général n'est pas encore mort"
? alive X : goto "boucle"

while {CONDITION} do {
   ...;
};
 
// Exemple :
while {alive X} do {
   hint "Le général n'est pas encore mort";
};

Les boucles avec incrémentations ou décrémentations.

_i = 0
#boucle
...
_i = _i + 1
? _i <= LIMITE : goto "boucle"

// Exemple :
_i = 0
#boucle
hint "La variable _i est toujours inférieur à 50"
_i = _i + 1
? _i <= 50 : goto "boucle"

for [{_i = 0},{_i <= LIMITE},{_i = _i + 1}] do {
 ...
};

// Exemple :
for [{_i = 0},{_i <= 50},{_i = _i + 1}] do {
   hint "La variable _i est toujours inférieur à 50";
};

Les choix multiples


Il est possible également d'avoir des choix multiples.
C'est à dire que part rapport à une variable, il est possible d'activer quelque chose entre plusieurs choix, et non seulement 2.

? VARIABLE == VALEUR_1 : goto "choix1"
? VARIABLE == VALEUR_2 : goto "choix2"
? VARIABLE == VALEUR_3 : goto "choix3"
...
goto "fin"
#choix1
...
goto "fin"
#choix2
...
goto "fin"
#choix3
...
#fin

// Exemple :
? _nbJoueurs == 5 : goto "choix1"
? _nbJoueurs == 10 : goto "choix2"
? _nbJoueurs == 20 : goto "choix3"
   hint "Le nombre de joueur est inconnu"
goto "fin"
#choix1
  hint "Il y a 5 joueurs"
goto "fin"
#choix2
  hint "Il y a 10 joueurs"
goto "fin"
#choix3
  hint "Il y a 20 joueurs"
#fin

switch (VARIABLE) do {
 case VALEUR_1: {...};
 case VALEUR_2: {...};
 case VALEUR_2: {...};
 default {...};
};
 
// Exemple :
switch (_nbJoueurs) do {
 case 5: {hint "Il y a 5 joueurs"};
 case 10: {hint "Il y a 10 joueurs"};
 case 20: {hint "Il y a 20 joueurs"};
 default {hint "Le nombre de joueur est inconnu"};
};

Quitter un script


exit
if (CONDITION) exitWith {...};

// Exemple :
if (true) exitWith {};

Vous pouvez voir que la version sqf est beaucoup mieux adaptée que le sqs.

Appeler un fichier SQS/SQF


[] exec "monScript.sqs"
nul=[] execVM "monScript.sqf"
 
execVM "monScript.sqf" // Uniquement dans les fichiers .SQF