SCRIPT ARMA LIBERATION OTAGE 3.0

Aller en bas

Re: SCRIPT ARMA LIBERATION OTAGE 3.0

Message par ('l|) Nach le Mar 2 Oct - 19:17

Ca vas No tu n as pas rencontré de problème avec le script . N hésite pas a faire des remontées si il y a !!

Bien a toi Nach
avatar
('l|) Nach

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

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: SCRIPT ARMA LIBERATION OTAGE 3.0

Message par (!|!) NoQuarter le Dim 30 Sep - 18:59

Merci .Je vais l'utiliser dès que possible
avatar
(!|!) NoQuarter

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

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

SCRIPT ARMA LIBERATION OTAGE 3.0

Message par ('l|) Nach le Dim 30 Sep - 18:51

Otage GRIFF 3.0
Comme promis avant mont depart en Vacances je me suis attelé a l amelioration du script concernant les otages.

toujours avec une mise en simple dans une mission
avec un spawncivil2.sqf et un dossier contenant 2 fichiers otagegriff\position.sqf
                                                                                    otagegriff\housep.sqf

Le script se declenche dans un trigger quand activation >> null= [2,"monmarker",100] execVM "spawncivil2.sqf";  
>> [nombre d otage qui spawnent, "votre marqueur de l editeur" ,   radius de la zone de spawn souhaitée] execVM "spawncivil2.sqf";


voici le script Spawncivil2.sqf a mettre dans la racine du dossier. // task a supprimer en dessous si vous voulez supprimer la task  
//-----------------------------------------------------------------------------------------------------------------------------------
// Nach @ Team-Griff >> griff.forumactif.org/

fncotage =
{
(_this select 0) playmove  "AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon";
[(_this select 0), // nom de l objet dans leditzeur
"Liberer Otage", // nom de l addaction
"\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_unbind_ca.paa",// icone sur l objet
"\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_unbind_ca.paa", // iconce qui change a laction
"player distance _target < 2", // condition activer l action
"player distance _target < 2", // condition pour qe l action soit continuer
{}, // insertion d un code qui s execute au debut de l action exemple {null = execVM Gcréeunedefense.sqf}
{}, // insertion d un script pendant la progression
{_target = _this select 0;
_Group = Group leader _target;

_target switchMove "AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon";
_target  removeAction 0;




_joueurs = playableUnits;
_nombre = round(random ((count _joueurs)-1));
_cible = _joueurs select _nombre;
_targetPos = getPos _cible;


_posecentre = _targetpos;
_start_distance = 1000;


_xpos = _posecentre select 0;
_ypos = _posecentre select 1;
_zpos = _posecentre select 2;

_distance = _start_distance;

               _angle = random 360;

_xxpos = (_distance * cos _angle);
_yypos = (_distance * sin _angle);

_xpos = _xpos + _xxpos;
_ypos = _ypos + _yypos;

_posecentre set [0, _xpos];
_posecentre set [1, _ypos];
_posecentre set [2, _zpos];


_waypoint = _Group addWaypoint [_targetpos, 0];
_waypoint setWaypointType "MOVE";
_waypoint setWaypointSpeed "FULL";

_message = format ["Merci soldat %1",name player];
hint _message;

sleep 20;
deleteVehicle _target;
}, // insertion du script a la fin de la pogression
{_message = format ["Depechez vous de me sauver soldat %1",name player];hint _message;}, // ici le script si l action est arrete si interuption
[],// argument si besoin il y a
5, // la duree que le joueur doit maintenir l action pour valider son objectif
0, // une priorité X
true , // si l on veux supprimer l addaction a la fin de laction
false //
] remoteExec ["BIS_fnc_holdActionAdd" ,[0,-2] select isDedicated, true]; // script globale pour serveur dedié
};
publicVariable "fncotage";


_Nombredemaison = (_this select 0);
_radius = (_this select 2);

//null = [(_this select 1)] execVM "tasko.sqf";

for [{_n=0}, {_n<_Nombredemaison}, {_n=_n+1}] do {

_pos1 = getmarkerpos (_this select 1);
_grp = createGroup civilian;
_unit = _grp createUnit ["C_man_shorts_1_F",_pos1, [], 0, "NONE"];
null =  [_unit, _pos1,_radius] execVM "otagegriff\position.sqf";
null = [_unit] spawn fncotage ;
//hint "ca fonctionne";
//null = [(_this select 1)] execVM "tasko.sqf";

};
sleep 3;
if (isServer) then {
_listecivils = ["C_man_shorts_1_F"];
_listennemis = ["I_C_Soldier_Bandit_4_F","I_C_Soldier_Bandit_3_F","I_C_Soldier_Bandit_7_F","I_C_Soldier_Bandit_5_F"];
_position = getmarkerpos (_this select 1);
_radiusmaison = (_this select 2);
_otage = nearestObjects [_position ,_listecivils,_radiusmaison];
  {
   _grb2 = createGroup east;
   _grb3 = createGroup east;
   _nombre2 = round(random ((count _listennemis)-1));
   _nombre3 = round(random ((count _listennemis)-1));
   _s11 = _listennemis select _nombre2;
   _s12 = _listennemis select _nombre3;


   _posx = (getPosatl _x select 0)+1;
   _posy = (getPosatl _x select 1)-2;
   _posz = (getPosatl _x select 2)+1.5;
   _pos = [_posx,_posy,_posz];
   _s11 createUnit [_pos, _grb2];

   _posx = (getPosatl _x select 0)+1;
   _posy = (getPosatl _x select 1)-2;
   _posz = (getPosatl _x select 2)+1.5;
   _pos1 = [_posx,_posy,_posz];
   _s12 createUnit [_pos1, _grb3];

{null = [_x] execVM "otagegriff\housep.sqf";} foreach (units _grb3);

} forEach _otage;

};


// task

if (isserver) then {
pos9miss = getmarkerpos (_this select 1) ;
textoMiss = "Libérer les habitants";
misot1 = "obj9";
publicVariable "pos9Miss";
publicVariable "textoMiss";
publicVariable "misot1";




// creation est spawn de la task
[west,misot1,["",textoMiss, pos9Miss],"",true]call bis_fnc_taskCreate;
[misot1,pos9miss] call bis_fnc_taskSetDestination;


// validation par civil absent
trg9 = createTrigger["EmptyDetector",pos9miss];
trg9 setTriggerArea[1000,1000,0,false];
trg9 setTriggerActivation["CIV","NOT PRESENT",false];
trg9 setTriggerStatements["this", "hint 'otages liberer',nul = [misot1,""SUCCEEDED"",true] call bis_fnc_taskSetState; publicVariable 'misot1'; publicVariable 'textomiss';", ""];
publicVariable "trg9";


waitUntil {triggerActivated trg9};
sleep 5;
  ["obj9"] call BIS_fnc_deleteTask;
   deleteVehicle trg9;
};
 
//-----------------------------------------------------------------------------------------------------------------
Voici les deux SQF a mettre dans le dossier otagegriff\ celui genere la patrouille des IAS dans les maisons

// housep.sqf

sleep 0.5;
if (!isServer) exitWith {};

private["_houseObjects","_position","_buildings","_newpos","_unit","_bposs","_i","_i2","_x"];

_unit = _this select 0;
_beh = if (count _this > 1) then {_this select 1} else {"SAFE"};
_wtime = if (count _this > 2) then {_this select 2} else {30};
if (_wtime < 0) then {_wtime = 30};
   _x = 0;
_y = 0;
_t = 0;
_timeout = 0;
_notbugged = true;
_name = vehicleVarName _unit;
if (isNil _name) then {_name = "guard"};
if (_beh == "CARELESS"
or _beh == "SAFE"
or _beh == "AWARE"
or _beh == "COMBAT"
or _beh == "STEALTH")
then {_unit setBehaviour _beh}
else {_unit setBehaviour "SAFE"};



_position = getPos _unit;
   _houseObjects = nearestObjects [_position, ["building"],15];

if(isNil("_houseObjects"))exitWith{nil};
if((count _houseObjects)==0)exitWith{nil};

_buildings = [];
{
if(str(_x buildingPos 0) != "[0,0,0]")then{_buildings set[(count _buildings),_x];};
}forEach _houseObjects;

if((count _buildings)==0)exitWith{nil};

_bPoss = [];
_a = 0;
while { _a < (count _buildings) } do {
_building = (_buildings select _a);
_i = 0;
while { ((_building buildingPos _i) select 0) != 0 } do {
_bPoss set [count (_bPoss), (_building buildingPos _i)];
_i = _i + 1;
};
_a = _a + 1;
};


   _newPos = _bposs select floor(random count _bposs);

_unit setpos [_newpos select 0,_newpos select 1,1.2];




_i2 = 1;
    while{_i2 < (count _bPoss) && (alive _unit)}do{
      _newPos = (floor(random(count _bPoss)));
        _newPos = _bPoss select _newPos;
        waitUntil {unitReady _unit || _unit distance _newPos < 2};

        _unit doMove _newPos;
        waitUntil {unitReady _unit || _unit distance _newPos < 2};
        sleep 15 + random 25;
        _i2 = _i2 + 1;
    };


-------------------------------------------------------------------------------------------------------------------------------------------
// position.sqf celui place l otage dans les maisons

_unit =  (_this select 0);
_position = (_this select 1);
_radius = (_this select 2);



_houseObjects = nearestObjects [_position , ["HOUSE"],_radius];

if(isNil("_houseObjects"))exitWith{nil};
if((count _houseObjects)==0)exitWith{nil};

_buildings = [];
{
   if(str(_x buildingPos 0) != "[0,0,0]")then{_buildings set[(count _buildings),_x];};
} forEach _houseObjects;

if((count _buildings)==0)exitWith{nil};

_bPoss = [];
_a = 0;
while { _a < (count _buildings) } do {
   _building = (_buildings select _a);
   _i = 0;
   while { ((_building buildingPos _i) select 0) != 0 } do {
       _bPoss set [count (_bPoss), (_building buildingPos _i)];
       _i = _i + 1;
   };
   _a = _a + 1;
};


   _newPos = _bposs select floor(random count _bposs);

   _unit  setpos _newpos;



   _posx = (getPosatl _unit select 0)+0;
   _posy = (getPosatl _unit select 1)-0;
   _posz = (getPosatl _unit select 2)+1.2;
   _pos = [_posx,_posy,_posz];

    _unit setpos _pos;

//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Dernière édition par ('l|) Nach le Mar 2 Oct - 19:20, édité 3 fois
avatar
('l|) Nach

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

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: SCRIPT ARMA LIBERATION OTAGE 3.0

Message par Contenu sponsorisé


Contenu sponsorisé


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