Français Not solved Problème avec l'utilisation de Hashmap dans Arma 3

  • Auteur de la discussion Auteur de la discussion JasonA3
  • Date de début Date de début
  • Bonjour Visiteur ! Les sujets de cette catégorie sont clos. Si vous souhaitez réouvrir, merci de nous contacter en précisant le lien du post à réouvrir !

    Hello Visiteur ! The topics in this category are closed. If you wish to reopen, please contact us with the link of the post you wish to reopen !

JasonA3

User
17/3/20
41
1
20
450
Bonjour,

J'essai actuellement d'utiliser les Hashmap. Je remplace la plupart du fonctionnement mes scripts par cet nouvel outil mis à disposition depuis peu de temps.

J'essaie donc de m'y faire, mais j'ai quelques problèmes avec certains que je n'arrive pas à comprendre.

J'ai donc cette erreur :

Code:
16:44:20 Error in expression <hen {
_toShow pushback _x;
};
} foreach _intersectData;
_toShow;
>
16:44:20   Error position: <_intersectData;
_toShow;
>
16:44:20   Error Variable indéfinie dans une expression: _intersectdata

Et voici mon script :

Code:
private _intersect = param [0,nil];
    private _intersectMap = createHashMapFromArray Config_IntersectMap;
    private _intersectData = _intersectMap get _intersect;
    private _toShow = [];
    
    {
        if (call (_x#2)) then {
            _toShow pushback _x;
        };
    } foreach _intersectData;
    _toShow;

Avez-vous une idée d'où pourrai venir ce problème ? Je recherche depuis pas mal de jours, mais je ne trouve absolument rien.

Merci d'avance !
 
Hello! J'ai pas encore eu trop l’occasion de tester les HashMap, mais je vais essayer de t'aider.

Déjà quelle est la valeur exacte de Config_IntersectMap et de _intersect ?

Tu peux également débug le contenu d'un HashMap avec ce code :
Code:
{ systemChat str [_x, _y] } forEach _intersectMap;
 
Hello,

_intersectMap va récupérer ma liste sous forme de Hashmap (From Array)

Code:
Config_IntersectMap = [
    ["button_bargate1",
        [
            [localize"STR_INTSECT_OPCLBARG","\A3PL_Common\GUI\icons\intersect\take_ca.paa",{true}]
        ]
    ]
];

J'ai réduis la liste évidemment, sinon y'a à peu près 7,000 lignes à l'intérieur.

Quand je diag_log le contenu du _intersectMap, il me retourne bien cette liste d'ailleurs...
 
J'ai testé ton code de mon côté et je n'ai aucun soucis :
Voir la pièce jointe 2353

Est-ce que Config_IntersectMap est bien un array ? Ou c'est la class d'un fichier de configuration ?
Est-ce que la valeur de _intersect est bien celle que tu penses ? Tu peux ajouter un systemChat pour vérifier
Le système fonctionne en effet, mais j’ai tout de même l’erreur dans mes logs.

Config_IntersectMap est bien un Array

Concernant la valeur de intersect oui c’est la bonne. Il me retourne bien ce que je veux lorsque le script est exécuté
 
Est-ce que tu es sûr que _intersect ne prend pas une valeur de quelque chose qui n'est pas dans l'array ? Ou peut être quelle est même nil à un moment ?
D'où le fait que ça fonctionne pour "button_bargate1" mais que t'aies aussi l'erreur quand elle teste une autre valeur. De mon côté en testant le code avec seulement "button_bargate1" je n'ai pas l'erreur et ça fonctionne.

Peut être que le problème est plutôt à l'endroit où ce bout de code est appelé.

Tu peux aussi ajouter des isNil pour éviter ces soucis :
Code:
private _intersect = param [0,nil];
if (isNil "_intersect") exitWith {};

private _intersectMap = createHashMapFromArray Config_IntersectMap;
private _intersectData = _intersectMap get _intersect;
if (isNil "_intersectData") exitWith {};