Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // SERVER CODE
- if ( ! ( isServer ) ) exitWith {};
- // SET SCOPE OF LOCAL VARIABLES
- private ["_veh","_abandonDelay","_destroyedDelay","_vehInit","_vehName","_vehDir","_vehPos","_vehtype","_abandoned","_dead"];
- // PASSED ARGUMENTS ( OBJECT, ABANDONED DELAY, DESTROYED DELAY )
- _veh = [_this, 0, objNull, [objNull]] call BIS_fnc_param;
- _abandonDelay = [_this, 1, 60, [0]] call BIS_fnc_param;
- _destroyedDelay = [_this, 2, 60, [0]] call BIS_fnc_param;
- _vehInit = [_this, 3, {}, [{}] ] call BIS_fnc_param;
- // STORE THE VEHICLES NAME, DIRECTION, POSITION AND TYPE
- _vehName = vehicleVarName _veh;
- _vehDir = getDir _veh;
- _vehPos = getPos _veh;
- _vehtype = typeOf _veh;
- _vehTexture = getObjectTextures _veh;
- // START LOOP TO MONITOR THE VEHICLE
- while { true } Do {
- sleep 1;
- // IF THE VEHICLE IS ALIVE AND CAN MOVE AND IS EMPTY THEN THE VEHICLE IS ABANDONED
- if ( ( alive _veh ) && { ( canMove _veh ) && { { ( alive _x ) } count ( crew _veh ) == 0 } } ) then {
- _abandoned = true;
- // COUNTDOWN THE ABANDONED DELAY - STALL SCRIPT HERE
- for "_i" from 0 to _abandonDelay do {
- // 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
- if ( { ( alive _x ) } count (crew _veh) > 0 || { !( alive _veh ) || { !( canMove _veh ) } } ) exitWith { _abandoned = false; };
- sleep 1;
- };
- // 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
- if ( ( _abandoned ) && { _veh distance _vehPos > 10 } ) then {
- deleteVehicle _veh;
- sleep 1;
- _veh = createVehicle [ _vehtype, _vehPos, [], 0, "CAN_COLLIDE" ];
- _veh setDir _vehDir;
- _veh setPos [ ( _vehPos select 0 ), ( _vehPos select 1 ), 0 ];
- _veh call _vehInit;
- _countTexture = count _vehTexture;
- switch (_countTexture) do {
- case 1 :
- {
- _veh setObjectTextureGlobal [0,(_vehTexture select 0)];
- };
- case 2 :
- {
- _veh setObjectTextureGlobal [0,(_vehTexture select 0)];
- _veh setObjectTextureGlobal [1,(_vehTexture select 1)];
- };
- case 3 :
- {
- _veh setObjectTextureGlobal [0,(_vehTexture select 0)];
- _veh setObjectTextureGlobal [1,(_vehTexture select 1)];
- _veh setObjectTextureGlobal [2,(_vehTexture select 2)];
- };
- case 4 :
- {
- _veh setObjectTextureGlobal [0,(_vehTexture select 0)];
- _veh setObjectTextureGlobal [1,(_vehTexture select 1)];
- _veh setObjectTextureGlobal [2,(_vehTexture select 2)];
- _veh setObjectTextureGlobal [3,(_vehTexture select 3)];
- };
- };
- if (_vehName != "") then {
- missionNamespace setVariable [_vehName, _veh];
- publicVariable _vehName;
- };
- };
- };
- // IF THE VEHICLE IS DESTROYED OR IF IT CAN'T MOVE THEN ITS DEAD
- if ( !( alive _veh ) || { !( canMove _veh ) } ) then {
- _dead = true;
- // COUNTDOWN THE DEAD DELAY - STALL SCRIPT HERE
- for "_i" from 0 to _destroyedDelay do {
- // 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
- if ( { ( alive _x ) } count ( crew _veh ) > 0 || { ( canMove _veh ) } ) exitWith { _dead = false; };
- sleep 1;
- };
- // IF THE VEHICLE IS DEAD THEN DELETE IT AND CREATE A NEW ONE AT THE STARTING POSITION
- if ( _dead ) then {
- deleteVehicle _veh;
- sleep 1;
- _bots_UAV = [_vehPos, west, (configFile >> "CfgGroups" >> "WEST" >> "BLU_F" >> "SpecOps" >> "BUS_SmallTeam_UAV" ) ] call BIS_fnc_spawnGroup;
- [_bots_UAV] joinSilent (group player);
- _veh = createVehicle [ _vehtype, _vehPos, [], 0, "CAN_COLLIDE" ];
- _veh setDir _vehDir;
- _veh setPos [ ( _vehPos select 0 ), (_vehPos select 1 ), 0 ];
- _veh call _vehInit;
- _countTexture = count _vehTexture;
- switch (_countTexture) do {
- case 1 :
- {
- _veh setObjectTextureGlobal [0,(_vehTexture select 0)];
- };
- case 2 :
- {
- _veh setObjectTextureGlobal [0,(_vehTexture select 0)];
- _veh setObjectTextureGlobal [1,(_vehTexture select 1)];
- };
- case 3 :
- {
- _veh setObjectTextureGlobal [0,(_vehTexture select 0)];
- _veh setObjectTextureGlobal [1,(_vehTexture select 1)];
- _veh setObjectTextureGlobal [2,(_vehTexture select 2)];
- };
- case 4 :
- {
- _veh setObjectTextureGlobal [0,(_vehTexture select 0)];
- _veh setObjectTextureGlobal [1,(_vehTexture select 1)];
- _veh setObjectTextureGlobal [2,(_vehTexture select 2)];
- _veh setObjectTextureGlobal [3,(_vehTexture select 3)];
- };
- };
- if (_vehName != "") then {
- missionNamespace setVariable [_vehName, _veh];
- publicVariable _vehName;
- };
- };
- };
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement