variables de script et unitées concernées

Pour les Masochistes Éditeurs de missions
Répondre
Avatar du membre
=[TTK]= Yourry
Grand Scriptou
Grand Scriptou
Âge : 30
Messages : 1592
Enregistré le : mer. 17 mars 2010, 16:39
Localisation : Dans le reblochon !

variables de script et unitées concernées

Message par =[TTK]= Yourry » mar. 15 juin 2010, 18:41

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 ?
Modifié en dernier par =[TTK]= Yourry le mar. 15 juin 2010, 20:42, modifié 1 fois.
"Les Boches faisaient "Kamarad". Il aurait fallu commencer par ça des deux côtés, pour éviter les massacres organisés par ceux d'en haut, mais le fusil qu'ils nous avaient collé entre les mains, forcément, il a bien fallu qu'il serve et tout le reste à suivit." dixit Tardi et Verney
Image
L'autre jour, en tirant le rouleau de papier cul, toute la cloison est venue avec. dixit Camille Caz

Avatar du membre
=[TTK]= Memphis007
Grand TranKilou
Grand TranKilou
Âge : 38
Messages : 3215
Enregistré le : mer. 13 janv. 2010, 15:29
Humeur : Binaire
Localisation : 127.0.0.1
Contact :

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

Message par =[TTK]= Memphis007 » mar. 15 juin 2010, 19:52

=[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.
Si ya pas de shell, ya pas de plaisir...
Image

Fingers in the noise. Maxime verdâtre.

Avatar du membre
Camille Caz
Grand Gourou
Grand Gourou
Âge : 78
Messages : 1811
Enregistré le : lun. 25 janv. 2010, 22:45
Humeur : paléolithique mais presque
Localisation : près de La Rochelle

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

Message par Camille Caz » mar. 15 juin 2010, 19:55

Je me demande si on a le droit de poser de telles questions. Image
Tant pis pour ceux qui se sentent obligés de penser tout le temps, ils n'avaient qu'à être bretons

Avatar du membre
=[TTK]= Yourry
Grand Scriptou
Grand Scriptou
Âge : 30
Messages : 1592
Enregistré le : mer. 17 mars 2010, 16:39
Localisation : Dans le reblochon !

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

Message par =[TTK]= Yourry » mar. 15 juin 2010, 20:55

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 :?:
"Les Boches faisaient "Kamarad". Il aurait fallu commencer par ça des deux côtés, pour éviter les massacres organisés par ceux d'en haut, mais le fusil qu'ils nous avaient collé entre les mains, forcément, il a bien fallu qu'il serve et tout le reste à suivit." dixit Tardi et Verney
Image
L'autre jour, en tirant le rouleau de papier cul, toute la cloison est venue avec. dixit Camille Caz

Avatar du membre
=[TTK]= Freshmeat
Retraité
Retraité
Messages : 471
Enregistré le : lun. 1 mars 2010, 13:49

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

Message par =[TTK]= Freshmeat » mar. 15 juin 2010, 21:31

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};
Les gens n'accordent guère d'importance à la vie, la preuve : quand ils la perdent, ils ne la réclament jamais.
[Jean Deluca]
Image

Avatar du membre
=[TTK]= Clem
Retraité
Retraité
Messages : 431
Enregistré le : ven. 12 févr. 2010, 15:47

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

Message par =[TTK]= Clem » mar. 15 juin 2010, 21:41

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
Image

Avatar du membre
=[TTK]= Yourry
Grand Scriptou
Grand Scriptou
Âge : 30
Messages : 1592
Enregistré le : mer. 17 mars 2010, 16:39
Localisation : Dans le reblochon !

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

Message par =[TTK]= Yourry » mer. 16 juin 2010, 19:56

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 ?
"Les Boches faisaient "Kamarad". Il aurait fallu commencer par ça des deux côtés, pour éviter les massacres organisés par ceux d'en haut, mais le fusil qu'ils nous avaient collé entre les mains, forcément, il a bien fallu qu'il serve et tout le reste à suivit." dixit Tardi et Verney
Image
L'autre jour, en tirant le rouleau de papier cul, toute la cloison est venue avec. dixit Camille Caz

Avatar du membre
=[TTK]= Memphis007
Grand TranKilou
Grand TranKilou
Âge : 38
Messages : 3215
Enregistré le : mer. 13 janv. 2010, 15:29
Humeur : Binaire
Localisation : 127.0.0.1
Contact :

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

Message par =[TTK]= Memphis007 » mer. 16 juin 2010, 20:33

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.
Si ya pas de shell, ya pas de plaisir...
Image

