Исторические кампании и битвы - Страница 5 - Моды на MTW и STW - TWoW.Games - Сообщество любителей умных игр Перейти к содержанию
TWoW.Games - Сообщество любителей умных игр

Исторические кампании и битвы


Engineer

Рекомендуемые сообщения

Горог
Как-то решил пока что при своем методе остатся...

Вот, глянь что у меня выходит - я ещё сделаю расстановку отрядов, будет что надо!

А вообще то, с появлением комплекта инструментов от Sturm LS можно делать полноценный интерактивный редактор битв и кампаний.

post-13-1076428466.jpg

Изменено пользователем Engineer
Ссылка на комментарий
  • Ответов 159
  • Создана
  • Последний ответ

Топ авторов темы

  • Mezhick

    14

  • Sartac

    15

  • Engineer

    60

  • Горог

    31

Топ авторов темы

Кто просил перевод про триггеры - ловите

Triggers

========

Triggers are used to detect events in the game. They are called triggers, because generally they are used to trigger some action. However, they are actually more like conditions that can be true or false at any given time. A trigger may start off false, become true, then become false again. A trigger can change any number of times over the course of a battle. However, any action that is specified to start when a trigger is true, only starts the first time a trigger becomes true.

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

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

A trigger is specified outside of all UnitStart..UnitEnd blocks. It has the basic form

Триггеры определяются за пределами массива UnitStart...UnitEnd. Они имеют общий такой вид:

DefineAiTrigger::id type parameters..

 

id is a positive integer above 0. This is used to identify the trigger in actions and other triggers

type is the type of trigger. This is followed by any extra parameters needed by that trigger type. The number of parameters varies according to the trigger type.

Id - это положительное число. Используется для идентификации триггеров в процессе битвы или других триггеров. За названием триггера следуют значения параметров, определенных для данного типа триггера. Количество параметров изменяется в зависимости от типа триггера.

The following trigger types are available.

Доступны следующие типы триггеров.

AFTERSTART n (где n - количество секунд)

Becomes true n seconds after the start of the battle.

Становится истиной после n секунд после начала битвы.

ENEMY_NEAR_UNIT unitTag, d (где D - количество метров, а юниттаг - название юниттага)

True if any enemy units are within d metres of any unit with the given unitTag

Истина если вражеские юниты находятся в D от любого из юнитов, определенных в UnitTag.

ENEMY_NEAR_ANY d (где D - количество метров)

True if any enemy is within d metres of any of the faction's units

Истина если любой вражеский юнит находится в D метрах от любого из юнитов фракций, участвующих в битве.

ENEMY_NEAR_POINT x y d (параметры - соответственно координаты (х, у) и количество метров (D)

True if any enemy unit is within d metres of point x,y (in map co-ordinated)

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

UNIT_ENGAGED unitTag (параметр - название юниттага)

True if any of the given units is in melee

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

ANY_UNIT_ENGAGED

True if any of the faction's unit is in melee

Истина, если любой из юнитов данной фракции вступает в бой (загорается красный меч).

UNIT_UNDERFIRE unitTag (параметр - название юниттага)

True if any of the given units is being shot at

Истина если любой из заданных юнитов попадает под обстрел (загорается красная стрела).

ANY_UNIT_UNDERFIRE

True if any of the faction's units is being shot at

Истина если любой из фракционных юнитов подвергся обстрелу).

ON_FIELD unitTag (параметр - название юниттага)

True if any of the given units is on the battlefield. This can be used to detect when a reinforcement arrives, or in combination with a "NOT" trigger to detect when a unit has been destroyed or routed off the field

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

UNIT_ROUTING unitTag (параметр - название юниттага)

True if any of the given units are routing

Истина если любой из заданных юнитов бежит.

ANY_UNIT_ROUTING

True if any of the faction's units are routing

Истина если любой из юнитов фракции бежит.

GENERAL_DEAD faction (параметр - номер фракции)

True if the general of the given faction is dead. The number of the faction must be given, not the name

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

BREACH_MADE x y (параметры - координаты замка)

True if a breach has been made to the castle area that contains the point x y. Also true if a gate to that area has been forced open.

Истина если проломана стена замка с заданными координатами. Также истина если враг вскрыл ворота.

AND trigger1 trigger2

True when both trigger1 trigger2 are true. trigger1 and trigger2 are the numeric ids of the other triggers. The "AND", "OR" and "NOT" triggers can be used to build up complex conditions.

Note that both triggers must be true at the same time for the trigger to be true. If one of the triggers has become true, but has changed back to false at the time the other trigger becomes true, then the "AND" trigger will not become true.

Истина если и триггер 1 и триггер 2 становятся истинными. Триггер 1 и триггер 2 - числовые значения других тригеров. Триггеры AND, OR, NOT могут быть использованыдля построения сложных условий действий.

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

OR trigger1 trigger2

Similar to the "AND" trigger, but true if either of the two triggers is true.

Похож на триггер AND, но становится истинным если хотя бы один из триггеров становится истинным.

NOT trigger

True if the given trigger is not true. This is used to invert the sense of triggers, for example to create a trigger that is true if a specific unit is not routing.

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

AFTERTRIGGER trigger n

Becomes true n seconds after the given trigger becomes true. This trigger then stays true until the end of the battle. Use a time value of 1 second to create a trigger that is true if another trigger has ever been true.

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

 

Извиняйте за корявость перевода. Будет время опробую сам. Если есть вопросы - не стесняйтесь :D

Ссылка на комментарий

Sainika2000

Да ладно тебе, я уже не выдержал и полностью перевёл для всех:

 

Введение

 

Новые возможности дополнения Viking Invasion – это возможность контролировать работу искусственного интеллекта (АИ) в исторических битвах. Это достигается установкой команд в ADF файле каждой враждующей стороны – фракции. Можно установить как общие правила поведения АИ всей армии, так и определить специфические действия каждого отряда. Кроме того, можно регулировать время и место появления подкреплений. Система триггеров позволяет менять инструкции отрядам и настройки АИ в зависимости от хода битвы.

 

Контроль войск игрока

 

Команды и триггеры могут быть определены в ADF файле также и для армии, контролируемой игроком. Команды, имеющие отношение к работе АИ, управляющего армией не будут иметь эффекта, но можно задать появление подкреплений.

 

Тэг отряда

 

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

Пример:

UnitStart::"Unit"

// Other unit stuff here

// ...

UnitTag::1    // Установим для этого отряда тэг = 1

UnitEnd::

 

Тэг можно определить для одного или для множества отрядов. Команды будут в этом случае действовать на все отряды имеющие один тэг. Триггеры будут выполнены если хотя бы один отряд с общим тэгом будет соответствовать определенным триггером условиям.

 

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

 

Триггеры

 

Триггеры используются чтобы определить некоторое событие происходящее в игре. Они так называются, поскольку определяют действия в ответ на наступление некоторых условий. Однако триггеры не просто определяются некоторыми условиями и принимают значения true или false в определенной время. Триггеры могут иметь значение false, затем принять значение true, а затем снова false. Однако любое действие определенное для значения триггера true будет выполнено в момент, когда триггер первый раз примет значение true.

 

Триггеры задаются вне блокоы описания отрядов, ограниченных словами UnitStart..UnitEnd. Они имеют общую форму:

 

DefineAiTrigger::id type parameters..

 

id – положительное целое больше 0. Используется для идентификации триггера в командах и других триггерах.

type – тип триггера. За ним следуют некоторые дополнительные параметры необходимые для определения данного типа триггеров.

 

Существуют следующие типы триггеров:

 

AFTERSTART n      

Становится true через n секунд после начала битвы.

 

ENEMY_NEAR_UNIT unitTag, d   

True если вражеский отряд находится на d метрах от любого отряда, для которого определен такой unitTag

                                                                       

ENEMY_NEAR_ANY d           

True если вражеский отряд находится на d метрах от любого отряда Вашей армии.

 

ENEMY_NEAR_POINT x y d   

True если вражеский отряд находится на d метрах от точки x,y (в единицах координатной сетки карты)

                                                                      

UNIT_ENGAGED  unitTag         

True если любой из определенных unitTag отрядов атакует.

 

ANY_UNIT_ENGAGED           

True если любой из Ваших отрядов атакует.

 

UNIT_UNDERFIRE  unitTag         

True если любой из определенных unitTag отрядов находится под обстрелом.

 

ANY_UNIT_UNDERFIRE

True если любой из Ваших отрядов находится под обстрелом.

 

ON_FIELD unitTag

True если любой из определенных unitTag отрядов находится на поле боя. Этот триггер может использоваться для определения появления подкреплений во время битвы либо, совместно с условием "NOT" определяет когда Ваш отряд уничтожен либо бежал с поля боя.

 

UNIT_ROUTING unitTag

True если любой из определенных unitTag отрядов бежит.

 

ANY_UNIT_ROUTING           

True если любой из Ваших отрядов бежит

 

GENERAL_DEAD faction

True если полководец указанной фракции убит. Указывается номер, а не имя фракции. (Порядковый номер появления фракции в файле кампании, определеямом по ссылке из файла битвы BDF, считая с нуля).

 

BREACH_MADE x y

True если была пробита брешь в область замка, содержащую точку x y. Также true если ворота в указанную область взломаны.

 

AND trigger1 trigger2

True если оба trigger1 trigger2 имеют значение true. Здесь trigger1 и trigger2 номера (ids) других триггеров. Триггеры "AND", "OR" и "NOT" могут быть использованы для построения сложных условий.

Имейте ввиду, что оба триггера должны быть истинны (true) одновременно, чтобы триггер AND принял также значение (true). Если один из триггеров примет потом значение false. AND триггер также станет false.

 

OR trigger1 trigger2

Аналогично триггеру "AND", но становится true если один из двух триггеров тоже true.

 

NOT trigger

True если указанный триггер имеет значение false. Используется для определения обратного состояния к заданному, например, если нам нужно узнать, что указанный отряд НЕ бежит с поля боя.

 

AFTERTRIGGER trigger n   

Становится true через n секунд после того как триггер trigger стал true. Этот триггер остается true далее до конца битвы. Используйте время 1 секунду, если Вы хотите чтобы триггер срабатывал тут же при срабатывании указанного триггера.

 

Команды

 

Команды определяют какие то действия армий на поле боя или приказывают АИ изменить некоторые установки. Некоторые команды выполняются однократно, после того как определенный триггер принимает значение true, другие определяют инструкции, которые остаются в силе в течении некоторого времени. Последние могут действовать с того момента как некоторый триггер первый раз приобретает значение true или быть в силе с момента начала битвы. Аналогично, они могут действовать до тех пор пока некоторый триггер не приобретет значение true или до конца битвы. После того как команда отдана, она никогда не воспроизводится снова.

 

Команды определены следующим образом:

 

AiAction::StartConditon [untilTrigger t] ActionType parameters.

 

StartConditon может принимать значения:

AtStart или

OnTrigger n

 

UnitilTrigger – опциональный параметр. .При использовании его, команда отдается когда UntilTrigger принимает значение true.

 

ActionType – это тип действия. За ним следуют несколько параметров, которые различны для разных действий.

 

Доступны следующие команды:

 

SETSTATE  state

Устанавливает общее состояние АИ армии. Может принимать значения:

Off        : АИ отключен

      MeleeOnly  : АИ не будет двигать отряды, пока враг не подойдет близко. АИ не будет менять позицию, но будет перемещать отряды чтобы защитить себя. Это значение удобно, если Вы хотите установить отряды, управляемой АИ армии определенным образом и не хотите, чтобы АИ изменил их расположение.

      ExplicitOnly : АИ будет выполнять только те действия, которые определены в ADF файле.

Full  : АИ функционирует нормально.

 

 

BATTLE_PLAN plan

Приказывает АИ использовать определенный план битвы, позволяя АИ самому определить каким образом этот план должен быть выполнен. Возможные планы баталий:

AttackMainBody : Атаковать основные силы противника

Attack  : Атаковать любые или все отряды противника

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

DefendRiver : Оборонять мосты через реку, не давая противнику переправиться.

Hide  : Двигаться и спрятаться в лесу.

Scout  : Выслать отряды для обнаружения противника.

Withdraw : Отступить всем отрядам с поля битвы.

AttackCastle : Попытаться взять замок штурмом.

DefendCastle : Оставаться в замке, обороняя его.

Skirmish : Разделить стрелков на несколько групп и попытаться окружить противника.

DoNothing : Переключиться в режим без планирования боя. Это не означает, что АИ не будет предпринимать никаких действий, а лишь то что АИ не будет действовать по определенному плану определенным образом.

 

DEFEND_LINE lx ly rx ry

Даёт АИ команду оборонять линию между точками lx ly (левый фланг обороны) и rx,ry (правый фланг обороны).

Если АИ установлен в общее состояние Full, эта инструкция будет добавлена в список того что АИ должен предпринимать (наряду с тем, что АИ сам решит делать) и отряды будут разделены для выполнения и этой задачи. В некоторых ситуациях ни один отряд не будет оборонять линию, поскольку АИ решит все их использовать для другой задачи.

Если это представляет проблему, то установите АИ в состояние "ExplicitOnly", тогда в его списке приоритетов окажутся только инструкции непосредственно определенные Вами.

 

ATTACK x y d

Приказывает АИ атаковать любую группу противника в пределах d метрах от точки (x y). Опять же, если АИ находится в состоянии Full, он может проигнорировать эту инструкцию.

 

RELEASE_UNIT unitTag

Препятствует АИ использовать заданный отряд (отряды с данным идентификатором) пока действует эта команда. Остальными отрядами АИ может продолжать распоряжаться как ему вздумается.

 

DISALLOW_OUTFLANKING

Приказывает АИ не пытаться охватить отряды игрока с флангов. Эта команда используется для того чтобы организовать лобовую атаку.

 

BRING_ON unitTag             

Заменить отряд(отряды) с определенным unitTag отрядами из подкрепления. Если 16 отрядов находятся на поле боя, то подкрепления будут вызваны так быстро как это возможно.

 

SET_RALLY_POINT x y      

Установить точку сбора отрядов в x,y. Именно туда будут подходить подкрепления.  Проведите условную линию из центра карты к краю, через точку сбора отрядов армии. Отряды из подкрепления будут появляться в точке пересечения этой линии с краем карты и будут направлены к точке сбора. Однако подкрепления могут выходить только из точки отстоящей не более 90 градусов (при взгляде от центра карты) от стороны карты принадлежащей Вашей армии.

 

Примеры

 

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

 

DefineAiTrigger::1 ENEMY_NEAR_ANY 150

AiAction::AtStart UntilTrigger 1 SETSTATE off

 

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

 

// Побежденный отряд получает номер UnitTag 1

// Подходящие подкрепления получают номер UnitTag 2

DefineAiTrigger::1 UNIT_ROUTING 1

DefineAiTrigger::2 ON_FIELD 1

DefineAiTrigger::3 NOT 2  // True если отряд не на поле боя, - например уничтожен

DefineAiTrigger::4 OR 1 3  // True если отряд бежит с поля боя или уничтожен

DefineAiTrigger::5 UNIT_ENGAGED 1 // Отряд 1 атакован

DefineAiTrigger::6 AFTERTRIGGER 5 1 // True если отряд атакован

DefineAiTrigger::7 AND 4 6  // True если отряд атакован и бежит с поля боя или уничтожен

DefineAiTrigger::8 AFTERSTART 600  // True 10 минут после старта битвы

DefineAiTrigger::99 AND 7 8  // Последнее сложное условие

AiAction::OnTrigger 99 BRING_ON 2  // Вызывает подкрепление по триггеру 99

Теперь более сложный пример: предположим Вы расположили армию АИ противника на холме с небольшой засадой на левом фланге.

 

Вы должны ожидать три варианта развития событий:

i) Игрок атакует основные силы на холме, и в этом случае засадные силы подходят на помощь обороняющимся.

ii) Игрок обходит войска АИ с левого фланга и в этом случае засада атакует, в то время как основная армия продолжает стоять на холме.

iii) Игрок обходит холм справа и в этом случае Ваша задумка не пригодна, остается включить АИ и дать ему возможность распоряжаться всеми отрядами и перестраивать их по его усмотрению.

 

