Warband: Модулька, урок игрового меню. Нулевые числа.

Поділитися
Вставка
  • Опубліковано 14 жов 2024
  • Как понимать код игры, часть №1
    Инструкция от Лорд5800
    Мануал по модульной системе, или как это назвать, как хотите - так и называйте!
    Для упрощения в печатании буков, буквы скопировал с сайта "Всадники Кальрадии"
    Нулевые Числа (порядковые номера)
    360287970189639680 - это наш Персонаж (юнит) / (ГГ- главный герой) в игре
    чтобы найти остальных юнитов - мы опираемся на нулевое число нашего ГГ
    нам потребуется программа "Morgh's Editor" в разделе "Troop editor"
    а где скачать "Morgh's Editor" - гугл знает, как никто лучше другой!!!
    порядковые номера указаны слева в столбце - где наш ГГ под номером 0
    в программировании - отсчет идет с цифры 0 всегда
    если в моргс эдиторе наш ГГ од 0 номером, то ниже идут остальныеюниты
    прибавляем их порядковый номер из моргса к числу 360287970189639680 и получаем цифровой код юнита
    к примеру под 25 номером в моргсе (нативный модуль, варбанд 1,174) - это крестьянин
    360287970189639680 + 25 = 360287970189639705 - номер кода крестьянина в цифровом виде
    ------------------
    288230376151711744 - нулевой код предмета
    ищем в моргс эдиторе в "Item edditor"
    точно также, как и с юнитами
    ------------------
    648518346341351424 - нулевой код отряда главного героя
    да-да, это отряд ГГ в игре
    в моргс эдиторе в разделе "Parties" ищем порядковые номера как по аналогу выше
    Отрядами считаются все города, замки, деревня и прочее, что есть на глобальной карте в игре
    Всё это - отряды.
    -----------------
    432345564227567616 - фракции, это нулевая фракция
    ищем в factions в моргс эдиторе
    -----------------
    576460752303423488 - подкрепления или шаблоны отрядов
    нулевое число
    в разделе (party_templates) в моргс эдиторе
    это выдает войска по скрипту всем, кто там указан
    какие войска будут у фракций, бандитов и прочее
    -----------------
    скрипты (scripts): 936748722493063168 + номер скрипта (учитывая то, как выглядит файл scripts.txt,
    мы определяем номер нужного скрипта, открыв файл в Notepad++, увидев номер строки с названием скрипта и подставив его в след.
    формулу: (Nстроки-3)/2 = искомый номер скрипта);
    строки (strings): 216172782113783808 + номер строки из strings.txt;
    глобальные переменные (variables.txt): 144115188075855872 + номер переменной;
    локальные переменные (используются в рамках конкретного скрипта/иного участка кода):
    1224979098644774912, 1224979098644774913 и т.д. Они повторяются из скрипта в скрипт и используются для временных операций/расчетов;
    значения регистра: 72057594037927936 (reg0), 72057594037927937 (reg1) и т.д.
    Используются для временного выноса данных за пределы отдельно взятых скриптов без использования глобалок;
    всевозможные слоты для всего и вся (в слотах может храниться разная информация о воине/предмете/городе и пр.
    например, кто является женой лорда Х, какова текущая культура города Y или какова личность компаньона Z).
    quests.txt: 504403158265495552 + (номер строки-3)
    quick_strings.txt: 1585267068834414592 + (номер строки-2)
    Здесь же целесообразно упомянуть 2 хитрых оператора, которые используются лишь в комбинации с другими операторами,
    являясь для них константной основой:
    neg: 2147483648 + код сопутствующего оператора - оператор, "отрицающий" (по правилам мат. логики)
    сопутствующий ему оператор (т.е., например, если условие is_between означет
    "значение переменной находится в диапазоне между Х и Y-1",
    то комбинация neg|is_between будет являть собой условие "значение переменной НЕ находится в диапазоне между Х и Y-1");
    this_or_next: 1073741824 + код сопутствующего оператора
    используется для альтернативных условий ИЛИ-ИЛИ (добавляется ко всем условиям, идущим друг за другом,
    кроме последнего - например, this_or_next|is_between ... (чего-то там между чем-то ИЛИ) следующей строкой this_or_next|faction_slot_eq ...
    (какой-то там слот какой-то фракции чему-то равен ИЛИ) следующей строкой ge ... (что-то там больше чего-то);
    в .txt-шных файлах все выглядит, как обычно, просто привычные коды операторов заменяются на таковые с прибавленной константой).

КОМЕНТАРІ • 1