Голосование

Как вы оцениваете Смуту?












Оформление



Пользователей
  • Всего: 28868
  • Последний: Nedil
Сейчас на форуме
Пользователи: 0
Гостей: 298
Всего: 298

0 Пользователей и 1 Гость просматривают эту тему.

Тема: Справочник по Модульной Системе  (Прочитано 20278 раз)

  • Сообщений: 2562
  • За регистрацию на форуме не позже декабря 2016 года и не менее 2500 постов
    • Просмотр профиля
    • Портфолио

Тема рабочая, так что будет пополнятся и исправляться. Если у вас возникают вопросы по модульнуй системе спрашивайте в разделе "вопросов и ответов"http://rusmnb.ru/index.php?board=106.0 в соответствующих прикреплённых темах которые наиболее близко подходят к сути вашего вопроса.
В данной теме принимаются сообщения о ошибках в справочнике(кроме грамматических)





СПРАВОЧНИК НЕ ЗАВЕРШЕН. ПО МЕРЕ ВОЗМОЖНОСТИ БУДЕТ ОБНОВЛЯТЬСЯ.

header_operations взят за основу из работы Law





header_operations.py


Операции по работе с глобальной картой
Операции блоков и циклов.
Операции установок и статистики
Операции с фракциями
Операции для работы с партиями

Операции по работе с Итемом.
« Последнее редактирование: 26 Ноября, 2012, 07:58 от HunterWolf »
  • Сообщений: 2562
  • За регистрацию на форуме не позже декабря 2016 года и не менее 2500 постов
    • Просмотр профиля
    • Портфолио
Операции для работы с Troops (бот)
Математические операции , дополнение.
Примечание: - в МС отсутствует работа с дробными числами.




« Последнее редактирование: 05 Августа, 2012, 12:03 от Легионер »
  • Сообщений: 2562
  • За регистрацию на форуме не позже декабря 2016 года и не менее 2500 постов
    • Просмотр профиля
    • Портфолио
Операции по работе с квестами



Операции для работы с звуком, музыкой.



Операции для работы с клавиатурой , мышью
« Последнее редактирование: 26 Июня, 2012, 16:02 от Легионер »
  • Сообщений: 3008
  • За регистрацию на форуме не позже декабря 2011 года и не менее 3000 постов
    • Просмотр профиля
header_scene_props.py

Файл декларирует "флаги", придуманные для работы с объектами сцен. Ничего не меняйте в этом файле и не обращайте внимания на конструкции, где нет приставки sokf_.

sokf_type_container   Превращает объект сцены в сундук.
sokf_type_ai_limiter   Превращает объект сцены в препятствие для всех агентов, кроме пешего игрока. Пеший игрок может проходить сквозь такой объект независимо от наличия у объекта "физического тела" (body mesh).
sokf_type_barrier   Превращает объект сцены в препятствие для всех агентов.
sokf_type_barrier_leave   Превращает объект в препятствие для всех агентов, с помощью которого игрок может покинуть данную сцену. При приближении к такому объекту появляется надпись "Leave area" (покинуть местность).
sokf_type_ladder   Превращает объект сцены в лестницу с возможностью подниматься по ней под очень крутым углом. Точный градус не скажу, под текстом для пояснения привожу скриншот, где центральная колонна имеет минимально необходимый угол наклона.
sokf_type_barrier3d  бессмысленный флаг, хотя и рабочий. Превращает объект сцены в препятствие для всех агентов. Объекты с таким флагом по сути в игре не используются.
sokf_type_mask  Не используется.
sokf_add_fire  Не используется. Огонь добавляется триггерами в файле scene_props.py
sokf_add_smoke  Не используется. Дым добавляется триггерами в файле scene_props.py
sokf_add_light  Не используется. Свет добавляется триггерами в файле scene_props.py
sokf_show_hit_point_bar  Указывает, что у разрушаемого объекта должна отображаться строка состояния (индикатор степени разрушенности).
sokf_place_at_origin  Объект с таким флагом при загрузке сцены всегда будет оказываться у правого башмака ГГ.
sokf_dynamic   Не используется.
sokf_invisible   Делает объект невидимым (если не активирован режим редактирования).
sokf_destructible   Присваивается разрушаемым объектам, помимо него нужен триггер в файле scene_props.py (он определяет запас прочности, фиксирует удар, обеспечивает результат разрушения), примечательно, что без этого флага триггер будет фиксировать нулевой урон и разрушение никогда не произойдёт.
sokf_moveable   Присваивается объектам, которые можно с помощью скриптов перемещать (анимировать) на сцене. Замена в строке disable_moveable_flag_optimization = 0 файла module.ini нуля на единицу позволяет обходиться без применения данного флага. Есть мнение, что такой подход увеличивает требовательность игры к системным ресурсам компьютера.
sokf_face_player   Заставляет объект сцены всегда поворачиваться лицевой стороной к игроку, в нативе применяется для флагов (баннеров).
sokf_dynamic_physics   Заставляет объект сцены реагировать на удары и в результате падать, скакать, сползать. Поведение такого объекта выглядит нереалистично и с привычной нам физикой имеет мало общего.
sokf_missiles_not_attached   Не используется. Предполагается для указания, что достигшие объекта стрелы и т.п. не должны в нём оставаться.

« Последнее редактирование: 01 Апреля, 2012, 18:42 от Dargor »
  • Сообщений: 2878
    • Просмотр профиля
Операции для работы с мультиплеером

немного отпишусь...
« Последнее редактирование: 28 Апреля, 2012, 23:06 от Легионер »
Мечтаю о RPG, в которой смогу отыграть роль мага-дровосека, промышляющего разбоем.

Запомни, воин: если руки у тебя растут из жопы, имеет смысл повернуться к врагу спиной!

А вы никогда не задумывались, что вся херня в нашем мире происходит в том числе и потому, что живые перестали бояться мёртвых?
  • Сообщений: 2562
  • За регистрацию на форуме не позже декабря 2016 года и не менее 2500 постов
    • Просмотр профиля
    • Портфолио
Пояснение понятия Слот.

(автор Dargor, )

« Последнее редактирование: 20 Июля, 2012, 13:06 от Dargor »
  • Сообщений: 2562
  • За регистрацию на форуме не позже декабря 2016 года и не менее 2500 постов
    • Просмотр профиля
    • Портфолио
Операции для работы с строковыми регистрами.(стринг)

Строковые регистры(s0, s1,..) , в отличии от простых регистров (reg0, reg1, reg2,...), которые хранят числовое значение, позволяют хранить буквенные символы - текст, для вывода его на экран. Текст можно хранить в файле module_strings.py, и затем с помощью операции помещать его в строковой регистр. например в файле module_strings.py первая запись - ("no_string", "NO STRING!"),
"no_string" -идентификатор (имя) стринга.
"NO STRING!" - Сам текст.
для того чтобы использовать текст сделаем следующее -

(str_clear, s0),                                                        # Сотрем текст который может быть сохранен от предыдущего использования  s0.
(str_store_string, s0, "str_no_string"),                       # Запишем в s0 текст который хранится под идентификатором no_string

Можно пойти другим путем, без помещения текста в файл module_strings.py
(str_clear, s0),                                                        # Сотрем текст который может быть сохранен от предыдущего использования  s0.
(str_store_string, s0, "@ NO STRING! "),                    # В данном случае мы ввели текст непосредственно в самой операции. использование значка @
                                                                                  перед текстом является обязательным.
Работая с строковыми регистрами мы можем комбинировать несколько записей в одну в зависимости от обстоятельств. Например нам нужно вывести имя партии с которой происходит встреча игрока для ввода его в определенную строку, а поскольку оно нам не известно можно сделать таким образом.

