Jump to content

Командование наземной техникой


Recommended Posts

Posted

Попробовал сделать триггеры в редакторе на ограничение количества ЛА. Получилось;).

Сейчас в сети каждый игрок имеет неограниченное количество попыток боевого вылета. Для того, чтобы играть в сети было более интересно, можно ограничить количество этих попыток.

Если кого интересует эта тема, могу рассказать о механизме триггера.

  • Replies 499
  • Created
  • Last Reply

Top Posters In This Topic

  • ED Team
Posted

"Умершие" клиенты деактивируются?

Best Regards, Dmitry.

 

"Чтобы дойти до цели, надо прежде всего идти." © О. Бальзак


 
Posted (edited)

Пробовал деактивировать вертолёты "клиентов", они деактивируются, а вот сама вертолётная группа - нет, насколько я понял, группа впринципе в процессе миссии не может деактивироваться. В результате игроки снова могут зайти за вертолёты данной группы и начать новый вылет.

Пришлось действовать по-другому.

Edited by ААК
Пояснил сообщение
Posted

Триггер на ограничение количества ЛА

 

Вот как выглядит эта система триггеров в случае, если нам надо ограничить "жизнь" группы, состоящей из одного вертолёта, тремя попытками:

 

триггер:правила:действия

Один раз (1 боевой вылет):объект мёртв(Ка-50):установить флаг(1)

Один раз (2 боевой вылет):время после флага (1,60), объект мёртв(Ка-50):установить флаг(2)

Один раз (3 боевой вылет):время после флага (2,60), объект мёртв(Ка-50):установить флаг(3)

 

Эти триггеры "отсчитывают" попытки игрока. Правило "время после флага" нужно для того, чтобы каждая смерть игрока засчитывалась по отдельности. Есть только одно но: если после крушения вертолёта игрок вовремя (в данном случае за 60с) не начнёт новую попытку или не присоединиться к зрителям, то по прошествии некоторого времени после 1 смерти (в данном случае 60с) игроку засчитается 2 смерть.

 

Следующий триггер нужен, чтобы сделать вертолётную группу "мёртвой".

Т.к. триггер деактивация работал не совсем так, как я ожидал, мне в начале пришлось сделать достаточно громоздкую и неудобную систему триггеров. Но, вспомнив, что есть такой вид триггеров как "Повторяющийся", я заменил эту громоздкую систему на другую, состоящую всего лишь из одного триггера и основанную на деактивации групп.

Выглядит этот триггер так:

 

триггер:правила:действия

Повторяющийся(Название триггера):флаг истинен(3):деактивировать группу(Ка-50)

 

В результате, когда игрок будет пытаться зайти за "мёртвую" группу, он будет выбрасываться обратно в меню выбора вертолётов. Естественно, в брифинге необходимо предупредить игрока, что если при попытке зайти за определённый вертолёт его будет выбрасывать обратно в меню выбора вертолётов, то эта группа является

"мёртвой" и игроку необходимо выбрать другой вертолёт.

В результате применения этой системы триггеров можно сделать более интересными игры по сети, будет повод беречь свой ЛА и стараться уничтожить больше ЛА противника.

Надеюсь, миссиоделам этот триггер пригодится.

  • Like 1
Posted

Рекомендую заменить триггеры "Один раз" на "Граничное условие", тогда не нужны будут отсчёты времени.

  • Like 1

WBR, =FV=BlackDragon.

logo3435.gif[sIGPIC][/sIGPIC]

Posted

Рекомендую заменить триггеры "Один раз" на "Граничное условие", тогда не нужны будут отсчёты времени.

Честно говоря, я не понимаю, как с помощью триггера "граничное условие" можно отсчитывать попытки лучше, чем с помощью триггера "один раз". Можете объяснить подробнее?

Posted
Честно говоря, я не понимаю, как с помощью триггера "граничное условие" можно отсчитывать попытки лучше, чем с помощью триггера "один раз". Можете объяснить подробнее?

 

Пожалуйста. Суть триггера "Граничное условие" в том, что он возвращает И (истинное значение) только один раз, когда в первый раз выполняется условие. После этого он возвращает Л (ложное значение). Если условие триггера перестанет, а затем снова начнёт выполняться, то он опять один раз возвратит И.

 

На примере данной задачи:

Ставим триггеры "Граничное условие" с проверками на флаги и условиями "Ка-50 мёртв". После первой смерти срабатывает первый триггер. Пока при этом второй триггер уже не сработает, несмотря на уже установленный флаг, т.к. проверка на смерть уже пройдена. После возрождения игрока условие перестанет быть истинным и после второй смерти сработает второй триггер и т.д.

 

