GRIFF - ARMA3
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment : -40%
Tefal Ingenio Emotion – Batterie de cuisine 10 ...
Voir le deal
59.99 €

TaskManager Avec Entité sur l éditeur (previson de retour a Kavala)

Aller en bas

TaskManager Avec Entité sur l éditeur (previson de retour a Kavala) Empty TaskManager Avec Entité sur l éditeur (previson de retour a Kavala)

Message par Nach Mar 26 Fév - 20:21


Voici une de mes dernières creation petit a petit ca se construit .

>Besoin de 7 entités sur l éditeur . de Target1 a Target7 nommée ( a vous de choisir votre objectif)
et je contourne par rapport a la commande !alive
Donnons un exemple concret disons que je veux faire un otage . Je le place dans l éditeur et je lui rajoute une addaction dans son init dans l éditeur. Quand on valide l addaction a la molette celle ci déclenche a la mort d une des TargetX qui se trouve a l autre bout de la carte et valide ma task.(ex un civil nommé Target3).

Mais dans un premier temps voyons l init.sqf

if (isserver) then {
execVM "task\taskmana.sqf";
if (isNil "missiondone") then // j utilise une variable qui permeterront de valider les objectifs.
{missiondone = false;};
};

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

// task\taskmana.sqf;
if (isserver) then {

_task1 = "task\task1.sqf"; // cache d arme
_task2 = "task\task2.sqf"; // detruire un svd a la capitainerie
_task3 = "task\task3.sqf"; // Liberer un journaliste
_task4 = "task\task4.sqf"; // Nettoyer la zone 1
_task5 = "task\task5.sqf"; // Nettoyer la zone 2
_task6 = "task\task6.sqf"; // Nettoyer la zone 3
_task7 = "task\task7.sqf"; // Nettoyer la zone 4


_mission = [_task1,_task2,_task3,_task4,_task5,_task6,_task7];
while {true} do {
missiondone = false;
_selection = selectRandom _mission;
_taskToDelete = ((_mission select {(_x isEqualTo _selection)}) select 0);
_mission deleteAt ((call compile ((_taskToDelete splitString "task\taskNull") select 0)) - 1);
hint format[ "%1",_selection];
execVM _selection;
waitUntil {sleep 0.01; missiondone};
sleep 5;
};

};

-----------------------------------------------------------------------------------------------------------------------------------------------------
Reprenons l histoire de l otage Task3.sqf

if (alive target3) exitWith {

posMiss = getpos journaliste; // mettre un civil nommé journaliste dans l editeur
textMiss = "Trouver et liberer un journaliste";
misc3 = "obj3";
publicVariable "posMiss";
publicVariable "textMiss";
publicVariable "misc3";

[west,misc3,["",textMiss, ""],"",true]call bis_fnc_taskCreate;
[misc3,posmiss] call bis_fnc_taskSetDestination;

lop = ["I_engineer_F","I_medic_F","I_officer_F","I_Soldier_A_F","I_Soldier_AA_F","I_Soldier_AR_F","I_Soldier_AT_F"];
_selection1 = round(random ((count lop)-1));
_selection2 = round(random ((count lop)-1));
_soldat1 = lop select _selection1;
_soldat2 = lop select _selection2;
_groupe1 = createGroup resistance;
_groupe2 = createGroup resistance;
_pos = getpos journaliste;
_soldat1 createunit [_pos , _groupe1," "];
_soldat2 createunit [_pos , _groupe2," "];




journaliste addEventHandler ["killed", {target3 setdammage 1;}];// si on tue mon otage je tue mon civil target 3
waitUntil {!alive target3};
if (alive journaliste) then { // si il est en vie
[misc3,"SUCCEEDED",true] call bis_fnc_taskSetState;
sleep 2;
[textmiss ,west ] call BIS_fnc_deleteTask;
missiondone = true;
}else{ // si il est mort
[misc3,"FAILED",true] call bis_fnc_taskSetState;
sleep 2;
[textmiss ,west ] call BIS_fnc_deleteTask;
missiondone = true;
};

};

if (!alive target3) exitwith {exit ; missiondone = true};

---------------------------------------------------------------------------------------------------------------------------------------------------
Voyons maintenant une zone a nettoyer avec une target qui est un ennemi + un trigger qui complete la validation par un nombre X sur zone


if (alive target4) exitWith {

posMiss = getpos target4;
textMiss = "Nettoyer La Zone 1";
misc4 = "obj4";
publicVariable "posMiss";
publicVariable "textMiss";
publicVariable "misc4";

[west,misc4,["",textMiss, ""],"",true]call bis_fnc_taskCreate;
[misc4,posmiss] call bis_fnc_taskSetDestination;

marker4 = createMarker ["Marker2", (getpos target4)];
marker4 setMarkerShape"ELLIPSE";
marker4 setMarkerColor "ColorRED";
marker4 setMarkerSize [400, 400];
publicVariable "marker4";


lop = ["I_engineer_F","I_medic_F","I_officer_F","I_Soldier_A_F","I_Soldier_AA_F","I_Soldier_AR_F","I_Soldier_AT_F"];


_selection1 = round(random ((count lop)-1));
_selection2 = round(random ((count lop)-1));
_selection3 = round(random ((count lop)-1));
_selection4 = round(random ((count lop)-1));

_soldat1 = lop select _selection1;
_soldat2 = lop select _selection2;
_soldat3 = lop select _selection3;
_soldat4 = lop select _selection4;

_groupe1 = createGroup resistance;
_groupe2 = createGroup resistance;
_groupe3 = createGroup resistance;
_groupe4 = createGroup resistance;

_pos = getpos target4;
_soldat1 createunit [_pos , _groupe1," "];
_soldat2 createunit [_pos , _groupe2," "];
_soldat3 createunit [_pos , _groupe3," "];
_soldat4 createunit [_pos , _groupe4," "];

_pos1 = getpos target4;
_posecentre = _pos;
[_groupe1, _pos1, 100] call bis_fnc_taskpatrol;
[_groupe2, _pos1, 100] call bis_fnc_taskpatrol;
[_groupe3, _pos1, 100] call bis_fnc_taskpatrol;
[_groupe4, _pos1, 100] call bis_fnc_taskpatrol;

trigger4 = createTrigger["EmptyDetector",posmiss];
trigger4 setTriggerArea[450,450,0,false];
trigger4 setTriggerActivation["WEST","PRESENT",false];
trigger4 setTriggerStatements["this && (({alive _x } count (nearestObjects [getPos thisTrigger, ['I_Soldier_base_F'], 400])) <= 3)", "missiondone=true;publicVariable 'missiondone';target4 setdammage 1 ;deleteMarker marker4", ""];
// en dessous de 3 +target tuée = validation
publicVariable "trigger4";

waitUntil {triggerActivated trigger4};// j attends la validation de mon trigger numerique
waitUntil {!alive target4}; // j attends la mort de la cible pour valider la deuxieme requete
[misc4,"SUCCEEDED",true] call bis_fnc_taskSetState;

sleep 2;
[textmiss ,west ] call BIS_fnc_deleteTask;

missiondone = true;

sleep 8;
} ;

if (!alive target4) exitWith {exit ; missiondone = true};
------------------------------------------------------------------------------------------------------------------------------------------------------

Si vous avez des question X n hésité pas .
Bien a vous Nach

Nach

Messages : 513
Date d'inscription : 31/01/2016

Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum