Итак, плодом моих с gerasimow9 совместных усилий стали два скрипта, выполняющие одинаковую функцию, но имеющие небольшие различия. Хочу обратить внимание на то, что основную часть кода написал gerasimow9, я лишь исправил кое-какие ошибки и сделал версию скрипта в sqf! Также я сделал два примера, один для чистой ArmA2, второй для ArmA2 OA.
Вот и вышла новая версия скрипта, это случилось благодаря совету товарища DICS. В новой версии я оставил только sqf файл.
Список изменений: Ящик появляется точно на месте посадки. Исправлено несколько ненужных строк в коде. Написал объяснение исправленного скрипта.
активация скрипта:
В триггере или скрипте пишите
Code
p=[sam] execVM "sbros.sqf";
версия скрипта SQF
sam - имя самолёта, которое будет передано в скрипт, может быть любым!
Code
// _c130 название самолёта, локальная переменная! // _chute Название парашюта, локальная переменная! // _boks Название ящика, локальная переменная! // _bam Название нового ящика, локальная переменная!
// "ParachuteMediumWest_EP1" название парашюта, можно вписать любой // "USBasicAmmunitionBox_EP1" название ящика, можно вписать любой!
_c130 = _this select 0; // передача названия самолёта в скрипт _chute = "ParachuteMediumWest_EP1" createVehicle [0, 0, 0]; // Создание парашюта _chute setPos [(getpos _c130 select 0), (getPos _c130 select 1), (getPos _c130 select 2)]; // Телепортация парашюта к к координатам самолёта _box = "USBasicAmmunitionBox_EP1" createVehicle [0, 0, 0]; // Создание ящика _box setpos [(getpos _c130 select 0), (getpos _c130 select 1), (getpos _c130 select 2)]; // Телепортация ящика к к координатам самолёта _box attachto [_chute, [0, 0, 0]]; // прикрепеление ящика к парашюту waitUntil {((getPos _box) select 2) < 1}; // Ожидание приземления ящика detach _box; // Отцепление ящика от парашюта _box setpos [(getpos _box select 0), (getpos _box select 1), 0]; // Поднятия ящика до уровня земли(0 мтеров) _bam ="USBasicAmmunitionBox_EP1" createVehicle [(getpos _box select 0),(getpos _box select 1),(getpos _box select 2)+0]; // Создание нового ящика deletevehicle _box; // Удаление старого ящика
Итак, рад сообщить о выходе новой версии этого скрипта!
О версии 1.2
Эту версию я делал уже без участия Gerasimow9 и я очень много в неё вложил. Надеюсь, что она оправдает ваши ожидания!Теперь скрипт отлично работает не только с ящиками, но и с техникой!
* Скрипт полностью универсален, больше не придётся сворачивать игру и открывать скрипт. Всё можно сделать через редактор!
* Добавлено две ветви запуска скрипта. С параметром true, скрипт работает для ящиков, а с параметром false для техники.
* Добавлены дымовые шашки и осветительные ракеты, которые укажут место приземления груза. В случае уничтожения груза, дымовухи и остветилки не будут созданы.
* Теперь, если во время полёта ящик будет уничтожен, он не заменится новым при приземлении!
* Некоторые изменения в коде.
Code
// Как запустить?
// 1 Создать миссию // 2 Поместить скрипт в папку с миссией // 3 Поставить самолёт и дать ему имя // 4 Активировать скрипт // Например так: p=[true,sam,"ParachuteBigWest_EP1","M2A2_EP1"] execVM "sbros.sqf"
// true режим для ящиков, если хотите сбросить ящик с боеприпасами, пишите true // false режим для техники, если хотите сбросить технику, пишите false // sam название самолёта который десантирует объект, нужно поставить его в редакторе! // "ParachuteBigWest_EP1" название парашюта(из конфига) // "M2A2_EP1" название ящика/техники (из конфига)
// _c130 название самолёта, локальная переменная! // _chute Название парашюта, локальная переменная! // _box Название ящика, локальная переменная! // _bam Название нового ящика, локальная переменная!
// "ParachuteMediumWest_EP1" название парашюта, можно вписать любой // "USBasicAmmunitionBox_EP1" название техники/ящика, можно вписать любой!
_nm = TypeOf (_this select 1); if (_this select 0) then { // если true, то выполнять этот блок(Для ящиков)
_c130 = _this select 1; // передача названия самолёта в скрипт _chute = (_this select 2) createVehicle [0, 0, 0]; // Создание парашюта _chute setPos [(getpos _c130 select 0), (getPos _c130 select 1)-10, (getPos _c130 select 2)-10]; // Телепортация парашюта к самолёту _box = (_this select 3) createVehicle [0, 0, 0]; // Создание ящика/техники _box setpos [(getpos _c130 select 0), (getpos _c130 select 1)-10, (getpos _c130 select 2)-10]; // Телепортация ящика к самолёту _box attachto [_chute, [0, 0, 0]]; // прикрепеление ящика к парашюту waitUntil {((getPos _box) select 2) < 1}; // Ожидание приземления ящика switch (true) do { case not (alive _box): {detach _box;_box setpos [(getpos _box select 0), (getpos _box select 1), 0];}; // Если ящик уничтожен, выполнять это case alive _box: {detach _box;_box setpos [(getpos _box select 0), (getpos _box select 1), 0];_bam =(_this select 3) createVehicle [(getpos _box select 0),(getpos _box select 1),(getpos _box select 2)+0];deletevehicle _box;"SmokeShellgreen" createVehicle getPos _bam;_flare = "F_40mm_White" createVehicle [getPos _bam select 0,getPos _bam select 1,+150];}; // Если ящик жив, выполнять это }; _chute setPos [(getpos _box select 0)+2, (getPos _box select 1), (getPos _box select 2)]; // Телепортация парашюта к краю ящика
} else { // если false, то выполнять этот блок(Для техники)
_c130 = _this select 1; // передача названия самолёта в скрипт _chute = (_this select 2) createVehicle [0, 0, 0]; // Создание парашюта _chute setPos [(getpos _c130 select 0), (getPos _c130 select 1)-10, (getPos _c130 select 2)-10]; // Телепортация парашюта к самолёту _box = (_this select 3) createVehicle [0, 0, 0]; // Создание техники _box setpos [(getpos _c130 select 0), (getpos _c130 select 1)-10, (getpos _c130 select 2)-10]; // Телепортация техники к самолёту _box attachto [_chute, [0, 0, 0]]; // Приклепление техники к парашюту waitUntil {((getPos _box) select 2) < 1}; // Ожидание приземления техники switch (true) do { case not (alive _box): {detach _box;}; // Если техника уничтожена, отцепить её от парашюта case alive _box: {detach _box;"SmokeShellgreen" createVehicle getPos _box;_flare = "F_40mm_White" createVehicle [getPos _box select 0,getPos _box select 1,+150];}; // Если техника жива, отцепить её от парашюта. Создать дымовуху. Создать осветилку. }; _chute setPos [(getpos _box select 0)+2, (getPos _box select 1), (getPos _box select 2)]; // Телепортация парашюта к краю техники. };
Что в архиве? * Пример для ArmA2 * Пример для ArmA2 OA * Readme на двух языках
Leh2012, тестировалась ли такая функция в МП ? хочу все таки увидеть видео с игр в МП,т.к. в одиночке не всегда пригодится так,как в мп,н.р. по рации как поддержку вызвать вот такую фичу.
EugenyKrag, нет, в мультиплеере не тестировалось, уверен что для МП скрипт надо прилично переделать, так как там есть загвоздки с командами. Только в написании МП скриптов у меня нет опыта, но может чего и получится. Но я скорее всего не буду этим сейчас заниматься. Американцы работают, если платят хорошо. Русские работают, если платят - хорошо!
2011\2017 Создатели Сайта:gerasimow9.Всем добро пожаловать на Сайт The red fox studio.По всем вопросам оброщаться Администратору сайта The red fox studio! gerasimow9!