Надеюсь, моё объяснение не слишком путаное и непонятное.

  • Like 1

WBR, =FV=BlackDragon.

logo3435.gif[sIGPIC][/sIGPIC]

Posted

На примере данной задачи:

Ставим триггеры "Граничное условие" с проверками на флаги и условиями "Ка-50 мёртв". После первой смерти срабатывает первый триггер. Пока при этом второй триггер уже не сработает, несмотря на уже установленный флаг, т.к. проверка на смерть уже пройдена. После возрождения игрока условие перестанет быть истинным и после второй смерти сработает второй триггер и т.д.

Насколько я понял, триггеры должны выглядеть так:

триггер:правила:действия

Граничное условие(1 боевой вылет):объект мёртв(Ка-50):установить флаг(1)

Граничное условие(2 боевой вылет):объект мёртв(Ка-50):установить флаг(2)

Граничное условие(3 боевой вылет):объект мёртв(Ка-50):установить флаг(3)

Но, к сожалению, эта схема не работает, все смерти засчитываются сразу после первого крушения.

Posted (edited)

каждое граничное условие независимо, поэтому результат исполнения триггера 1 не повлиял на остальные триггеры, и поэтому все смерти засчитались сразу.

тут нужно действовать по другому.

например:

Граничное условие(смерть):объект мёртв(Ка-50):установить флаг(5)

периодическое условие(первая смерть): флаг(5) истинный и флаг (1) ложен: устанавливаем флаг1, сбрасываем флаг5

периодическое условие(вторая смерть): флаг(5) истинный, флаг1 истинный и флаг (2) ложен: устанавливаем флаг2, сбрасываем флаг5

периодическое условие(третья смерть): флаг(5) истинный, флаг2 истинный и флаг (3) ложен: устанавливаем флаг3, сбрасываем флаг5

 

дальше делаем периодическую деактивацию по наличию установленного флага3

 

ps: на самом деле вижу, что не хватает счетчиков и проверок счетчиков на больше-меньше. может приделаю в А-10

Edited by Dmut
  • Like 1

"There are five dangerous faults which may affect a general: recklessness, which leads to destruction; cowardice, which leads to capture; a hasty temper, which can be provoked by insults; a delicacy of honor which is sensitive to shame; over-solicitude for his men, which exposes him to worry and trouble." Sun Tzu

[sigpic]http://forums.eagle.ru/signaturepics/sigpic2354_5.gif[/sigpic]

Posted

Действительно, хорошая схема, спасибо:thumbup:

на самом деле вижу, что не хватает счетчиков и проверок счетчиков на больше-меньше. может приделаю в А-10

Это хорошо.:smilewink:

У меня ещё такой вопрос:

Сейчас в редакторе есть ограничение по количеству флагов (их не более 101), в А-10 это ограничение будет снято?

Posted

это ограничение чисто интерфейсное, внутренняя логика кол-во флагов не ограничивает.

лимит можно увеличить, если поковыряться в me_predicates.lua, me_trigrules.lua

"There are five dangerous faults which may affect a general: recklessness, which leads to destruction; cowardice, which leads to capture; a hasty temper, which can be provoked by insults; a delicacy of honor which is sensitive to shame; over-solicitude for his men, which exposes him to worry and trouble." Sun Tzu

[sigpic]http://forums.eagle.ru/signaturepics/sigpic2354_5.gif[/sigpic]

Posted
ps: на самом деле вижу, что не хватает счетчиков и проверок счетчиков на больше-меньше.

 

Я кстати недавно предлагал соорудить что-то вроде простенького языка программирования. Чтобы не копаться в луа, а прямо из редактора - циклы, ветвления, счётчики... Ещё строки и примитивные функции работы с ними были бы весьма полезны. Можно будет сообщения генерировать на ходу.

Posted

а зачем изобретать велосипед? луа и так простой что бы над ним ещё одну надстройку делать. луашные выражения можно напрямую прописывать в кастомные триггеры. там можно и циклы и счетчики и всё что угодно делать. просто моддеры ещё не прониклись идеей.

"There are five dangerous faults which may affect a general: recklessness, which leads to destruction; cowardice, which leads to capture; a hasty temper, which can be provoked by insults; a delicacy of honor which is sensitive to shame; over-solicitude for his men, which exposes him to worry and trouble." Sun Tzu

