1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Перевод Lure of the Temptress

Тема в разделе "Новости сайта", создана пользователем kirik-82, 14 дек 2014.

  1. Nespeshist

    Nespeshist

    Регистрация:
    23 ноя 2024
    Сообщения:
    4
    Есть имя: Лютерн, Гвин.
    Нет имени: Нелли, Моркус, Велк, Тоби, Эван, Герайнт, Эдвина, Ультар, Катриона, Маллин.
     
    Dimouse нравится это.
  2. Dimouse King of Mice

    Dimouse

    Администратор Переводчик

    Регистрация:
    18 апр 2003
    Сообщения:
    35.206
    Да, боюсь, перевод в версиях 1.1 и 1.2 сломан. 1.0 нормально работает (если не считать отсутствующую букву ё и т.п.).
    @warr11r, посмотри, пожалуйста, что случилось со скриптами.
     
    warr11r нравится это.
  3. warr11r Игропотрошитель

    warr11r

    Переводчик

    Регистрация:
    9 сен 2015
    Сообщения:
    1.870
    Русская версия 1.0 тоже нигде нормально не работает. Ну разве что в древней OG-сборке. Проверил на нескольких старых версиях ScummVM.

    Ничего не случилось. Это не баг, а "фича" русской версии. Смотрим исходники, файл hotspots.cpp (строки 2285-2292). У нас не английская версия, но идентификатор для незнакомцев остался 378. Условие никогда не выполняется и знакомство всегда пропускается. Гипотетически игрок может попытаться познакомиться со склянкой и книгой про разведение свиней, но для них диалогов не предусмотрено.

    Тут без Сева не обойдёмся.
     
  4. Dimouse King of Mice

    Dimouse

    Администратор Переводчик

    Регистрация:
    18 апр 2003
    Сообщения:
    35.206
    @warr11r, да, я смотрел в той древней сборке, там нормально.

    Я посмотрю, но если в двух словах - чем так важен номер незнакомцев? Число объектов ведь не поменялось?
    @sev_, этот баг ведь можно как-то исправить?
     
  5. warr11r Игропотрошитель

    warr11r

    Переводчик

    Регистрация:
    9 сен 2015
    Сообщения:
    1.870
    Ой, у меня выше ссылка надкушенная. Должна вести сюда.

    Кто-то из команды ScummVM привязал знакомство с незнакомцами к локали. Если у игрока английская версия, то знакомится можно со всеми, кто имеет идентификатор 378 (Stranger). Если не английская, то знакомится можно со всеми, кто имеет идентификатор 381 или 382 (как я понимаю, у других языков число объектов поменялось и "незнакомец" немного опустился). Трогать локаль - ересь какая-то. Подозреваю, что это делали не для того, чтобы оградить англичан от склянки и книги (которые у них 381 и 382). Наверняка это французов, итальянцев или немцев спасали от того, кто у них был указан под идентификатором 378. Поэтому я и боюсь предлагать убрать привязку к локали:

    Код:
    if ((charHotspot->nameId == 378) || (charHotspot->nameId == 381) || (charHotspot->nameId == 382))
    Как по мне, лучше добавить какую-нибудь переменную типа isRussian - пусть логика и усложнится, мы вряд ли что-то для других языков сломаем.
     
    Dimouse и Robbo нравится это.
  6. Robbo

    Robbo

    Регистрация:
    22 июн 2024
    Сообщения:
    134
    Кажется, что там уже есть поддержка русского перевода и это просто недоработка ScummVM в данном конкретном месте, а не русского релиза.

    isEnglish это локальная переменная, которая прямо в Hotspot::getTalkId() в hotspots.cpp и определяется:

    Код:
    bool isEnglish = LureEngine::getReference().getLanguage() == Common::EN_ANY;
    Cамый простой хак, если Common::RU_RUS корректно возвращается в
    LureEngine::getReference().getLanguage() (см. detection.cpp, когда бывает RU_RUS), переопределить здесь isEnglish, чтобы она была истинной, когда == Common::EN_ANY или Common::RU_RUS. Для понятности можно и isRussian ввести, но код будет сложнее дальнейший.
     
    Последнее редактирование: 24 ноя 2024
    Dimouse нравится это.
  7. sev_

    sev_

    Регистрация:
    5 июл 2007
    Сообщения:
    131
    @warr11r Я не совсем понимаю, зачем сразу вешать негативные ярлыки типа "ересь какая-то", как-будто мир вращается вокруг русских фанатских переводов. Соотвествующий коммит 17-летней давности ясно показывает, это было сделано именно для не-английских локализаций. Русской версии, как хака английской, тогда не существовало. Я добавил в условие проверку на русский язык, просьба проверить в ближайшие дни, чтобы исправление успело попасть в релиз.

    PS. @Robbo, интересно, но я сделал точно такое же изменение :)
     
    Uka, Dimouse и Robbo нравится это.
  8. Nespeshist

    Nespeshist

    Регистрация:
    23 ноя 2024
    Сообщения:
    4
    А можно еще подружить русскую версию с эмулятором MT-32?
     
    Последнее редактирование: 24 ноя 2024
  9. sev_

    sev_

    Регистрация:
    5 июл 2007
    Сообщения:
    131
    А можно подробнее? Я не слышу разницы между английской и русской версиями, да и нет там разницы в коде между языковыми версиями. Вот видео для примера:
     
  10. Nespeshist

    Nespeshist

    Регистрация:
    23 ноя 2024
    Сообщения:
    4
    Если в ScummVM установлено music_driver=mt32, то при запуске русской версии ScummVM вылетает с ошибкой
    ERROR: Could not find entry Id #16154 in file lure.dat!
    Английская версия с теми же настройками работает нормально.
    Об этом раньше уже писал ув. MAN-biker.
     
  11. sev_

    sev_

    Регистрация:
    5 июл 2007
    Сообщения:
    131
    Я проверял с текущей версией ScummVM, по сути, daily build, lure.dat версии 1.31. Русская локализация версии 1.1 выдаёт звук идентичный английской версии и видео, приведённому выше.

    Действительно ли у вас проблема наблюдается на текущей версии?

    PS. Увидел, что речь идёт о локализации 1.2. Подтверждаю, вылетает.

    PPS. Посмотрел внимательнее. Нужно на самом деле сделать по-нормальному, то есть, добавить язык и изменённые ресурсы в create_lure в ScummVM и сгенерировать официальный новый lure.dat, а не использовать текущую подкладку. То есть, кто-то должен распаковать этот модифицированный lure.dat и вставить все таблицы в нашу утилиту.

    Тогда и будет понятно, где там разъехались индексы.
    --- добавлено 25 ноя 2024, предыдущее сообщение размещено: 25 ноя 2024 ---
    Вообще, я уже не впервые вижу этот подход -- ковырять напрямую наши .dat файлы. Они все генерируются утилитами из dev_tools/, и, соответственно, локализация по-нормальному должна не править .dat файл, а делать изменения в утилиту, передавать мне патч и я тогда добавлю в основную ветку.

    Так, к примеру, был "наковырян" TeenAgent, а теперь вижу и Lure.

    @Dimouse и @warr11r, прошу принять к сведению для будущих проектов
     
    Uka, Dimouse и Robbo нравится это.
  12. Dimouse King of Mice

    Dimouse

    Администратор Переводчик

    Регистрация:
    18 апр 2003
    Сообщения:
    35.206
    @sev_, понял, попробуем. Вообще, Lure был намного раньше сделан. Или это только 1.2 касается, а до этого делали правильно?
     
  13. sev_

    sev_

    Регистрация:
    5 июл 2007
    Сообщения:
    131
    Ну, по-правильному, я бы добавил все версии, чтобы можно было запускать любую. Но можно ограничиться и 1.2, тогда lure.dat будет с предыдущими двумя в комплекте.
     
  14. warr11r Игропотрошитель

    warr11r

    Переводчик

    Регистрация:
    9 сен 2015
    Сообщения:
    1.870
    @sev_, приношу извинения, если написанное мной воспринято как негативная оценка. Я пытался объяснить, что поскольку в коде такая радикальная логика, у этого должна быть причина, и стоит посоветоваться.
    Эх, Lure и TeenAgent, ошибки молодости.:rolleyes:
     
    sev_ нравится это.
  15. warr11r Игропотрошитель

    warr11r

    Переводчик

    Регистрация:
    9 сен 2015
    Сообщения:
    1.870
    Содержимое ресурса (вроде инициализация звука):

    upload_2024-11-27_0-14-13.png

    Он затёрт во всех русских lure.dat.

    lure.dat между 1.0 и 1.1 различается двумя знаками в диалоге выхода (запятые заменены на знак <). lure.dat в плане русификации между 1.1 и 1.2 не отличается. Поскольку ScummVM с версии 2.5.0 стал использовать обновлённый оригинальный lure.dat (с переводом Konami), мы обновили русифицированный.

    Как я понимаю, create_lure извлекает из оригинального exe ресурсы и складывает их в lure.dat. Сложно такое провернуть без русского exe. Взял английский. Для кода он почти совпадает с русским, исключение - эти две таблицы.

    Код:
    const char *russianTextStrings[NUM_TEXT_ENTRIES] = {
        "dpznm", NULL, "yf;fnm", "gjnzyenm", "bcgjkmpjdfnm", "jnrhsnm", "pfrhsnm", "pfgthtnm", "jngthtnm", "ghbvtybnm",
        "jnlfnm", "gjujdjhbnm c", "ghbrfpfnm", "regbnm", "jcvjnhtnmcz", "jcvjnhtnm", "pfukzyenm d", "gjghjcbnm", NULL,
        "dsgbnm", "vjb rfhvfys", "blnb r", "dthyenmcz", "gjlregbnm", "bpexbnm",
        "Fdnjhs", "Yjdfz buhf", "Cj[hfybnm", "Djccnfyjdbnm", "Ds[jl", "Ntrcn \x7F-\x7F",
        "Ntrcn \x7F+\x7F", "Pder drk/", "Pder dsrk/", "(ybxtuj ytn)", " * ", "_", " * ",
        "pfntv", "dct", "Jcnfdbim ujhjl crjhkfv~              (L)f< yfljtkb jyb dct/           (Y)tn< njkmrj yt ctqxfc/",
        "E nt?z c cj?jq", " ybxtuj ytn", "E nt?z ", "uhjn", "uhjnf(jd)",
        NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
    };
    Код:
    const DecoderEntry russianDecoders[] = {
        {"00", ' '}, {"0100", 'e'}, {"01010", 'o'}, {"010110", '\x7e'}, {"0101110", '\x7f'},
        {"0101111", '\x80'}, {"0110", 't'}, {"01110", 'a'}, {"011110", 'n'}, {"0111110", 'Z'},
        {"0111111", '\x81'}, {"1000", 's'}, {"10010", 'i'}, {"100110", 'X'}, {"1001110", '\x5b'},
        {"1001111", '‚'}, {"10100", 'r'}, {"101010", '\x5d'}, {"1010110", '\x83'},
        {"1010111", '\x84'}, {"101100", 'h'}, {"1011010", '\x3c'}, {"1011011", '\x85'},
        {"101110", 'u'}, {"1011110", 'l'}, {"1011111", 'd'}, {"110000", 'y'},
        {"1100010", '\x3e'}, {"1100011", '\x86'}, {"110010", 'g'}, {"110011", '\x00'},
        {"110100", 'w'}, {"1101010", 'c'}, {"11010110", '\x7b'}, {"11010111", '\x7d'},
        {"110110", 'f'}, {"1101110", '.'}, {"1101111", 'm'}, {"111000", 'p'}, {"1110010", 'b'},
        {"1110011", '\x87'}, {"1110100", ','}, {"1110101", 'k'}, {"1110110", '\x27'},
        {"11101110", 'I'}, {"11101111", 'v'}, {"1111000", '!'}, {"1111001", '\xb4'},
        {"11110100", 'T'}, {"11110101", '\xb5'}, {"11110110", '?'}, {"111101110", '\xb2'},
        {"111101111", '\xb3'}, {"11111000", 'W'}, {"111110010", 'H'}, {"111110011", 'A'},
        {"111110100", '\xb1'}, {"111110101", 'S'}, {"111110110", 'Y'}, {"1111101110", 'G'},
        {"11111011110", 'M'}, {"11111011111", 'N'}, {"111111000", 'O'}, {"1111110010", 'E'},
        {"1111110011", 'L'}, {"1111110100", '\x2d'}, {"1111110101", 'R'},
        {"1111110110", 'B'}, {"11111101110", 'D'}, {"11111101111", '\xa6'},
        {"1111111000", 'C'}, {"11111110010", 'x'}, {"11111110011", 'j'},
        {"1111111010", '\xac'}, {"11111110110", 'Ј'}, {"111111101110", 'P'},
        {"111111101111", 'U'}, {"11111111000", 'q'}, {"11111111001", '\xad'},
        {"111111110100", 'F'}, {"111111110101", '1'}, {"111111110110", '\xaf'},
        {"1111111101110", '\x3b'}, {"1111111101111", 'z'}, {"111111111000", '\xa5'},
        {"1111111110010", '2'}, {"1111111110011", '\xb0'}, {"111111111010", 'K'},
        {"1111111110110", '\x25'}, {"11111111101110", '\xa2'}, {"11111111101111", '5'},
        {"1111111111000", ':'}, {"1111111111001", 'J'}, {"1111111111010", 'V'},
        {"11111111110110", '6'}, {"11111111110111", '3'}, {"1111111111100", '\xab'},
        {"11111111111010", '\xae'}, {"111111111110110", '0'}, {"111111111110111", '4'},
        {"11111111111100", '7'}, {"111111111111010", '9'}, {"111111111111011", '\x22'},
        {"111111111111100", '8'}, {"111111111111101", '\xa7'}, {"1111111111111100", '\x2f'},
        {"1111111111111101", 'Q'}, {"11111111111111100", '\xa8'}, {"11111111111111101", '\x28'},
        {"111111111111111100", '\x29'}, {"111111111111111101", '\x99'}, {"11111111111111111", '\xa9'},
        {NULL, '\0'}
    };
    Добавлять, создавая русскую локаль для несуществующего ехе?

    Можно потестировать с МТ-32.
     

    Вложения:

    • lure.zip
      Размер файла:
      38,5 КБ
      Просмотров:
      6
    sev_ и Dimouse нравится это.
  16. sev_

    sev_

    Регистрация:
    5 июл 2007
    Сообщения:
    131
    Да. Результат-то всё равно совпадёт, как ты, собственно и проверил.
     
  17. warr11r Игропотрошитель

    warr11r

    Переводчик

    Регистрация:
    9 сен 2015
    Сообщения:
    1.870
    Добавил в код русскую локаль. Проверил ещё раз, пересобрав lure.dat.
    Обновил номер минорной версии.
    Поскольку exe-файл определяется по хешу, добавил ещё пару строк: если английский exe назван Lure.exe - собирается английский вариант lure.dat, если его же переименовать на Lure_ru.exe - русский.
     

    Вложения:

    Dimouse нравится это.
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление