1 Référence des fonctions

Ce qui suit est un résumé des fonctions disponibles dans la mission et un exemple de code qui peut être copié dans une mission en cours de création.

Les différentes fonctions sont expliquées plus loin dans le document, mais pour la facilité d'utilisation elles sont regroupées ici.

1.1 Les fonctions

On ne peut les appeler QUE dans un déclencheur, pas dans la ligne d'initialisation des unités.

1.1.1 Envoyer un message à tous les joueurs

La fonction suivante enverra un message à tous les joueurs connectés. Attention de ne l'appeler que sur le serveur (donc avec un déclencheur d'activation: "1 call StatutServeur")

"Mon message" call Message;

Pour avoir un message traduit, utiliser une chaîne de caractère commençant par "STR_".

"STR_MSG_MessageMultilingue" call Message;

1.1.2 Accomplir une tâche

Lorsque vous souhaitez qu'une action active une tâche, il suffit d'appeler la fonction suivante:

1 call Accompli;

1.1.3 Annuler une tâche

Juste l'inverse de la fonction précédente.

1 call Annuler;

1.1.4 Tester un objectif

Si vous voulez tester un objectif dans la condition d'un déclencheur. Si vous voulez que l'action soit activée chez tous les joueurs, vous utilisez la fonction suivante:

1 call Statut;

Dans la plupart des cas cependant, les scripts et fonctions de la basemission sont faites pour ne s'exécuter QUE sur le serveur. Vous appelez donc la fonction suivante:

1 call StatutServeur;

1.1.5 Afficher des marqueurs

Si vous avez placé sur cartes des marqueurs avec comme nom "marker1_1", "marker1_2", etc. Vous pouvez les afficher à l'aide de la commande suivante:

1 call Marqueurs;

1.1.6 Déplacer le point de Respawn Mobile

Si un marqueur est placé sur carte et qu'il se nomme "respawn_1", le point de respawn mobile sera automatiquement déplacé à l'aide de la commande suivante:

1 call Respawn;

1.1.7 Créer/Modifier une tâche

Pour rendre la mission plus ludique, on crée des tâches et on les met à jour en fonction de la réalisation ou non des objectifs.

La fontion est toujours la même, ce qui change ce sont les paramètres qu'on lui donne.

L'exemple suivant va créer une nouvelle tâche du nom de "Task 1". Ce nom est utilisé pour mettre ensuite la tâche à jour, il faut donc veiller à ne pas le modifier entre deux appels (usez et abusez du copier/coller).

["Task 1","Created", "Task Desc 1","Marker_1_1"] call Tache;


Les deux appels ci-dessous quant à eux, vont soit valider la tâche soit la faire échouer.

["Task 1","Succeeded", "",""] call Tache;

["Task 1","Failed", "",""] call Tache;

1.1.8 Tester qu'un véhicule est actif (ou inactif)

Il est souvent utile de savoir si un véhicule est actif, sans se limiter à ce qu'il soit détruit ou non. Par exemple, si les pneux sont crevés ou que tout le personnel à bord est tué, le véhicule est inactif. Pour cela on testera dans un déclencheur à l'aide des fonctions suivantes:

(camion call Actif)

(camion call ActifServeur)

La première permettant de valider le test sur tous les Pcs pour que le code lié soit éxécuté sur tous les postes. La deuxième fonction n'active le code que sur le serveur.

1.1.9 Changer des unités de groupe

Si vous voulez regrouper des unités dans un seul grand groupe, la fonction suivante vous le permet.

[this, monGroupe] call ChangerGroupe;


En pratique la manière de le faire serait que vous avez une unité nommée dans chaque groupe, disons "leader_1" et "leader_2". Vous appelez ensuite la fonction sous la forme:

[leader_1, group leader_2] call ChangerGroupe;

1.1.10 Changer des unités de camp

Si par exemple vous souhaitez que des unités changent de camp suite à un déclencheur, vous pouvez appeler la fonction suivante en passant le leader du groupe visé.

[this, east] call ChangerCamp;

1.2 Les scripts

Les scripts sont utilisables dans les déclencheurs ET dans les lignes d'initialisation des unités, à l'inverse des fonctions.

