Jump to content

Recommended Posts

Posted

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

Posted
В моём варианте колонну не надо собирать из отдельных групп с одним юнитом в составе, оставляем обычную большую группу-колонну. Есть же триггеры "объект мёртв" и "взорвать юнит", вот с помощью них и надо контролировать юниты в первой и второй колонне.

 

Получилось сделать имитацию объезда разрушенного моста колонной по другому маршруту. Но есть нюанс, т.к. проверка происходит прогоном через мост отдельной машины (из одной триггерной зоны в другую), до въезда колонны на мост, то надо в условии въезда триггерной зоны ставить OR а не AND (так как в колонне может остаться, например одна единица из 5). А это редактор не позволяет, поэтому приходится править сам файл. И еще одно но: при определенных условиях колонна все же может встать на разрушенном мосту, т.е. триггер не сработает...

 

И еще вопрос. В файле миссии есть блок условий и триггерных функций. У меня такое ощущение, что они дублируются. Надо править на OR оба блока или только функцию (пока я правлю оба)?

Posted

И еще вопрос. В файле миссии есть блок условий и триггерных функций. У меня такое ощущение, что они дублируются. Надо править на OR оба блока или только функцию (пока я правлю оба)?

покажи пример того, что ты правишь и что считаешь лишним.

"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 (edited)

Файла миссии под рукой нет, но постараюсь написать по памяти:

 

Смысл сводится вот к этому:

У нас есть колонна-1, она едет до определенной точки в начале моста (например, триггерной зоны "Bridge1"). Если хотя бы одна из машин (любая, т.к. колонну могли уже обстрелять) колонны дошла, то активируем юнит "Vaz", который пытается проехать по мосту и т.д.

 

Когда делаю условие в редакторе, то получается примерно вот так:

 

conditions =

{

[1] = "return(c_unit_in_zone(\"btr80\", \"Bridge1\") and c_unit_in_zone(\"bmp3\", \"Bridge1\") and c_unit_in_zone(\"Ural\", \"Bridge1\") )",

}

 

 

trigfunc =

{

[1] = "if c_unit_in_zone(\"btr80\", \"Bridge1\") and c_unit_in_zone(\"bmp3\", \"Bridge1\") and c_unit_in_zone(\"Ural\", \"Bridge1\") then a_activate_group(\"Vaz\"); mission.trigfunc[1]='';end;",

}, -- end of trigfunc

 

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

Поэтому в файле сделал поправку и получаю что-то типа этого:

 

conditions =

{

[1] = "return(c_unit_in_zone(\"btr80\", \"Bridge1\") or c_unit_in_zone(\"bmp3\", \"Bridge1\") or c_unit_in_zone(\"Ural\", \"Bridge1\") )",

}

 

 

trigfunc =

{

[1] = "if c_unit_in_zone(\"btr80\", \"Bridge1\") or c_unit_in_zone(\"bmp3\", \"Bridge1\") or c_unit_in_zone(\"Ural\", \"Bridge1\") then a_activate_group(\"Vaz\"); mission.trigfunc[1]='';end;",

}, -- end of trigfunc

 

Я правильно делаю, что правлю в двух местах или нет???:unsure:

Edited by vps
Posted

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

"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 (edited)
будет под рукой миссия - запости сюда полный кусок с триггерами, я тебе всё расскажу. плюс первоначальный вариант, как он сохранился из редактора, до вставки OR.

 

Миссией это можно назвать только с натяжкой! Просто отрабатываю обход колонной, которую сверху расстреливаю, подбитых мостов.:)

 

Чуть не забыл; почему, если я взрываю юнит (командой - "взорвать юнит")в неактивной колонне, при её активации он живой?

Edited by vps
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
при активации устанавливается жизнь юнита.

 

называть это миссией или нет - не важно. мне на ней не летать, а показывать что и как делают триггеры =)

 

Вот выкладываю...

1. Без изменений: "test - до.miz"

2. С изменениями в файле ручками: "test - после.miz"

test - до.miz

test - после.miz

Posted (edited)

рассмотрим миссию ДО, секцию trig

    trig = 
   {
       actions = 
       {
           [1] = "a_activate_group(\"vaz1\");a_set_flag(\"1\"); mission.trig.func[1]='';",
           [2] = "a_clear_flag(\"1\");a_deactivate_group(\"vaz1\"); mission.trig.func[2]='';",
           [3] = "a_deactivate_group(\"vaz1\");a_deactivate_group(\"Kolonna1-1\");a_activate_group(\"Kolonna1-2\");a_set_flag(\"5\"); mission.trig.func[3]='';",
...
       }, -- end of actions
       custom = 
       {
       }, -- end of custom
       func = 
       {
           [1] = "if mission.trig.conditions[1]() then mission.trig.actions[1]() end",
           [2] = "if mission.trig.conditions[2]() then mission.trig.actions[2]() end",
           [3] = "if mission.trig.conditions[3]() then mission.trig.actions[3]() end",
...
       }, -- end of func
       flag = 
       {
...
       }, -- end of flag
       conditions = 
       {
           [1] = "return(c_unit_in_zone(\"1\", \"start_bridge1\") and c_unit_in_zone(\"6\", \"start_bridge1\") and c_unit_in_zone(\"7\", \"start_bridge1\") )",
           [2] = "return(c_unit_in_zone(\"2\", \"end_bridge1\") )",
           [3] = "return(c_time_since_flag(\"1\", \"3\") and c_flag_is_true(\"1\") )",
...
       }, -- end of conditions
       customStartup = 
       {
...
       }, -- end of customStartup
       funcStartup = 
       {
       }, -- end of funcStartup
   }, -- end of trig

 

что мы видим? типичный trig.func[x] выглядит как "if mission.trig.conditions[X]() then mission.trig.actions[X]() end",

 

а теперь о том, зачем это было сделано.

 

раньше, в акуле до 1.2 триггеры содержали в себе полную строку условий и действий. типа if unit_in_zone() then explode_unit() end;

с LOP и Акулы 1.2 триггеры разделились на наборы условий, наборы действий и объединяющие их trig.func

 

что это даёт сторонним моддерам? а вот что:

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

 

например

       custom = 
       {
            [1] = "if ( mission.trig.conditions[1]() or mission.trig.conditions[2]() ) and not mission.trig.conditions[3]() then mission.trig.actions[2]();mission.trig.actions[3]();end;"
       }, -- end of custom

 

желающие могут это оформить для FAQ

 

теперь насчет миссии ПОСЛЕ

так, как условия соединения в OR у тебя простые, то подход выбран правильный, можно просто прописать руками c_unit_in_zone() OR c_unit_in_zone() OR...

но лучше это сделать в секции custom, что бы при сохранении миссии выгружалка триггеров опять не выгрузила триггеры с условиями AND.

 

например, в твоём конкретном случае можно сделать так:

       custom = 
       {
            [1] = "if  c_unit_in_zone(\"1\", \"start_bridge1\") or c_unit_in_zone(\"6\", \"start_bridge1\") or c_unit_in_zone(\"7\", \"start_bridge1\") then mission.trig.actions[1]();end;"
       }, -- end of 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 (edited)

Dmut, на этих выходных попробовал реализовать выше описанное вами и сделаю некоторые поправки.

Как выяснилось, по крайней мере на моем примере, что если прописать

[1] = "if  c_unit_in_zone(\"1\", \"start_bridge1\") or c_unit_in_zone(\"6\", \"start_bridge1\") or c_unit_in_zone(\"7\", \"start_bridge1\") then mission.trig.actions[1]();end;"

в блоке custom, то ничего не получается, а вот если в файле миссии прописать секцию customtrigfunc сразу перед секцией trigfunc, то все начанает работать как надо, например:

customtrigfunc = 
{
   [1] = "if (c_unit_in_zone(\"1\", \"start_bridge1\") or c_unit_in_zone(\"6\", \"start_bridge1\") or c_unit_in_zone(\"7\", \"start_bridge1\")) then a_activate_group(\"vaz1\");a_set_flag(\"1\");a_out_text_delay(\"активируем ваз\", \"1\");mission.customtrigfunc[1]='';end;",
}, -- end of customtrigfunc

:)

Edited by vps
  • Like 1
Posted
Dmut, на этих выходных попробовал реализовать выше описанное вами и сделаю некоторые поправки.

Как выяснилось, по крайней мере на моем примере, что если прописать

[1] = "if  c_unit_in_zone(\"1\", \"start_bridge1\") or c_unit_in_zone(\"6\", \"start_bridge1\") or c_unit_in_zone(\"7\", \"start_bridge1\") then mission.trig.actions[1]();end;"

в блоке custom, то ничего не получается, а вот если в файле миссии прописать секцию customtrigfunc сразу перед секцией trigfunc, то все начанает работать как надо, например:

customtrigfunc = 
{
   [1] = "if (c_unit_in_zone(\"1\", \"start_bridge1\") or c_unit_in_zone(\"6\", \"start_bridge1\") or c_unit_in_zone(\"7\", \"start_bridge1\")) then a_activate_group(\"vaz1\");a_set_flag(\"1\");a_out_text_delay(\"активируем ваз\", \"1\");mission.customtrigfunc[1]='';end;",
}, -- end of customtrigfunc

:)

 

ты прав. секция mission.trig.custom будет работать в а-10

для ГС2 и ЧА нужно использовать mission.customtrigfunc

порядок секций в файле (до\после) не важен.

"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

Требуется сделать следующее.

Если один из игроков при заходе на посадку разбил крафт на ВПП

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

 

Голосовые команды я сделаю а вот как сделать триггер который будет активировать эту команду никак не пойму. И как сделать триггерную зону, которая будет закрывать только ВПП не вылезая на рулежки, стоянки, и резервную полосу (если делать большим кругом)

>>>Да, я не считаю, что турция права в ситуации со сбитым СУ-24.

Posted
Требуется сделать следующее.

