Итак, плодом моих с 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; // Удаление старого ящика
Молодцы! Скрипт является универсальным? Можно машину, танк и т.д скинуть?
Одно плохо, ящики необходимо вписывать в скрипт. В скрипте. В файловом архиве платформы есть скрипт сброса техники и вообще всего. Там в параметрах необходимо вписывать самолёт и груз, вот он универсальный.
Хотите больше новостей? Подписывайтесь на мою рассылку
PIONEER, скрипт универсален, но заточен под ящики. Дело в том, что ящик проваливается под землю и становится не доступным, даже над землёй. И что бы исправить эту штуку приходится создавать 2 ящик! PS: Всё регулируется через сам скрипт, только в скрипт нужно сообщить имя самолёта, который будет десантировать! PPS: Когда я десантировал хаммер, взорвался самолёт, так как хаммер появился в нём, но если сделать самолёт бессмертным, всё сработает. Вот что я хочу этим сказать: Это скрипт очень легко приспособить под разные нужды!
Добавлено (27.06.2011, 16:40) --------------------------------------------- Уже сделал так, что техника появляется чуть ниже самолёта, проблема с техникой решена)
Сегодня, 23.7.11 уезжаю на море!
Сообщение отредактировал Leh2012 - Понедельник, 27.06.2011, 16:11
Итак, рад сообщить о выходе новой версии этого скрипта!
О версии 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 на двух языках