ФЭНДОМ


Это нужно, скорее, для перевода. Ничто не мешает писать названия и описания прямо в скрипты, другой вопрос, что это неудобно и куда удобнее сделать в скрипте ссылку вида “$1234”, ведущую в словарь. А переписывать словари удобнее, чем скрипт, согласитесь.

Создание файла с локалью Править

Проще всего взять готовый словарь (*.ucs) из архива English.big или из %homeworld2.big_decompiled%\locale и переписывать его. Критично, что словарь должен быть в кодировке UCS-2 Little Endian. Иначе все тексты превращаются в ряды вопросительных знаков.
Удобнее сваливать всё в один-два своих словаря, чтобы не путаться в готовых, не путать других и самому не заблудиться, что и куда вы вписывали. Хотя, если вы не поклонник опенсорса, то можно ковырять и шифровать исходные словари – это затруднит потрошение вашего мода.

Итак, скопируйте словарь ships.ucs. Свалите его в Data\locale\English. Он содержит информацию по кораблям и подсистемам, но нас она не интересует. Вычистите словарь, напишите в начале первой строки цифру 9000, отступите на одно нажатие Tab и задумайтесь.
Возьмите скрипт localedat.lua, включите мозг и добавьте в него свой словарь по аналогии:

Dictionaries = {
  {name = "%your_dictionary_name%.dat",}, -- вместо .ucs используйте .dat;
}

Сохраните, вернитесь к словарю.
Теперь смотрите. Впишите после этих девяти тысяч «Tobari», без кавычек, откройте race.lua, найдите строку, в которой вы писали «Tobari» – она будет второй по счету и приведите этот фрагмент к следующему виду:

{
  "Tobari",
  "$9000", -- $9000 – это ссылка в словарь;
},

Вот точно так же, по аналогии, через *.lua-файлы локализуются все остальные названия, видимые в игре.

Теперь ваш мод могут переводить на другие языки - надо только создать папку Chezh, Deutch итд рядом с папкой English, скопировать туда ваши новосозданные словарики - и, собственно, переводить.

Оформление Править

Можно применять следующие теги:

  • <b></b> – жирный текст;
  • <c=xxxxxx></c> – цветной текст. Задается как шестизначный гекс. Регистр не критичен;
  • \n – переход на следующую строку;

Другие просто не работают. Хотя не бойтесь экспериментировать.

Использованные номера Править

Декомпилированные словари не дают полной картины об использованных номерах в HW2. Но кое-какие данные вычислить можно.

  • 1000 - 1222 - использованы в engine.ucs;
    • Место для словаря: 1300-1499;
  • 1500 - 2403 - использованы в ships.ucs;
  • 2500 - 2503 - использованы в resources.ucs;
  • 2550 - 5599 - использованы в ui.ucs;
  • 5600 - 5850 - использованы в events.ucs;
    • Место для словаря: 5900-5999;
  • 6000 - 6050 - использованы в ati.ucs;
    • Место для словаря: 6100-6299;
  • 6300 - 6463 - использованы в leveldesc.ucs;
    • Место для словаря: 6500-6999;
  • 7000 - 7914 - использованы в engine.ucs;
    • Место для словаря: 8000-40000 (как пишут иностранные коллеги, где-то титрах использованы цифры 8000-8010, так что лучше перестрахуйтесь);
  • 41000 - 41499 - использованы в \leveldata\campaign\ascension\m03_staging.ucs.ucs;
  • ~50000 - ~53000 - использованы в тренировочных миссиях, как показывают \leveldata\campaign\tutorial\*.lua;
  • ~55000 - неизвестно - использованы в анимационных роликах, как показывают \animatics\*.lua;

Рекомендации Править

Начинать безопасно новые словари можно в любых свободных промежутках номеров, но учтите, что словари нельзя «пересекать». Т.е. если один словарь содержит значения с 2000 до 5000, а затем сразу с 6000 до 7000, то второй словарь нельзя начинать со значения 5500 – игра вылетит с ошибкой пересечения словарей. Точно так же второй словарь нельзя начинать с тысячи, а затем перескакивать на 8000.
Кроме того, содержание словарей не должно дублироваться (то есть, на один и тот же номер два разных имени), иначе игра просто ничего не покажет.

Около 40000 начинаются тексты кампании. Но тридцати тысяч строк должно хватить для любого мода. В крайнем случае, теоретически, можно перевалить и за 60000 и продолжить до 100000 и далее. Крайний предел пока не обнаружен.)

Ссылки Править

  • Мануал по Homeworld 2 - статья AndrewN, часть которой и послужила основой для вышестоящего текста;