=[TTK]= Team TranKilou
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.



 
PortailAccueilRechercherDernières imagesTrombinoscopeS'enregistrerConnexion
Le Deal du moment :
Display One Piece Card Game Japon OP-08 – Two ...
Voir le deal

 

 Mission - Mission portuaire co8

Aller en bas 
2 participants
AuteurMessage
=[TTK]= Camille Caz
TranKilou
TranKilou
=[TTK]= Camille Caz


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

Mission - Mission portuaire co8 Empty
MessageSujet: Mission - Mission portuaire co8   Mission - Mission portuaire co8 Icon_minitimeLun 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 !
Revenir en haut Aller en bas
=[TTK]= FreshMeat
Manitou
Manitou
=[TTK]= FreshMeat


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

Mission - Mission portuaire co8 Empty
MessageSujet: Re: Mission - Mission portuaire co8   Mission - Mission portuaire co8 Icon_minitimeLun 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.
Revenir en haut Aller en bas
=[TTK]= Camille Caz
TranKilou
TranKilou
=[TTK]= Camille Caz


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

Mission - Mission portuaire co8 Empty
MessageSujet: Re: Mission - Mission portuaire co8   Mission - Mission portuaire co8 Icon_minitimeLun 12 Oct - 19:56

Super. J'aime beaucoup la 24e édition.
Tout cela m'éclaire peu à peu. Je te remercie.
Revenir en haut Aller en bas
=[TTK]= Camille Caz
TranKilou
TranKilou
=[TTK]= Camille Caz


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

Mission - Mission portuaire co8 Empty
MessageSujet: Re: Mission - Mission portuaire co8   Mission - Mission portuaire co8 Icon_minitimeMar 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";
Revenir en haut Aller en bas
=[TTK]= FreshMeat
Manitou
Manitou
=[TTK]= FreshMeat


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

Mission - Mission portuaire co8 Empty
MessageSujet: Re: Mission - Mission portuaire co8   Mission - Mission portuaire co8 Icon_minitimeMar 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.
Revenir en haut Aller en bas
=[TTK]= Camille Caz
TranKilou
TranKilou
=[TTK]= Camille Caz


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

Mission - Mission portuaire co8 Empty
MessageSujet: Re: Mission - Mission portuaire co8   Mission - Mission portuaire co8 Icon_minitimeMar 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.
Mission - Mission portuaire co8 Icon_rolleyes

Je vais faire le briefing maintenant, le moins marrant.
Revenir en haut Aller en bas
=[TTK]= FreshMeat
Manitou
Manitou
=[TTK]= FreshMeat


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

Mission - Mission portuaire co8 Empty
MessageSujet: Re: Mission - Mission portuaire co8   Mission - Mission portuaire co8 Icon_minitimeMar 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.
Revenir en haut Aller en bas
=[TTK]= FreshMeat
Manitou
Manitou
=[TTK]= FreshMeat


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

Mission - Mission portuaire co8 Empty
MessageSujet: Re: Mission - Mission portuaire co8   Mission - Mission portuaire co8 Icon_minitimeLun 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 ;
Revenir en haut Aller en bas
Contenu sponsorisé





Mission - Mission portuaire co8 Empty
MessageSujet: Re: Mission - Mission portuaire co8   Mission - Mission portuaire co8 Icon_minitime

Revenir en haut Aller en bas
 
Mission - Mission portuaire co8
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Mission Solo
» Mission - L'or de Hunapu
» Mission - L'extazoïne
» Mission - Les TTK attaquent
» Mission - Les déserteurs

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: