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-шных файлах все выглядит, как обычно, просто привычные коды операторов заменяются на таковые с прибавленной константой).
👍👍👍👍