Souvent on fait référence à une variable "this" qui indique que c'est l'unité en cours (celle dont on modifier le champ d'initialisation).

Les différents scripts on aussi souvent une référence à un objectif. Le fait de libérer un otage ou d'amener une escorte à destination, va activer l'objectif que vous pouvez tester à l'aide des fonctions: "X call Statut" et "X call StatutServeur".

1.2.1 Placer une action sur un objet ou une unité

La première variable est le nom de l'objet ou "this" si on place la ligne dans l'initialisation de l'objet. Le résultat sera qu'une commande apparaît avec le texte donné. Si vous donnez un texte commançant par "STR_", ce texte sera remplacé par sa traduction.

Le dernier paramètre est l'objectif qui sera réalisé par cette action.

nul = [bidon,"STR_HitTank",5] execVM "action.sqf";

1.2.2 Créer un otage

Il suffit de placer la ligne d'initialisation suivante sur l'unité pour en faire un otage.

Le deuxième paramètre est l'objectif accompli lorsqu'on libère l'unité.

nul = [this, 1] execVM "Liberer.sqf";

1.2.3 Créer une unité à arrêter

Pour arrêter l'unité, vous devez vous trouver à moins de 20m et l'unité doit être soit blessée, soit isolée, c'est à dire qu'elle n'a plus d'alliés à proximité.

Le deuxième paramètre est l'objectif accompli lorsque l'unité est prisonnière.

nul = [this, 1] execVM "Arreter.sqf";

1.2.4 Créer une unité à diriger

Le script suivant va vous permettre de diriger une unité pour la conduire à un point donné. Le point est référencé soit par une position qu'on donner directement, soit par un marqueur dont on donne le nom.

Le deuxième paramètre est l'objectif accompli lorsque l'unité arrive à destination.

nul = [otage, 2,"marker1_1"] execVM "Diriger.sqf";

1.2.5 Créer un objet à ramasser

La ligne suivante va permettre au joueur de ramasser l'objet placé sur le jeu.

Le deuxième paramètre est l'objectif accompli lorsqu'un joueur ramasse l'objet.

nul = [laptop,4] execVM "ramasser.sqf";

1.2.6 Créer un objet à détruire

Tous les objets du jeu sont destructibles, mais si vous voulez que seuls des explosifs permettent de détruire un objet (pour éviter par exemple qu'on nettoie la mission par avion), vous pouvez utiliser le script suivant.

Le deuxième paramètre est l'objectif accompli lorsque l'objet est détruit.

Le troisième paramètre est le type d'explosif autorisé (ça peut être une liste).

Le quatrième paramètre est le nombre d'explosifs à utiliser.

nul = [tour_radio, 3,["PipeBomb"],1] execVM "Detruire.sqf";

1.2.7 Faire patrouiller un groupe de manière aléatoire

Le script suivant est à placer dans la ligne d'initialisation du leader du groupe et fera patrouiller le groupe de manière aléatoire (le groupe ne suit pas nécessairement l'ordre des waypoints créés) dans une zone centrée sur la position donnée en deuxième paramètre et dans un périmètre donné par le troisième paramètre.

nul = [this, getPos this, 300] execVM "patrol.sqf";

1.2.8 Placer des snipers

Le script suivant est à placer dans la ligne d'initialisation du leader du groupe et placera les unités du groupe de manière aléatoire en positions de snipers dans une zone centrée sur la position donnée en deuxième paramètre et dans un périmètre donné par le troisième paramètre.

nul = [this, getPos this, 300] execVM "sniper.sqf";

1.2.9 Placer un groupe en défense

Le script suivant est à placer dans la ligne d'initialisation du leader du groupe et placera les unités du groupe de manière aléatoire dans des positions de défense à moins de 50m de la position centrale. Les unités s'installeront dans les armes statiques libres et se cacheront dans les bâtiments dans des positions de combat.

nul = [this, getPos this] execVM "defend.sqf";

1.2.10 Placer un groupe en embuscade

Le script permet de placer un groupe en embuscade. Le leader DOIT regarder dans la direction de la zone d'embuscade. Les hommes se placeront en ligne par rapport à lui et se cacheront.

Si le deuxième paramètre est à "1", le groupe placera quelques mines sur la route si une route est présente ou alors aléatoirement dans la zone en face d'eux si aucune route n'est présente.

nul = [this, 1] execVM "ambush.sqf";

1.2.11 Créer un Kamikaze

Ce script permet de transformer l'unité en Kamikaze. Le camp visé est TOUJOURS celui du joueur. Le deuxième paramètre est le type d'explosif, le troisième la distance à partir de laquelle le Kamikaze courre vers les joueurs et le quatrième est la fiabilité de l'engin explosif.

nul = [this, "R_OG9_HE", 80, 0.7] execVM "kamikaze.sqf";

1.2.12 Placer un IED

Les IEDs n'explosent qu'à proximité d'un véhicule. Pour placer l'IED il faut donner une position ou un nom de marqueur, la distance de détection de l'IED, le type de l'IED (laisser vide pour qu'il soit choisi au hasard) et le type d'explosif.

nul = ["ied_1", 15, "", "R_OG9_HE"] execVM "ied.sqf";

1.2.13 Modifier la texture d'un drapeau

Pour mettre un drapeau aux couleurs de la team, il suffit d'appeler la fonction suivante.

nul = [this] execVM "Drapeau.sqf";

On peut aussi donner un paramètre supplémentaire qui serait la texture du drapeau si on veut modifier les drapeaux ennemis par exemple.

1.2.14 Modifier l'équipement d'une unité

Dans le fichier "Setup.SQF" on peut définir des sets d'équipement pour les unités. Le script suivant permet d'équiper les unités à l'aide de ces sets.

nul = [this,"SNIPER"] execVM "Equip.sqf";

1.2.15 Appeler un tir d'artillerie

Il est possible d'appeler un tir d'artillerie sur une position précise en appelant le script suivant. Le premier paramètre est un marqueur ou une position. Le deuxième est le type de munitions (voir le point consacré à l'artillerie) et le troisième (optionel) est une liste de cannons qui vont tirer. Si on ne précise pas de canons, les tirs tomberont quand même mais sans avoir d'origine.

nul = ["arty_target", 1, [arty1,arty2]] execVM "Artillerie.sqf";