Jump to content

lua-скрипты


Recommended Posts

  • Replies 308
  • Created
  • Last Reply

Top Posters In This Topic

Кстати, хотелось узнать, можно-ли в сингле пользовать ЛУА для "нестандартных" решений? Например, до ППМ1 юнит противоположной коалиции считается "нейтральным" и не может атаковаться ботами(любой коалиции). После прохождения ППМ1 юнит считается врагом и мочится всеми видами ботов и ПВО(своими). Или обратная ситуация(миссия угон из ЛО ГС): до определенного ППМ, времени миссии, юнит считается своим, после времени Ч(прохода ППМ) свой юнит считается чужим, а также чужой врагам становится своим, и враги его яростно защищают?

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

Суровые лица

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

Link to comment
Share on other sites

Было бы время еще на эксперимент. Можо конечно и custom {} позабивать посоидеть... как нить проверю. Хотя исправить не так то и долго в сотне строк, зная чего где... Тем более, пока сложных условий чаще 10-30 раз не бывает (остальных хватает)...

А вопрос.. к примеру код может иметь вид

return((c_flag_is_false(\"1\") or c_flag_is_false(\"2\")) AND (c_flag_is_false(\"3\") or c_flag_is_false(\"4\"))) вроде скобок прально поставил....

соответсвенно в trigfunc = и conditions =

...

ПыСы

еще списки переменных и иповое описание у многоэтажных.. а то все выковыривать типа c_flag_is_false ,a_set_flag, что бы время на анализ не тратить - а то скажем, я разберусь - а другие, кто захочет - такой маленький подарок от разработчика :)


Edited by edwardpashkov

[sIGPIC][/sIGPIC]

АКА =TMS= Count _ Полеты на = T M S = dedicate server На точке работает РП (РП+РПП)

Набор вирпилов на вертикальную, штурмовую и истребительную авиацию со времен ВОВ и по настоящее время

Комсостав и инструкторы - летавшие в горячих точках (и не только) и действующие летчики.

Link to comment
Share on other sites

Было бы время еще на эксперимент. Можо конечно и custom {} позабивать посоидеть... как нить проверю. Хотя исправить не так то и долго в сотне строк, зная чего где... Тем более, пока сложных условий чаще 10-30 раз не бывает (остальных хватает)...

А вопрос.. к примеру код может иметь вид

return((c_flag_is_false(\"1\") or c_flag_is_false(\"2\")) AND (c_flag_is_false(\"3\") or c_flag_is_false(\"4\"))) вроде скобок прально поставил....

соответсвенно в trigfunc = и conditions =

...

так где вопрос? если ты про выражение - то может использоваться любое корректное в терминах LUA выражение

ПыСы

еще списки переменных и иповое описание у многоэтажных.. а то все выковыривать типа c_flag_is_false ,a_set_flag, что бы время на анализ не тратить - а то скажем, я разберусь - а другие, кто захочет - такой маленький подарок от разработчика :)

переменных нет. есть только функции для предикатов, начинаются с "с_" и функции для действий, начинаются с "a_"

список и структуру параметров предикатов можно глянуть в me_predicates.lua

пример описания в редакторе:

       name = "c_time_since_flag",
       fields = {
           { -- первый параметр номер флага
               id = "flag",
               type = "spin",
               default = 1,
           },
           { -- второй параметр кол-во секунд с момента установки флага
               id = "seconds",
               type = "spin",
               default = 10,
               min = 1,
               max = 10000000000,
               step = 1
           }
       }

 

пример использования: c_time_since_flag(2, 200)

 

список и структуру параметров действий можно узнать в me_trigrules.lua

пример описания в редакторе

       name = "a_out_text_delay_s";
       fields = {
           { -- первый параметр название коалиции
               id = "coalitionlist",
               type = "combo",
               comboFunc = coalitionLister,
               displayFunc = coalitionIdToName,
               serializeFunc = null_transform,
               default = "",
           },
           {-- второй параметр текст для вывода
               id = "text",
               type = "medit",
               default = "",
               displayFunc = convertMultilineText,
               serializeFunc = convertMultilineText2,
           },
           {--третий параметр кол-во секунд для задержки сообщения на экране
               id = "seconds",
               type = "spin",
               default = 10,
           },
       },

 

пример использования: a_out_text_delay_s("blue","my custom text",20)


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]

Link to comment
Share on other sites

но! этот момент мы конечно предусмотрели, поэтому есть блок custom {}, который не интерпретируется редактором и напрямую сохраняется из миссии в миссию. вот через него и можно сделать нужную пачку триггеров )))
Что-то не соображу, чего туда писать. Любой код, по образу и подобию блока trigfunc?
custom = 
{
[1] = "if c_time_after(\"20\") then a_out_text_delay(\"Работает\", \"10\"); end;",
}, -- end of custom

Не работает.

Коричневые очки никогда не поранят мозг. Они небьющиеся.

Brown-coloured spectacles will never harm a brain. They are unbreakable. (с) Me

сфсвсг