(str_clear, s0),                                                        # Сотрем текст который может быть сохранен от предыдущего использования  s0.
(str_store_party_name, s0, "$current_town"),            # Запишем имя партии которая идентификатор которой находится в $current_town
                                                                                "$current_town" - глобальная переменная в которой ID города с которым происходит встреча
                                                                                  партии игрока.
(str_clear, s1),                                                        # Сотрем текст который может быть сохранен от предыдущего использования  s1.   
(str_store_string, s1, "@ You rode into in the gate of {s0} "),   # В этом случае у нас будет динамически выводится имя города
 



 
« Последнее редактирование: 26 Июня, 2012, 16:03 от Легионер »
  • Сообщений: 7578
  • За наиболее важные для развития сайта идеи За особо выдающиеся авторские тексты За регистрацию на форуме не позже декабря 2011 года и не менее 3000 постов И создали они сайт... Призер конкурса Футболка по версии Всадников
    • Просмотр профиля
Существует немало весьма полезных тем и туториалов, которые помогают на начальном этапе изучения модульной системы и учат, как можно с ее помощью изменять любые детали Mount&Blade Warband, но мне так и не удалось найти ни одной, которая бы досконально объясняла все самые основы и азы операций и их синтаксиса, используемого в модульной системе. Вместо этого существует множество небольших одиночных тем-вопросов в разделе "Вопросов и ответов", которые помогают начинающим кодерам и модульщикам разобраться в принципах работы модульной системы. Итак, я, как, без сомнения, наиболее опытный и умелый член этого сообщества, который лучше всех сумееет точно, понятно и толково разъяснить основы синтаксиса модульной системы, решил, что не будет хуже, если я попытаюсь.

ОСНОВЫ
Список всех существующих операций и команд, которые могут быть использованы, содержится в файле header_operations.py. Каждая команда сопровождается комментарием (отмеченным символом #), в котором прописаны все аргументы данной операции, и возможно — краткое описание и подсказки по использованию. Каждая операция модульной системы имеет следующий вид:
1. Операция заключена в круглые скобки: (operation)
2. Сразу после операции должна стоять запятая: (operation),
3. Аргументы пишутся внутри скобок сразу после названия самой операции в строго заданном порядке и разделяются запятыми: (operation, argument, argument),

Помимо этого, в header_operations каждой операции присвоен ее собственный номер. Например, call_script = 1. Когда игра выдает сообщения об ошибке, они имеют вид SCRIPT ERROR ON OPCODE ##: …  (Здесь и далее # - целое число. Прим. пер.) Номер OPCODE соответствует номеру операции в header_operations. Таким образом, если у ошибки OPCODE 1, то можно понять, что ошибка произошла при попытке вызвать операцию call_script.

Вообще все элементы, содержащиеся в любом файле МС, строго пронумерованы по порядку. Нумерация начинается с 0, и каждый следующий элемент имеет номер на 1 больше, чем предыдущий. Таким образом классы, предметы, триггеры, сцены и т. д., после компиляции  МС в игровые текстовые файлы, сортируются по их этим самым номерам. Итак, если вы видите, что ошибка в “ trigger 0” -  значит, имеется в виду первый триггер в соответствующем файле, и если ошибка в 4-ой строке, искать нужно 5-ю операцию в этом триггере.

Переменные

Приставки

Module_scripts, скрипты, параметры, аргументы и т. д.



ТЕРМИНОЛОГИЯ

«Класс» и «Агент» (Troop vs Agent)

Партии и Шаблоны Партий (Parties and Party Templates)

Слоты



УСЛОВИЯ И ЦИКЛЫ

Необходимо упомянуть, что игровой движок в любой конструкции “Если-Тогда” воспринимает любую операцию проверки условия как “ЕСЛИ”, и весь код, который следует за ней — как “ТОГДА”. Так как код выполняется построчно, то если его выполнение прервется при первом же неверном условии, то вообще весь последующий код не будет выполнен.
Поэтому для изоляции конструкций “Если-Тогда”, чтобы код мог нормально выполняться и прерывание его выполнения на одном неверном условии не значило прекращение выполнения вообще, используются так называемые “try-блоки”, использующие операции (try_begin), (else_try), и (try_end), Подробнее о использовании try-блоков ниже.

Операции - условия

Управляющие операции

Логические операторы И и ИЛИ

Конструкция Если-Тогда-Иначе

Циклы

Выходы из цикла



ДРУГИЕ ТЕМЫ

Триггеры

Диалоги
« Последнее редактирование: 09 Июля, 2012, 19:32 от HunterWolf »
Моя конфигурация:
Нормальная, мне хватает.
  • Сообщений: 2562
  • За регистрацию на форуме не позже декабря 2016 года и не менее 2500 постов
    • Просмотр профиля
    • Портфолио
Операции для работы с позициями.

Позиция (pos) - вид регистра позволяющий хранить x, y, z, координаты. используется для определения координат в сценах, в презентациях для определения расположения и размера контейнеров( блоков текста изображения из которых состоит) и для глобальной карты.
для сцен, для объектов сцены( агенты, сцен_пропсы) -

y ось, - вперед (положительное число)/назад(отрицательное число) по ходу движения агента 
x ось - вправо(положительное число/влево(отрицательное число) по ходу движения агента
z ось - вверх (положительное число)/ низ (отрицательное число) относительно положения земли в сцене.

Для презентаций -
х ось - справо налево.
у ось - снизу вверх.
нулевая отметка нижний левый угол. ( не уверен)

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


Операции для работы с агентом

Агент (agent ) - Субъект сцены. к агентам относятся  - мертвые, живые, раненые юниты, игрок , а также итем
лошадь, котарая может являться отдельным агентом сцены.



не завершено.....






« Последнее редактирование: 26 Ноября, 2012, 00:05 от Легионер »
  • Сообщений: 2562
  • За регистрацию на форуме не позже декабря 2016 года и не менее 2500 постов
    • Просмотр профиля
    • Портфолио
Бесценная работа Rongar,  по модификаторам.
header_item_modifiers.py

http://rusmnb.ru/index.php?topic=12300.msg468005#msg468005
« Последнее редактирование: 26 Ноября, 2012, 00:23 от Легионер »
  • Сообщений: 3008
  • За регистрацию на форуме не позже декабря 2011 года и не менее 3000 постов
    • Просмотр профиля
« Последнее редактирование: 26 Ноября, 2012, 00:07 от Легионер »
  • Сообщений: 2562
  • За регистрацию на форуме не позже декабря 2016 года и не менее 2500 постов
    • Просмотр профиля
    • Портфолио
« Последнее редактирование: 26 Ноября, 2012, 00:08 от Легионер »
  • Сообщений: 870
    • Просмотр профиля
« Последнее редактирование: 26 Ноября, 2012, 00:08 от Легионер »
  • Сообщений: 2562
  • За регистрацию на форуме не позже декабря 2016 года и не менее 2500 постов
    • Просмотр профиля
    • Портфолио
header_triggers.py

могу только догадыватся -
ti_question_answered     
ti_server_player_joined 
ti_on_multiplayer_mission_end
ti_on_player_exit       
 Trigger Param 1: player_id
ti_on_item_picked_up     = -53.0 #can only be used in module_mission_templates triggers
# Trigger Param 1: agent id
# Trigger Param 2: item id
# Trigger Param 3: scene prop id (will be deleted after this trigger)
ti_on_item_dropped       = -54.0 #can only be used in module_mission_templates triggers
# Trigger Param 1: agent id
# Trigger Param 2: item id
# Trigger Param 3: scene prop id
ti_on_order_issued                 = -71.0 #can only be used in module_mission_templates triggers
# Trigger Param 1: order no
# Trigger Param 2: agent id
  • Сообщений: 350
  • За создание технических проектов различного характера
    • Просмотр профиля
могу только догадыватся -
ti_question_answered
Отслеживает выполнение операции question_box
В нативе срабатывает в module_mission_templates в момент выбора "да" или "нет" после нажатия клавиши "Tab" когда игрок пытается досрочно выйти из боя.
trigger param: answer 0 or 1 (по умолчанию 0=да, 1=нет, хотя в question_box могут быть заданы любые строки для отображения вариантов ответа)
 

Добавлено: 05 Ноября, 2012, 13:33

Дополнение по get_party_ai_current_behavior
На самом деле эта операция запишет в переменную именно текущее поведение партии.
Дело в том, что партии на карте могут менять своё поведение по ситуации. Например патрулирующие бандиты начинают преследовать крестьян, при этом их основное поведение не меняется (проверено опытным путём: behavior преследующей крестьян партии бандитов остаётся неизменным patrol_location, тогда как current_behavior становится track_party).
Судя по всему это происходит на уровне движка и редактированию не поддаётся, т.к. не существует операции  set_party_ai_current_behavior.
Так что могу предположить, что behavior и current_behavior это разные захардконенные слоты партии, с разными значениями.

 

Добавлено: 05 Ноября, 2012, 13:50

Тоже самое касается и get_party_ai_current_object

Поправьте, если не прав.
Могу только предположить, что current_object и current_behavior назначаются движком в зависимости от aggressiveness и courage самой партии и bandit_attraction, carry_goods и carry_gold находящийся рядом партии (ну силы этих партий естественно), но точного алгоритма расчёта лично я не знаю.

Дополнение по party_force_add_members
Как выяснилось обычная party_add_members тоже игнорирует лимит партии
party_force_add_members Добавит юнитов к партии только при условии, что в партии нет ни одного такого же юнита.
« Последнее редактирование: 06 Ноября, 2012, 16:26 от uhanich »
  • Фракция: Наемники
  • Сообщений: 2562
  • За регистрацию на форуме не позже декабря 2016 года и не менее 2500 постов
    • Просмотр профиля
    • Портфолио
  • Сообщений: 7578
  • За наиболее важные для развития сайта идеи За особо выдающиеся авторские тексты За регистрацию на форуме не позже декабря 2011 года и не менее 3000 постов И создали они сайт... Призер конкурса Футболка по версии Всадников
    • Просмотр профиля
0
« Ответ #16 : 26 Ноября, 2012, 07:52 »
Ещё резерв
Моя конфигурация:
Нормальная, мне хватает.
  • Сообщений: 1697
  • За особо выдающиеся авторские тексты За активную деятельность, связанную с публикациями и помощью другим посетителям
    • Просмотр профиля
+3
« Ответ #17 : 30 Сентября, 2014, 06:53 »
Здесь:

http://www.nexusmods.com/mountandblade/mods/3478/?tab=2&navtag=http%3A%2F%2Fwww.nexusmods.com%2Fmountandblade%2Fajax%2Fmodfiles%2F%3Fid%3D3478&pUp=1

можно скачать файл header_operations с описаниями функций МС на английском языке.
  • Ник в M&B: Fin___Gall

СиЧЪ Total War СиЧЪ Total War
Сайт "Всадники Кальрадии" не является СМИ. Администрация не несет ответственность за высказывания и публикацию каких-либо материалов, сделанные любыми пользователями форума, в том числе посредством личных и публичных сообщений. Материалы, размещенные на ресурсе третьими лицами, могут содержать информацию, не предназначенную для лиц, не достигнувших совершеннолетия. При обнаружении на ресурсе материалов, нарушающих законодательство Российской Федерации, необходимо обращаться к администрации.
Сайт работает на быстром VPS/VDS хостинге от FASTVPS


Powered by SMF 2.0 | SMF © Simple Machines LLC