Français Solved Problème de récupération d'information avec remoteExec

  • Auteur de la discussion Auteur de la discussion MaxenceL
  • Date de début Date de début

MaxenceL

User
29/12/19
44
1
1
300
Hello,

C'est encore moi avec mes remoteExec ^^

J'avoue que je commence à être un peu agacé par les remoteExec mais je tiens tête lol !

Je cherche simplement à récupérer des informations d'un script sous forme de variable dans un autre :
Code:
SCRIPT_ORIGINE = {
    [] spawn {
        _fromPlayer = name player;
        [_fromPlayer] remoteExec ["SCRIPT_CIBLE"];
    };
};

SCRIPT_CIBLE = {
    [] spawn {
        _fromPlayer = _this select 0;
        hint format ["%1", _fromPlayer];
    };
};

Donc le remoteExec lance bien le SCRIPT_CIBLE, mais je ne récupère pas l'information (Variable indéfini) ou si je met juste "_fromPlayer = _this" je récupère "<null>" comme information..
J'ai également fait ça, mais même résultat :
Code:
SCRIPT_ORIGINE = {
    [] spawn {
        _fromPlayer = name player;
        [_fromPlayer,[SCRIPT_CIBLE]] remoteExec ["call"];
    };
};

SCRIPT_CIBLE = {
    [] spawn {
        _fromPlayer = _this select 0;
        hint format ["%1", _fromPlayer];
    };
};

Avez-vous une idée de solution ^^ ?
Merciiii :)
 
Solution
Salut !
Dans tes deux fonctions, le spawn n'est pas utile, il suffit de spawn la fonction SCRIPT_ORIGINE au lieu de la call si tu utilises des sleeps mais comme il n'y en a même pas, un call suffit :
Code:
SCRIPT_ORIGINE = {
    _fromPlayer = name player;
    [_fromPlayer,[SCRIPT_CIBLE]] remoteExec ["call"];
};

SCRIPT_CIBLE = {
    _fromPlayer = _this select 0;
    hint format ["%1", _fromPlayer];
};
Les variables qui sont définies en dehors du spawn (ici _this est défini en dehors, il est dans SCRIPT_CIBLE mais pas dans le [] spawn), sont définies par le [] avant le spawn. Donc il aurait fallut faire ça pour transmettre les paramètres du remoteExec, dans le spawn :
Code:
SCRIPT_CIBLE = {
    _this spawn {
        _fromPlayer = _this select...
Salut !
Dans tes deux fonctions, le spawn n'est pas utile, il suffit de spawn la fonction SCRIPT_ORIGINE au lieu de la call si tu utilises des sleeps mais comme il n'y en a même pas, un call suffit :
Code:
SCRIPT_ORIGINE = {
    _fromPlayer = name player;
    [_fromPlayer,[SCRIPT_CIBLE]] remoteExec ["call"];
};

SCRIPT_CIBLE = {
    _fromPlayer = _this select 0;
    hint format ["%1", _fromPlayer];
};
Les variables qui sont définies en dehors du spawn (ici _this est défini en dehors, il est dans SCRIPT_CIBLE mais pas dans le [] spawn), sont définies par le [] avant le spawn. Donc il aurait fallut faire ça pour transmettre les paramètres du remoteExec, dans le spawn :
Code:
SCRIPT_CIBLE = {
    _this spawn {
        _fromPlayer = _this select 0;
        hint format ["%1", _fromPlayer];
    };
};
Mais ce n'est pas utile ici, le code du dessus fera l'affaire.

Pour remoteExec une autre fonction, la syntaxe est celle-ci :
Code:
[_fromPlayer] remoteExec ["SCRIPT_CIBLE",player];
Le player à la fin est la cible, donc ici on va remoteExec un script sur le même joueur, ce qui n'a pas d'intérêt mais c'est pour la démo.
Il ne faut pas oublier d'ajouter la fonction dans le fichier CfgRemoteExec.hpp pour autoriser le remoteExec sur cette fonction.

Théoriquement en corrigeant ces deux points ça devrait fonctionner.
Pour récupérer les paramètres, il y a une manière un peu plus propre de faire, avec un param : https://community.bistudio.com/wiki/param (ou params s'il y en a plusieurs, c'est une autre syntaxe).
Ici _fromPlayer = _this select 0; est la même chose que :
Code:
_fromPlayer = param [0];

Et pour aller plus loin, tu peux définir une valeur par défaut (ici le player sera pris s'il n'y a pas de paramètre envoyé) et un type de variable accepté, ici player est un objet :
Code:
_fromPlayer = param [0,player,[objNull]];
 
Solution
Aaaaaaaaaaah trop bien ! J'ai enfin compris les remoteExec du coup ! Vous devriez mettre en forme ta réponse et en faire un tutoriel sur le forum car très instructifs :D

J'ai réussi à faire et ç fonctionne :
Code:
SCRIPT_ORIGINE = {
    //Je laisse le spawn car il y aura des sleeps
    [] spawn {
        _fromPlayer = name player;
        _Nombre = 0;
        [_fromPlayer, _Nombre] remoteExec ["SCRIPT_CIBLE"];
    };
};

SCRIPT_CIBLE = {
    _this spawn {
        _fromPlayer = _this select 0;
        _Nombre = _this select 1;
        hint format ["%1", _fromPlayer];
        sleep 2;
        hint format ["%1", _Nombre];
    };
};

Pour les params, je n'ai pas encore tout compris, mais je vais prendre du temps pour y réfléchir et trouver la solution. Il me retourne false dans un hint à la place de _fromPlayer et _Nombre lol !

Merci beaucoup de l'aide en tout cas :D