Bienvenue !

TTK, un genre d'espece de team

en quelque sorte


Mission - Mission portuaire co8

Là où ça bricole

Mission - Mission portuaire co8

Messagede =[TTK]= Camille Caz » Sam 27 Fév 2010, 16:03

Synopsis :
Des insurgés ont tenté un coup de force à Tchernogorsk mais après intervention de l'armée régulière, ils se sont retranchés sur la jetée du port entraînant dans leur retraite 3 civils avec eux..
Les insurgés exigent de se battre à armes égales et menacent de tuer les otages si l'armée utilise ses blindés.

On fait appel à une équipe spéciale, la brigade d'intervention TTK, célébrée pour son adresse et sa célérité, qui devra éliminer la menace et ramener les otages vivants.

Je voudrais qu'il y ait 3 "bonnes" fins selon qu'il reste après libération de la digue  1, 2 ou 3 otages. Il faut donc que je les compte.
J'ai essayé (ça marche pas) ce script.sqf

_zone = zone;
//zone est un marqueur dans lequel sont les 3 civ
_arrayciv = [civ1, civ2, civ3];
_cnt1 = 0;
_cnt2 = 3;

#boucle1
sleep 5;
_cnt1=0;
{if (_x in (list _zone)) then {_cnt1 = _cnt1 + 1}} foreach _arrayciv;
if (_cnt2 > _cnt1) then {hint "Un otage vient de mourir"};
nombrecivils = _cnt1;
//nombrecivils me servira dans les conditions de fin. Je la déclare publicvariable dans le init.sqf
_cnt2 = _cnt1;

if (_cnt2=0) then {goto "sortie"};
if (_cnt2 >0) then {goto "boucle1"};
#sortie
exit;

Au secours Freshmeat !
Image

Plus je lis Camille, plus je comprends rien. (Yourry El Zekrit)

je plussois même si Camille saute au plafond lorsque nous plussoyons.(Yoda)

Personnellement je préfèrerai fonctionner par virement bancaire (Memphis)
Avatar de l’utilisateur
=[TTK]= Camille Caz
Grand Gourou
Grand Gourou
 
Age: 71
Messages: 1468
Localisation: La Rochelle, centre du milieu
Humeur: paléolithique mais presque
Inscription: 25 Jan 2010

Cash: 222.91 Chaislongs

Publicité

Re: Mission - Mission portuaire co8

Messagede =[TTK]= Freshmeat » Sam 27 Fév 2010, 16:05

En sqf, avec :
nombrecivils : variable publique contenant le nombre de civils encore en vie
monobjectif : task créée en vue de libérer la digue
------------------------------------------------------------------------------------------------------------------------------------------------
Code: Tout sélectionner
nombrecivils = 3;
_aliveciv1 = true;
_aliveciv2 = true;
_aliveciv3 = true;


while {taskstate monobjectif == "CREATED" || taskstate monobjectif == "ASSIGNED"} do {
if (!alive civ1 && _aliveciv1 == true) then {
_aliveciv1 = false ;
nombrecivils = nombrecivils - 1 ;
hint "Un otage vient de mourir" ;
};

if (!alive civ2 && _aliveciv2 == true) then {
_aliveciv2 = false ;
nombrecivils = nombrecivils - 1 ;
hint "Un otage vient de mourir" ;
};

if (!alive civ1 && _aliveciv3 == true) then {
_aliveciv3 = false ;
nombrecivils = nombrecivils - 1 ;
hint "Un otage vient de mourir" ;
};

if (nombrecivils == 0 && (taskstate monobjectif == "CREATED" || taskstate monobjectif == "ASSIGNED")) then {monobjectif settaskstate "FAILED";};

sleep 1;
};

-------------------------------------------------------------------------------------------------------------------------------------------------------------

Ca c'est pour la solution 'bourrine' aussi nommée 'on fait pas dans la dentelle', et elle est même pas testée.

Pour ce qui est d'utiliser un tableau, je n'ai pas encore trop regardé les fonctions à disposition, donc je ne pourrais te dire.

Edit : Je viens de comprendre ton source :p

En sqf tu ne peux pas utiliser de goto : il faut le remplacer par un while {} do {};
Ensuite il te manque tous les ; à la fin des instructions contenues dans tes if :
{if (_x in (list _zone)) then {_cnt1 = _cnt1 + 1;};} foreach _arrayciv;
if (_cnt2 > _cnt1) then {hint "Un otage vient de mourir";};
Aisni que sur les 2 if finaux, qui de toute façon ne fonctionneront pas en sqf puisque pas de goto en sqf.
Je ne sais pas si la commande Exit; fonctionne dans les sqf.


J'ai une question en retour :

Comment fonctionne ta variable Zone pour que les civils morts en soient automatiquement retirés ? Ou est-ce une source possible de non fonctionnement du script ?

Hé hop, 24ème édition du post : tu pourrais envisager d'écrire ton code comme ça :
Code: Tout sélectionner
_arrayciv = [civ1, civ2, civ3];
_cnt1 = 0;
_cnt2 = 3;

while {nombrecivils != 0} do {
sleep 5;
_cnt1 = 0;
{if (alive _x) then {_cnt1= _cnt1 + 1;};} foreach _arrayciv;
if (_cnt2 > _cnt1) then {
hint "Un otage vient de mourir";
_cnt2 = _cnt1;
nombrecivils = _cnt1;
};
};

Mais attention car on ne sort de la boucle que lorsque tous les civils sont morts...
Et si 2 otages viennent à mourir dans les 5 secondes, le message n'est plus bon non plus.



Voila M'sieur.
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 de l’utilisateur
=[TTK]= Freshmeat
Grand Manitou
Grand Manitou
 
Messages: 495
Inscription: 01 Mar 2010

Cash: 92.00 Chaislongs

Re: Mission - Mission portuaire co8

Messagede =[TTK]= Camille Caz » Sam 27 Fév 2010, 16:06

Super. J'aime beaucoup la 24e édition.
Tout cela m'éclaire peu à peu. Je te remercie.
Image

Plus je lis Camille, plus je comprends rien. (Yourry El Zekrit)

je plussois même si Camille saute au plafond lorsque nous plussoyons.(Yoda)

Personnellement je préfèrerai fonctionner par virement bancaire (Memphis)
Avatar de l’utilisateur
=[TTK]= Camille Caz
Grand Gourou
Grand Gourou
 
Age: 71
Messages: 1468
Localisation: La Rochelle, centre du milieu
Humeur: paléolithique mais presque
Inscription: 25 Jan 2010

Cash: 222.91 Chaislongs

Re: Mission - Mission portuaire co8

Messagede =[TTK]= Camille Caz » Sam 27 Fév 2010, 16:07

Tu as posé cette question
Comment
fonctionne ta variable Zone pour que les civils morts en soient
automatiquement retirés ? Ou est-ce une source possible de non
fonctionnement du script ?

Zone est un marqueur dont les civils ne peuvent pas sortir.
Mais la ligne suivante compte les vivants dans la zone, pas les morts.
{if (_x in (list _zone)) then {_cnt1 = _cnt1 + 1}} foreach _arrayciv;

C'est un système que j'ai déjà fait fonctionner en sqs

NB : dégouté par mes fiascos, j'ai retourné ma veste et par un cocktail de marqueurs, j'ai fait une version sans script qui répond aux exigences initiales. Probablement prête pour ce soir.

exemple de marqueur intitulé "Valse des parenthèses"

activation: Neant
Cond: ((not (alive civ1)) and (not (alive civ2))) or ((not (alive civ1)) and (not (alive civ3))) or ((not (alive civ2)) and (not (alive civ3)))
Sur activ: hint "Un 2e otage vient de mourir";
Image

Plus je lis Camille, plus je comprends rien. (Yourry El Zekrit)

je plussois même si Camille saute au plafond lorsque nous plussoyons.(Yoda)

Personnellement je préfèrerai fonctionner par virement bancaire (Memphis)
Avatar de l’utilisateur
=[TTK]= Camille Caz
Grand Gourou
Grand Gourou
 
Age: 71
Messages: 1468
Localisation: La Rochelle, centre du milieu
Humeur: paléolithique mais presque
Inscription: 25 Jan 2010

