Jump to content

Помощь разработчику миссий


Recommended Posts

Posted (edited)

Всем привет! Такой вопросик, - ставлю батареи Смерчь, назначаю зону обстрела. Ребятки делают эпический залп... в немецкие танки не попадают, но сжигают дотла мирную деревню, после чего дружно идут курить. Как сделать чтобы батарея продолжала работать в циклическом режиме? Что за раслабон)

 

И второй вопрос по десанту... есть сторонний скрипт у Старлея, как его использовать в св мультиплеерной миссии?

 

Спасибо!

Edited by Rechelieu

A10C - Windows 97, M2000C - pin-up, UH-1H - Rolling Stone, AJS-37 Viggen - Cadillac Eldorado, Ми-8МТВ2 - коровушка, МиГ-21бис - Легенда!

Надежда умирает с ударом о землю!

Posted
Всем привет! Такой вопросик ставлю батарей Смерчь, назначаю зону обстрела. Ребятки делают эпический залп... и идут курить. Как сделать чтобы батарея продолжала работать в циклическом режиме? Что за раслабон)

Сделай группу юнитов, Смерчи и с ними вперемешку Уралы или Камазы.

Техника будет перезаряжаться емнип в радиусе 50м от грузовика.

Но перезарядка дооолгая )

Без разрыва шаблонов — нет прогресса.

Posted
Триггерной зоной совпадающую с зоной охвата ДРЛО, если кто залетел в неё то активировать ястребов.

Если это А-50 то зону можно к нему прицепить.

 

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

Posted
нужно чтобы противник мог спрятаться за рельефом, была мысль сделать через триггер по высоте, но как-то топорно получается

 

Тогда скриптом только. Читать обнаруженные радаром ДРЛО объекты (их дистанцию, курс, тип - при необходимости) и поднимать ястребы.

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

 

Задачка интересная — триггерами рельеф отсекать :book:

Это похоже только скриптами можно провернуть.

Хотя , можно создать множество отдельных триггерных зон которые бы были в ущельях, вобщем в местах затенения. Тогда можно выявить условие — " Если цель в зоне досягаемости ДРЛО и одновременно в "зоне затенения" и высота меньше чем Х то цель "не видна". Но это громоздкая конструкция, которая ещё может и тормозить если юнитов много.

Ну или ДРЛО разместить на равнине )

ДРЛО летающее или наземное?

Без разрыва шаблонов — нет прогресса.

Posted

ДРЛО летающее или наземное?

 

Без разницы. Тогда другой вопрос: триггер по высоте учитывает высоту над поверхностью или над уровнем моря?

Posted (edited)
Без разницы. Тогда другой вопрос: триггер по высоте учитывает высоту над поверхностью или над уровнем моря?

 

Над уровнем моря.

 

апд.

Ещё нужно придумывать алгоритм который бы сглаживал время обнаружения (запоздание).

Имею в виду вот что, триггерные зоны "затенения" могут быть близко друг к другу и даже накладываться друг на друга, однако всёравно будут пробелы между ними и разные высоты. Что бы не было лишнего засвета нужно делать задержку по времени, т.е. цель должна засветиться выйдя из тени через какое то время, например через 3-5 сек. Если цель вылетала из тени и туд же залетела в другую тень в течении 5 сек то цель не обнаруживается, тоже самое с перепадом высот теней.

Edited by B3OP

Без разрыва шаблонов — нет прогресса.

Posted (edited)

А если сделать наоборот: дать команду на невидимость объекта противником, а в какой то зоне или ППМ в этой зоне сделать его видимым? Тут не зависит от высот и прочего, или все же кто то его должен видеть?

Например: Ф-15 невидим со старта, при входе в зону юнита - с диаметром Х км (А-50) ставится флаг на окончание условия невидимости, или дается команда на видимость.

Edited by =K=Atom

i7-4790k, 32ggb, 2070, 2560x1440, TrackIR5, Win10, всё в синей изоленте, и чуток SSD.

Posted
А если сделать наоборот: дать команду на невидимость объекта противником, а в какой то зоне или ППМ в этой зоне сделать его видимым?

 

Видимо он хочет что бы игрок скрытно прокрался куда-то не потревожив пчёл.

Без разрыва шаблонов — нет прогресса.

Posted
Над уровнем моря.

 

апд.

Ещё нужно придумывать алгоритм который бы сглаживал время обнаружения (запоздание).

