Сообщество Империал: Пересмотр меток персонажей (улучшение скриптовых возможностей MTW2) - Моддинг Medieval 2: Total War - Medieval 2: Total War - Библиотека - Сообщество Империал




Imperial
Сообщество ИмпериалБиблиотека Medieval 2: Total War Моддинг Medieval 2: Total War Пересмотр меток персонажей (улучшение скриптовых возможностей MTW2) Важный Контент

Информация об авторе

youneuoy
  • Автор: youneuoy

Информация по статье

  • Добавлено: 10 Май 2020, 06:51
  • Просмотры: 168

Последние Статьи

  New Teuton_v4.4 - part 2

New Teuton_v4.4 - part 2SamaelBC · Вчера, 14:59

  New Teuton_v4.4 - part 1

New Teuton_v4.4 - part 1SamaelBC · Вчера, 14:53

  Rise of Alexander 2020. Что ждёт в будущем

Rise of Alexander 2020. Что ждёт в будущемCount Bagatur RF · 14 Май 2020, 12:19

  [AAR] Конец и начало - Эпилог

[AAR] Конец и начало - ЭпилогAge of Kings · 13 Май 2020, 16:49

  [AAR] Конец и начало - Часть 4

[AAR] Конец и начало - Часть 4Age of Kings · 11 Май 2020, 10:19

  [AAR] Конец и начало - Часть 3

[AAR] Конец и начало - Часть 3Age of Kings · 10 Май 2020, 17:34

  [AAR] Конец и начало - Часть 2

[AAR] Конец и начало - Часть 2Age of Kings · 09 Май 2020, 15:00

  [AAR] Конец и начало - Часть 1

[AAR] Конец и начало - Часть 1Age of Kings · 09 Май 2020, 14:58

  Viking - Battle for Asgard. Кровь и пламя.

Viking - Battle for Asgard. Кровь и пламя.Count Bagatur RF · 30 Апр 2020, 16:05

  Вышел мод Rise of Alexander 2020. Альфа-версия.

Вышел мод Rise of Alexander 2020. Альфа-версия.Count Bagatur RF · 25 Апр 2020, 12:13

  Дневники разработчиков Gears Tactics

Дневники разработчиков Gears TacticsCandramelekh · 20 Апр 2020, 17:45

Пересмотр меток персонажей (улучшение скриптовых возможностей MTW2)

Описание: Скрипты для MTW2, использующие MTW2 Engine Overhaul Project
Использование функций M2TW Engine Overhaul Project, связанных с метками персонажей


Imperial

Для начала рекомендую ознакомиться с инструкцией к программе и её возможностями на этой странице.



Перевод статьи, написанной Jadliна твцентре.
оригинал


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

Пересмотр меток персонажей(улучшение скриптовых возможностей)

M2TW Engine Overhaul Project v1.16

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

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

Возможность назначать метки любым персонажам в любое время - это то, что позволит упростить(и улучшить) всё это, а также позволит создавать совершенно новые вещи при помощи скриптов. И это именно то, что делает обновление 1.16 для M2TW Engine Overhaul Project!

1. Настройка вашего cfg файла
Первый шаг - загрузить программу и распаковать её файлы в свой мод. Основные настройки задаются в файле "limits.youneuoycfg". Тем не менее, для того, чтобы настроить метки вам нужно перейти в папку youneuoy_Data, где вы можете найти "labels.youneuoycfg" и "labels_immutable.youneuoycfg". Именно с этими двумя файлами мы и будем работать.
(логи для каждого файла вы сможете найти в папке logs)

В "labels.youneuoycfg" вы можете настроить свои новые драгоценные метки и, что более важно условия для их назначения.
Основная структура:

Спойлер (раскрыть)


Имя метки состоит из трёх строк.
  • Первая всегда одинакова, это "label:". Это начало новой секции для метки.
  • Вторая строка определяет как метка будет отображаться в логе.
  • Третья и самая важная строка - кодовое название метки. Оно которое будет записано в метку персонажа. Это должно быть одно слово.

Это может выглядеть примерно так:

Спойлер (раскрыть)


Приоритет сообщает программе какая метка более важна. Новая метка перезаписывает старую метку, поэтому наверняка у вас будут более важные метки, которые вы не захотите перезаписывать менее важными. Или например у вас может быть набор меток и вам нужно, чтобы персонаж сначала получил первую, только после этого вторую и т.д.
Приоритет каждой метки задаётся простым числом. Чем больше число тем выше приоритет.
Пример:

Спойлер (раскрыть)



Если условия выполняются для обоих меток, то персонаж получит my_new_precious_label, так как у неё приоритет выше, чем у my_new_precious_label_2.

Следующая строка - количество условий, которые должны выполниться. Также как и приоритет задаётся одним числом. Если нужно, чтобы метка выдавалась, если истинно одно условие, пишите 1, если 2 то 2, если 3 то 3 и т.д.
Пример:

Спойлер (раскрыть)


Давайте подробно разберём условия, важнейшую часть. Каждое условие состоит из трёх строк.
Первая - тип условия, может быть:
"passed_Turns" - количество ходов с начала игры
"name" - имя персонажа
"trait" - трейт, который должен быть у персонажа. Вы не можете задавать уровень трейта. То есть условие будет истинным для любого уровня трейта(если он больше 0).
"ancillary" - свита, которую персонаж должен иметь
"label" - метка, которую персонаж должен иметь(она перезапишется новой меткой)
"4_coords" - это исключение и занимает целых 6 строк. Этим вы задаёте координаты, в которых должен находиться персонаж, чтобы условие было истиной.