[sigpic]http://forums.eagle.ru/signaturepics/sigpic2354_5.gif[/sigpic]

Posted
просто моддеры ещё не прониклись идеей.

 

Ну почему-же, прониклись... :thumbsup:

Тяжелая поступь,

Суровые лица

Штурмовики идут похмелиться

Posted

Dmut, a что если забабахать встроенный текстовый редактор custom секции?

  • Like 1

WBR, =FV=BlackDragon.

logo3435.gif[sIGPIC][/sIGPIC]

Posted
Dmut, a что если забабахать встроенный текстовый редактор custom секции?

 

Отличное предложение. Можно вообще кнопочкой открывать всю триггерную часть в текстовом редакторе. По меньшей мере это позволит сортировать строки копи-пейстом :)

Posted

Во всех приличных системах принято отделять "интерфейс" от "бизнес-логики". Всякие концепции типа M-V-C и т.п.

 

Вот в акульей миссии есть "интерфейс" - то есть рисованные маршруты, группы, области и пр., а есть "бизнес-логика" - триггеры и их взаимодействие. Их явно стоило бы разделить.

 

Кстати, а напомните, есть ли в Акуле какой-нибудь триггер, который просто срабатывает периодически без проверок, типа раз в секунду?

 

Тогда можно в интерфейсе редактора только ставить и проверять всякие флаги, а всю обработку сложных комбинаций флагов сделать нормальным образом в отдельном коде. Это, конечно, не сильно оптимально в плане загрузки ЦП, но зато в разы удобнее для авторов "сложных" миссий.

JGr124 "Katze"

Posted (edited)
Dmut, a что если забабахать встроенный текстовый редактор custom секции?

Отличное предложение. Можно вообще кнопочкой открывать всю триггерную часть в текстовом редакторе. По меньшей мере это позволит сортировать строки копи-пейстом :)

хм, не знаю. пока не вижу плюсов, по сравнению с геморроем внедрения данной фичи.

нарисуйте скриншот интерфейса, может станет понятнее.

Edited by Dmut

"There are five dangerous faults which may affect a general: recklessness, which leads to destruction; cowardice, which leads to capture; a hasty temper, which can be provoked by insults; a delicacy of honor which is sensitive to shame; over-solicitude for his men, which exposes him to worry and trouble." Sun Tzu

[sigpic]http://forums.eagle.ru/signaturepics/sigpic2354_5.gif[/sigpic]

Posted
Кстати, а напомните, есть ли в Акуле какой-нибудь триггер, который просто срабатывает периодически без проверок, типа раз в секунду?

 

не понял вопроса. в акуле все триггеры, кроме стартовых, проверяются раз в секунду.

"There are five dangerous faults which may affect a general: recklessness, which leads to destruction; cowardice, which leads to capture; a hasty temper, which can be provoked by insults; a delicacy of honor which is sensitive to shame; over-solicitude for his men, which exposes him to worry and trouble." Sun Tzu

[sigpic]http://forums.eagle.ru/signaturepics/sigpic2354_5.gif[/sigpic]

Posted
хм, не знаю. пока не вижу плюсов, по сравнению с геморроем внедрения данной фичи.

нарисуйте скриншот интерфейса, может станет понятнее.

 

Хм, когда я это писал, не знал точно, как выглядит триггерная часть в файле миссии. Только предполагал. Сейчас посмотрел - это слишком сложно читать, чтобы ковыряться вручную. Каждый триггер разобран на части в трех отдельных секциях trig, trinfunc, trigrules, всё нумеровано, перемежается внутренней логикой - ручное редактирование будет трудным, а копи-пейст вообще неуместен...

Posted
Хм, когда я это писал, не знал точно, как выглядит триггерная часть в файле миссии. Только предполагал. Сейчас посмотрел - это слишком сложно читать, чтобы ковыряться вручную. Каждый триггер разобран на части в трех отдельных секциях trig, trinfunc, trigrules, всё нумеровано, перемежается внутренней логикой - ручное редактирование будет трудным, а копи-пейст вообще неуместен...

 

это на первый взгляд сложно. на самом деле просто.

для начала выкидываем таблицы trig.actions и trig.conditions и рассматриваем только trigfunc, она самодостаточна.

там прописаны прямые луашные выражения вида if (условие1 AND условие2 AND ...) then действие1, действие2... end;

каждый триггер - одна строка.

таблицу trigrules тоже можно не рассматривать в начале, она нужна только для редактора, по ней генерируются конечные trigfunc.

 