Cash: 222.91 Chaislongs

Re: Mission - Mission portuaire co8

Messagede =[TTK]= Freshmeat » Sam 27 Fév 2010, 16:08

Heureusement qu'il n'y a pas une dizaine d'otages :p
J'imagine la carte blindée de marqueurs façon adolescent boutonneux.

Il faudra que tu me dises comment tu fais pour tuer 1 seul otage à la fois aussi, ca m'intéresse.
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 de l’utilisateur
=[TTK]= Freshmeat
Grand Manitou
Grand Manitou
 
Messages: 495
Inscription: 01 Mar 2010

Cash: 92.00 Chaislongs

Re: Mission - Mission portuaire co8

Messagede =[TTK]= Camille Caz » Sam 27 Fév 2010, 16:09

[color=yellow]Il faudra que tu me dises comment tu fais pour tuer 1 seul otage à la fois aussi, ca m'intéresse.

Précisément !  Là, avec les marqueurs il n'y a pas de délai entre deux comptages. Ils peuvent tous mourir d'un coup de canon ou un par un au couteau,  pas de problème.
Certes, avec 10 civ, le script s'impose. On raccourcit le temps de délai et pis voilà.

Remarque, ta première version de script ne serait pas mal non plus avec 10 civ.  [/color]Image

Je vais faire le briefing maintenant, le moins marrant.
Image

Plus je lis Camille, plus je comprends rien. (Yourry El Zekrit)

je plussois même si Camille saute au plafond lorsque nous plussoyons.(Yoda)

Personnellement je préfèrerai fonctionner par virement bancaire (Memphis)
Avatar de l’utilisateur
=[TTK]= Camille Caz
Grand Gourou
Grand Gourou
 
Age: 71
Messages: 1468
Localisation: La Rochelle, centre du milieu
Humeur: paléolithique mais presque
Inscription: 25 Jan 2010

Cash: 222.91 Chaislongs

Re: Mission - Mission portuaire co8

Messagede =[TTK]= Freshmeat » Sam 27 Fév 2010, 16:10

Tout à fait, et c'est pour cela que si quelqu'un sait comment faire une routine/procédure en sqf, je suis preneur.
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 de l’utilisateur
=[TTK]= Freshmeat
Grand Manitou
Grand Manitou
 
Messages: 495
Inscription: 01 Mar 2010

Cash: 92.00 Chaislongs

Re: Mission - Mission portuaire co8

Messagede =[TTK]= Freshmeat » Lun 1 Mar 2010, 15:00

Pour créer une fonction, tout est .
Et en résumé :

En début de sqf :
myFunction1 = compile loadFile "myFunction1.sqf";
myFunction2 = compile preprocessFile "myFunction2.sqf";


pour appeler la fonction :
_result1 = call myFunction1;
_result2 = [1, 2] call myFunction2;


Et dans le sqf, pour renvoyer une valeur :
comment "Return maximum of first and second argument";
private ["_a","_b"];
_a = _this select 0;
_b = _this select 1;
if (_a>_b) then {_a} else {_b}

C'est la dernière expression évaluée, à noter qu'il ne faut pas de ;
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 de l’utilisateur
=[TTK]= Freshmeat
Grand Manitou
Grand Manitou
 
Messages: 495
Inscription: 01 Mar 2010

Cash: 92.00 Chaislongs

Re: Mission - Mission portuaire co8

Messagede =[TTK]= Memphis007 » Ven 2 Avr 2010, 20:36

Toujours la fin de mission à revoir avec le coup du drapeau qui ne fonctionne pas.
Pour halloween, un vrai g33k met un masque de sous réseau.
Le g33k ne sort pas du métro, il libère de la ram.

So Say We All ! - LCDAQFLR

Image
Avatar de l’utilisateur
=[TTK]= Memphis007
Gripsou
Gripsou
 
Age: 31
Messages: 1292
Localisation: /dev/null
Humeur: Born to be wild
Inscription: 13 Jan 2010

Cash: 131.20 Chaislongs



  • Publicité

Retourner vers En chantier

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


cron