Модератор форума: Slon |
Форум РЕДАКТОР - ArmA 2 Operation Arrowhead Вопрос - ответ Пожалуйста помогите, |
Пожалуйста помогите, |
› Воскресенье
› 14.04.2013
› 14:47
› Сообщение #
Не могу ни как произвести выделение игроков напавших на группу ботов, млять ни на одном сайте нет описания возвращаемых массивов.
Не мог бы кто нибудь на примере показать использование findNearestEnemy? или ссылку с примером В nearTargets интересует как произвести проверку на игрока? если можно пример как от бота получить имя лидера , группу в которой он состоит ? прошу не советовать пробовать через hint и copytoclipboard так как запись типа 8 1-1-A:1 (Crim) мне мало чего даёт без разъяснений а их нет ну кроме того что Crim мой ник Как создать глобальный массив , что бы его можно было редактировать отовсюду ? Сообщение отредактировал smcrim - Воскресенье, 14.04.2013, 15:55
|
› Воскресенье
› 14.04.2013
› 16:49
› Сообщение #
для проверок есть операторы If, switch, [b]while, [b]waitUntil[/b]
[/b] если бот - _unit то, его лидер _Sol = leader _unit; его группа _grp = group _unit; findNearestEnemy - даёт ближайшего противника о котором бот знает(видит, слышит и тд.) лучше использовать координаты бота _enemy = _unit findNearestEnemy (getPos _unit); nearTargets - неудобная команда, даёт многомерный массив. найти игрока в нём можно так _tr = false; _unit = Bot; { if (Player in _x) exitWith {_tr = true}; } foreach (_unit nearTargets 200); if _tr then { hint "Игрок в зоне"}; Цитата Как создать глобальный массив , что бы его можно было редактировать отовсюду ? MassVal = [1,2,3,4,5]; publicVariable "MassVal"; или переменную на основе объекта Logik setVariable ["myVariable", [1,2,3], true]; |
› Воскресенье
› 14.04.2013
› 17:18
› Сообщение #
Да но findNearestEnemy имеет глюк, если я до обнаружения первым выстрелом убиваю командира отряда то почемуто она перестаёт работать?
И он возвращает одного ближайшего врага или массив врагов ? Много где замечал _x без каких либо объявлений, что он значит ? knowsAbout возвращает значение от 0 до 4 что они означают, ну опытным путём 4 - это когда бот видит а остальные 4 значения ? Сообщение отредактировал smcrim - Воскресенье, 14.04.2013, 17:31
|
› Воскресенье
› 14.04.2013
› 17:32
› Сообщение #
_unit findNearestEnemy - если ты убъёш _unit, то перестанет работать
_х используется в цикле { } foreach []; для поочерёдной подстановки элементов массива значение 0 - не видит и не слышит значение 4 - явно видит значения дробные, можеш сам походить вокруг бота и посмотреть что выдаёт |
› Воскресенье
› 14.04.2013
› 19:39
› Сообщение #
у меня в команде 12 ботов у каждого прописан хинт на проверку этого значения при выстреле, ну типа стреляет значит видит, так вот когда в отряде 1 чел всё отлично, когда 12 ботов, пока жив лидер всё ок, убил лидера, все полят по мне но никто не выполняет хинт.
Код _unit = vehicle( _this select 0); _group = group(_unit); _enemy = _unit findNearestEnemy (getPos _unit); hint format["Enemy count %1",_enemy]; вот код прикреплённый на эвент fired для всех 12 ботов в отряде, если первым выстрелом убиваю командира до того как по мне начали полить, всё не работает код, если первый выстрел делают боты то вроде как работает. И что всё таки означает 8 1-1-A:1 (Crim) ? это объект player? Добавлено (14.04.2013, 19:39) Сообщение отредактировал smcrim - Воскресенье, 14.04.2013, 17:56
|
› Воскресенье
› 14.04.2013
› 21:14
› Сообщение #
в ините ботов ?
as = this addEventHandler ["Fired", {_this execVM "iv.sqf"}] 8 1-1-A:1 (Crim) - Ид (идентификатор) и имя |
› Воскресенье
› 14.04.2013
› 21:40
› Сообщение #
В инете ботов я делаю unit = this execVM "init_soldier.sqf";
Если честно то уже стыдно задавать вопросы, но я ваще не понимаю как арма работает, понятно почему зомбаки в дейз то в метре не агрятся а то бегут за пол километра к лежащему в траве. Делаю так в редакторе в ините бота: this setGroupId["Patrol"]; this addEventHandler["fired",{hint format ["Group name - %1", group this]}]; Работает... В инете бота в редакторе: this setGroupId["Patrol"]; unit = this execVM "init_soldier.sqf" в init_soldier.sqf: _unit = _this select 0; _unit =vehicle (_this select 0); Краным варианты которые тоже попробовал _group = group _unit; _this addEventHandler["fired",{hint format ["Group name - %1", group _this]}]; МЛЯЯЯТЬ не работает !!!!!!! PS блин с нуля дня за четыре написал блютус интерфейс управления роботом с андроид смартфона , здесь уже 3 неделю не могу сдвинутся ни на грамм. старость Сообщение отредактировал smcrim - Воскресенье, 14.04.2013, 21:43
|
› Воскресенье
› 14.04.2013
› 23:01
› Сообщение #
во втором варианте несоответствие типа передаваемых и принимаемых параметров.
unit = this execVM "init_soldier.sqf" this - это одиночное значение, ИД объекта. в файле ты его принимаеш как массив _unit = _this select 0; правильно будет _unit = _this; или же передавать и принимать массив unit = [this] execVM "init_soldier.sqf" ............ _unit = _this select 0; |
› Понедельник
› 15.04.2013
› 19:39
› Сообщение #
Если я засуну [this]то будет отправлен масив юнита, а если this то как ссылка на объект, я правильно понял ? То есть арма присваивает отправляемое значение исходя из варианта записи ?
Передавал в инте : unit = this execVM Принимал в файле: _unit = _this; _group = group _this; hint format["Group name - %1",_group]; получил хинт Group name - any. Сообщение отредактировал smcrim - Понедельник, 15.04.2013, 20:17
|
› Понедельник
› 15.04.2013
› 20:34
› Сообщение #
чтото невероятное у тебя тварится.
Прикрепления:
1tp.utes.rar
(2.4 Kb)
|
› Понедельник
› 15.04.2013
› 20:44
› Сообщение #
Может это как то связанно с тем что это мп миссия ?
|
› Понедельник
› 15.04.2013
› 20:52
› Сообщение #
в МП миссиях совсем другие заморочки.
|
› Понедельник
› 15.04.2013
› 20:59
› Сообщение #
Ну то есть не из за этого, я посмотрел прикрепления , у меня точь в точь с названием группы, только у вас группу выдаёт опять типа 8 1-1-A:1 , у меня тоже код ANY. Блин я в шоке.
Врубился, ошибка из за того что хинт помешён в eventHandler. Сообщение отредактировал smcrim - Понедельник, 15.04.2013, 21:07
|
› Понедельник
› 15.04.2013
› 21:02
› Сообщение #
прикрепи свою миссию, я посмотрю
|
› Понедельник
› 15.04.2013
› 21:19
› Сообщение #
Собственно её вчера не стало, я осерчал и всё потёр, решил с нуля начать, потому как при запуске не сработали даже deleteVehicle this;, точнее 3 из 5 солдат пропали а 2 нет при везде идентичном коде, остались отдельные куски которые выводили хоть какую нибудь инфу. В данном случае у вас хинт просто запускается в файле, мой же вложен:
_unit addEventHandler["fired",{hint format["Group name - %1",_group ];}]; изменил просто вывод хинта в отдельный файл и всё заработало, то есть группа не хотит отображаться из EventHandler Код _unit = _this; _group = group _this; _unit addEventHandler["fired",{hint format ["Group name - %1",_group]}]; это весь файл. |
| |||
Чат сайта |