Имею в виду вот что, триггерные зоны "затенения" могут быть близко друг к другу и даже накладываться друг на друга, однако всёравно будут пробелы между ними и разные высоты. Что бы не было лишнего засвета нужно делать задержку по времени, т.е. цель должна засветиться выйдя из тени через какое то время, например через 3-5 сек. Если цель вылетала из тени и туд же залетела в другую тень в течении 5 сек то цель не обнаруживается, тоже самое с перепадом высот теней.

 

А если плясать не от затенения, а от зон гарантированного обнаружения? Допустим, имеется наземный радар, вокруг него триггеры с разным радиусом и соответственно разным уровнем высоты обнаружения с дополнительными триггерами на равнинах

Posted
А если плясать не от затенения, а от зон гарантированного обнаружения? Допустим, имеется наземный радар, вокруг него триггеры с разным радиусом и соответственно разным уровнем высоты обнаружения с дополнительными триггерами на равнинах

 

Будет примерно тоже самое но с меньшим количеством триггерных зон.

Если разметить долину перед горами, но зона охвата ДРЛО всёравно должна быть.

Тогда правила меняются, если цель в зоне ДРЛО и не в долине перед ДРЛО то цель невидима так как она горами. Но минус такой реализации будет в том что высота тени будет одинаковой для всей сложной структуры гор.

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

Без разрыва шаблонов — нет прогресса.

Posted

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

Posted
может кто подскажет как сделать чтобы группа истребителей активировалась если ДРЛО засекает ЛА противника?

 

Вот пример миссии и скрипт простенький.

 

Без тестовых сообщений:

 

local tableTargets = {}
local DRLOList = {}

for _coalition = 1, 2 do
   local GroupList
   GroupList = coalition.getGroups(_coalition)
   for _, group in pairs(GroupList) do
       if group and string.find(group:getName(),'drlo') then
           table.insert(DRLOList, group)
       end
   end
end

function detectUnit()
   for _, group in pairs(DRLOList) do
	if group:isExist() then
		local _controller = group:getController()
		local detectedTargets = Controller.getDetectedTargets(_controller, RADAR)
		
		if #detectedTargets > 0 then
			for _, target in pairs(detectedTargets) do                
				local unit = target.object
				for _, id in pairs (tableTargets) do
					if id == unit:getID() then
						unit = nil
					end
				end
				if unit then
					local cat = unit:getGroup():getCategory()
					local target_coalition = unit:getCoalition()
					local target_name = unit:getName()
					local drlo_name = group:getName()
					if cat == 0 or cat == 1 then
						if target_coalition == 1 and trigger.misc.getUserFlag(101) == 0 then
							trigger.action.setUserFlag(101,1)
						elseif target_coalition == 2 and trigger.misc.getUserFlag(102) == 0 then
							trigger.action.setUserFlag(102,1)
						end
						table.insert(tableTargets, unit:getID())
					end
				end
			end
		end
	end
   end


   return timer.getTime() + 30
end

timer.scheduleFunction(detectUnit, nil, timer.getTime() + 10)

 

 

С тестовыми сообщениями:

 

local tableTargets = {}
local DRLOList = {}

for _coalition = 1, 2 do
   local GroupList
   GroupList = coalition.getGroups(_coalition)
   for _, group in pairs(GroupList) do
       if group and string.find(group:getName(),'drlo') then
           table.insert(DRLOList, group)
       end
   end
end

function detectUnit()
   for _, group in pairs(DRLOList) do
	if group:isExist() then
		local _controller = group:getController()
		local detectedTargets = Controller.getDetectedTargets(_controller, RADAR)
		
		if #detectedTargets > 0 then
			for _, target in pairs(detectedTargets) do                
				local unit = target.object
				for _, id in pairs (tableTargets) do
					if id == unit:getID() then
						unit = nil
					end
				end
				if unit then
					local cat = unit:getGroup():getCategory()
					local target_coalition = unit:getCoalition()
					local target_name = unit:getName()
					local drlo_name = group:getName()
					if cat == 0 or cat == 1 then
						if target_coalition == 1 and trigger.misc.getUserFlag(101) == 0 then
							trigger.action.outText(drlo_name..': обнаружена красная цель '..target_name,10)
							trigger.action.setUserFlag(101,1)
						elseif target_coalition == 2 and trigger.misc.getUserFlag(102) == 0 then
							trigger.action.outText(drlo_name..': обнаружена синяя цель '..target_name,10)
							trigger.action.setUserFlag(102,1)
						end
						table.insert(tableTargets, unit:getID())
					end
				end
			end
		end
	end
   end


   return timer.getTime() + 30
end

timer.scheduleFunction(detectUnit, nil, timer.getTime() + 10)

 

 

 

Первый раз скрипт срабатывает через 10 секунд. Затем - каждые 30 секунд (можно и одноразовым сделать - не суть).

 

Что нужно:

- Юниту ДРЛО в название прописать drlo.

- Создать группу для активации по флагу: 101 флаг, если нужно активировать группу синий коалиции или 102 флаг, если нужно активировать группу красной коалиции.

- Активировать скрипт (в примере миссии можно посмотреть как это сделать).

 

В тестовой миссии:

Через 11 секунд после начала миссии грузинский наземный ДРЛО обнаруживает российский Су-27 - выходит сообщение.

Еще через минуту российский наземный ДРЛО обнаруживает F-15 США, когда тот появляется из-за гор (до этого он обнаружен не был) - выходит сообщение и активируется группа Су-27 в Нальчике.

ДРЛО.miz

  • Like 1
  • ED Team
Posted
Вот пример миссии и скрипт простенький.

Скрипт работает как часы. Спасибище!

Но не могу понять почему Эфка и три Сушки друг друга игнорируют? Гоняю их под носом друг у друга, а они не воюют. Это какойто пацифистский баг ИИ?

Одиночные Эфка и Су игнорят даже прямой приказ инструктора. А вот пара по приказу слушается и сбивает Эфку. Оружие всем повесил, модель поведения "Огонь".

Posted (edited)

Возможно, задачу поменять на завоевание или т.п. Я над этим не парился. Просто воткнул.

Сейчас поставил завоевание превосходства, и пошла свалка.

Edited by 29S
Posted (edited)

А как использовать это скрипт? Есть подробная инструкция? Что куда как? Более разжеванная инструкция для тупиц и чайников) В мультиплеерной миссии его можно использовать?

 

И еще скрипт спасения пилота? на UH-1H?

 

Спасибо.

Edited by Rechelieu

A10C - Windows 97, M2000C - pin-up, UH-1H - Rolling Stone, AJS-37 Viggen - Cadillac Eldorado, Ми-8МТВ2 - коровушка, МиГ-21бис - Легенда!

Надежда умирает с ударом о землю!

Posted
А как использовать это скрипт? Есть подробная инструкция? Что куда как? Более разжеванная инструкция для тупиц и чайников) В мультиплеерной миссии его можно использовать?

 

И еще скрипт спасения пилота? на UH-1H?

 

Спасибо.

 

Прдробнее ,ем в самой миссии описано и в сообщении форума быть не может. На UH спасение катапультанта распространяется. Все что нужно для простого вертолетного десанта, выставить в редакторе миссии:

-свой ППБ;

- вертолеты с задачей "транспорт";

- группы пехоты, у которой в названии группы есть слово Desant и задачи "посадка в транспорт" безразлично в какой точке, главное чтоб название задачи четко повторяло тип транспорта;

- подключеный триггером вначале миссии звуковой файл из миссии-примера;

-подключеный через триггер скрипт.

Все.

BlackLion, за скрипт потерь взялся, но как-то со скрипом идет.

Posted

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

A10C - Windows 97, M2000C - pin-up, UH-1H - Rolling Stone, AJS-37 Viggen - Cadillac Eldorado, Ми-8МТВ2 - коровушка, МиГ-21бис - Легенда!

Надежда умирает с ударом о землю!

Posted
Боты могут брать десантуру и потом выбрасывать их в тыл врага? Вертолетному боту нужно сделать вертолетную площадку указать на нее загрузка десанта?

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

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

Posted

Так есть такой скриптик?

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

Это возможно реализовать если да, то как?

 

Да и отдельное спасибо за ваш труд!

A10C - Windows 97, M2000C - pin-up, UH-1H - Rolling Stone, AJS-37 Viggen - Cadillac Eldorado, Ми-8МТВ2 - коровушка, МиГ-21бис - Легенда!

Надежда умирает с ударом о землю!

  • ED Team
Posted
Так есть такой скриптик?

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

Это возможно реализовать если да, то как?

Ну так как место посадки ботов-вертушек жёстко прописано, то можно просто создать в этом месте смелых десантников с задержкой активации. И если бот-вертушка сядет рядом с ними (в триггерной зоне), то активировать десант, типа вылезли из борта. Скрипт тут не нужен.

Posted
Ну так как место посадки ботов-вертушек жёстко прописано, то можно просто создать в этом месте смелых десантников с задержкой активации. И если бот-вертушка сядет рядом с ними (в триггерной зоне), то активировать десант, типа вылезли из борта. Скрипт тут не нужен.

 

Так действительно проще. У ботов в отличае от человека свободы действий нет.

Rechelieu, всегда рад.

  • Recently Browsing   0 members

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