Вторая строка это число и оно может принимать всего 3 значения, определяющих важность условия.
0 - это значит, что условие не обязательно
1 - условие обязательно
2 - условие не должно быть исполнено

Третья строка это кодовое название для поиска, в зависимости от типа условия. То есть вы можете написать имя персонажа, название трейта, свиты или метки. Для 4_coords вы должны написать координаты x и y в 4 строках в таком порядке: xmin, ymin, xmax, ymax.(вы можете задать одинаковые min и max, чтобы проверить 1 клетку).

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

Спойлер (раскрыть)


Итак, если у персонажа метка new_precious_label_2 и он находится на координатах x 77, y 111 он получит метку my_new_precious_label

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

Спойлер (раскрыть)


Теперь у нас 3 условия. количество условий, которые должны выполниться - 2, так что только 2 условия должны быть истинными. Поскольку "label" имеет значение 1, а оба ancillary имеют значения 0, это значит, что для того, чтобы персонаж получил метку my_new_precious_label у него должна быть метка my_new_precious_label_2 и щит ИЛИ меч в свите.

Также мы можем задать условия, которые не должны выполняться, вот так:

Спойлер (раскрыть)


Вообщем это тоже самое, что и предыдущий вариант. Однако, если у персонажа есть любой уровень трейта "too_old", то он не получит метку my_new_precious_label.

Теперь вы должны знать все возможности файла.

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

В другом файле "tags_immutable.youneuoycfg" вы просто пишете метки, которые не могут быть перезаписаны другими вашими новыми метками. Зачем? Что ж, например, если у вас есть некоторые существующие метки, которые уже являются частью различных скриптов, событий и т. д., и вы не хотите их переопределять - просто напишите по одному на каждую строку.

Существует видео от youneuoy, охватывающее большую часть этого:
Спойлер (раскрыть)



2. Настройка campaign_script

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

Есть одно большое но, о котором вы должны знать. Несмотря на то, что многочисленные персонажи теперь могут использовать одну и ту же метку, игра всегда будет рассматривать только одного из них. Так что если у вас будет 10 персонажей, которых вы хотите убить (потому что они получили метку, основанную на вашем триггере), и вы напишите «console_command kill_character my_new_precious_label», он убьет только первого.

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

Если в ваш скрипт (или если вы просто открываете консольную панель в игре) напишите это:
"give_trait my_new_precious_label try_change_this_label"
Это сотрет метку! Таким образом, после того, как вы выполните действия с одним персонажем, вы должны написать это, чтобы его my_new_precious_label стёрся, и его можно было использовать для другого персонажа с такой меткой.
Наглядный пример в другом видео от youneuoy:
Спойлер (раскрыть)


Кроме того, вы также можете использовать это:
"give_trait my_new_precious_label try_change_this_label_to:newlabel"
Это изменит метку существующего персонажа с меткой my_new_precious_label (все еще первого в списке) на новую метку, названную «newlabel». В некоторых случаях это может частично заменить файл cfg.

Обе эти команды будут сообщать об ошибке, что персонаж с этой меткой не существует, но все в порядке. Скрипты все равно будут работать нормально.

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

Спойлер (раскрыть)



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


Итак, давайте попробуем сделать осмысленный скрипт. Я думаю, что было бы лучше избегать «обычных» типов monitor_events, которые срабатывают в начале / конце хода, так как я предполагаю, что они могут сработать только один раз, даже если у вас будет больше помеченных персонажей. Хотя у меня не было времени, чтобы протестировать его должным образом, я полагаю, что это может сработать, если написано грамотно.

Поэтому нам лучше использовать monitor_events, которые запускаются, когда мы делаем или нажимаем на что-то. Некоторые примеры, которые я могу придумать:

Спойлер (раскрыть)


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

или что-то вроде этого:

Спойлер (раскрыть)

или вроде этого:

Спойлер (раскрыть)

или вот так:
(конечно, при условии, что у вас будет хороший триггер для получения метки traitor )

Спойлер (раскрыть)

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


3. Реализация в вашем моде - примеры

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

Некоторые собственные примеры мне удалось в короткие сроки реализовать в моём моде TES mod.

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

cfg часть:

Спойлер (раскрыть)

скриптовая часть:

Спойлер (раскрыть)


Это настоящий крафт в реальном времени!


И давайте приведём некоторые новые способы мучить ваши машины

cfg часть:


Спойлер (раскрыть)

скриптовая часть:

Спойлер (раскрыть)

(да, это мог быть просто скрипт, использующий "try_change_this_label_to:testestlabel2", но я сделал это до того, как такая команда появилась, так что, по крайней мере, еще несколько примеров того, как это может выглядеть, чтобы помочь вам ...

Поделитесь своими примерами или идеями, как это использовать здесь!


    ИмпериалИмпериал
    Воспользуйтесь одной из соц-сетей для входа:
    [ Регистрация ]Для скрытия рекламы, зарегистрируйтесь на форуме[ Вход на форум
    Сообщество ИмпериалБиблиотека Medieval 2: Total War Моддинг Medieval 2: Total War Пересмотр меток персонажей (улучшение скриптовых возможностей MTW2)
    Письмо Админу Обратная Связь
    © 2020 «Империал» · Условия использования · Ответственность · Визитка Сообщества · 06 Июн 2020, 00:43 · Счётчики