PortailAccueilCalendrierRechercherTrombinoscopeS'enregistrerConnexionFAQ

Partagez | 
 

 Mission - Mission portuaire co8

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
=[TTK]= Camille Caz
TranKilou
TranKilou
avatar

Nombre de messages : 937
Age : 77
Localisation : La Rochelle
Humeur : libertaire
Date d'inscription : 27/11/2008

MessageSujet: Mission - Mission portuaire co8   Lun 12 Oct - 12:20

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 !

_________________
Quand les sens gouvernent la conscience, c'est l'analarchie.

Revenir en haut Aller en bas
=[TTK]= FreshMeat
Manitou
Manitou
avatar

Nombre de messages : 153
Date d'inscription : 20/07/2009

MessageSujet: Re: Mission - Mission portuaire co8   Lun 12 Oct - 14:40

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:
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:

_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]

Revenir en haut Aller en bas
=[TTK]= Camille Caz
TranKilou
TranKilou
avatar

Nombre de messages : 937
Age : 77
Localisation : La Rochelle
Humeur : libertaire
Date d'inscription : 27/11/2008

MessageSujet: Re: Mission - Mission portuaire co8   Lun 12 Oct - 19:56

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

_________________
Quand les sens gouvernent la conscience, c'est l'analarchie.

Revenir en haut Aller en bas
=[TTK]= Camille Caz
TranKilou
TranKilou
avatar

Nombre de messages : 937
Age : 77
Localisation : La Rochelle
Humeur : libertaire
Date d'inscription : 27/11/2008

MessageSujet: Re: Mission - Mission portuaire co8   Mar 13 Oct - 11:50

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";

_________________
Quand les sens gouvernent la conscience, c'est l'analarchie.

Revenir en haut Aller en bas
=[TTK]= FreshMeat
Manitou
Manitou
avatar

Nombre de messages : 153
Date d'inscription : 20/07/2009

MessageSujet: Re: Mission - Mission portuaire co8   Mar 13 Oct - 12:11

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]

Revenir en haut Aller en bas
=[TTK]= Camille Caz
TranKilou
TranKilou
avatar

Nombre de messages : 937
Age : 77
Localisation : La Rochelle
Humeur : libertaire
Date d'inscription : 27/11/2008

MessageSujet: Re: Mission - Mission portuaire co8   Mar 13 Oct - 13:03

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.


Je vais faire le briefing maintenant, le moins marrant.

_________________
Quand les sens gouvernent la conscience, c'est l'analarchie.

Revenir en haut Aller en bas
=[TTK]= FreshMeat
Manitou
Manitou
avatar

Nombre de messages : 153
Date d'inscription : 20/07/2009

MessageSujet: Re: Mission - Mission portuaire co8   Mar 13 Oct - 17:00

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]

Revenir en haut Aller en bas
=[TTK]= FreshMeat
Manitou
Manitou
avatar

Nombre de messages : 153
Date d'inscription : 20/07/2009

MessageSujet: Re: Mission - Mission portuaire co8   Lun 2 Nov - 16:16

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]

Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: Mission - Mission portuaire co8   

Revenir en haut Aller en bas
 
Mission - Mission portuaire co8
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [A vendre] Naomi+Dim+Lecteur GD , + Confidential Mission
» [Software] Topic de discussion du jeu "Mission Von Nebula"
» [Mission] La bataille de Sanghelios
» Tankrouge va accomplir sa mission.!
» [supplément] Mission de Bataille

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
=[TTK]= Team TranKilou  :: Le Quartier Précis :: Missions label =[TTK]= :: En Chantier-
Sauter vers: