Arma: Les tableaux – part 2

Dans la partie 1, t’as vu comment récupérer des variables dans des tableaux . Dans cette partie, tu vas voir comment modifier et utiliser les tableaux. Mais avant tout, on va regarder deux commandes importantes qui permettent d’interagir avec les éléments de class config.

La class config est une métabase dans ARMA qui contient à la fois des informations concernant les maps, les objets, les missions donc fort utile dès qu’on cherche à pousser le vice du codage un peu plus loin. Au fil du temps, cette base a eu tendance à grossir sans garder une véritable cohérence logique, ce qui en fait pour les néophytes, mais aussi les avertis, un véritable labyrinthe à la fois rempli de trésor, de mystère et de rage. Tu peux accéder à cette base à travers l’éditeur, via un menu qui propose un accès à l’outil cfgviewer développé par la communauté puis introduit officiellement dans Arma.

Pour l’utiliser, il y a plusieurs commandes donc ces deux fameuses commandes qui permettent d’en extraire de façon exploitable en sqf du contenu. On regrettera seulement que BIS n’ai pas conservé une ligne cohérente dans son approche / développement et ai tant différencier l’intégration cfg du scripting.

getArray: permet de forcer le type de valeur en sortie, mais ne convertit pas l’élément en tableau. Par exemple, si un élément de class config est une chaine de caractère « chaine de caractère », getArray renverra un tableau vide [] et non pas [« chaine de caractere »].

isArray: va vérifier que l’élément dans la config est de type Array ou pas

class MakarovSD: Makarov {
    descriptionshort = "Silenced semi-automatic pistol 
Caliber: 9x18mm";
    displayname = "Makarov SD";
    magazines[] = {"8Rnd_9x18_MakarovSD", "8Rnd_9x18_Makarov"};
  ...
};

_resultat = isArray (configFile >> "cfgWeapons" >> "MakarovSD" >> "magazines");
//_resultat est true

_resultat = getArray (configFile >> "cfgWeapons" >> "MakarovSD" >> "magazines");
//_result est ["8Rnd_9x18_MakarovSD","8Rnd_9x18_Makarov"]

_resultat = getText (configFile >> "cfgWeapons" >> "MakarovSD" >> "magazines");
//_result est ""

_resultat = isArray (configFile >> "cfgWeapons" >> "MakarovSD" >> "displayname");
//_resultat est false

_result = getArray (configFile >> "cfgWeapons" >> "MakarovSD" >> "displayname");
//_result est []

_result = getText (configFile >> "cfgWeapons" >> "MakarovSD" >> "displayname");
//_result est "Makarov SD"

Revenons maintenant à nos tableaux.

Définir la valeur d’un élément dans un tableau

Pour changer la valeur d’un élément du tableau tu vas utiliser la commande set.

set [index, valeur];

Set permet également de redimensionner le tableau, si tu définis la valeur d’un élément au delà de la taille du tableau.

_tableau = [0,1];
set [2, 2];
// _tableau = [0,1,2];

La commande resize va soit tronquer ou étendre le tableau en fonction de la taille de tableau que tu définis.

_tableau = [1,2,3,4,6,6,7,8,9];
_tableau set [4,5];
//_tableau est [1,2,3,4,5,6,7,8,9]

_tableau set [count _tableau,10];
//_tableau est [1,2,3,4,5,6,7,8,9,10]

_tableau set [12,13];
//_tableau est [1,2,3,4,5,6,7,8,9,10,,,13]

_tableau resize 3;
//_tableau est [1,2,3]

_tableau resize 5;
//_tableau est [1,2,3,,]

_tableau resize 0;
//_tableau est []

Tu peux réinitialiser la valeur d’un élément du tableau en lui assignant la valeur nil sans pour autant modifier la taille du tableau.

_tableau = [1,2,3,4,5];
_tableau set [2,nil];
//_tableau is now [1,2,any,4,5]

Si tu veux supprimer 1 seul élément complètement du tableau et le redimensionner en même temps, il faut utiliser la commande deleteAt

_tableau = [1,2,3,4,5];
_tableau deleteAt 2

Combiner ou soustraire le contenu de tableaux

Pour se faire, il suffit simplement d’utiliser les opérateurs + et –

L’addition va ajouter le deuxième tableau au premier, et modifier donc la longueur du 1er.

_tableau = [4,5,6];

_tableau = _tableau + [7,8,9];
//_tableau is now [4,5,6,7,8,9]

_tableau = [1,2,3] + _tableau;
//_tableau is now [1,2,3,4,5,6,7,8,9]

La soustraction va retirer tous les éléments provenant du 2ème tableau dans le 1er tableau et donc changer la longueur du 1er en conséquence:

_tableau = [1,1,2,2,3,3,4,4,5,5];

_tableau = _tableau – [1];
//_tableau est [2,2,3,3,4,4,5,5]

_tableau = _tableau – [4,2,5];
//_tableau est [3,3]

Si un élément est lui même un tableau, il ne pourra pas être soustrait

_tableau = [[1,2],[3,4]];

_tableau = _tableau - [[1,2]];
//_tableau is still [[1,2],[3,4]]

Cet article a été initialement rédigé par Killzone Kid, réactualisé par Code34

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s