Если один из игроков при заходе на посадку разбил крафт на ВПП

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

 

Голосовые команды я сделаю а вот как сделать триггер который будет активировать эту команду никак не пойму. И как сделать триггерную зону, которая будет закрывать только ВПП не вылезая на рулежки, стоянки, и резервную полосу (если делать большим кругом)

Можно сделать несколько маленьких,но тут надо угадать чтоб они были точно на ВПП.Ну и сделать несколько триггеров с условием: Обект в зоне,высота юнита ниже чем (высота ВПП),объект повреждён или уничтожен,ну и сообщение

Posted (edited)
Можно сделать несколько маленьких,но тут надо угадать чтоб они были точно на ВПП.Ну и сделать несколько триггеров с условием: Обект в зоне,высота юнита ниже чем (высота ВПП),объект повреждён или уничтожен,ну и сообщение

 

да....... это если на Краснодар-Пашковский закрывать ВПП маленькими кружечками...... ширина ВПП 59м длина 2253м их штук 50 наверное надо (даже больше, что бы белых зон не оставалось). И как тогда будет выглядеть правило? А если еще учесть, что крафтов на сервере около 30.......

А вот если бы форму тригерной зоны можно было бы задавать (как в большинстве комп.игр реализовано) то ух какие штуки можно делать

Edited by Nonexistent

>>>Да, я не считаю, что турция права в ситуации со сбитым СУ-24.

Posted
да....... это если на Краснодар-Пашковский закрывать ВПП маленькими кружечками...... ширина ВПП 59м длина 2253м их штук 50 наверное надо (даже больше, что бы белых зон не оставалось). И как тогда будет выглядеть правило? А если еще учесть, что крафтов на сервере около 30.......

А вот если бы форму тригерной зоны можно было бы задавать (как в большинстве комп.игр реализовано) то ух какие штуки можно делать

Тогда сделай один большой круг, и прибавь в условиях скорость "юнита ниже чем"

Posted
Тогда сделай один большой круг, и прибавь в условиях скорость "юнита ниже чем"

 

А как же остановки на стоянке, остановки на рулежке (на предварительном например)? да и если кто то завалится рядом с полосой а не на ней......

нет похоже это не решаемо

>>>Да, я не считаю, что турция права в ситуации со сбитым СУ-24.

Posted

Возможно ли заставить бота осуществлять повороты с заданным углом?

>>>Да, я не считаю, что турция права в ситуации со сбитым СУ-24.

Posted

возможно ли создать условие при проходе зоны 1 и затем зоны 2 выдавалось одно действие (голосовая команда) а при проходе в обратной последовательности (зона 2 затем зона 1) выполнялось бы другое действие?

>>>Да, я не считаю, что турция права в ситуации со сбитым СУ-24.

Posted (edited)
Попробуй несколько флагов выставить. По идее, сработает.

 

Это к первому вопросу или ко второму?

Если ко второму, я тоже думаю сработает, но вот какие флаги ставить?

Edited by Nonexistent

>>>Да, я не считаю, что турция права в ситуации со сбитым СУ-24.

Posted

насчет второго вопроса Hardcore прав. это всё решается на уровне элементарной логики.

 

прошел первую зону и флаг 2 пустой - началось прямое прохождение выстави флаг 1.

прошел вторую зону и флаг 1 установлен - завершилось прямое прохождение, снимай флаг 1 и флаг 2

прошел вторую зону и флаг 1 пустой - началось обратное прохождение, установи флаг 2

прошел первую зону и флаг 2 установлен - значит завершилось обратное прохождение.

"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

скажите, как сделать что бы, если бы доехал хоть любой выживший юнит из группы условие срабатывало, в редакторе мне приходиться буквально перечислять каждый юнит... что если он окажется в зоне тригера.. тогда... и так со с всеми в группе.. а группа то большая около 10-15. а есть условие универсальное?

Posted

в текущих версиях - только вручную, перечисляя юниты в триггерах, или внедряя условие OR.

в А-10 будет добавлена пачка триггеров, типа "все в зоне", "хотя бы один в зоне" и т.д.

"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 (edited)

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

 

 

 

вообщем нашел пост 684 на 69 станице щас знакомлюсь, понятно в прицепе..

 

Редактор хороший.. возможностей много, просто на будущее хотелось бы в нем, был режим к примеру хотя бы перемещения триггеров и правил в верх и низ по списку.. а то создал много а что то забыл потом дописываешь, а правило внизу создается, потом можно запутаться.. или хотя бы можно было бы назначать для каждого правила свой цвет типа сортировки.. чтобы можно было бы видеть к примеру что это цвет это задачи обороны а этот цвет, эти правила и триггеры наступления или каких то диалогов.. да вот еще, извините за наглость :) не плохо бы сделать чтобы видно было какие я флаги использовал вообще и в каких правилах.. прямо в строке через запятую, к примеру флаги 62,63,11,40 ....защита аэродрома... и т д в списке, просто в это бы облегчило создание миссий

Edited by AndS
  • Recently Browsing   0 members

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