- Как заставить бота выстрелить осветительной ракетой?
- Как определить была ли запущена в зоне триггера осветительная ракета или дымовая шашка?
Лучший Ответ shaman33 , 04 October 2014 - 22:27
SteelRat, да, как то так и сделал. Вот выкладываю скрипт, может кому поможет. fireGL.sqf 845байт 30 Количество загрузок:
Там нет проверки на вхождение в какой либо тригер, но мне и так сойдет . Единственная проблема - бот при выстреле из подствольника смотрит вверх на создаваемую на момент выстрела мишень (поднимающаяся мишень зомби). Нацелить бота на другие (какие либо невидимые) объекты у меня не получилось (hideobject тоже не работает). Если поднять мишень повыше, то её в принципе можно и не заметить.
Вызывать скрипт: scrGL = [grenadeur] execVM "fireGL.sqf" (у гренадера должен быть заряжен соответствующий снаряд)
Перейти к сообщениюОтправлено 02 October 2014 - 22:13
- Как заставить бота выстрелить осветительной ракетой?
- Как определить была ли запущена в зоне триггера осветительная ракета или дымовая шашка?
Отправлено 03 October 2014 - 19:10
1 А тебе надо это видеть ? осветительная ракету можно триггером запустить.
2 визуально.
Отправлено 03 October 2014 - 23:39
1 А тебе надо это видеть ? осветительная ракету можно триггером запустить.
2 визуально.
1 Раз спросил как заставить бота выстрелить ракетой - значит надо именно так, а не иначе
2 Умник, мне ловля события нужна, что бы вызвать какое либо действие по нему
Отправлено 04 October 2014 - 11:13
Как вариант - команда unit fire "GL_3GL_F". Бот выстреливает из подствольника, но приэтом он стреляет только тем снарядом, который в подствольнике находится (это ещё можно как то отслеживать), но при этом он стреляет туда, куда направлено его оружее (зачастую прямо перед собой в землю). Можно ли как то заставить бота смотреть вверх?
Отправлено 04 October 2014 - 20:53
Можно ли как то заставить бота смотреть вверх?
Не уверен, не пробовал, но попробуйте этой командой задать именно 3-х мерную позицию, куда смотреть, то есть [x,y,z]
Как определить была ли запущена в зоне триггера осветительная ракета или дымовая шашка?
Это событие, могу и ошибаться, вероятно придётся отследить в два этапа
Сначала зафиксировать сам момент выстрела, прикрутив к юниту обработчик события
или этот, надо пробовать
А уже из этого обработчика события вызвать проверку, находится ли юнит в зоне триггера.
Сообщение отредактировал SteelRat: 04 October 2014 - 20:57
Отправлено 04 October 2014 - 21:23
Кстати вот наткнулся на для вас полезное
/* File: inTrigger.sqf Author: Karel Moricky Description: Detects whether is position within trigger area. Parameter(s): _this select 0: OBJECT or ARRAY - Trigger or trigger area _this select 1: ARRAY or OBJECT - Position _this select 2 (Optional): BOOL - true for scalar result (distance from border) Returns: Boolean (true when position is in area, false if not). */
_inTrigger = [Trigger, Unit] call BIS_fnc_inTrigger;
Отправлено 04 October 2014 - 22:27 Лучший Ответ
SteelRat, да, как то так и сделал. Вот выкладываю скрипт, может кому поможет. fireGL.sqf 845байт 30 Количество загрузок:
Там нет проверки на вхождение в какой либо тригер, но мне и так сойдет . Единственная проблема - бот при выстреле из подствольника смотрит вверх на создаваемую на момент выстрела мишень (поднимающаяся мишень зомби). Нацелить бота на другие (какие либо невидимые) объекты у меня не получилось (hideobject тоже не работает). Если поднять мишень повыше, то её в принципе можно и не заметить.
Вызывать скрипт: scrGL = [grenadeur] execVM "fireGL.sqf" (у гренадера должен быть заряжен соответствующий снаряд)
Отправлено 04 October 2014 - 23:17
Исправьте эти 2-е строчки на вот так, так будет, скажем правильнее, просто на будущее, лучше делать так, а удалять все события конкретного типа только когда юнит отошёл в небеса)
_EHfiredIdx = _unit addEventHandler ["fired", {hint "Выстрел из подствольника"}]; _unit removeEventHandler ["fired", _EHfiredIdx];
Отправлено 04 October 2014 - 23:29
Немножечко не правильно
_target = "Zombie_PopUp_Moving_90deg_F" createVehicle (getPos _unit); //правильно _target = createVehicle ["Zombie_PopUp_Moving_90deg_F", (getPos _unit), [], 0, "none"]; _unitPos = getPosATL _unit; _target setPosATL [_unitPos select 0, (_unitPos select 1) - 10, (_unitPos select 2) + 35]; //я думаю что так будет даже лучше, попробуйте _target = group _unit createUnit ["Logic", (getPos _unit), [], 0, "none"];
Сообщение отредактировал SteelRat: 04 October 2014 - 23:29