Создание минёра и подрыв «установленного» им заряда

И так, немного костылей от меня.
Видел я недавно, как товарищ Zloi показывал создание минёра, который устанавливал заряд и тот «взрывался» через некоторое заданное время.
И решил тут в виде скрипта это сделать полностью.
Простите меня более опытные товарищи, сделал как знаю.

Вариант 1: Бот с большим зарядом + таймер бомбы

0 spawn {
// Создаём группу - приказы можно давать только группам
_newGroup = createGroup east;
 // Созадём юнита
_miner_bot = _newGroup createUnit ['O_soldier_exp_F', [5852.74,5324.51,0], [], 0, 'CAN_COLLIDE'];
// Повораичваем юнита куда нам надо. Необязательно.
_miner_bot setFormDir 45;
// _miner_bot setPosATL [26757.5,24705.3,4.17517]; // Если надо на вышке что бы появился, например
// Приказывам боту двигаться на указанную позицию
_miner_bot doMove [5894.72,5377.78,0];
// Ждём пока бот приблизится к позиции, и останется меньше 1 метра
    waitUntil {   
    sleep 1;    
    (_miner_bot distance [5894.72,5377.78,0]) < 1   
    };
// Приказываем боту присесть на колено.
_miner_bot setUnitPos "MIDDLE";
// Пауза 3 секунды
sleep 3;
// Анимация "положить"
_miner_bot playActionNow "PutDown";
sleep 2;
// Позиция для установки бомбы
_position = _miner_bot getRelPos [0.6, 0];
// Создание самой бомбы
_bomb = "SatchelCharge_Remote_Ammo_Scripted" createVehicle _position;
sleep 0.5;
// Приказываем боту встать
_miner_bot setUnitPos "UP";
sleep 1;
// Приказывем боту двигаться на другую точку. Безопасное расстояние
_miner_bot doMove [5852.74,5324.51,0];
// Таймер для бомбы на 20 секунд и её подрыв
_bomb spawn {
sleep 20;
_this setDamage 1;};
};

Вариант 2: Бот с большим зарядом. Взрыв по прибытию бота на безопасную позицию.

0 spawn {
// Создаём группу - приказы можно давать только группам
_newGroup = createGroup east;
 // Созадём юнита
_miner_bot = _newGroup createUnit ['O_soldier_exp_F', [5852.74,5324.51,0], [], 0, 'CAN_COLLIDE'];
// Повораичваем юнита куда нам надо. Необязательно.
_miner_bot setFormDir 45;
// _miner_bot setPosATL [26757.5,24705.3,4.17517]; // Если надо на вышке что бы появился, например
// Приказывам боту двигаться на указанную позицию
_miner_bot doMove [5894.72,5377.78,0];
// Ждём пока бот приблизится к позиции, и останется меньше 1 метра
    waitUntil {   
    sleep 1;    
    (_miner_bot distance [5894.72,5377.78,0]) < 1   
    };
// Приказываем боту присесть на колено.
_miner_bot setUnitPos "MIDDLE";
// Пауза 1 секунда
sleep 1;
// Анимация, и пауза 3 секунды.
_miner_bot playActionNow "medicStart";
sleep 2;
// Анимация для остановки предыдущей (та анимация бесконечна)
_miner_bot playActionNow "medicStop";
// Пауза 2 секунды
sleep 2;
// Позиция для установки бомбы
_position = _miner_bot getRelPos [0.6, 0];
// Создание самой бомбы
_bomb = "SatchelCharge_Remote_Ammo_Scripted" createVehicle _position;
sleep 0.5;
// Приказываем боту встать
_miner_bot setUnitPos "UP";
sleep 1;
// Приказывем боту двигаться на другую точку. Безопасное расстояние
_miner_bot doMove [5852.74,5324.51,0];
// Ждём пока бот приблизится к позиции, и останется меньше 2 метров
    waitUntil {   
    sleep 1;    
    (_miner_bot distance [5852.74,5324.51,0]) < 2   
    };
// Таймер для бомбы на 5 секунд и её подрыв
_bomb spawn {
sleep 5;
_this setDamage 1;};
};

Вариант 3: Подрыв заряда (тут клеймор, направленный) по приближению объекта (расстояние до срабатывания надо настраивать под разные виды транспорта и их скорость)

0 spawn {
// Создаём машину
private _vehicle = "O_G_Offroad_01_F" createVehicle [6011.23,5544.87,0]; 
createVehicleCrew _vehicle; // Создаём экипаж в ней
_vehicle setDir 215;
private _group = group driver _vehicle; 
_group addVehicle _vehicle;
_vehicle domove [5829.98,5302.05,0];

private _position = [5891.6,5385.59,0];
private _bomb = "ClaymoreDirectionalMine_Remote_Ammo_Scripted" createVehicle _position;
[_bomb, 105] remoteExec ["setDir", 0];
waitUntil {   
sleep 0.2;    
(_vehicle distance _bomb) < 10   
};
_bomb spawn {
sleep 0.2;
_this setDamage 1;};
};

Видео на эту тему:

 

Обсудить этот метод можно в нашем Discord канале