# Русификация EU-клиента Lineage 2 (протокол 557 / SakuraIsle) — рецепт Цель: полностью русский клиент (интерфейс + имена + **ввод кириллицы в чат**) на нашем сервере L2J Mobius, БЕЗ правки exe. Проверено, работает. Наш клиент: C:\games\l2 ; исходный РУ-клиент: C:\games\LineageII ================================================================================ ДВЕ НЕЗАВИСИМЫЕ ПРИЧИНЫ — обе решаются ================================================================================ 1) ЧАТ (ввод кириллицы) Кодировка поля ввода чата зашита в L2.exe ПО АКТИВНОЙ СТРАНЕ: Europe -> 1252, Poland -> 1250 (кириллицы нет), только Russia -> 1251. Кодовая страница ОС на это НЕ влияет (логин-поле печатает кириллицу, потому что оно нативное Unicode; внутриигровой чат конвертит через кодировку активной страны). => Запускать активную страну Russia (Language=8). У Russia-сборки есть LCID-замок ("LCID: cannot run in this locale") — чтобы он прошёл, нужна СИСТЕМНАЯ ЛОКАЛЬ Windows = Русский (+ перезагрузка). (Нужно И то, И другое. Русская локаль ОС под Europe сама по себе чат не включает.) 2) ИНТЕРФЕЙС (главный блокер) .dat РУ-клиента зашифрованы НЕСТАНДАРТНЫМ ключом. Наш клиент ждёт СТАНДАРТНЫЙ ключ l2encdec -> декриптит РУ-файлы в МУСОР -> краш FL2TextInfomation::Serialize (EXCEPTION_WRITE_VIOLATION). Это НЕ "другой билд/структура" — это просто ключ. => Перешифровать РУ-папку system на стандартный ключ программой lineage2-patch-maker.exe (из L2-AutoUpdater-master): перетащить папку РУ "system" на exe -> получится "system_patched" (меняет ключ .dat на l2encdec, отключает GameGuard/Frost, правит L2.ini). После этого наш клиент читает их нормально. ================================================================================ РЕЦЕПТ (по шагам) ================================================================================ 1. Windows: Региональные параметры -> Дополнительно -> "Язык программ, не поддерживающих Юникод" -> Русский (Россия) -> перезагрузка. (Галка "Бета: Юникод UTF-8" должна быть СНЯТА.) 2. Перешифровать РУ-клиент: перетащить C:\games\LineageII\system на lineage2-patch-maker.exe -> получить system_patched. 3. Собрать папку локали C:\games\l2\system\ru: - взять НАШИ данные за основу: скопировать system\eu -> system\ru, переименовать в ней все *-eu.dat -> *-ru.dat (это гарантирует наличие наших ~15 файлов, которых нет у РУ: ui1-8.ugx, CharacterInitialStatExData.dat и т.п.); - сверху залить ВСЕ system_patched\*.dat (и common, и -ru текст). Итог: полностью русский, самосогласованный набор + наши недостающие файлы. 4. system\Localization.ini (шифр Lineage2Ver111 = XOR каждого байта после 28-байтного заголовка на 0xAC; правится l2ini.py: dec -> правка -> enc): Language=8 BuildCountryCode=eu;pl;es;ru EnableEngSelection=true ; включает выбор языка в Settings прямо в игре Секция [Russia] уже ссылается на шрифт L2Font-ru — менять не надо. 5. Шрифты (из РУ-клиента, кладутся один раз): system\SmallFont-ru.gly , system\LargeFont-ru.gly , SysTextures\L2Font-ru.utx ================================================================================ ВАЖНОЕ / ГРАБЛИ ================================================================================ - Сервер работает в режиме Main/Live -> грузятся только файлы БЕЗ суффикса. _Classic / _ClassicAden присутствуют, но НЕ загружаются -> на нас не влияют, трогать не нужно. - Краш вида "FL2...::Serialize, EXCEPTION_WRITE_VIOLATION" с мусором (Text: 0) = НЕПРАВИЛЬНЫЙ КЛЮЧ -> файл не пропатчен. Пропатчить через lineage2-patch-maker. Проверка ключа: l2encdec_win.exe -c decode -p 413 файл.dat — если "Saved to" есть, ключ стандартный (ок); если "Failed to decompress" — ключ чужой. - Краш "FL2MSItemNameDataManager::OverwriteSkillData skill ID [NNNNN...]" = КОНТЕНТ-рассинхрон: в русском файле есть скилл/предмет, которого нет в нашей базе (или наоборот). Решение: вернуть ИМЕННО этот файл (без суффикса) на наш из eu, ЛИБО взять РУ common-файл (Skillgrp и т.п.), чтобы стало самосогласованно. ВНИМАНИЕ: РУ common НЕ содержит наш кастом (классы Warg/Samurai и их скиллы) — на кастом-контенте возможен такой же краш. Если ловишь — откат на ru_stable_bak. - Для раздачи игрокам: им тоже нужна русская системная локаль (LCID-замок) + эта пропатченная папка system. ================================================================================ ИНСТРУМЕНТЫ И БЭКАПЫ ================================================================================ - l2encdec_win.exe (open-l2encdec) — дешифр/шифр .dat (Ver211/411-414 и т.д.): C:\l2encdec\l2encdec_win.exe -c decode -p 413 -o out.txt in.dat - l2ini.py — дешифр/шифр .ini формата Ver111 (XOR 0xAC), на маке: ~/Downloads/system_cyrillic/l2ini.py (dec|enc) - lineage2-patch-maker.exe — перешифровка ключа .dat на l2encdec + откл. GameGuard: ~/Downloads/L2-AutoUpdater-master - Бэкапы в C:\games\l2\system: Localization.ini.bak — исходный конфиг (был Europe) ru_userbak — первая папка ru pl_userbak — исходная польская локаль ru_stable_bak — НАШИ game-data + русский текст, имена скиллов английские (самый безопасный вариант: совместим с сервером ВЕЗДЕ, включая кастом-классы)