Модератор форума: Slon |
Форум » РЕДАКТОР - ArmA 2 » Скрипты » Вопросы по скриптописанию (Тонкости написания скриптов) |
Вопросы по скриптописанию |
› Пятница
› 26.06.2015
› 09:30
› Сообщение #
artivad2, Можно попробывать обработчик "fired" давать только стрелку, и после каждого выстрела определять мишень и проверять выжила ли она.
|
› Понедельник
› 29.06.2015
› 20:48
› Сообщение #
Slon, а как определить мишень?
Spitfire
|
› Понедельник
› 29.06.2015
› 21:17
› Сообщение #
для Игрока, в момент выстрела определять на чём лежит прицел
https://community.bistudio.com/wiki/cursorTarget и дождавшись когда пуля исчезнет https://community.bistudio.com/wiki/objNull узнать у мишени её здоровьё, https://community.bistudio.com/wiki/damage или https://community.bistudio.com/wiki/alive както так. |
› Понедельник
› 29.06.2015
› 22:00
› Сообщение #
Slon, спасибо!
а можно поподробнее насчет пули?
Spitfire
|
› Понедельник
› 29.06.2015
› 22:11
› Сообщение #
открываем описание события "Fired"
в параметрах генерируемых в момент события под номером 6 числиться Объект - пуля. b1.54.73642 : [unit, weapon, muzzle, mode, ammo, magazine, projectile]
в момент попадания во что нибуть, пуля исчезает, т.е. превращается в ObjNull ожидание исчезновения пули можно записать так _Bul = _this select 6; WaitUntil {isNull _Bul}; |
› Понедельник
› 29.06.2015
› 23:00
› Сообщение #
Slon, ничего себе
это получается к ней можно и камеру привязать?
Spitfire
|
› Суббота
› 04.07.2015
› 14:06
› Сообщение #
Slon, помоги разобраться..
Есть скрипт, моделирующий безделье группы воинов. Для каждого из группы запускается свой процесс, в котором прописаны действия, плюс внутри этого процесса есть еще один, отслеживающий наличие врага и прекращающий анимации\беспечность. Все хорошо, но при обнаружении противника цикл поведения сворачивается (сразу вылезает хинт out) И соответственно, после удаления врага и перехода в SAFE к безделью они не возвращаются. Пробовал даже вместо breakOut ставить waituntil {behaviour _unit == "SAFE"} - не помогает Думал, что с брейками этими разобрался наконец.. оказалось - нифига Сообщение отредактировал andrucio - Суббота, 04.07.2015, 14:15
|
› Суббота
› 04.07.2015
› 16:56
› Сообщение #
BreakTo - используется для выхода из именованного блока
BreakOut - для выхода из файла, аналогично EXIT Для цикла типа - вкл/выкл используют такую кострукцию While {true} do { WaitUntil {behaviour _unit != "SAFE"}; ВКЛ WaitUntil {behaviour _unit == "SAFE"}; ВЫКЛ }; ................................................ если необходимо прервать цикл в любой момент, например при смерти бота, такая конструкция _as = _unit Spawn { .......... }; WaitUntil {! Alive _unit}; Terminate _as; |
› Суббота
› 04.07.2015
› 21:19
› Сообщение #
Да, BreakTo тоже пробовал, результат тот же.
В итоге поставил waituntil {behaviour _unit == "SAFE"}; Вроде получилось.. как только переходят в SAFE, продолжают свои пофигизмы. А к терминаторам у меня двоякое отношение. Сталкивался с ситуацией, когда скрипт не выключался.. А изнутри можно прервать? _as = _unit Spawn { If (! Alive _unit) then {Terminate _as}; .......... }; Причем прерывание должно быть из вложенного spawn, где отслеживание, после цикла while {alive _u}, и прерывать должен весь корневой процесс (хм.. тогда внутрь вложенного спавна надо передавать и имя (ИД) родительского?) из файла или из цикла? Может здесь тогда BreakOut сгодится, с меткой в самом низу кода? |
› Воскресенье
› 05.07.2015
› 16:41
› Сообщение #
скрип тля тестирования BreakOut, BreakTo
scopeName "N1"; if true then { scopeName "N2"; if true then { scopeName "N3"; if true then { breakOut "N?"; или breakTo "N?"; и сменное число. };}; hint "1"; sleep 1; }; hint "2"; вариант breakOut "N1" хинта не будет никакого. выход из файла. вариант breakTo "N1" хинт "2" .................................................. вариант breakOut "N2" хинт "2" вариант breakTo "N2" хинт "1", через 1сек хинт "2" .................................................. вариант breakOut "N3" хинт "1", через 1сек хинт "2" |
› Воскресенье
› 05.07.2015
› 19:46
› Сообщение #
Заковыристо блин..
Иными словами, breakTo "удаляет" весь код вверх до метки плюс ту команду (цикл, условие), в которой находится; код ниже этого исполняется. breakOut "удаляет" весь код от своего уровня до уровня метки. Например, если метка в корневом уровне ( не внутри цикла\условия), то удаляется все, то есть, выполнение скрипта заканчивается. Если метка внутри while, то скипается весь цикл и продолжается выполнение команд после цикла. И метка должна стоять раньше, чем на нее ссылаются. Так? |
› Воскресенье
› 05.07.2015
› 20:18
› Сообщение #
попробую короче
breakTo - продожает скрипт следующий за именным блоком scopeName { breakTo } продолжение .................................. breakOut - пракращает работу Именного блока, начинает за ним следующий } scopeName { breakOut } } продолжение |
› Воскресенье
› 05.07.2015
› 20:35
› Сообщение #
Хорошо, а как определить конец именного блока? (И еще бы узнать само понятие его)
Скобка? нет, потому что хинта не будет, скипается весь код, невзирая на продолжение. |
› Воскресенье
› 05.07.2015
› 20:56
› Сообщение #
|
› Воскресенье
› 05.07.2015
› 23:33
› Сообщение #
Так я не вижу никакого признака выхода из блока с scopeName "N1.
Если после hint "2"; будет еще код, он ведь не выполнится? или проскипится до scopeName "M1, если она есть и продолжит с этого места? |
| |||
Чат сайта |