Advertisement
Guest User

Untitled

a guest
Mar 25th, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQF 5.89 KB | None | 0 0
  1. // SERVER CODE
  2. if ( ! ( isServer ) ) exitWith {};
  3.  
  4. // SET SCOPE OF LOCAL VARIABLES
  5. private ["_veh","_abandonDelay","_destroyedDelay","_vehInit","_vehName","_vehDir","_vehPos","_vehtype","_abandoned","_dead"];
  6.  
  7. // PASSED ARGUMENTS ( OBJECT, ABANDONED DELAY, DESTROYED DELAY )
  8. _veh =           [_this, 0, objNull, [objNull]] call BIS_fnc_param;
  9. _abandonDelay =      [_this, 1, 60, [0]] call BIS_fnc_param;
  10. _destroyedDelay =    [_this, 2, 60, [0]] call BIS_fnc_param;
  11. _vehInit =        [_this, 3, {}, [{}] ] call BIS_fnc_param;
  12.  
  13. // STORE THE VEHICLES NAME, DIRECTION, POSITION AND TYPE
  14. _vehName =        vehicleVarName _veh;
  15. _vehDir =        getDir _veh;
  16. _vehPos =        getPos _veh;
  17. _vehtype =       typeOf _veh;
  18. _vehTexture =   getObjectTextures _veh;
  19.  
  20. // START LOOP TO MONITOR THE VEHICLE
  21. while { true } Do {
  22.  
  23.     sleep 1;
  24.  
  25.     // IF THE VEHICLE IS ALIVE AND CAN MOVE AND IS EMPTY THEN THE VEHICLE IS ABANDONED
  26.     if ( ( alive _veh ) && { ( canMove _veh ) && { { ( alive _x ) } count ( crew _veh ) == 0 } } ) then {
  27.  
  28.         _abandoned = true;
  29.  
  30.             // COUNTDOWN THE ABANDONED DELAY - STALL SCRIPT HERE
  31.             for "_i" from 0 to _abandonDelay do {
  32.  
  33.                 // IF THE VEHICLE ISN'T EMPTY, OR IS DESTROYED, OR IF IT CAN'T MOVE THEN IT'S NOT ABANDONED SO EXIT THE COUNTDOWN EARLY - CONTINUE THE SCRIPT
  34.                 if ( { ( alive _x ) } count (crew _veh) > 0 || { !( alive _veh ) || { !( canMove _veh ) } } ) exitWith { _abandoned = false; };
  35.                 sleep 1;
  36.  
  37.             };
  38.  
  39.         // IF THE VEHICLE IS ABANDONED AND ISN'T CLOSE TO IT'S STARTING POSITION THEN DELETE IT AND CREATE A NEW ONE AT THE STARTING POSITION
  40.         if ( ( _abandoned ) && { _veh distance _vehPos > 10 } ) then {
  41.  
  42.             deleteVehicle _veh;
  43.             sleep 1;
  44.             _veh = createVehicle [ _vehtype, _vehPos, [], 0, "CAN_COLLIDE" ];
  45.             _veh setDir _vehDir;
  46.             _veh setPos [ ( _vehPos select 0 ), ( _vehPos select 1 ), 0 ];
  47.             _veh call _vehInit;
  48.             _countTexture = count _vehTexture;
  49.             switch (_countTexture) do {
  50.                 case 1 :
  51.                     {
  52.                         _veh setObjectTextureGlobal [0,(_vehTexture select 0)];
  53.                     };
  54.                 case 2 :
  55.                     {
  56.                         _veh setObjectTextureGlobal [0,(_vehTexture select 0)];
  57.                         _veh setObjectTextureGlobal [1,(_vehTexture select 1)];
  58.                     };
  59.                 case 3 :
  60.                     {
  61.                         _veh setObjectTextureGlobal [0,(_vehTexture select 0)];
  62.                         _veh setObjectTextureGlobal [1,(_vehTexture select 1)];
  63.                         _veh setObjectTextureGlobal [2,(_vehTexture select 2)];
  64.                     };
  65.                 case 4 :
  66.                     {
  67.                         _veh setObjectTextureGlobal [0,(_vehTexture select 0)];
  68.                         _veh setObjectTextureGlobal [1,(_vehTexture select 1)];
  69.                         _veh setObjectTextureGlobal [2,(_vehTexture select 2)];
  70.                         _veh setObjectTextureGlobal [3,(_vehTexture select 3)];
  71.                     };
  72.             };
  73.  
  74.             if (_vehName != "") then {
  75.                 missionNamespace setVariable [_vehName, _veh];
  76.                 publicVariable _vehName;
  77.             };
  78.         };
  79.     };
  80.  
  81.     // IF THE VEHICLE IS DESTROYED OR IF IT CAN'T MOVE THEN ITS DEAD
  82.     if ( !( alive _veh ) || { !( canMove _veh ) } ) then {
  83.  
  84.         _dead = true;
  85.  
  86.             // COUNTDOWN THE DEAD DELAY - STALL SCRIPT HERE
  87.             for "_i" from 0 to _destroyedDelay do {
  88.  
  89.                 // IF THE VEHICLE ISN'T EMPTY, OR IF IT CAN MOVE ( HAS BEEN REPAIRED ) THEN IT'S NOT DEAD SO EXIT THE COUNTDOWN EARLY - CONTINUE THE SCRIPT
  90.                 if ( { ( alive _x ) } count ( crew _veh ) > 0 || { ( canMove _veh ) } ) exitWith { _dead = false; };
  91.                 sleep 1;
  92.  
  93.             };
  94.  
  95.         // IF THE VEHICLE IS DEAD THEN DELETE IT AND CREATE A NEW ONE AT THE STARTING POSITION
  96.         if ( _dead ) then {
  97.  
  98.             deleteVehicle _veh;
  99.             sleep 1;
  100.             _bots_UAV = [_vehPos, west, (configFile >> "CfgGroups" >> "WEST" >> "BLU_F" >> "SpecOps" >> "BUS_SmallTeam_UAV" ) ] call BIS_fnc_spawnGroup;
  101.             [_bots_UAV] joinSilent (group player);
  102.             _veh = createVehicle [ _vehtype, _vehPos, [], 0, "CAN_COLLIDE" ];
  103.             _veh setDir _vehDir;
  104.             _veh setPos [ ( _vehPos select 0 ), (_vehPos select 1 ), 0 ];
  105.             _veh call _vehInit;
  106.             _countTexture = count _vehTexture;
  107.             switch (_countTexture) do {
  108.                 case 1 :
  109.                     {
  110.                         _veh setObjectTextureGlobal [0,(_vehTexture select 0)];
  111.                     };
  112.                 case 2 :
  113.                     {
  114.                         _veh setObjectTextureGlobal [0,(_vehTexture select 0)];
  115.                         _veh setObjectTextureGlobal [1,(_vehTexture select 1)];
  116.                     };
  117.                 case 3 :
  118.                     {
  119.                         _veh setObjectTextureGlobal [0,(_vehTexture select 0)];
  120.                         _veh setObjectTextureGlobal [1,(_vehTexture select 1)];
  121.                         _veh setObjectTextureGlobal [2,(_vehTexture select 2)];
  122.                     };
  123.                 case 4 :
  124.                     {
  125.                         _veh setObjectTextureGlobal [0,(_vehTexture select 0)];
  126.                         _veh setObjectTextureGlobal [1,(_vehTexture select 1)];
  127.                         _veh setObjectTextureGlobal [2,(_vehTexture select 2)];
  128.                         _veh setObjectTextureGlobal [3,(_vehTexture select 3)];
  129.                     };
  130.             };
  131.  
  132.             if (_vehName != "") then {
  133.                 missionNamespace setVariable [_vehName, _veh];
  134.                 publicVariable _vehName;
  135.             };
  136.         };
  137.     };
  138. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement