Jump to content

Разработка миссии на основе Simulator Scripting Engine


Recommended Posts

...Работать не хочет :(

Зона погрузки не создается.

Спасибо!

Вроде нашел ошибку, в 150, 164 и 176 строке вместо

mission.model:addCargoPlace(_static_units.name, _cargo_place_point, 150, coalition.side[_coalition.name]);

нужно

mission.model:addCargoPlace('Пункт подбора '.._static_units.name, _cargo_place_point, 150, coalition.side[_coalition.name]);

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


Edited by StarLey_Andrew
Link to comment
Share on other sites

  • Replies 543
  • Created
  • Last Reply

Top Posters In This Topic

Вроде что-то поправил (см. приложение), там еще и с координатами косяк был - зона вообще в другом месте создавалась, нужен тест

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

 

Сделал функцию автоматически добавляющую зону погрузки любому статическому объекту имеющему в названии слово "Погрузка".

Например вы установили статический объект - "вертолетная площадка-Тент" (или саму площадку даже лучше) и назвали ее "Штаб полка (Погрузка)"

И для вертолетов соответствующей коалиции будут доступны погрузки по шаблонам для этой вертушки.

auto_cargo_place_name.lua


Edited by StarLey_Andrew
Link to comment
Share on other sites

Проверил в офлайне. По вертикальным все работает! Спасибо!

В онлайне с ребятами позже проверю.

Ок, спасибо, буду ждать результатов

Link to comment
Share on other sites

Да, пример есть... вот

 

Зорг. обнови ссылочку. эта не пашет.

Будьте осторожнее в своих желаниях.

Прошу все мои сообщения считать случайным набором букв , цифр , и прочих знаков орфографии, не несущих смысловой нагрузки.

Link to comment
Share on other sites

функцию автоматически добавляющую зону погрузки любому статическому объекту имеющему в названии слово "Погрузка".

Например вы установили статический объект - "вертолетная площадка-Тент" (или саму площадку даже лучше) и назвали ее "Штаб полка (Погрузка)"

 

такая идея

 

Если ты сможешь оперировать именами юнитов, то можно назначать шаболоны по именам , а не по типу.

Те в самой группе из 4х бтр каждый БТР имеет в своем имени "название" которое отвечает за то какой шаблон ему погрузят.

К пимеру

1юнит группы - ru_BTR_11_(МСО)

2юнит группы - ru_BTR_12_(MCO)

3юнит гуппы - ru_BTR_13_(MCO)

4юнит группы - ru_BTR_14_(ПЗРК)

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

Будьте осторожнее в своих желаниях.

Прошу все мои сообщения считать случайным набором букв , цифр , и прочих знаков орфографии, не несущих смысловой нагрузки.

Link to comment
Share on other sites

такая идея

 

Если ты сможешь оперировать именами юнитов, то можно назначать шаболоны по именам , а не по типу.

Те в самой группе из 4х бтр каждый БТР имеет в своем имени "название" которое отвечает за то какой шаблон ему погрузят.

К пимеру

1юнит группы - ru_BTR_11_(МСО)

2юнит группы - ru_BTR_12_(MCO)

3юнит гуппы - ru_BTR_13_(MCO)

4юнит группы - ru_BTR_14_(ПЗРК)

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

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

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

В общем пока на проработке. Но то, что это не мне одному в голову пришло, подтверждает правильность идеи.

Link to comment
Share on other sites

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

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

В общем пока на проработке. Но то, что это не мне одному в голову пришло, подтверждает правильность идеи.

 

:):):)

 

Скорее 150 с обеих сторон. и котл ц контрл в никто не отменял.

Будьте осторожнее в своих желаниях.

Прошу все мои сообщения считать случайным набором букв , цифр , и прочих знаков орфографии, не несущих смысловой нагрузки.

Link to comment
Share on other sites

Ну есть еще вариант с выбором способа погрузки установкой значения флага в начале миссии. Ну и 300 от 500 юнитов для миссиодела не сильно отличны по объему работ :)

Link to comment
Share on other sites

Ну есть еще вариант с выбором способа погрузки установкой значения флага в начале миссии. Ну и 300 от 500 юнитов для миссиодела не сильно отличны по объему работ :)

 

нет 150 это скорее всего все юниты для десанта. вполне реализуемо. яже по старой методе 100 прописал. :)

 

С флагом ? поясни.

Будьте осторожнее в своих желаниях.

Прошу все мои сообщения считать случайным набором букв , цифр , и прочих знаков орфографии, не несущих смысловой нагрузки.

Link to comment
Share on other sites

нет 150 это скорее всего все юниты для десанта. вполне реализуемо. яже по старой методе 100 прописал. :)

 

С флагом ? поясни.

Ну вот тут 500 юнитов (из них 2/3 транспортных:)) http://forums.eagle.ru/showpost.php?p=2081730&postcount=2572

По флагам. В файле скрипта могу отловить значение указанного флага. Допустим флаг 500.

Пишем 3 ветки.

Если флага 500 нет или значение флага 500 равно 0, то грузим по именам, а у тех юнитов, у которых в именах нет ключевых слов, грузим по типам;

Если флаг 500 равен 1, то грузим по ключевым словам в имени;

если флаг 500 равен 2, то грузим по типам транспортов.

Тогда в редакторе миссий создаем триггер при старте миссии задать флагу 500 нужное значение и потом подключаем файл.

Если флага нет, а файл подключен то (см. выше)

Это только как универсальный вариант в проработке.

Link to comment
Share on other sites

Зорг. обнови ссылочку. эта не пашет.

 

Работает. на всякий [ATTACH]99814[/ATTACH]

Link to comment
Share on other sites

Скоро накажут, но продублирую сообщение и здесь (или как-то объединять нужно ветки)

... Допустим флаг 500.

Пишем 3 ветки.

Если флага 500 нет или значение флага 500 равно 0, то грузим по именам, а у тех юнитов, у которых в именах нет ключевых слов, грузим по типам;

Если флаг 500 равен 1, то грузим по ключевым словам в имени;

если флаг 500 равен 2, то грузим по типам транспортов.

Тогда в редакторе миссий создаем триггер при старте миссии задать флагу 500 нужное значение и потом подключаем файл.

Если флага нет, а файл подключен то (см. выше)

Это только как универсальный вариант в проработке.

 

В миссии auto_grounde_init_and_on_transport_hit реализовано то, что описано выше, более подробно в описании миссии здесь http://forums.eagle.ru/showpost.php?p=1994117&postcount=1

 

Хотелка:

Надо предусмотреть 2 вида зон

1) нейтральные - зона изначально нейтральная и подсчет ведется как ты пишешь.

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

 

Кста есть скрипт бантдита по зонам но там другой принцип - при вхождении в зону юнита противника зона считается захваченной (нет подсчета кол-ва юнитов). Скрипт нужен -?

 

В миссии zone_at_color плюс к фронтовым реализованы тыловые зоны. Теперь зоны выбираются НЕ по имени, а по ЦВЕТУ (см. рисунок в http://forums.eagle.ru/showpost.php?p=1994117&postcount=1)

Link to comment
Share on other sites

Маленькая миссия и скрипт по реализации динамического танкового завода.

Исправленный вариант ранее выложенный в этом сообщении.

После старта миссии через некоторое время завод начинает производить танки. Создав несколько таков, завод неожиданно взрывается и производство танков прекращается.

Tank_production.lua

tanks.miz

  • Like 1

ASRock P67 Extreme4 Gen3/Intel Core i5 3570/16 Gb DDR3/GF 560Ti/Win7 64bit/CH FighterStick + CH Pro Throttle + Saitek Pro Flight Rudder Pedals/TrackiR4 Pro

Link to comment
Share on other sites

Маленькая миссия и скрипт по реализации динамического танкового завода.

Отлично, далеко не лишняя возможность "рожать" группы по запросу (только управляемость наверное всетаки true нужна).

Я думаю с небольшими правками можно использовать в следующем виде:

Сейчас у нас при назначении погрузочной площадки вокруг статического объекта создается триггерная зона. В процессе игры при наличии в ней транспорта по активации через радиоменю начинается погрузка в транспорт (фактически просто отсчет времени и назначение транспорту шаблона на выгрузку). Причем при уничтожении объекта погрузку на том месте еще можно производить.

Если чуть пошаманить, то можно сделать так:

- при назначении погрузочной площадки вокруг статического объекта создается триггерная зона;

- процессе игры при наличии в ней транспорта по активации через радиоменю происходит рождение из статического объекта группы десанта по шаблону и ей назначается тип транспорта который ее запрашивает;

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

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

Тут еще такой момент. В очередной раз наткнулся на использование флага 101, т.е. если миссиодел просто подключит это файл в свою миссию и потом еще подключит например custom_eject.lua в котором счетчик тоже флаг 101, то у него система с ума сойдет.

Предлагаю создать обновляемое сообщение в котором разработчики скриптов будут "договариваться" об использовании флагов (а по сути глобальных переменных)

Так я например во всех своих скриптах для подсчета очков использую флаги 300-й серии:

- 301 - красных

- 302 - синих

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


Edited by StarLey_Andrew
Link to comment
Share on other sites

...только управляемость наверное все-таки true нужна...

Да. Можно и так. Будет лучше.

Предлагаю создать обновляемое сообщение в котором разработчики скриптов будут "договариваться" об использовании флагов (а по сути глобальных переменных)

Так я например во всех своих скриптах для подсчета очков использую флаги 300-й серии:

- 301 - красных

- 302 - синих

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

Хорошая идея

:thumbup:

ASRock P67 Extreme4 Gen3/Intel Core i5 3570/16 Gb DDR3/GF 560Ti/Win7 64bit/CH FighterStick + CH Pro Throttle + Saitek Pro Flight Rudder Pedals/TrackiR4 Pro

Link to comment
Share on other sites

  • 2 weeks later...
Сделал функцию автоматически добавляющую зону погрузки любому статическому объекту имеющему в названии слово "Погрузка".

Например вы установили статический объект - "вертолетная площадка-Тент" (или саму площадку даже лучше) и назвали ее "Штаб полка (Погрузка)"

Пробовали вчера в онлайне - вроде работает. Только один нюанс: задали имя "Погрузка" вертолетной площадке, а грузить не захотело. Оказалось проблема в высоте погрузки: 5м (по умолчанию) мало, т.к. площадка приподнята над уровнем земли. Поставили 10м - заработало.

Link to comment
Share on other sites

Всем привет. Предупреждаю - я только учусь (осваиваю возможности стандартного редактора).

Вопрос к профи:

Существует ли принципиальная возможность сделать так:

Есть группа юнитов.

Если флаг a = x

То группа едет по маршруту 1 в точку скажем "альфа".

Если флаг a не равен x то чек флаг b и если b = x

То группа едет по маршруту 2 в точку "бета"

 

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

Куплю B-17, можно B-24. B-29 не предлагать!

Burning Skies

=Burning Skies= @ Facebook

Link to comment
Share on other sites

ИМХО по флагам

я всегда использую 100е для красных

200е для синих.

Флаги очков 151 и 251.

До сотни флаги вообще лучше не трогать.

В подсчете потерь у меня идут по юнитам 1100е и 1200е по анологии.

 

Старлей попытался к скрипту атаки обьектов сцены подключить подсчет сколько обектов уничтожено . нет подсчета ф301 и 302 всевремя равны 1.

Глянь на досуге.

kill_most.lua

Будьте осторожнее в своих желаниях.

Прошу все мои сообщения считать случайным набором букв , цифр , и прочих знаков орфографии, не несущих смысловой нагрузки.

Link to comment
Share on other sites

ИМХО по флагам

я всегда использую 100е для красных

200е для синих.

Флаги очков 151 и 251.

До сотни флаги вообще лучше не трогать.

В подсчете потерь у меня идут по юнитам 1100е и 1200е по анологии.

 

Старлей попытался к скрипту атаки обьектов сцены подключить подсчет сколько обектов уничтожено . нет подсчета ф301 и 302 всевремя равны 1.

Глянь на досуге.

в 58 и 62 строке вместо

trigger.action.setUserFlag (302, (302) + 1);

нужно

trigger.action.setUserFlag (302, [b]trigger.misc.getUserFlag[/b](302) + 1);

для 301-го флага аналогично. А то получилось, что 302 флагу присвоить значение (302)+1, вот система понять и не может , что это за 302, а нужно флагу 302 присвоить значение флага 302+1.

Но кстати не факт, что так получится (без промежуточной локальной переменной, получающей значение флага и уже его присваивающего в последствии.

 

2 eekz

Темы про точки подробно освещал BAntDit, здесь http://forums.eagle.ru/showpost.php?p=2022303&postcount=418 , здесь http://forums.eagle.ru/showpost.php?p=2018009&postcount=411, очень подробно расписано поведение групп здесь http://forums.eagle.ru/showpost.php?p=1971278&postcount=330 и ниже, ну и вообще по теме много где.


Edited by StarLey_Andrew
Link to comment
Share on other sites

Всем привет. Предупреждаю - я только учусь (осваиваю возможности стандартного редактора).

Вопрос к профи:

Существует ли принципиальная возможность сделать так:

Есть группа юнитов.

Если флаг a = x

То группа едет по маршруту 1 в точку скажем "альфа".

Если флаг a не равен x то чек флаг b и если b = x

То группа едет по маршруту 2 в точку "бета"

 

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

 

 

Интересует именно принципиальная возможность.

 

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

  • Like 1

Крайняя версия MSF 1.0.1 (для 1.2.6.): http://forums.eagle.ru/attachment.php?attachmentid=89817&d=1382379803

 

Новая версия MSF 1.0.2 beta: http://forums.eagle.ru/attachment.php?attachmentid=93422&d=1390584292

 

Миссия для тестирования возможностей MSF 1.0.2: http://forums.eagle.ru/attachment.php?attachmentid=91514&d=1386954362

----

Руководство по MSF (не полная версия для MSF 1.0.2): http://forums.eagle.ru/attachment.php?attachmentid=92959&d=1389558825

Link to comment
Share on other sites

BAntDit, доброго. Нужна помощь в следующем вопросе, нужно при старте миссии программно создать триггерную зону с заданными параметрами (точка, радиус, цвета, прозрачность)? Как это сделать (хотя бы просто создать по точке и радиусу)?

Link to comment
Share on other sites

программно создать триггерную зону

 

1. Программно умеют создаваться только Статические объекты и Группы различных видов юнитов (танчики, самолетеги, кораблики и т.п.). Триггерные зоны программно не создаются.

 

2. Можно программно задать Точку + Радиус, но тогда вместо стандартных триггерных условий, нужно будет написать свои Lua-предикаты.

Крайняя версия MSF 1.0.1 (для 1.2.6.): http://forums.eagle.ru/attachment.php?attachmentid=89817&d=1382379803

 

Новая версия MSF 1.0.2 beta: http://forums.eagle.ru/attachment.php?attachmentid=93422&d=1390584292

 

Миссия для тестирования возможностей MSF 1.0.2: http://forums.eagle.ru/attachment.php?attachmentid=91514&d=1386954362

----

Руководство по MSF (не полная версия для MSF 1.0.2): http://forums.eagle.ru/attachment.php?attachmentid=92959&d=1389558825

Link to comment
Share on other sites

1. Программно умеют создаваться только Статические объекты и Группы различных видов юнитов (танчики, самолетеги, кораблики и т.п.). Триггерные зоны программно не создаются.

 

2. Можно программно задать Точку + Радиус, но тогда вместо стандартных триггерных условий, нужно будет написать свои Lua-предикаты.

Не совсем, вот таким образом создал зону

						local _max_zone_ID = 0;
					for _, _zone in ipairs (env.mission.triggers.zones) do -- перебираем все зоны на карте
						local _zone_ID = _zone.zoneId;
						if _max_zone_ID < _zone_ID then _max_zone_ID = _zone_ID; end
					end
					local _new_zone_ID = _max_zone_ID + 1;
					local _new_zone_red = 1;
					local _new_zone_blue = 1;

					if coalition.side[_coalition.name] == coalition.side.RED then 
						_new_zone_red = 1;
						_new_zone_blue = 0;
					end
					if coalition.side[_coalition.name] == coalition.side.BLUE then 
						_new_zone_red = 0;
						_new_zone_blue = 1;
					end
					local _new_zone_name = 'Зона спасения '.._static_units.name
					local _new_zone_color = {_new_zone_red, 1, _new_zone_blue, 0.5};
					mission.controller.sendMessageForAll("R ".._new_zone_color[1].." G ".._new_zone_color[2].." B ".._new_zone_color[3].." A ".._new_zone_color[4]);
					local _new_zone_param = {zoneId = _new_zone_ID, name = _new_zone_name, radius = 150, x = _static_units.x, y = _static_units.y, hidden = false, color = _new_zone_color, point = {x = _static_units.x, y = land.getHeight({ x = _static_units.x, y = _static_units.y }), z = _static_units.y}};
					table.insert (env.mission.triggers.zones, _new_zone_param);

Причем в последствии вот этим кодом проверяю ее наличие

						for _, _zone in ipairs (env.mission.triggers.zones) do
--							local _dcsw_zone = _zone:getDCSWorldTriggerZone();
						trigger.action.signalFlare({x = _zone.x, y = land.getHeight({ x = _zone.x, y = _zone.y }), z = _zone.y}, trigger.flareColor.Red, 0);
						mission.controller.sendMessageForAll("Имя ".._zone.name.." ID ".._zone.zoneId.." x ".._zone.x.." y ".._zone.y); end							
						
					end

и все нормально, но в последствии в дальнейших скриптах не могу выловить point этой зоны (выдает ошибку в последующем скрипте), так вот теперь вопрос, как отдать эту зону под управление SSE?

Миссию приложил


Edited by StarLey_Andrew
Link to comment
Share on other sites

table.insert (env.mission.triggers.zones, _new_zone_param);

 

1. таблица env.mission должна использоваться только для чтения - по сути в неё загружается все содержимое файла mission из архива миссии. Т.е. все то, что было создано в редакторе миссии. Добавление каких-либо сущностей в эту таблицу не создает их реально в игре.

 

2.

_dcsw_zone = _zone:getDCSWorldTriggerZone();

 

o_0 - что за getDCSWorldTriggerZone(), _zone - это таблица по формату совпадающая с описанием триггерных зон в файле mission, эта таблица не объект, в ней нет никаких методов.

 

По сути _zone это уже _dcsw_zone.


Edited by BAntDit

Крайняя версия MSF 1.0.1 (для 1.2.6.): http://forums.eagle.ru/attachment.php?attachmentid=89817&d=1382379803

 

Новая версия MSF 1.0.2 beta: http://forums.eagle.ru/attachment.php?attachmentid=93422&d=1390584292

 

Миссия для тестирования возможностей MSF 1.0.2: http://forums.eagle.ru/attachment.php?attachmentid=91514&d=1386954362

----

Руководство по MSF (не полная версия для MSF 1.0.2): http://forums.eagle.ru/attachment.php?attachmentid=92959&d=1389558825

Link to comment
Share on other sites

  • Recently Browsing   0 members

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