I'm the future of the Russian government.

According to Scott Lofgren,

Bentley Systems global director.

Link to comment
Share on other sites

парни,а с помощью какой программы можно осуществлять поиск в файлах LUA?

Открываешь блокнотом, жмешь "CTRL+F" вводишь что искать :)

 

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

  • Like 2
Link to comment
Share on other sites

 

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

Вот это мне и надо, пасиб.

Так товарищи, а как узнать "Name_of_weapon" оружия(блок НАРов?


Edited by Flаnker
Link to comment
Share on other sites

Что-то не соображу, чего туда писать. Любой код, по образу и подобию блока trigfunc?
custom = 
{
[1] = "if c_time_after(\"20\") then a_out_text_delay(\"Работает\", \"10\"); end;",
}, -- end of custom

Не работает.

 

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

"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]

Link to comment
Share on other sites

Вопрос еще.

ADDITIONAL.lua описывается, что будет нарисовано в АБРИСе...

Пока видел линии (рисовать так не проблема), а не дадите весь список к ["additional_objects"]=

, а то ковырять долго через редактор, вернее классы все. Просто работы море, на полетать времени мало, а на расковыривать и того меньше..

Да и для сетевых миссий нудо что то по иному описывать или как?

Спасибо.


Edited by edwardpashkov

[sIGPIC][/sIGPIC]

АКА =TMS= Count _ Полеты на = T M S = dedicate server На точке работает РП (РП+РПП)

Набор вирпилов на вертикальную, штурмовую и истребительную авиацию со времен ВОВ и по настоящее время

Комсостав и инструкторы - летавшие в горячих точках (и не только) и действующие летчики.

Link to comment
Share on other sites

  • ED Team
Вопрос еще.

ADDITIONAL.lua описывается, что будет нарисовано в АБРИСе...

Пока видел линии (рисовать так не проблема), а не дадите весь список к ["additional_objects"]=

, а то ковырять долго через редактор, вернее классы все. Просто работы море, на полетать времени мало, а на расковыривать и того меньше..

Да и для сетевых миссий нудо что то по иному описывать или как?

Спасибо.

в ADDITIONAL.lua только линии , дополгительные точки в NAVIGATION.lua , маршруты в ROUTES.lua

  • Like 1
sigpic2354_5.gif
Link to comment
Share on other sites

Вот:

 

жаль что поздно заметили.

 

значит так - механизм кастомных триггеров в симе есть и он работает. но в редакторе я его забыл прописать.

поэтому:

 

1) в файле me_mission.lua в районе строки 1056 вставляем такую сентецию (это что бы кастомные триггеры сохранялись при сохранении миссии)

  um.customtrigfunc = mission.customtrigfunc or {}

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

customtrigfunc = 
{
}, -- end of customtrigfunc

2) прописываем туда кастомные триггеры

customtrigfunc = 
{
[1] = "if c_time_after(\"20\") then a_out_text_delay(\"Работает\", \"10\"); end;",
},

 

вроде все. попробуй Сергей и скажи что получится.

"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]

Link to comment
Share on other sites

Вот вам и к патчу нашли :)

А так, чтобы огороды не городить, может все таки добавите в редактор функию "или".. И по миссиям столкнулся нужно триггеры - "любой юнит каолиции" и "любой юнит группы" в конкретной зоне и т.п. Плюс к сетевому игроку по (нику привязку бы неплохо) - перерождение не более N-раз, или перерождение не ранее чем через N-времени.

И чуть офтоп - возможност рисовать path и присваивать его группе. А то разрисовывать кучу групп и потом их через генератор активировать - лишняя немного работа.. (Хоть и можно стерпеть).. а тогда к такому триггеру еще RND в диапазоне от 0 до 16 скажем.. нарисуем 16 маршрутов (или сколь нужно и соответвенно рнд до этого числа) и в зависимости от числа присваивать номер маршрута группе... типа attach path(rnd(n)) c_group_(имя группы) или типа такого.. Больше разнообразия будет..

ПыСы Править me_mission.lua только на машине где пишем или везде? А то вдруг еще чего забыли?


Edited by edwardpashkov

[sIGPIC][/sIGPIC]

АКА =TMS= Count _ Полеты на = T M S = dedicate server На точке работает РП (РП+РПП)

Набор вирпилов на вертикальную, штурмовую и истребительную авиацию со времен ВОВ и по настоящее время

Комсостав и инструкторы - летавшие в горячих точках (и не только) и действующие летчики.

Link to comment
Share on other sites

Редактор тоже на lua написан, так что если шаришь и/или времени много свободного - добавь сам :)

=012=

A..a..are you gangsters???

No! We are RUSSIANS!

Link to comment
Share on other sites

Вот его то совсем нет. Или почти не бывает. Летать хочеться иногда, а не код ковырять вместо отдыха.. Просто не одному мне такое интересно, слышал такие же предложения.

Или втыкать руками еще можно на отлаженной миссии, хотя приходитсья искать другие пути, что есть грусть. Не смотрел еще в англоязычном форуме на счет таких, но если не было, то ИМХО там тоже может такое интересно...

[sIGPIC][/sIGPIC]

АКА =TMS= Count _ Полеты на = T M S = dedicate server На точке работает РП (РП+РПП)

Набор вирпилов на вертикальную, штурмовую и истребительную авиацию со времен ВОВ и по настоящее время

Комсостав и инструкторы - летавшие в горячих точках (и не только) и действующие летчики.

Link to comment
Share on other sites

  • ED Team

Расширение функционала редактора и триггеров у нас в планах. В том числе и логическое "или", и более гибкое управление маршрутами юнитов.

Единственный урок, который можно извлечь из истории, состоит в том, что люди не извлекают из истории никаких уроков. (С) Джордж Бернард Шоу

Link to comment
Share on other sites

Расширение функционала редактора и триггеров у нас в планах. В том числе и логическое "или", и более гибкое управление маршрутами юнитов.
Вы умрете визуализировать и раскладывать по кнопкам и менюшкам все фантазии разработчиков миссий. И не нужно это. Лучше просто дать возможность удобно работать с кодом - то есть рисовать в редакторе маршруты, а ВСЕ остальное - просто вызовом. Всем будет проще, и вам тоже.

JGr124 "Katze"

Link to comment
Share on other sites

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

WBR, =FV=BlackDragon.

logo3435.gif[sIGPIC][/sIGPIC]

Link to comment
Share on other sites

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

ПыСы

Кастом тригерры пашут после правки конфижного файла секция пральная стоновится :)

Спасибо за поправки :)


Edited by edwardpashkov

[sIGPIC][/sIGPIC]

АКА =TMS= Count _ Полеты на = T M S = dedicate server На точке работает РП (РП+РПП)

Набор вирпилов на вертикальную, штурмовую и истребительную авиацию со времен ВОВ и по настоящее время

Комсостав и инструкторы - летавшие в горячих точках (и не только) и действующие летчики.

Link to comment
Share on other sites

  • 4 weeks later...
вроде все. попробуй Сергей и скажи что получится.

 

Попробовал - получается что миссия вылетает. :(

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

Суровые лица

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

Link to comment
Share on other sites

У меня счаз на серваке крутится с кастомными триггерами миссии. Народ вроде летает.

 

Ваш код

{

[1] = "return(c_unit_in_zone(\"1\", \"lua_tst\") or c_unit_in_zone(\"2\", \"lua_tst\") or c_unit_in_zone(\"3\", \"lua_tst\") or c_unit_in_zone(\"4\", \"lua_tst\") or c_unit_in_zone(\"5\", \"lua_tst\") or c_unit_in_zone(\"6\", \"lua_tst\") or c_unit_in_zone(\"7\", \"lua_tst\") or c_unit_in_zone(\"8\", \"lua_tst\") or c_unit_in_zone(\"9\", \"lua_tst\") or c_unit_in_zone(\"10\", \"lua_tst\") )",

}, -- end of customtrigfunc

resultBlue =

return??? а не if вроде должно быть, причем в конце должно быть условие, что сделать.

к примеру так then a_set_flag(\"1\"); end;",

т.е. [1] = "if(c_unit_in_zone(\"1\", \"lua_tst\") or c_unit_in_zone(\"2\", \"lua_tst\") or c_unit_in_zone(\"3\", \"lua_tst\") or c_unit_in_zone(\"4\", \"lua_tst\") or c_unit_in_zone(\"5\", \"lua_tst\") or c_unit_in_zone(\"6\", \"lua_tst\") or c_unit_in_zone(\"7\", \"lua_tst\") or c_unit_in_zone(\"8\", \"lua_tst\") or c_unit_in_zone(\"9\", \"lua_tst\") or c_unit_in_zone(\"10\", \"lua_tst\") ) then a_set_flag(\"1\"); end;",,

}, -- end of customtrigfunc

 

Далее где нить просто флаг проверите. Если есть - то отработать. в редакторе кустамны не видно, но работают зато. Ну или сразу опишите событе, после then

типа так then a_out_text_delay(\"Restart in 3 min\", \"10\"); end;"

Вроде так.. Пишу с мелкого экрана, мог спутать синтаксис. Пусть меня поправят.

[sIGPIC][/sIGPIC]

АКА =TMS= Count _ Полеты на = T M S = dedicate server На точке работает РП (РП+РПП)

Набор вирпилов на вертикальную, штурмовую и истребительную авиацию со времен ВОВ и по настоящее время

Комсостав и инструкторы - летавшие в горячих точках (и не только) и действующие летчики.

Link to comment
Share on other sites

Попробовал - получается что миссия вылетает. :(

как написал edwardpashkov, в customtrigfunc нужно использовать полный триггер, а не только предикат.

 

посмотри, как сделано в моём сообщении http://forums.eagle.ru/showpost.php?p=769279&postcount=116

"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]

Link to comment
Share on other sites

  • Recently Browsing   0 members

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