теперь о пользовательских (кастомных) триггерах - их нужно прописывать в таблицу trig.custom (она есть в миссии, пустая). прописывать в таком виде как они представлены в trigfunc. по сути - в свободном виде луашного выражения.

 

ps: пропустил твой ответ, поэтому отписал только через неделю.

"There are five dangerous faults which may affect a general: recklessness, which leads to destruction; cowardice, which leads to capture; a hasty temper, which can be provoked by insults; a delicacy of honor which is sensitive to shame; over-solicitude for his men, which exposes him to worry and trouble." Sun Tzu

[sigpic]http://forums.eagle.ru/signaturepics/sigpic2354_5.gif[/sigpic]

Posted

Я так понимаю, редактировать вручную созданные в редакторе триггеры нет никакого смысла, кроме может быть их сортировки (какое-нибудь изменение AND на OR там недопустимо, такой триггер должен переместиться в кастомную секцию?). Так что вопрос отпадает. А возможность сортировки таки хочется получить в интерфейсе редактора. Логическая схема работы триггеров складывается в голове по мере их написания и тестирования, поэтому в какой-то момент они получаются вперемешку. Для улучшения восприятия и хочется сортировку.

 

А для редактирования кастомных триггеров надо открыть miz как zip, открыть файл миссии, написать триггер, обновить архив и перезагрузить миссию в редакторе? Или есть более простой способ?

Posted
Я так понимаю, редактировать вручную созданные в редакторе триггеры нет никакого смысла, кроме может быть их сортировки (какое-нибудь изменение AND на OR там недопустимо, такой триггер должен переместиться в кастомную секцию?). Так что вопрос отпадает.

кастомные полностью заменяют "редакторские". я не понимаю зачем переносить кастомные в "редакторские" если они и сами по себе будут работать отлично. AND на OR можно править в любом месте, главное помнить что если поправил в "редакторской" секции, то после очередного "сейва" они затрутся.

а вообще мне кажется что ты что-то не так понимаешь - на самом деле там всё проще, чем кажется, просто нужно чуть-чуть с этим освоиться. спрашивай, задавай вопросы, потом вынесу в wiki.

А возможность сортировки таки хочется получить в интерфейсе редактора. Логическая схема работы триггеров складывается в голове по мере их написания и тестирования, поэтому в какой-то момент они получаются вперемешку. Для улучшения восприятия и хочется сортировку.

сортировку мы тоже хотим, планируем сделать в а-10.

А для редактирования кастомных триггеров надо открыть miz как zip, открыть файл миссии, написать триггер, обновить архив и перезагрузить миссию в редакторе? Или есть более простой способ?

перезагружать в редактор не обязательно, если ты не планируешь продолжать редактировать. а первые шаги автоматом делаются в настроеном FAR или TotalCommander.

"There are five dangerous faults which may affect a general: recklessness, which leads to destruction; cowardice, which leads to capture; a hasty temper, which can be provoked by insults; a delicacy of honor which is sensitive to shame; over-solicitude for his men, which exposes him to worry and trouble." Sun Tzu

[sigpic]http://forums.eagle.ru/signaturepics/sigpic2354_5.gif[/sigpic]

Posted

Переноса кастомных в редакторские я ни в коем случае не имел в виду. Изначально в предложении dragony речь шла о том, чтобы сделать проще процесс работы в кастомной секции, я так понимаю. Редакторскую можно оставить в покое, разобрались, моя тирада была неуместна.

 

А в кастомной части есть сопутствующие операции, которые уменьшают удобство работы - нужно альт-табиться, обновлять файлы. К тому же, написав триггер, его нужно тестировать в миссии, а значит возвращаться в игру, перегружать миссию в редакторе. Если триггер будет работать не так, как задумано - нужно работать в цикле, исправляя-проверяя.

 

Можно отдать игре эти сопутствующие операции (открыть файл миссии в текстовом редакторе, сохранить изменения, обновить миссию в редакторе), оставив юзеру 2 кнопки - открывающую текстовое окно "пользовательские триггеры" и закрывающую-сохраняющую "ок". Можно и без них - просто ввести в интерфейс еще один текстбокс "пользовательские триггеры"; место вроде бы есть, под тремя основными текстбоксами.

  • Like 1
Posted
спрашивай, задавай вопросы

Можно-ли ручками написать триггер так, чтоб он появился в миссии?

Тяжелая поступь,

Суровые лица

Штурмовики идут похмелиться

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...