// Отряды на холме получают тэг aiTag 1

// Отряды в засаде получают тэг aiTag 2

 

// Установим состояние АИ на выполнение только перечисленных ниже команд

AiAction::AtStart SETSTATE explicitOnly

 

// Определим три триггера, задающие три наших условия..

 

DefineAiTrigger::1 ENEMY_NEAR_POINT 5000 5000 100    // Враг подошел слева

DefineAiTrigger::2 ENEMY_NEAR_POINT 25000 5000 100    // Враг подошел справа

DefineAiTrigger::3 UNIT_ENGAGED  1                    // Отряды на холме (1) атакованы

 

// Установим триггер 5 true если любой из вышеопределенных триггеров тоже true. Используем это, чтобы дать АИ управлять отрядом

DefineAiTrigger::4 OR 1 2

DefineAiTrigger::5 OR 3 4

 

// Теперь команды

// Враг атакует центр

AiAction::OnTrigger 3 DEFEND_LINE 15000 5000 15000 5000        // Обороняем холм по указанной линии

AiAction::OnTrigger 3 RELEASE_UNIT 1      // Запрещаем АИ управлять отрядами на холме

 

// Враг атакует слева

AiAction::OnTrigger 1 ATTACK 5000 5000 100              // Атакуем врага слева

 

// Враг атакует справа

AiAction::OnTrigger 2 SETSTATE full      // Включаем АИ

    // Поскольку эта команда действует, до конца, то она переопределяет первоначальное состояние АИ

    // которое было выставлено в  ExplicitOnly

AiAction::OnTrigger 2 RELEASE_UNIT 1    // Фиксирует отряды на холме

 

AiAction::OnTrigger 5 RELEASE_UNIT 2      // Фиксирует отряды в засаде, ежели подобное вдруг понадобится

Изменено пользователем Engineer
Ссылка на комментарий

Engineer

Вот, глянь что у меня выходит

 

Здорово! Если я правильно понимаю, то достаточно иметь три таких шаблона для трех типов карт (small, medium, large) и вперед!

 

За перевод тоже спасибо - с англиским особых проблем неиспитываю, но руский все таки лучше... :)

Ссылка на комментарий

Горог

Здорово! Если я правильно понимаю, то достаточно иметь три таких шаблона для трех типов карт (small, medium, large) и вперед!

Да, наверное, мне как то не пришло в голову. Поскольку большинство карт medium (26 клеток по 2000 условных единиц). Лучше, наверное разметить шаблон сразу на 31 клетку и просто менять фон - подложку, подсовывая разные скриншоты карт. Сделать в Corel-е или сами будете? Там есть готовый обьект - сетка, ей можно просто задать число клеток и откалибровать единицы измерения по шаблону карты (я пока сделал на глазок - не совсем точно). Вкупе с описанием работы триггеров этого должно хватить для создания сколь угодно сложного сценария битвы. Появилась возможность хотя бы в начале боя дать АИ правильное поведение.

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

Ссылка на комментарий

Engineer

Сделать в Corel-е или сами будете?

 

Ну с Corel у меня как то неочень... Неработал с ним... :( А и начать разбиратся что и как там теперь неочень то хотца... :unsure:

Ссылка на комментарий
  • 2 недели спустя...

Очередной этап работы над историческими битвами завершен. Немного раскрываем механику дела. Сначала составляем план битвы, по историческим материалам:

post-13-1077477179.jpg

Ссылка на комментарий

Теперь вот что получилось: "оплетено бо бе место то плетнем и насовано колья".

Крепко стоят Всеволодовичи, попробуете одолеть?

post-13-1077477447.jpg

Ссылка на комментарий

И, наконец сама битва со всеми файлами. Осталось, правда, доделать баланс и поднастроить скрипты Всеволодовичам и союзникам. Может кто присоединится?

 

Переделал битву. Вот новая ссылка: http://www.twow.ru/forum/index.php?act=Att...e=post&id=41608

Изменено пользователем Engineer
Ссылка на комментарий

Вот кто бы мне ещё обьяснил почему добавление отрялдов: BoyarsFootDruzhina либо RussianTownMilitia - ВСЕГДА приводит к краху при загрузке исторической битвы?

И при этом KBoyarsFootDruzhina - никаких обломов не вызывает!!

Ссылка на комментарий

Engineer

Кул! А редактор всего этого хозяйства есть? Или только notepad? Чем ты пользуешься при создании битв (редактор скриптов, редактор карт с указанием координат)? Я может поучаствую, как разберусь с делами - есть опыт создания подобных битв в казаках. Например, я делал в казаках АИ компа при кунерсдорфе и ледовое побоище.

Ссылка на комментарий

LeChat

Engineer

Кул! А редактор всего этого хозяйства есть? Или только notepad? Чем ты пользуешься при создании битв (редактор скриптов, редактор карт с указанием координат)? Я может поучаствую, как разберусь с делами - есть опыт создания подобных битв в казаках. Например, я делал в казаках АИ компа при кунерсдорфе и ледовое побоище.

 

Ну давай подробнее.

1. Сначала я делаю карту. Это только встроеным в MTW редактрором карт. Можно взять любую карту в каталоге Medieval - Total War\Battle\Maps и отредактировать, но чтобы не испортить, лучше переименовать её и скопировать (оба файла карты: .inf и .jjm файлы) в каталог Medieval - Total War\SaveMaps, где лежат пользовательские карты. В редакторе карт можно менять высоты точек, ставить обьекты и отдельные деревья, устанавливать уровень воды, строить мосты (это обьект), и менять текстуры поверхности.

Здесь надо помнить следующее:

- объекты лучше ставить на плоской, выровненой местности, чтобы они не тонули в тектурах.

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

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

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

 

2. Теперь Вы делаете самый простой сценарий - Вы и противник, по одному отряду, с любыми координатами и создав на скорую руку файлы битвы и армий запускаете битву. Вам нужен только скриншот экрана, но не всего, а растянутой по максимуму области просмотра карты -из правого верхнего угла экрана. Сделайте это кнопкой PrintScreen на клаве и скопируйте Ваш рисунок в фотошоп. Обрежьте только превью карты и сделайте его больше и ярче и контрастнее. Ваш план битвы готов. Всё делаем в notepad-е - его вполне достаточно, см. руководство ниже...

 

3. В CorelDraw или любом другом редакторе я рисую на данной карте сетку линий из 27 линий (т.е. 26х26 клеточек) для средней карты 25(24х24 клеток) для маленькой и 32 (31х31) для большой карты. Каждая клетка имеет размер почти точно 2100 координатных единиц в файле армии. Теперь я ВИЖУ всю карту и могу по координатам расставить все армии. Крайние три клетки карты недоступны - туда выводятся подкрепления. Они маршируют не быстро и Вы можете задержать их, поставив в точку 0,0, например.

 

4. Последняя картинка сделана уже после старта новой кампании с уже раставлеными армиями - "для понта" (Кто-нибудь знает, эта фраза имеет отношение к Понту Эвксинскому? :huh::) ). Мы видим на сетке куда и как попали расставленые армии, каждая из которых окрашена фракционным цветом. Картинки флагов в BIF-файлах можно и не делать для каждой из битв - они будут взяты от фракции из основной игры.

 

Здесь лежит подробнейшее руководство о том как делать сценарии битв и как писать скрипты действия армий:

http://www.twow.ru/forum/index.php?act=Att...e=post&id=39720

 

Я уже со многим разобрался и смогу помогать энтузиастам. Так кто-нибудь сделает мне кампании к нашему моду!!!???

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

 

Если хотите участвовать -прочтите эту тему от начала и до конца - мы тут много уже нарыли. Почти всё я включил в руководство.

Ссылка на комментарий

LeChat

Например, я делал в казаках АИ компа при кунерсдорфе и ледовое побоище.

 

Попробуешь повторить? Или может всю кампанию Александра Невского из трёх битв? Было бы здорово сделать десяток-другой битв на базе нашего нового мода 1.1 Там вполне богатый набор тактик и юнитов получается, если ещё со скриптами АИ помучаться, - выйдет шикарно!

 

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

 