Fingers in the noise. Maxime verdâtre.

Avatar du membre
=[TTK]= Yourry
Grand Scriptou
Grand Scriptou
Âge : 30
Messages : 1592
Enregistré le : mer. 17 mars 2010, 16:39
Localisation : Dans le reblochon !

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

Message par =[TTK]= Yourry » mer. 16 juin 2010, 20:57

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 ?
"Les Boches faisaient "Kamarad". Il aurait fallu commencer par ça des deux côtés, pour éviter les massacres organisés par ceux d'en haut, mais le fusil qu'ils nous avaient collé entre les mains, forcément, il a bien fallu qu'il serve et tout le reste à suivit." dixit Tardi et Verney
Image
L'autre jour, en tirant le rouleau de papier cul, toute la cloison est venue avec. dixit Camille Caz

Avatar du membre
=[TTK]= Memphis007
Grand TranKilou
Grand TranKilou
Âge : 38
Messages : 3215
Enregistré le : mer. 13 janv. 2010, 15:29
Humeur : Binaire
Localisation : 127.0.0.1
Contact :

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

Message par =[TTK]= Memphis007 » mer. 16 juin 2010, 22:35

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.
Si ya pas de shell, ya pas de plaisir...
Image

Fingers in the noise. Maxime verdâtre.

Avatar du membre
=[TTK]= Yourry
Grand Scriptou
Grand Scriptou
Âge : 30
Messages : 1592
Enregistré le : mer. 17 mars 2010, 16:39
Localisation : Dans le reblochon !

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

Message par =[TTK]= Yourry » dim. 20 juin 2010, 23:47

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
"Les Boches faisaient "Kamarad". Il aurait fallu commencer par ça des deux côtés, pour éviter les massacres organisés par ceux d'en haut, mais le fusil qu'ils nous avaient collé entre les mains, forcément, il a bien fallu qu'il serve et tout le reste à suivit." dixit Tardi et Verney
Image
L'autre jour, en tirant le rouleau de papier cul, toute la cloison est venue avec. dixit Camille Caz

Avatar du membre
=[TTK]= Freshmeat
Retraité
Retraité
Messages : 471
Enregistré le : lun. 1 mars 2010, 13:49

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

Message par =[TTK]= Freshmeat » lun. 21 juin 2010, 08:42

Essaie avec ça :

Code : Tout sélectionner

if ({_x distance telephone<2} count units ttk > 0) then
{
blabla
};
Les gens n'accordent guère d'importance à la vie, la preuve : quand ils la perdent, ils ne la réclament jamais.
[Jean Deluca]
Image

Avatar du membre
=[TTK]= Yourry
Grand Scriptou
Grand Scriptou
Âge : 30
Messages : 1592
Enregistré le : mer. 17 mars 2010, 16:39
Localisation : Dans le reblochon !

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

Message par =[TTK]= Yourry » lun. 21 juin 2010, 18:30

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
"Les Boches faisaient "Kamarad". Il aurait fallu commencer par ça des deux côtés, pour éviter les massacres organisés par ceux d'en haut, mais le fusil qu'ils nous avaient collé entre les mains, forcément, il a bien fallu qu'il serve et tout le reste à suivit." dixit Tardi et Verney
Image
L'autre jour, en tirant le rouleau de papier cul, toute la cloison est venue avec. dixit Camille Caz

Avatar du membre
Camille Caz
Grand Gourou
Grand Gourou
Âge : 78
Messages : 1811
Enregistré le : lun. 25 janv. 2010, 22:45
Humeur : paléolithique mais presque
Localisation : près de La Rochelle

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

Message par Camille Caz » lun. 21 juin 2010, 19:28

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
Tant pis pour ceux qui se sentent obligés de penser tout le temps, ils n'avaient qu'à être bretons

Avatar du membre
=[TTK]= Yourry
Grand Scriptou
Grand Scriptou
Âge : 30
Messages : 1592
Enregistré le : mer. 17 mars 2010, 16:39
Localisation : Dans le reblochon !

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

Message par =[TTK]= Yourry » dim. 27 juin 2010, 19:16

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:
"Les Boches faisaient "Kamarad". Il aurait fallu commencer par ça des deux côtés, pour éviter les massacres organisés par ceux d'en haut, mais le fusil qu'ils nous avaient collé entre les mains, forcément, il a bien fallu qu'il serve et tout le reste à suivit." dixit Tardi et Verney
Image
L'autre jour, en tirant le rouleau de papier cul, toute la cloison est venue avec. dixit Camille Caz

Répondre