45.png
44.png
43.png
42.png
41.png
40.png
39.png
38.png
37.png
36.png
35.png
34.png
33.png
32.png
31.png
30.png
29.png
28.png
27.png
26.png
24.png
23.png
22.png
21.png

Бесплатный сервис SOWPROJECT разработан специально для серверов arma 3 EPOCH,EXILE. Мы разрабатываем продукты для серверов arma III

Реклама на сайте

Сервис фотографий девушек
Мир и бизнес
AC Studio
UHOT.RU
FILMKINO

Контактная информация

Информация для связи

info@sowproject.ru - отдел по работе с клиентами. Решение общих вопросов и для информации. Любые вопросы касательно проекта SOWPROJECT.

support@sowproject.ru - технический отдел. Решение технических вопросов касательно проекта SOWPROJECT.

Настраиваемый Heli Crash для arma 3 EXILE

94.jpg
28 Января 2018

Давайте разберем скрипт.

////////////////////////////////////////// Снаряжение ботов ///////////////////////////////////
/* Список оружия для ботов.
1-ое значение класс оружия
2-ое значение класс обойм
3-ее значение количество обойм */
_weaponBots = [
["arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer",5],
["hgun_PDW2000_F","30Rnd_9x21_Mag",5],
["arifle_MXM_F","30Rnd_65x39_caseless_mag",5],
["LMG_Mk200_F","200Rnd_65x39_cased_Box",5]
];
/* Список второстепенного оружия для ботов.
1-ое значение класс оружия
2-ое значение класс обойм
3-ее значение количество обойм
["","",0] - означает ни чего не давать
["launch_RPG7_F","",0] - если второй параметр пустой то не будет зарядов */
_weaponSecondaryBots = [
["","",0],
["CUP_launch_RPG18","CUP_RPG18_M",1],
["launch_RPG7_F","RPG7_F",2]
];
/* Список оптики для ботов */
_rifleOpticsBots = ["optic_ERCO_khk_F","optic_MRCO","optic_Hamr","optic_ERCO_khk_F","optic_MRCO","optic_Hamr"];
/* Список одежды для ботов */
_uniformBots = ["U_OG_Guerilla3_2","U_O_CombatUniform_ocamo","U_O_PilotCoveralls"];
/* Бронижелеты для ботов */
_vestBots = ["V_PlateCarrier_Kerry","V_Press_F","V_PlateCarrierL_CTRG"];
/* Рюкзаки для ботов, появляются только если парамметр _spawnFly = 0. Если массив оставить пустым [], то рюкзаков у ботов просто не будет. */
_backpacksBots = ["B_Kitbag_rgr","B_Kitbag_mcamo","B_TacticalPack_mcamo"];
/* Произвольный лут в ботах */
_itemBots = ["Exile_Item_EMRE","Exile_Item_Surstromming_Cooked","Exile_Item_PowerDrink"];
/* Список рангов ботов */
_rankBoats = ["CORPORAL","SERGEANT","LIEUTENANT","CAPTAIN","MAJOR","COLONEL"];
/* Рандомный список жесткости ботов. Формируется от 0 до 1, к примеру 50% это 0.5 */
_abilityBots = [0.5,0.6,0.7,0.8,0.9];

 

////////////////////////////////////////// Снаряжение ящика с лутом ///////////////////////////////////
/* Оружие, которое может попасть в ящике с лутом
1-ое значение класс оружия
2-ое значение класс обойм
3-ее значение количество обойм */
_LMGs = [
["arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer",3],
["hgun_PDW2000_F","30Rnd_9x21_Mag",3],
["arifle_MXM_F","30Rnd_65x39_caseless_mag",3],
["LMG_Mk200_F","200Rnd_65x39_cased_Box",3]
];
/* Список оптики */
_rifleOptics = ["optic_ERCO_khk_F","optic_MRCO","optic_Hamr","optic_ERCO_khk_F","optic_MRCO","optic_Hamr"];
/* Список рюкзаков */
_backpacks = ["B_Kitbag_rgr","B_Kitbag_mcamo","B_TacticalPack_mcamo"];
/* Список лута */
_itemmy = ["muzzle_snds_L","muzzle_snds_H_SW","muzzle_snds_M","muzzle_snds_L","muzzle_snds_M","U_OG_Guerilla3_2","U_O_CombatUniform_ocamo","Exile_Item_EMRE","Exile_Item_Surstromming_Cooked","Exile_Item_PowerDrink","Exile_Item_PlasticBottleCoffee","Exile_Item_Vishpirin","Exile_Item_Matches","Exile_Item_DuctTape","Exile_Item_CanOpener","Exile_Item_Bandage","Exile_Item_InstaDoc"];