1. Название битвы; краткое описание; описание условий достижения победы.

2. План битвы; тип местности; сезон года; погода; карта местности

3. Названия враждующих сторон; флаг для отряда игрока; имена полководцев

 

Для армий:

1. Число армий сторон (по 12 отрядов в каждой), большее число может быть оформлено как выход из подкрепления второй армии.

2. Имена генералов каждого из отрядов (не обязательно)

3. Имена командирова армий; его личный валор; число "звёзд" - ранг генерала(0-9); тип генеральского отряда и его валор;

4. Параметры отрядов: тип юнита; +брони(0-4); +оружия(0-4); валор (0-16); число людей в отряде (1-200); степень усталости (лимит - от свежих - до измотаных полностью); число колонн - по фронту построения юнита и тип построения; модель поведения отряда для АИ; время задержки при выводе отряда из подкреплений в секундах.

 

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

 

Может кто ещё поможет с историческим материалом и картами?

Ссылка на комментарий

Engineer

Посмотрим. Может сделаю. Но пока времени не хватает даже на калькулятор. Тем более нет автоматизированного средства создания скриптов, как, например, в казаках или Empire earth. Т.е. не вижу важнейших команд - принудительно заставить сдаться, перекрасить юниты, открыть огонь по зоне, атаковать конкретный юнит. В казаках создавались зоны, и можно было наносить по ним удары. Тут пока не разобрался как такие вещи реализовать. Как, например, принудительно внезапно уменьшить мораль одной из сторон?

Но в медивале есть свои фичи, например, план битвы.

В таком случае достаточно универсальная стратегия выделить конных скримишей и сделать план битвы скримиш, а остальных деактивировать. Когда первые твои конные скримиши побегут (а это значит, что враг спутал порядки и начал преследование), можно активировать остальные войска и наносить ими удар по основной группировке противника. ИМХО достаточно универсальная тактика для равнинной местности без мостов и засад.

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

Ссылка на комментарий

Я все немножко иначе и не так круто как Engineer делал - без всяких фотошопоф и corel но получалось нормально... :) Но это уже как кому удобней и привичней.

 

Было бы здорово сделать десяток-другой битв на базе нашего нового мода 1.1

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

Пока что понемножку, как время выпадает, делаю наметки битвы у Синих Вод.

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

Ссылка на комментарий

LeChat

не вижу важнейших команд - принудительно заставить сдаться

Да, нельзя.

перекрасить юниты

А это ещё что такое?

открыть огонь по зоне

это зависит от типа юнита, если стрелковый, то огонь, а если нет, то

атаковать конкретный юнит.

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

Как, например, принудительно внезапно уменьшить мораль одной из сторон?

Нельзя.

в медивале есть свои фичи, например, план битвы

Только задания для АИ - как их выполнять он сам решит - вполне разумно?!

В таком случае достаточно универсальная стратегия выделить конных скримишей и сделать план битвы скримиш, а остальных деактивировать. Когда первые твои конные скримиши побегут (а это значит, что враг спутал порядки и начал преследование), можно активировать остальные войска и наносить ими удар по основной группировке противника. ИМХО достаточно универсальная тактика для равнинной местности без мостов и засад.

Можно, но я бы сделал сложнее. Разделил войска на основную армию, подкрепления и резерв за линией фронта, скрипты им прописал бы разные. Если нужно сложнее, то разделил бы на три армии - полк левой руки, полк правой руки, центр и резерв с разными задачами. При невыполнении задач обязательно отпустить АИ полка - пусть сам бьётся, как знает.

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

Конечно! Но не игроку, а его союзникам - такие же как и врагам.

 

Горог

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

А у тебя есть доступ к WorkPlace, там твои жмудины и лежат, бери и делай - имена утверждены. Ну или Chernishа спроси ещё.

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

Ну хоть Грюнвальд доделаешь? Надо бы, - красиво выходит, только теперь скрипты заставь сделать поисторичнее! Кто когда атакует и способ действий на поле боя воспроизведи.

Ссылка на комментарий

Engineer

А у тебя есть доступ к WorkPlace, там твои жмудины и лежат, бери и делай - имена утверждены.

 

:blink:

Никогда незнал что такое для меня имеется... И никде никакого Workplace у меня невидно...

 

Хотя ладно...

 

Ну хоть Грюнвальд доделаешь?

 

Вот наверно вопервых этим и займуся...

Ссылка на комментарий

Горог

Никогда незнал что такое для меня имеется... И никде никакого Workplace у меня невидно...

 

Хотя ладно...

Если не видишь его рядом с этим форумом по моддингу - напиши Межику или Слипу, - да в принципе, любому из админов. Попроси дать тебе доступ в приват для работы над модом и всё.

Ссылка на комментарий

Engineer

Цитата 

перекрасить юниты

 

А это ещё что такое?

Чтобы юниты сдавались и переходили с одной стороны на другую в ходе боя.

 

открыть огонь по зоне

 

это зависит от типа юнита, если стрелковый, то огонь, а если нет, то

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

 

в медивале есть свои фичи, например, план битвы

 

Только задания для АИ - как их выполнять он сам решит - вполне разумно?!

Пока не пробовал. Голословно говорить не буду.

 

Можно, но я бы сделал сложнее. Разделил войска на основную армию, подкрепления и резерв за линией фронта, скрипты им прописал бы разные. Если нужно сложнее, то разделил бы на три армии - полк левой руки, полк правой руки, центр и резерв с разными задачами. При невыполнении задач обязательно отпустить АИ полка - пусть сам бьётся, как знает.

Если руки дойдут, так и попробую сделать. Но это для конкретных битв. Например, дать в невской битве игроку управление сторожами, передовым полком и челом. А фланги и засаду дать компу. И игрок должен продержаться и измотать рыцарей. То же с куликовской битвой.

Ссылка на комментарий

LeChat

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

В куликовской битве да, а в Невской - какая такая засада?

 

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

Это можно. Можно вывести из под контроля АИ все юниты, кроме стрелковых на необходимое время, потом бросить их в бой, когда стрелковые отработают или будут разбиты.

Ссылка на комментарий
В куликовской битве да, а в Невской - какая такая засада?

Есть мнение, что рыцари бы не сунулись в центр, если бы видели тяжелую кавалерию на флангах. Типа кавалерия на флангах была укрыта от атакующих за передовым полком. В этом случае ее можно вполне назвать засадой, правда в чистом поле :)

Ссылка на комментарий

2 Engineer

Я начал делать визард триггеров, чтобы немножко упростить создание логики боя. Вчера за вечер накидал примерно работу с триггерам, добавлю действия и если не будет лень, расположение войск на карте. Посмотри, стоит ли это делать. Может что присоветуешь. Файл занимает 220 кб в zip и не помещается в аттач. Если интересно, кинь в приват мыло, я тебе на него отправлю.

Ссылка на комментарий

LeChat

Я начал делать визард триггеров, чтобы немножко упростить создание логики боя. Вчера за вечер накидал примерно работу с триггерам, добавлю действия и если не будет лень, расположение войск на карте. Посмотри, стоит ли это делать. Может что присоветуешь. Файл занимает 220 кб в zip и не помещается в аттач. Если интересно, кинь в приват мыло, я тебе на него отправлю.

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

 

Там баги некоторые вскрылись, например, команда исключить несколько отрядов из под контроля АИ на определенное время у меня не действует почему то - валится в винды при загрузке. А отключить АИ всей армии, - это совсем не то, так что команда то ключевая выходит! Буду разбираться и тестить дальше...

 

А битва, карта и материалы по истории, если готовы - высылай, опубликую. Я вроде могу делать аттачи здесь до 1 Мб.

Изменено пользователем Engineer
Ссылка на комментарий

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

Если я правильно понял, на старте если хочу отключить АИ (то есть сделать так чтоб ни один юнит нешевельнулся) хватит прописать вот это?

DefineAiTrigger::1 ENEMY_NEAR_ANY 150

AiAction::AtStart UntilTrigger 1 SETSTATE off

 

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

 

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

 

Круто тут как то для меня все выглядит... :(

Ссылка на комментарий

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

×
×
  • Создать...

Важная информация

Политика конфиденциальности Политика конфиденциальности.