Понимание и добавление инфокарт
🔧
Понимание и добавление инфокарт

💥 Оглавление

💢 Основное

Это краткое руководство по использованию FL-IE и обновлению инфокарт во Freelancer. Оно является зеркальным отражением [отличного руководства, написанного Jammi на форумах Discovery.] (https://discoverygc.com/forums/showthread.php?tid=204141&pid=2340058)

📌 1. Использование импортера/экспортера инфокарт Freelancer.

Прежде всего, вам понадобится копия Freelancer Infocard Importer/Exporter. Её можно использовать как для просмотра инфокарт по определённым ключевым словам в играх, так и для их внедрения и редактирования.

Предупреждение

НЕ ВНОСИТЕ ИЗМЕНЕНИЯ В КОПИЮ ИГРЫ, ЧЕРЕЗ КОТОРУЮ ВЫ ПОДКЛЮЧАЕТЕСЬ К РЕАЛЬНОМУ СЕРВЕРУ. Изменения в файлах будут обнаружены античитом, и вы получите бан. Используйте дубликат тестовой сборки для любых экспериментов.

Сначала закройте все запущенные копии Freelancer, затем откройте FL-IE. Каждый раз при запуске FL-IE необходимо загружать нужные инфокарты. Для этого скопируйте и вставьте путь к корневому каталогу Freelancer в поле «Путь к Freelancer». После этого нажмите «Загрузить».

После этого FL-IE должен предоставить список всех успешно загруженных (или не загруженных) DLL-файлов и количество загруженных инфокарт. Если возникают какие-либо ошибки и DLL-файл не загружен, это, вероятно, связано с тем, что у вас запущена копия игры, которая, по сути, «блокирует» эти файлы.

FL-IE запомнит последний использованный вами путь к файлу, поэтому вам не придётся вручную вводить каталог Freelancer каждый раз при использовании.

Следующий шаг зависит от того, являетесь ли вы разработчиком Discovery или просто работаете над своим собственным проектом.

Разработчики Discovery: Найдите в папке SERVICE вашей копии мода ветки разработки файл infocards.txt — это входной и выходной файлы, которые использует FL-IE.

Все остальные: После загрузки инфокарт нажмите кнопку «Экспорт». Выберите подходящее расположение и дайте выходным данным любое имя — infocards.txt тоже подойдёт. Эта функция извлечёт все зашифрованные инфокарты из игровых DLL-библиотек и выведет их в виде открытого текста, который можно прочитать (и отредактировать!). После экспорта .txt-файла вы можете внести в него необходимые изменения (см. следующий раздел) и подготовиться к внедрению в игру.

Для этого нажмите кнопку «Импорт» и выберите TXT-файл, с которым вы работали. FL-IE отобразит все инфокарты, которые вы добавили или обновили, до и после обновления, а также выдаст подтверждение количества неизменённых, изменённых и полностью новых импортированных инфокарт.

Если всё правильно, нажмите «Сохранить». FL-IE снова выведет журнал всех обновляемых DLL-файлов и выдаст подтверждение «Готово» по завершении. Если во время этого процесса возникнут какие-либо ошибки, это обычно связано с запущенным экземпляром игры. Поздравляем, ваш изменённый текст теперь сохранён в игре! Позже мы рассмотрим, как разместить этот текст там, где вам нужно.

Наконец, на вкладке «Обзор» доступна простая, но чрезвычайно полезная функция. Это средство просмотра инфокарт, позволяющее искать по всем инфокартам игры по ключевым словам. При выборе инфокарты в верхнем правом окне отображается необработанный текст/XML, а в нижнем правом окне отображается отформатированный конечный результат.

💨 2. Понимание инфокарт и XML.

Инфокарта — это, по сути, фрагмент текста, связанный с уникальным серийным номером, называемым ссылкой IDS. Этот номер затем используется игрой для определения того, какой текст где должен быть представлен.

Существует две категории инфокарт:

  • ИМЯ: Этот тип используется для имён объектов или NPC, новостных статей и некоторых других видов текста, таких как миссии, взятки за репутацию и инфовзятки. Карточки ИМЕН не используют XML и поэтому не могут быть отформатированы, за исключением добавления переносов строк.

  • INFOCARD: Этот тип используется для слухов и описаний баз, кораблей или оборудования. INFOCARD должны быть правильно отформатированы в формате XML. XML немного похож на HTML или BBcode (вроде как), поскольку форматирование текста осуществляется с помощью открывающего и закрывающего набора тегов.

Разработчики Discovery: Участникам команды, которым необходимо регулярно добавлять инфокарты, назначаются диапазоны пустых номеров IDS. Это гарантирует, что мы случайно не добавим инфокарты с тем же номером IDS, поскольку эти номера должны быть уникальными. Если вам ещё не назначен диапазон, сообщите об этом в каналах «Инфокарта» или «История».

FL-IE считывает инфокарты очень просто. Вот пример NAME и INFOCARD для справки:

33939
NAME
Hellburner-1
33940
INFOCARD
<?xml version="1.0" encoding="UTF-16"?><RDL><PUSH/><TEXT>«Адские пылающие» — эскадрилья поддержки Молли с Малла. В связи с характером своих проектов они вынуждены работать в зонах отчуждения за пределами объектов Молли. Недавно их перевели на базу Арранмор для помощи в подготовке обороны от ожидаемого вторжения бретонцев.</TEXT><PARA/><POP/></RDL>

Каждая инфокарта начинается с уникального номера идентификатора (IDS), затем следует слово NAME или INFOCARD, а затем — сам текст. Текст инфокарты должен быть написан на одной строке — переносы строк в игре добавляются посредством форматирования текста. Добавление фактического переноса строки в этот .txt-файл испортит вывод при попытке отобразить инфокарту в игре.

Любая строка в infocards.txt или одном из .ini-файлов Freelancer, начинающаяся с точки с запятой, не будет прочитана ни FL-IE, ни самой игрой. Это можно использовать для добавления комментариев, чтобы сделать текст более понятным для людей.

Форматирование текста NAME: Текст NAME очень прост и отображается как обычный текст. Это означает, что вы не можете форматировать его цветами, курсивом, полужирным шрифтом и т. д. Единственное форматирование, которое можно использовать для карточек NAME, — это переносы строк, которые добавляются с помощью символа \n в текст.

Форматирование текста INFOCARD: Все инфокарточки должны быть написаны на корректном XML. Несколько важных советов, которые следует запомнить:

  • Заимствуйте XML из других инфокарт, в работоспособности которых вы уверены. Если вы создаёте слухи, использование форматирования уже существующих слухов безопасно и экономит время.
  • Проверьте корректность XML и его корректное отображение. Это можно сделать с помощью таких инструментов, как XML Validator, или импортировав инфокарты через FL-IE и проверив их в браузере.
  • Не забудьте проверить, что ваши инфокарты работают в игре как задумано. Валидатор чрезвычайно полезен, но не идеален.

Вот несколько основных разделов XML, которые вы будете часто использовать. Вот они:

  • Начало (обязательно): <?xml version="1.0" encoding="UTF-16"?><RDL><PUSH/><TEXT>
  • Перевод строки (одинарный): </TEXT><PARA/><TEXT>
  • Перевод строки (двойной): </TEXT><PARA/><PARA/><TEXT>
  • Конец (обязательно): </TEXT><PARA/><POP/></RDL>
  • % символ: %%
  • & символ: &amp;
  • > символ: &gt;
  • < символ: &lt;

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

💢 3. Реализация базовых и объектных инфокарт.

Теперь мы рассмотрим, как назначить текст объекту в реальном игровом мире. Если вы импортировали отредактированный файл infocards.txt с помощью FL-IE, это означает, что эти инфокарты теперь сохраняются в DLL-библиотеках игры и связаны с уникальной ссылкой IDS.

В этом руководстве основное внимание будет уделено обновлению инфокарты существующей базы или объекта, а не созданию новых сущностей с нуля. Также будет уделено использованию игровых INI-файлов, а не инструментов для моддинга системы, таких как Freelancer Mod Studio, хотя это может быть рассмотрено в следующем руководстве по моддингу системы.

У каждой системы в игре есть свой собственный .ini-файл, содержащий информацию обо всех базах, объектах, зонах, встречах с NPC и т. д. внутри этой системы. Для начала я бы посоветовал открыть DarkStat. Это невероятно мощный справочный инструмент для всех видов данных в игре, однако сейчас нас больше всего интересуют внутренние прозвища.

У каждой системы и объекта в системе есть уникальное внутреннее прозвище. На вкладке «Базы» DarkStat найдите интересующую вас станцию. Справа вы увидите столбец с прозвищами базы и системы. А пока давайте рассмотрим станцию ​​Ватерлоо в Нью-Лондоне. Это br01_04_base, а сам Нью-Лондон — br01.

Затем в главном каталоге вашей экспериментальной сборки Freelancer перейдите в папку: DATA\UNIVERSE\SYSTEMS

В папке SYSTEMS каждая система в игре имеет свою подпапку. Откройте папку Br01, затем Br01.ini — это системный файл New London. После открытия нажмите CTRL+F и введите br01_04_base. В результате появится следующая запись:

[Object]
nickname = Br01_04
ids_name = 196661
pos = -18311.5, 0, 57186
rotate = -180, 85.7, 180
archetype = largestation1
ids_info = 65727
base = Br01_04_Base
dock_with = Br01_04_Base
reputation = co_ic_grp
behavior = NOTHING
voice = atc_leg_f01
space_costume = br_karina_head_gen, br_karina_body
difficulty_level = 7
loadout = space_station_co_01
pilot = pilot_solar_easiest

В данный момент нас интересуют части IDS_name и IDS_info.

Как и ожидалось, IDS_Name — это имя объекта. Нажмите CTRL+F в файле infocards.txt и найдите значение 196661 — вы увидите, что там написано «Waterloo Station». Перезапись записи в infocards.txt для этой ссылки IDS, импорт её в FL-IE и последующее сохранение изменят название станции в игре.

Если по какой-то причине вы хотите заменить IDS_name пристыковываемой базы на новый номер (или создаёте новую базу), необходимо также отредактировать другой файл.

Откройте: DATA\UNIVERSE\universe.ini

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

[Base]
nickname = br01_04_base
system = br01
strid_name = 196661
file = universe\systems\br01\bases\br01_04_base.ini
BGCS_base_run_by = W02bF23

Всё, что нам нужно сделать, — это убедиться, что strid_name совпадает с IDS_name, назначенным в системном файле. Если вы меняете номер, обязательно измените его в обоих местах.

Далее, значение IDS_info работает немного по-разному в зависимости от того, является ли объект пристыковываемой базой или нет. Для пристыковываемых станций данные IDS_info — это текст, который можно увидеть, нажав F9, перед стыковкой с базой. Ватерлоо — типичный пример, предоставляющий дополнительную информацию о классе станции, удобствах, экипаже и т. д.

<?xml version="1.0" encoding="UTF-16"?><RDL><PUSH/><TEXT>КЛАСС: Зевс</TEXT><PARA/><TEXT>ГРАВИТАЦИЯ: Полная</TEXT><PARA/><TEXT>СТЫКОВКА: Да</TEXT><PARA/><TEXT>УДОБСТВА: Да</TEXT><PARA/><TEXT>ЭКИПАЖ: 1090</TEXT><PARA/><POP/></RDL>
КЛАСС: Зевс
ГРАВИТАЦИЯ: Полная
СТЫКОВКА: Да
УДОБСТВА: Да
ЭКИПАЖ: 1090 ЧЛЕНОВ

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

Для этого нам нужно заглянуть в другой файл: DATA\INTERFACE\InfocardMap.ini

InfocardMap создаёт связанные пары инфокарт для стыкуемых станций. Если нажать CTRL+F и выполнить поиск по значению 65727 (значение IDS_info Ватерлоо), вы увидите следующее:

Map = 65727, 65728

Это сообщает игре, что при стыковке с объектом, связанным с IDS 65727, необходимо добавить IDS 65728 в конец описания станции. Если вы редактируете инфокарту существующей станции, вам не нужно об этом беспокоиться. Если вы добавляете совершенно новую станцию ​​или изменяете номер станции IDS_info, вам также потребуется добавить запись InfocardMap.

С объектами, которые не являются стыкуемыми станциями, всё гораздо проще — полная инфокарта просто включается в одну ссылку в IDS_info. Обратите внимание, что некоторые виды объектов не могут отображать инфокарты.

Это зависит от архетипа объекта (в Waterloo это largestation1), который определён в DATA\SOLAR\SolarArch.ini — это проблема моддинга системы, поэтому она будет подробно рассмотрена в следующем руководстве.

Крайнее упрощение заключается в том, что только архетипы с типом MISSION_SATELLITE или STATION могут свободно назначать карты IDS_name и IDS_info. Другие типы либо вообще не могут отображать инфокарты, либо используют специальные жёстко заданные инфокарты для своего имени, инфокарты или и того, и другого.

💨 4. Слухи и NPC в баре.

Далее мы рассмотрим, как настроить NPC на панели станции и назначить им слухи. В первую очередь это касается файла mBases.ini, который находится в папке DATA\MISSIONS\mBases.ini.

У каждой прикрепляемой базы есть запись в mBases. Каждая запись начинается с блока [mBase], а всё, что находится под ним, относится к этой базе, пока не встретится другой блок [mBase]. Сегодня мы рассмотрим планету Гольштейн в качестве примера. Вот как выглядят начальные разделы записи о Гольштейне:

[MBase]
; Planet Holstein
nickname = Rh04_01_Base
local_faction = co_khc_grp
diff = 10
msg_id_prefix = gcs_refer_base_Rh04_01_Base-

[MVendor]
num_offers = 2, 4

[BaseFaction]
faction = co_khc_grp
weight = 62
offers_missions = true
mission_type = DestroyMission, 2.0, 12.0, 300
npc = rh0401_daumann_001_m
npc = rh0401_daumann_002_m
npc = rh0401_daumann_003_m
npc = rh0401_daumann_004_m

[BaseFaction]
faction = fc_core
weight = 20
offers_missions = true
mission_type = DestroyMission, 2.0, 12.0, 100
npc = rh0401_core_001_m

[BaseFaction]
faction = rh_p_grp
weight = 1

[BaseFaction]
faction = rh_m_grp
weight = 1

[BaseFaction]
faction = co_alg_grp
weight = 1

[BaseFaction]
faction = co_rs_grp
weight = 1

[BaseFaction]
faction = co_shi_grp
weight = 1

[BaseFaction]
faction = co_kt_grp
weight = 1

[BaseFaction]
faction = co_ni_grp
weight = 1

[BaseFaction]
faction = ga_efl_grp
weight = 1

Пока что сосредоточимся на [BaseFaction]. Эти разделы выполняют несколько функций — например, прежде чем фракции NPC будет разрешено пристыковаться к станции, для неё должен быть определён соответствующий блок [BaseFaction].

Это важно, так как появление NPC или завершение патруля/торгового пути без допустимого пункта назначения в зоне действия приведёт к сбою. Однако, что наиболее важно для наших целей, [BaseFaction] также содержит список всех NPC, не являющихся торговцами, которым разрешено появляться в помещениях станции.

Теперь рассмотрим, что делает каждый из параметров в блоке [BaseFaction].

Строка Описание
[BaseFaction]
faction = co_khc_grp
Определяет NPC-фракцию по её внутреннему нику. Найти её можно в DarkStat во вкладке Factions. В данном случае фракция — Daumann.
weight = 62 Вес влияет как на долю не-вендорных NPC (не торговцев), появляющихся от этой фракции, так и на то, какая часть заданий на доске объявлений будет принадлежать именно им (если им разрешено предлагать миссии). Значение веса может быть любым, но настоятельно рекомендуется, чтобы сумма всех весов NPC на базе была равна 100 — так их легче проверять как процентное соотношение.
offers_missions = true Определяет, может ли NPC-фракция предлагать задания напрямую через доску объявлений в баре. Даже если значение false, можно всё равно настроить отдельных NPC, чтобы они предлагали миссии при разговоре (разбирается далее).
mission_type = DestroyMission, 2.0, 12.0, 300 Устанавливает диапазон сложности миссий в баре от этой фракции. Первый параметр всегда должен быть "DestroyMission". Второй и третий параметры задают минимальную и максимальную сложность. Это напрямую не соответствует уровням миссий в игре — для расчёта используется крайне запутанная формула. Обычно рекомендуется использовать диапазоны, указанные в начале файла mBases. Последний параметр — это ещё одно весовое значение, однако игра, похоже, его не использует.
npc = rh0401_daumann_001_m Ссылается на уникальный ник NPC, который будет определён далее в этом файле. Чтобы NPC (не торговец) появился на базе, он обязательно должен быть указан здесь.

Далее мы рассмотрим блок NPC. Здесь определяются внешний вид и характеристики наших NPC, а также комната, в которой они будут находиться. Стоит отметить, что вы можете создать любое количество NPC для баров и других помещений, однако сама комната будет иметь максимальную вместимость, зависящую от количества точек крепления, назначенных для сцены, на которых NPC могут сидеть или стоять.

[GF_NPC]
nickname = rh0401_core_001_m
body = li_commtrader_body
head = br_sales_head
lefthand = benchmark_male_hand_left
righthand = benchmark_male_hand_right
individual_name = 33643
affiliation = fc_core
bribe = fc_core, 840, 33644
voice = rvp111
room = bar
misn = DestroyMission, 2.0, 12.0
rumor = base_0_rank, mission_end, 3, 33640
rumor = base_0_rank, mission_end, 3, 33641
rumor = base_0_rank, mission_end, 3, 33642
accessory = prop_shades_05
accessory = prop_pda

Это Арло Грисволд, корпоративный посредник в офисе The Core в Холштейне. Он из тех, кто носит плохо сшитый костюм и солнцезащитные очки в помещении — настоящий молодец. Давайте взглянем на параметры, которые учитываются при создании NPC:

Строка Описание
[GF_NPC]
nickname = rh0401_core_001_m
Уникальный внутренний ник NPC. Должен быть определён в соответствующем блоке [BaseFaction], который мы рассматривали выше.
body = li_commtrader_body
head = br_sales_head
lefthand = benchmark_male_hand_left
righthand = benchmark_male_hand_right
Части тела, которые использует NPC. Делятся на мужские и женские, с разными скелетами и анимациями — не смешивай, иначе будут графические баги.

У большинства NPC-групп есть своя униформа, поэтому обычно проще взять тело у NPC с той же фракцией. Полный список голов и тел есть в DATA\CHARACTERS\bodyparts.ini.
individual_name = 33643 Инфокарта имени NPC, отображающаяся игроку при наведении курсора. Может содержать любой текст. Например, имя Арло выглядит так:
33643
NAME
The Core\nRheinland Liason\nArlo Griswold.
affiliation = fc_core Фракция, к которой относится NPC. Должна быть определена в [BaseFaction]. Репутация игрока с этой фракцией влияет на взаимодействие: будет ли NPC предлагать миссии, взятки или слухи.
voice = rvp111 Голос NPC. Обычно стоит брать уже существующий голос от другого NPC, но желательно, чтобы у всех в баре не был один и тот же.
room = bar Определяет комнату, где NPC будет находиться. Обычно это бар, но для некоторых торговцев и продавцов товаров есть специальные точки, где NPC могут появляться на фоне.
misn = DestroyMission, 2.0, 12.0 Аналогично параметру миссий в [BaseFaction]. Позволяет NPC предлагать задания напрямую, со своим диапазоном сложности (минимум/максимум), минуя доску миссий. Это можно использовать, чтобы дать конкретному NPC миссии сложнее или проще, чем у фракции в целом.
rumor = base_0_rank, mission_end, 3, 33640 Определяет слухи. Первые два значения всегда должны быть base_0_rank, mission_end для корректного отображения в мультиплеере. Следующее число задаёт порог репутации: 1 = 0.2, 2 = 0.4, 3 = 0.6, 4 = 0.0. Последнее число — IDS-идентификатор инфокарты слуха. В данном случае текст слуха такой:

33640
INFOCARD
<?xml version="1.0" encoding="UTF-16"?><RDL><PUSH/><TEXT>Открытие корпоративного офиса на Хольштайне казалось разумным решением. Наши лучшие клиенты — рейнландские корпорации и государственные структуры. На деле же всё провалилось: война во Вьетнаме и гражданская война нарушили транспорт, затем рухнул проект Оммикрон Ро. Местные считают Франкфурт проклятым. Я начинаю им верить.</TEXT><PARA/><POP/></RDL>
accessory = prop_shades_05 Аксессуары редко используются в оригинале, но можно прикреплять пропсы для кастомизации. Каталог доступных есть здесь. Пропсы монтируются на конкретные hardpoint'ы, поэтому указывать их вручную не нужно: если точка есть, предмет появится на нужном месте, если нет — не появится вовсе.

Вышеуказанное даёт значительную гибкость в отображении NPC. Например, вы можете использовать индивидуальные имена для фракций, которые механически не существуют в игре («Гражданин Гольштейна»), или даже для более тонких эффектов, таких как шпионаж.

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

Заданным слухам можно затем задать значение репутации «3», то есть вам нужно быть дружелюбным к Ордену, чтобы этот конкретный NPC поделился с вами слухами, содержащими секретную информацию о его шпионской деятельности.

Предупреждение

Не делайте этого, если враждебная фракция может создавать NPC рядом со станцией. Если указать фракцию в блоке [BaseFaction], они попытаются пристыковаться к враждебной станции и вызвать сбой.

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

Далее мы рассмотрим блоки, которые определяют комнаты на базе.

[MRoom]
nickname = bar
character_density = 5
fixture = rh0401_fix_bartender, Zs/NPC/Bartender/01/A/Stand, scripts\vendors\li_host_fidget.thn, bartender

[MRoom]
nickname = Planetscape
character_density = 3
fixture = rh0401_fix_ship, Zs/NPC/Shipdealer/01/A/Stand, scripts\vendors\li_shipdealer_fidget.thn, ShipDealer
fixture = rh0401_fix_trader, Zs/NPC/Trader/01/A/Stand, scripts\vendors\li_commtrader_fidget.thn, trader
fixture = rh0401_fix_weaponsdealer, Zs/NPC/Equipment/01/A/Stand, scripts\vendors\li_equipdealer_fidget.thn, Equipment

Плотность персонажей задаёт максимальное количество NPC, которые могут одновременно находиться в комнате. Это значение можно задать любым произвольно высоким, однако, как отмечалось выше, в каждой комнате есть ограниченное количество точек крепления, на которых NPC могут сидеть и стоять. Вы можете установить плотность 200, но если мест для стоянки всего 5, в комнате всё равно будет только 5 NPC.

Параметр «fixture» используется для указания, какие NPC являются торговцами, которые будут постоянно находиться в определённом месте. Это бармены, а также торговцы товарами, оборудованием и кораблями. Вам не нужно определять этих NPC в блоке [BaseFaction] — вы делаете это здесь.

⚡ 5. Взятки для индивидуальных представителей.

Наконец, мы рассмотрим, как настроить взятки за репутацию и знания для базовых NPC. Это также делается через блоки [GF_NPC] в записи mBases станции, поэтому ознакомьтесь с этим файлом выше.

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

В оригинальной игре есть несколько стандартизированных инфокарточек, используемых для этих взяток, с которыми вы, вероятно, знакомы. Они не прописаны в коде, и вы можете создать свой собственный, полностью уникальный текст для этих предложений. Давайте рассмотрим бармена Хольштейна:

[GF_NPC]
nickname = rh0401_fix_bartender
body = rh_shipdealer_body
head = rh_wilham_head
lefthand = benchmark_male_hand_left
righthand = benchmark_male_hand_right
individual_name = 244975
affiliation = co_khc_grp
voice = rvp146
bribe = rh_p_grp, 840, 504724
bribe = co_khc_grp, 840, 504725
bribe = co_rs_grp, 840, 504724
bribe = co_shi_grp, 840, 504724
know = 33404, 33405, 500, 3

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

Параметр взятки работает следующим образом:

  • Первое значение — это внутреннее прозвище фракции NPC, которую вы хотите подкупить. В данном случае взятки предлагаются для Рейнландской полиции, Дауманна, Имперского судоходства и Самуры (как ни странно).
  • Второе значение — это стоимость повышения репутации целевой фракции на 0,1 в кредитах, при этом репутация может увеличиться до максимума в 0,6. Покупка взятки в качестве примера обойдется вам примерно в 5000 долларов, если вы начинаете с нейтрального уровня 0,0.
  • Последнее значение — это ссылка IDS с текстом взятки. Вот инфокарты с текстом взятки по умолчанию:
504724
NAME
Тебе стоит улучшить репутацию в %F0. Я могу взломать твою запись за %d0 кредитов... это должно прояснить ситуацию. Конечно, это снизит твою популярность среди %F1, %F2 и %F3. Что скажешь?

504725
NAME
За небольшое пожертвование в размере %d0 кредитов я могу замолвить за тебя словечко перед остальными %F0. Знай, что такие группы, как %F1, %F2 и %F3, могут с презрением отнестись к нашей небольшой сделке. Что скажешь?

504726
NAME
Тебе стоит улучшить репутацию в %F0. Я могу взломать твою запись за %d0 кредитов... это должно прояснить ситуацию. Что скажешь?

504727
NAME
За небольшое пожертвование в размере %d0 кредитов я могу замолвить за тебя словечко перед остальными %F0. Что скажешь?

Как видите, это простые текстовые информационные карточки, однако игра умеет заменять некоторые части текста релевантной информацией. В их число входят:

  • %d0 — расчёт стоимости взятки.
  • %F0 — фракция, которую подкупают.
  • %F1, %F2, %F3 — случайный выбор фракций, чья репутация ухудшится из-за взятки.

Используя эти данные, вы можете составить свой собственный текст взятки. Вспоминая Арло, представителя компании The Core в Гольштейне, могу сказать, что у него есть для вас действительно особенное предложение! Вот как выглядит его текст взятки:

33644
NAME
За единовременное вложение %d0 кредитов вы также можете присоединиться к корпоративной платиновой партнёрской программе The Core. Действуют правила и условия. The Core не несёт ответственности за репрессии со стороны таких групп, как %F1 или %F2. Это персонализированное предложение предназначено только для вас и вашего процветающего будущего! «Переносим пограничные миры в Ядро цивилизации Домов!»

Он носит солнцезащитные очки в помещении, вот почему он харизматичный!

📌 6. Взятки за индивидуальные знания.

Далее — взятки за знания. Они немного сложнее и работают, манипулируя «флагами посещения». Сначала рассмотрим, как они используются в блоках [GF_NPC] в mBases:

know = 33404, 33405, 500, 3

– Первое значение – это IDS-ссылка на текст предложения о покупке информации. Оно всегда автоматически заканчивается фразой «за X кредитов». – Второе значение – это текст принятия предложения/завершения продажи. К нему всегда автоматически добавляется префикс «Информация загружена в вашу нейронную сеть». – Третье значение – цена. – Последнее значение точно такое же, как и для слухов, и представляет собой порог репутации, определяющий, насколько дружелюбно вы должны быть настроены к фракции NPC, прежде чем они продадут вам информацию. В данном случае оно равно 3, что означает 0,6 репутации – весьма дружелюбно! – Текст для этой взятки выглядит так:

33404
NAME
Федеральная полиция подозревает, что в Хаузенфельде действует банда контрабандистов. У них нет ресурсов, чтобы с ней справиться, но вы можете проверить. Я загружу всю информацию в вашу нейросеть.

33405
NAME
Удачи, не дайте себя убить.

В настоящее время эта «взятка знаний» фактически ничего не делает. Последний фрагмент можно найти в другом файле. Теперь нам нужно открыть: DATA\INTERFACE\KnowledgeMap.ini

KnowledgeMap.ini во многом похож на InfocardMap.ini, который мы рассматривали ранее. По сути, при просмотре указанной инфокарты запускаются дополнительные эффекты. Запись для этой «взятки знаний» выглядит следующим образом:

Map = 33405, RH04_hiddencache, 1 Первое значение — это ссылка IDS для текста подтверждения принятия предложения. Просмотр этого текста (после оплаты) активирует запись в KnowledgeMap. Второе значение — объект, информацию о котором вы хотите приобрести. Это должно быть внутреннее имя объекта в системе. Если вы хотите указать прикрепляемую базу, следует помнить, что необходимо использовать объект в системном файле, который будет немного отличаться от имени внутренней части базы.

Например, если бы я использовал станцию ​​Мангейм, внутренняя часть базы называлась бы rh04_03_base, однако реальный объект во Франкфурте, который мы бы показывали на карте, — rh04_03. Вы можете проверить это, заглянув в системный ini-файл, как мы делали во втором разделе этого руководства. Последнее значение — это флаг посещения. Он подробно описан ниже. Флаги посещения — это, по сути, значение в файле вашего персонажа, которое назначается каждому встречающемуся вам Объекту. Оно сообщает игре, следует ли отображать Объект на карте и какие данные инфокарты вы можете видеть. Флаг посещения по умолчанию для большинства объектов — «0», что означает «не обнаружен» — пока вы не найдёте его.

Несмотря на это, моддеры систем могут установить специальный флаг посещения при разработке объекта, если хотят добиться определённого эффекта. Чаще всего для этого используется флаг посещения «128», который делает объект невозможным для картографирования, то есть он никогда не будет обнаружен на карте и будет отображаться как «Неизвестный объект», если вы его выберете.

Покупка взятки за знания устанавливает флаг посещения в соответствии с заданным в ней значением. Это означает, что вы можете использовать её для принудительного картографирования секретных объектов, таких как скрытые базы. Флаги посещения, используемые в игре, выглядят следующим образом:

  • 0: Не посещено / не обнаружено.
  • 1: Обнаружено (только базовая информация о базе; без текстовой информации о зонах).
  • 2: Внутренняя инфокарта базы для станций, к которым можно пристыковаться.
  • 4: Зоны добычи; список товаров для станций, к которым можно пристыковаться.
  • 8: Разграбленный обломок; информация о зоне; список оборудования для станций, к которым можно пристыковаться.
  • 16: Обломок; список кораблей для станций, к которым можно пристыковаться.
  • 32: Зона.
  • 64: Фракция.
  • 128: Скрытый, никогда не отображается на навигационной карте.

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

Например, если вы хотите, чтобы в качестве взятки вы указали местоположение станции, но не получили никакой внутренней информации, которую вы получите при стыковке, используйте флаг посещения 1. Если вы хотите отобразить на карте местоположение и подробную внутреннюю инфокарту, но не информацию о товарах, оборудовании или корабле, используйте 3 (1 + 2). Если вы хотите предоставить всю информацию о базе, включая данные о торговле, используйте 31 (1 + 2 + 4 + 8 + 16). Чтобы показать астероидное поле, его инфокарту и зону добычи, используйте 44 (4 + 8 + 32).

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

Также стоит отметить, что вы можете добавить несколько записей «Map =" для одной инфокарты. Это означает, что вы можете, например, организовать «взятку знаний», чтобы продавать игрокам данные обо всех станциях определённой фракции, системы или региона. Вам нужно добавить новую запись карты в KnowledgeMap для каждого отдельного объекта, который вы хотите нанести на карту.