////////////////////////////////////////// Настройки краша ///////////////////////////////////
_spawnFly = 1; /* Параметр отвечает за появление ботов в воздухе или на земле. 0 - на земле, 1 - в воздухе */
_startCrash = 80; /* Через какое время начнет падать хеликраш после рестарта. В секундах. */
_betweenTime = 1500; /* Через какое время упадет следующий краш. В секундах. */
_startCountBots = 5; /* От скольки будет количество ботов. Рандомно */
_endCountBots = 8; /* До скольки будет количество ботов. Рандомно */
_betweenTimeCrashBots = 7; /* Задержка в секундах между вертолетом и десантом */
_betweenTimeBots = 2; /* Задержка в секундах между десантом */
_betweenTimeYawik = 5; /* Задержка в секундах перед вторым взрывом и появлением ящика */
_heightCrash = 600; /* Высота с какой падает вертолет */
_heightBots = 200; /* Высота с какой падает десант */
_countItemBots = [[1,2],[1],[1,2,3]]; /* Количество произвольного лута в ботах пишется через запятую в массиве. Береться рандомно */
_startMetrsCrash = 500; /* Начальное растояние от игрока */
_endMetrsCrash = 700; /* Конечное растояние от игрока */
_countWeapon = [[1,2],[1]]; /* Количество произвольного оружие в ящике с лутом, пишется через запятую в массиве. Береться рандомно */
_countItems = [[1,2,3],[1,2,3,4],[1,2,3,4,5]]; /* Количество произвольного лута в ящике с лутом, пишется через запятую в массиве. Береться рандомно */
_countBackpack = [[1,2],[1]]; /* Количество рюкзаков в ящике с лутом, пишется через запятую в массиве. Береться рандомно */
_radiusMetrsCrash = 100; /* Радиус передвижения ботов в пасивном режиме. Если увидят цель будут преследовать. */

if(_spawnFly == 0)then{
_heightBots = 0;
};

////////////////////////////////////////// Скриптовая часть краша ///////////////////////////////////
sleep _startCrash;

while{true}do{
_pl = playableUnits select floor(random count playableUnits);

if((count playableUnits) > 0) then{
_plpos = position _pl;
_randMetrs = _endMetrsCrash - (random(_endMetrsCrash - _startMetrsCrash));
_randMetrs2 = _endMetrsCrash - (random(_endMetrsCrash - _startMetrsCrash));
_randZnak = floor(random 2) + 1;
_randZnak2 = floor(random 2) + 1;
_randPos = 0;
_randPos2 = 0;

if(_randZnak == 2)then{
_randPos = _randMetrs + (_plpos select 0);
}else{
if(_randMetrs > (_plpos select 0))then{
_randPos = _randMetrs - (_plpos select 0);
}else{
_randPos = (_plpos select 0) - _randMetrs;
};
};

if(_randZnak2 == 2)then{
_randPos2 = _randMetrs2 + (_plpos select 1);
}else{
if(_randMetrs2 > (_plpos select 1))then{
_randPos2 = _randMetrs2 - (_plpos select 1);
}else{
_randPos2 = (_plpos select 1) - _randMetrs2;
};
};

_vehicle_20_i = objNull;
if (true) then
{
_veh5 = createVehicle ["B_Heli_Transport_01_F", [_randPos, _randPos2, _heightCrash], [], 10, "CAN_COLLIDE"];
_vehicle_20 = _veh5;
_veh5 setVehicleVarName "hely";
hely = _veh5;
_veh5 setPos [_randPos, _randPos2, _heightCrash];
hely setDamage 1;
};

sleep _betweenTimeCrashBots;

_pospos = getPos hely;

_group_crash = createGroup EAST;

_boxPos = (_pospos select 0) + 30;
_boxPos2 = (_pospos select 1) + 30;

_countAllBots = _endCountBots - (random(_endCountBots - _startCountBots + 1));

while{_countAllBots > 0}do{
_unit_60 = objNull;
if (true) then
{
_this = _group_crash createUnit ["O_Soldier_unarmed_F", [_boxPos, _boxPos2, _heightBots], [], _radiusMetrsCrash, "CAN_COLLIDE"];
_unit_60 = _this;
removeAllWeapons _this;
removeAllItems _this;
removeAllAssignedItems _this;
removeUniform _this;
removeVest _this;
removeBackpack _this;
removeHeadgear _this;
removeGoggles _this;
_this setPos [_boxPos, _boxPos2, _heightBots];
_rankBot = _rankBoats select (random (count _rankBoats -1));
_this setUnitRank _rankBot;
_abilityBot = _abilityBots select (random (count _abilityBots -1));
_this setUnitAbility _abilityBot;
_uniformBot = _uniformBots select (random (count _uniformBots -1));
_this forceAddUniform _uniformBot;
_vestBot = _vestBots select (random (count _vestBots -1));
_this addVest _vestBot;
if((count _backpacksBots) > 0)then{
_backBoats = _backpacksBots select (random (count _backpacksBots -1));
_this addBackpack _backBoats;
};
_wpnBoats = _weaponBots select (random (count _weaponBots -1));
_this addMagazines [(_wpnBoats select 1),(_wpnBoats select 2)];
_this addWeapon (_wpnBoats select 0);
if((count _weaponSecondaryBots) > 0)then{
_wpnBoats = _weaponSecondaryBots select (random (count _weaponSecondaryBots -1));
if(count (_wpnBoats select 0) > 0)then{
if(count (_wpnBoats select 1) > 0)then{
_this addMagazines [(_wpnBoats select 1),(_wpnBoats select 2)];
};
_this addWeapon (_wpnBoats select 0);
};
};
_opticBot = _rifleOpticsBots select (random (count _rifleOpticsBots -1));
_this addPrimaryWeaponItem _opticBot;
_countItemBot = _countItemBots select (random (count _countItemBots -1));
{
_itemBot = _itemBots select (random (count _itemBots -1));
_this addItem _itemBot;
}forEach _countItemBot;
if(_spawnFly == 1)then{
removeBackpack _this;
_this addBackpack "B_Parachute";
};
_this addEventHandler ["killed", "[_this select 0, _this select 1] execVM 'respectSoWM.sqf'"];
[_this] join _group_crash;
};
_countAllBots = _countAllBots - 1;
sleep _betweenTimeBots;
};

_myRandPos = _randPos + 10;
_myRandPos2 = _randPos2 + 10;

_this3 = _group_crash addWaypoint [[_myRandPos, _myRandPos2, 0], 0];
_this3 setWaypointType "HOLD";
_this3 setWaypointCombatMode "YELLOW";
_this3 setWaypointSpeed "LIMITED";
_this3 setWaypointBehaviour "STEALTH";
_waypoint_60 = _this;

_this3 = _group_crash addWaypoint [[_myRandPos,_myRandPos2, 0], _radiusMetrsCrash];
_this3 setWaypointType "HOLD";
_this3 setWaypointCombatMode "YELLOW";
_this3 setWaypointSpeed "LIMITED";
_this3 setWaypointBehaviour "STEALTH";
_waypoint_61 = _this;

_this3 = _group_crash addWaypoint [[_myRandPos, _myRandPos2, 0], 0];
_this3 setWaypointType "CYCLE";
_this3 setWaypointCombatMode "YELLOW";
_this3 setWaypointSpeed "LIMITED";
_this3 setWaypointBehaviour "STEALTH";
_waypoint_62 = _this;

sleep _betweenTimeYawik;
deleteVehicle hely;

_claymore = "DemoCharge_Remote_Mag" createVehicle _pospos;
0 = _claymore spawn {
uiSleep 0.1;
_this setDamage 1;
};

sleep 1;

_randPos = _pospos select 0;
_randPos2 = _pospos select 1;
_boxPos = _randPos + 5;
_boxPos2 = _randPos2 + 5;

_vehicle_20_i = objNull;
if (true) then
{
_veh5 = createVehicle ["test_EmptyObjectForFireBig", [_randPos, _randPos2, 0], [], 0, "CAN_COLLIDE"];
_vehicle_20 = _veh5;
_veh5 setVehicleVarName "helidum";
helidum = _veh5;
_veh5 setPos [_randPos, _randPos2, 0];
};

_vehicle_21_i = objNull;
if (true) then
{
_veh5 = createVehicle ["Land_UWreck_Heli_Attack_02_F", [_randPos, _randPos2, 0], [], 0, "CAN_COLLIDE"];
_vehicle_21 = _veh5;
_veh5 setVehicleVarName "helik";
helik = _veh5;
_veh5 setPos [_randPos, _randPos2, 0];
};

_vehicle_21_i = objNull;
if (true) then
{
_veh5 = createVehicle ["Box_IND_Ammo_F", [_boxPos, _boxPos2, 0], [], 10, "CAN_COLLIDE"];
_vehicle_21 = _veh5;
_veh5 setPos [_boxPos, _boxPos2, 0];
clearItemCargoGlobal _veh5;
clearWeaponCargoGlobal _veh5;
clearMagazineCargoGlobal _veh5;
clearBackPackCargoGlobal _veh5;
_veh5 setVehicleVarName "heliYaw1";
heliYaw1 = _veh5;
_countWeaponsAll = _countWeapon select (random (count _countWeapon -1));
{
_wpn = _LMGs select (random (count _LMGs -1));
_veh5 addWeaponCargoGlobal [(_wpn select 0), 1];
_veh5 addMagazineCargoGlobal [(_wpn select 1), (_wpn select 2)];
_veh5 addItemCargoGlobal [_rifleOptics select (random (count _rifleOptics -1)), 1];
}forEach _countWeaponsAll;
_countItemsAll = _countItems select (random (count _countItems -1));
{
_veh5 addItemCargoGlobal [_itemmy select (random (count _itemmy -1)), 1];
}forEach _countWeaponsAll;
_countBackpackAll = _countBackpack select (random (count _countBackpack -1));
{
_veh5 addBackpackCargoGlobal [_backpacks select (random (count _backpacks -1)), 1];
}forEach _countBackpackAll;
};
sleep _betweenTime;
deleteVehicle helik;
deleteVehicle heliYaw1;
helidum hideObject true;
};

sleep 5;

};

Тут все расписанно по каждому пункту. Комментарии излишние. Пользуйтесь на здоровье.

loading.gif