Page 1 sur 1

variables de script et unitées concernées

Posté : mar. 15 juin 2010, 18:41
par =[TTK]= Yourry
Le titre pourrait faire peur mais c'est pas compliqué du tout pour les gens qui connaissent un petit peu les scripts.

Je souhaite juste définir un groupe en particulier que lui seul déclenche le script.
Je définis mon groupe par ça, dans l'init du chef de group

Code : Tout sélectionner

ttk = group this; nul=[ttk] execVM "script\phone2.sqf"
Ensuite comment reprendre dans mon script le groupe "ttk"
J'ai testé:

Code : Tout sélectionner

_unit = _this select 0;
_par = units _unit;

if (telephone distance _par<4 && _voix==true) then
{
blabla mon script
hint "ok ça marche";
 };
mais qui ne fonctionne pas :mrgreen:

Pour finir, ma deuxième question:
je voudrais que la variable
_voix
soit déclaré "true" mais via un autre script
comment mettre en lien les deux scripts ?

Re: variables de script et unitées concernées

Posté : mar. 15 juin 2010, 19:52
par =[TTK]= Memphis007
=[TTK]= Yourry El Zekrit a écrit :Pour finir, ma deuxième question:
je voudrais que la variable
_voix
soit déclaré "true" mais via un autre script
comment mettre en lien les deux scripts ?
Encore une fois si tu veux jouer avec des variables entres plusieurs script (ou entre un script et un déclencheur par exemple) il faut au minimum que ce soit une variable globale donc sans le tiret "_", ensuite ben il suffit de mettre cette variable à true dans l'autre fichier de script ou le déclencheur.

A voir aussi si une superglobale n'est pas préférable, ça dépend des cas.

Re: variables de script et unitées concernées

Posté : mar. 15 juin 2010, 19:55
par Camille Caz
Je me demande si on a le droit de poser de telles questions. Image

Re: variables de script et unitées concernées

Posté : mar. 15 juin 2010, 20:55
par =[TTK]= Yourry
Pour reformuler ce que tu dis Memphis, le fait de mettre "_" avant une variable signifie quelle est "interne" au script ?
J'ai enlever le "_" de mes deux scriptes et rien n'y fait.
Pourtant du second script j'ai mis:

Code : Tout sélectionner

if (isServer) then
{
	voix = "true";
	publicVariable "voix";
};
	voix = "true";
	publicVariable "voix";
Par contre Camille je n'ai pas compris :?:

Re: variables de script et unitées concernées

Posté : mar. 15 juin 2010, 21:31
par =[TTK]= Freshmeat
Différentes choses :

1- les variables commençant par "_" ne sont connues que dans le bloc dans lequel elle sont définies :

Code : Tout sélectionner

_mavariable = "test";
if (true) then{_mavariable = "nouvelle valeur";};
hint format["%1",_mavariable];
=> Affiche "nouvelle valeur"

Par contre :

Code : Tout sélectionner

if (true) then{_mavariable = "nouvelle valeur";};
hint format["%1",_mavariable];
=> Affiche une erreur

2-

Code : Tout sélectionner

ttk = group this
Suffit à définir la variable ttk pour toutes les machines, puisqu'utilisée dans l'init de l'unité.
Il n'est donc plus nécessaire de la passer en paramètre à ton execVM.

3- J'ai pas bien compris ce que tu voulais faire avec ton test de déclenchement.

4-

Code : Tout sélectionner

if (isServer) then
{
   voix = "true";
   publicVariable "voix";
};
waituntil {!isnull voix};

Re: variables de script et unitées concernées

Posté : mar. 15 juin 2010, 21:41
par =[TTK]= Clem
Clem qui ne fait pas d'édition de missions ,comprends rien au script a l'informatique en général aurait peu être fait cela :

dans l'init.sqf aurait rajouter

Code : Tout sélectionner

voix = false;
histoire a mon humble avis que la variable soit crée
et dans le script

Code : Tout sélectionner

voix = true;
 publicVariable voix;
puis dans un déclencheur ,

dans le champ condition : this and (voix)

dans le champ sur activation : nul = thislist execVM "script\phone2.sqf"

puis aurait grouper le déclencheur avec le chef de groupe qui a dans l'init: ttk = group this;

et dans le phone2.sqf

Code : Tout sélectionner

myArray = _this;

if (telephone distance _this<4) then
{
blabla mon script
hint "ok ça marche";
};

après faut voir ce que ça fait en espérant que ça te fais pas encore crasher arma yourry

Re: variables de script et unitées concernées

Posté : mer. 16 juin 2010, 19:56
par =[TTK]= Yourry
j'avance à petit pas mais pas trop vite quand même:
j'ai compris que si j'écris:

Code : Tout sélectionner

if (!isNil "ObjPhone") then
{
blabla; suite du script
il me faut qu'avant dans le même (il est la le hic) script apparaisse

Code : Tout sélectionner

if (isServer) then
{
	ObjPhone = true;
	publicVariable "ObjPhone";
};

ObjPhone = true;
pour que ma variable
ObjPhone
ne soit plus égale à zéro et que mon script se déroule.
bon bin le hic pour moi est que si je mets
if (isServer) then
{
ObjPhone = true;
publicVariable "ObjPhone";
};
dans un autre script, la condition suivante n'est jamais exécuter
if (!isNil "ObjPhone") then
{
blabla; suite du script
POURQUOI ?

Re: variables de script et unitées concernées

Posté : mer. 16 juin 2010, 20:33
par =[TTK]= Memphis007
Pour que :
if (!isNil "ObjPhone") then
{
blabla; suite du script
se déclenche il faut donc que :
if (isServer) then
{
ObjPhone = true;
publicVariable "ObjPhone";
};
soit exécuté avant on est d'accord ?

si oui alors je pense qu'il faudrait essayer d'éviter de tester "ObjPhone" par un !isnil mais plutôt par un :

Code : Tout sélectionner

if (ObjPhone == true)
car si "ObjPhone" est égal à "false" avec ton "!isnil" ben ça part quand même vu que tu teste juste l'existence d'une variable instanciée et non ce qu'elle contient.

Re: variables de script et unitées concernées

Posté : mer. 16 juin 2010, 20:57
par =[TTK]= Yourry
Pas de souci, j'avais bien mis les choses comme ça.
J'utilisais "!insnil" car je l'ai lu dans un autre script.
Avec "mavariable == true" je pense aussi que ça marche.

Mais le fond de mon problème c'est que
if (isServer) then
{
ObjPhone = true;
publicVariable "ObjPhone";
};

ObjPhone = true;
Est dans un autre script.
Quand je mets
if (!isNil "ObjPhone") then ou if (ObjPhone == true)
Dans un script différent de celui qui possède le "if seveur..." mes variables ne sont jamais vraies.
Ce que je ne comprends pas !
Comment faire ?

Re: variables de script et unitées concernées

Posté : mer. 16 juin 2010, 22:35
par =[TTK]= Memphis007
et bien d'après le wiki de bohemia (http://community.bistudio.com/wiki/Variables) utiliser la commande publicVariable ne met a jour sa valeur que du coté client et pas sur le serveur, ce qui pourrait expliquer ton problème.

Ou alors dans l'init il faudrait peut être initialiser cette variable a "false" et mettre le publicVariable ici aussi afin d'initialiser et publier la variable sur tous les postes.

Re: variables de script et unitées concernées

Posté : dim. 20 juin 2010, 23:47
par =[TTK]= Yourry
Les choses avancent:
clem m'a trouvé un script qui gère de la fougère !

C'est un script qui sert uniquement à passer les scripts locaux en globales !
C'est peut être la solution a votre comptage de points pour une course, à essayer.

Sinon, manque un dernier détail comment je peux écrire cette commande (issue d'un déclencheur) dans un script:

Code : Tout sélectionner

{_x distance telephone<2} for count units ttk>0
Je m'explique, je voudrais dire n'importe quelle unités du groupe ttk puisse valider la suite

Code : Tout sélectionner

if ( telephone distance ttk<2) then
{
blabla
};
Je n'arrive pas paramétrer dans mon script: que le groupe "ttk" est l'ensemble des joueurs de ce groupe :mrgreen:
J'ai pourtant mit dans l'init du chef de groupe:
ttk=group this

Re: variables de script et unitées concernées

Posté : lun. 21 juin 2010, 08:42
par =[TTK]= Freshmeat
Essaie avec ça :

Code : Tout sélectionner

if ({_x distance telephone<2} count units ttk > 0) then
{
blabla
};

Re: variables de script et unitées concernées

Posté : lun. 21 juin 2010, 18:30
par =[TTK]= Yourry
if ({_x distance telephone<2} count units ttk > 0) then
Merci Freash cela fonctionne, a testé en multi maintenant.
Sinon j'ai quand même un petit truc qui me turlupine :mrgreen: :

comment définir dans mes variables le groupe ttk ?

si je met dans mon script:

Code : Tout sélectionner

_grp = _this select 0;
_team = units _grp;
puis par la suite je mets

Code : Tout sélectionner

if(telephone distance _team<1) then
{
blabla
};
cela ne fonctionne pas, pourquoi ?
J'aimerais bien savoir comment on fait pour mettre dans une variable (par exemple _team) l'ensemble de l'équipe ttk de façon dans les scripts à reprendre _team pour désigner n'importe quel joueur.

Merci

Re: variables de script et unitées concernées

Posté : lun. 21 juin 2010, 19:28
par Camille Caz
Tu peux mettre dans l'init du chef
ttk= group player
puis reprendre ttk dans ton script comme étant l'arrray de ton groupe.
et écrire
{_x distance telephone<2} foreach ttk

J'en suis pas sûr

Re: variables de script et unitées concernées

Posté : dim. 27 juin 2010, 19:16
par =[TTK]= Yourry
Je n'arrive pas à mettre en lien une variable ("essai" dans mon exemple) d'un déclencheur et un script:

Mon déclencheur, en suractivation:

Code : Tout sélectionner

essai = true
Et dans mon script (lancé à l'init de la mission):

Code : Tout sélectionner

if (essai == true) then 
{
hint "ok";
};
Je n'ai jamais mon "ok" qui s'affiche même si mon déclencheur s'active bien !

Comment écrire le "if...." en sachant que la variable serra défini dans un déclencheur

:Evil: