2


Благодарности/Неодобрения |
Получено: 8/2 Отправлено: 0/0 |
Вот что наваял тут не глядя. Придется его ломать прикручивая работу с листами, а он вышел такой ладненький - жалко. И всего то на 64 строчки, вместе с комментариями.
На данный момент в качестве респа берется маркер на карте, и из за этого приходится самому выставлять оптимальную высоту. Если вместо маркера будет какой то ГО на поверхности, то такой проблемы не будет.
Код://название техники, которую нужно будет создавать nameVehicle = "B_Heli_Light_01_F"; //название маркера, который выступает в роли респа nameMarker = "hspawn"; //задаем высоту над уровнем моря height = 0; //задержка удаления обломков delay1 = 14; //задержка что бы техника успела удалиться и вообще делаем задержку респа, к примеру для техники //которая не должна часто респиться delay2 = 1; //создаем технику ob = nameVehicle createVehicle getMarkerPos nameMarker; //вешаем на нее событие, которое по исполнении вызывает функцию ob addEventHandler ["killed", { systemChat format ["техника 1 уничтожена = %1", 0]; [] spawn setDamageF; }]; ob setDir markerDir nameMarker; ob setPosASL [getMarkerPos nameMarker select 0,getMarkerPos nameMarker select 1,(getMarkerPos nameMarker select 2) + height]; setDamageF = { //задержка удаления обломков sleep delay1; //удаляем событие ob removeEventHandler ["killed", 0]; //удаляем технику deleteVehicle ob; //задержка что бы техника успела удалиться и вообще делаем задержку респа, к примеру для техники //которая не должна часто респиться sleep delay2; //diag_log format ["Нашли предметы = %1", nearestObjects [getMarkerPos nameMarker, [], 10]]; //diag_log format ["Нашли предметы = %1", getMarkerPos nameMarker nearEntities 20]; diag_log format ["Нашли предметы = %1", nearestObjects [getMarkerPos nameMarker, ["AllVehicles"], 3]]; //diag_log format ["Нашли предметы = %1", nearestObjects [getMarkerPos nameMarker, [], 10]]; _boolDelay = true; _objectTrue = []; //создаем цикл который будет проверять, есть ли какой то транспорт или юнит на месте респа While {_boolDelay} do { //и если нет ни чего, то респим технику _objectTrue = nearestObjects [getMarkerPos nameMarker, ["AllVehicles"], 6]; if( count _objectTrue == 0 ) then { _boolDelay = false; }; sleep 1; }; //создаем технику ob = nameVehicle createVehicle getMarkerPos nameMarker; ob setDir markerDir nameMarker; ob setPosASL [getMarkerPos nameMarker select 0,getMarkerPos nameMarker select 1,(getMarkerPos nameMarker select 2) + height]; systemChat format ["удалили технику = %1", 0]; //вешаем на нее событие которое вызывает эту функцию по уничтожении техники ob addEventHandler ["killed", { systemChat format ["снова техника 1 уничтожена = %1", 0]; [] spawn setDamageF; }]; };