Перейти к содержимому
Zone of Games Forum
lilinoa

Не поддерживается русский язык при вводе имени

Рекомендованные сообщения

Здравствуйте!

Закончили перевод новеллы Amnesia:Memories , но как всегда в последний момент обнаружилась проблема. Невозможно ввести имя героини на русском языке,  оно просто не отображается. 

Покопавшись в файлах, оказалось, что алфавит для ввода имени записан вот такими символами “ABCDEFGHIJKLM” , естественно, замена на обычные “А Б В Г Д” только ухудшила ситуацию:

Скрытый текст

6I7OPiiwRzw.jpg

Возможно ли как-то решить эту проблему? Или тут уже всё, без вариантов? Не вводить имя нельзя, игра не пускает без этого. Можно как-то заблокировать возможность выбора имени?

p.s. заменяла информацию в файлах: mode_name.iet и function_utility.lua. Можно скачать вот тут 

Поделиться сообщением


Ссылка на сообщение
On 6/3/2018 at 11:38 PM, lilinoa said:

Здравствуйте!

Закончили перевод новеллы Amnesia:Memories , но как всегда в последний момент обнаружилась проблема. Невозможно ввести имя героини на русском языке,  оно просто не отображается. 

Покопавшись в файлах, оказалось, что алфавит для ввода имени записан вот такими символами “ABCDEFGHIJKLM” , естественно, замена на обычные “А Б В Г Д” только ухудшила ситуацию:

Spoiler

 

Чтобы отображались русские имена и русские символы при вводе, вы сможете лишь в том случае, если перерисуете в шрифте ttf или otf английский и японский в японской локали. (U+FF21 и далее) (Это сработает)

Spoiler

fullwidth = fullwidth .. "abcdefghijklmnopqrstuvwxyz" (для отображения введённого символа)
fullwidth = fullwidth .. "ABCDEFGHIJKLMNOPQRSTUVWXYZ" (для отображения введённого символа)
fullwidth = fullwidth .. "アイウエオカキクケコサシスセソ\タチツテトナニヌネノ" (для отображения введённого символа)
fullwidth = fullwidth .. "ハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョ" (для отображения введённого символа)

table.insert(t, "ABCDEFGHIJKLM") (для отображения вводимого символа)
table.insert(t, "NOPQRSTUVWXYZ") (для отображения вводимого символа)
table.insert(t, "abcdefghijklm") (для отображения вводимого символа)
table.insert(t, "nopqrstuvwxyz") (для отображения вводимого символа)
table.insert(t, "ハヒフヘホマミムメモヤユヨラ") (для отображения вводимого символа)

 

Но учтите, что ширина русской буквы должны быть, такой же как и в японской кодировке.

33/33 русских символов (нижнего и верхнего регистра) = 26/26 английских символов (нижнего и верхнего регистра) + 14 символов японской локали итого = 66 перерисованных символов, но можно и сократить, убрав из верхнего регистра несколько ненужных русских символов.

Spoiler

af1f368096c1afa58b4ae35d7467ac7d.jpg

 

А можно всего этого избежать.

 

Spoiler

 

mode_name.iet

    local t = {}
    table.insert(t, "АБВГДЕЁЖЗИЙКЛМНОП")
    table.insert(t, "РСТУФХЦЧШЩЪЫЬЭЮЯ")
    table.insert(t, "абвгдеёжзийклмноп")
    table.insert(t, "рстуфхцчшщъыьэюя")
    table.insert(t, "0123456789!?-@#$")
    S_TxtInput.txt_area2 = {}
    _text_set(e, S_TxtInput.txt_area2, t, 2)  (изначально стоит 3 = три символа для отображения японских символов в ANSI / 2 символа для отображения русских символов в ANSI)

    table.insert(t, "АБВГДЕЁЖЗИЙКЛМНОП") (вмещается 13 символов) МНОП — будут видны, но не будут работать как вводимый символ.

mode_name.iet

    local t = {}
    table.insert(t, "АБВГДЕЁЖЗИЙКЛ")
    table.insert(t, "МНОПРСТУФХЦЧШ")
    table.insert(t, "ЩЪЫЬЭЮЯабвгде")
    table.insert(t, "ёжзийклмнопрст")
    table.insert(t, "уфхцчшщъыьэюя")
    S_TxtInput.txt_area2 = {}
    _text_set(e, S_TxtInput.txt_area2, t, 2)

Лучше так без твёрдого знака Ъ

 

Где-то ещё надо искать код для 3 символов ввода в mode_name.iet (данный файл служит для ввода символов) (и скорее всего код для изменения размера выделенной области для буквы, немного выше)

function_utility.lua

        halfwidth = halfwidth .. "abcdefghijklmnopqrstuvwxyz"
        halfwidth = halfwidth .. "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        halfwidth = halfwidth .. "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョ。「」、・ー゙゚"
        fullwidth = fullwidth .. "абвгдеёжзийклмнопрстуфхцчшщъыьэюя"
        fullwidth = fullwidth .. "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"
        fullwidth = fullwidth .. "アイウエオカキクケコサシスセソ\タチツテトナニヌネノ"
        fullwidth = fullwidth .. "ハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョ"
        fullwidth = fullwidth .. "。「」、・ー゛゜"

 

Spoiler

b426ca0e58a9b2c02868f1c1e004a42c.jpg

 

Изменено пользователем Tericonio
  • +1 1

Поделиться сообщением


Ссылка на сообщение
23 часа назад, Tericonio сказал:
  Не актуально (Показать содержимое)

 

Чтобы отображались русские имена и русские символы при вводе, вы сможете лишь в том случае, если перерисуете в шрифте ttf или otf английский и японский в японской локали. (U+FF21 и далее) (Это сработает)

  Код в скриптах (Показать содержимое)

fullwidth = fullwidth .. "abcdefghijklmnopqrstuvwxyz" (для отображения введённого символа)
fullwidth = fullwidth .. "ABCDEFGHIJKLMNOPQRSTUVWXYZ" (для отображения введённого символа)
fullwidth = fullwidth .. "アイウエオカキクケコサシスセソ\タチツテトナニヌネノ" (для отображения введённого символа)
fullwidth = fullwidth .. "ハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョ" (для отображения введённого символа)

table.insert(t, "ABCDEFGHIJKLM") (для отображения вводимого символа)
table.insert(t, "NOPQRSTUVWXYZ") (для отображения вводимого символа)
table.insert(t, "abcdefghijklm") (для отображения вводимого символа)
table.insert(t, "nopqrstuvwxyz") (для отображения вводимого символа)
table.insert(t, "ハヒフヘホマミムメモヤユヨラ") (для отображения вводимого символа)

 

Но учтите, что ширина русской буквы должны быть, такой же как и в японской кодировке.

33/33 русских символов (нижнего и верхнего регистра) = 26/26 английских символов (нижнего и верхнего регистра) + 14 символов японской локали итого = 66 перерисованных символов, но можно и сократить, убрав из верхнего регистра несколько ненужных русских символов.

  Как будет смотрется (Показать содержимое)

af1f368096c1afa58b4ae35d7467ac7d.jpg

 

А можно всего этого избежать.

 

  Лучший вариант (Скрыть содержимое)

 

mode_name.iet

    local t = {}
    table.insert(t, "АБВГДЕЁЖЗИЙКЛМНОП")
    table.insert(t, "РСТУФХЦЧШЩЪЫЬЭЮЯ")
    table.insert(t, "абвгдеёжзийклмноп")
    table.insert(t, "рстуфхцчшщъыьэюя")
    table.insert(t, "0123456789!?-@#$")
    S_TxtInput.txt_area2 = {}
    _text_set(e, S_TxtInput.txt_area2, t, 2)  (изначально стоит 3 = три символа для отображения японских символов в ANSI / 2 символа для отображения русских символов в ANSI)

    table.insert(t, "АБВГДЕЁЖЗИЙКЛМНОП") (вмещается 13 символов) МНОП — будут видны, но не будут работать как вводимый символ.

mode_name.iet

    local t = {}
    table.insert(t, "АБВГДЕЁЖЗИЙКЛ")
    table.insert(t, "МНОПРСТУФХЦЧШ")
    table.insert(t, "ЩЪЫЬЭЮЯабвгде")
    table.insert(t, "ёжзийклмнопрст")
    table.insert(t, "уфхцчшщъыьэюя")
    S_TxtInput.txt_area2 = {}
    _text_set(e, S_TxtInput.txt_area2, t, 2)

Лучше так без твёрдого знака Ъ

 

Где-то ещё надо искать код для 3 символов ввода в mode_name.iet (данный файл служит для ввода символов) (и скорее всего код для изменения размера выделенной области для буквы, немного выше)

function_utility.lua

        halfwidth = halfwidth .. "abcdefghijklmnopqrstuvwxyz"
        halfwidth = halfwidth .. "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        halfwidth = halfwidth .. "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョ。「」、・ー゙゚"
        fullwidth = fullwidth .. "абвгдеёжзийклмнопрстуфхцчшщъыьэюя"
        fullwidth = fullwidth .. "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"
        fullwidth = fullwidth .. "アイウエオカキクケコサシスセソ\タチツテトナニヌネノ"
        fullwidth = fullwidth .. "ハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョ"
        fullwidth = fullwidth .. "。「」、・ー゛゜"

 

  В итоге как будет смотреться (Показать содержимое)

b426ca0e58a9b2c02868f1c1e004a42c.jpg

 

Большое спасибо! Стало лучше, но лишь немного.. Набираются буквы с трудом, буквально через раз. Но вот в самой игре, после ввода имени,  когда персонажи обращаются к героине, оно всё ещё на английском. Возможно, где-то ещё нужно что-то исправить?

Поделиться сообщением


Ссылка на сообщение

@lilinoa 

Пока есть такая проблема, только как её решить не прибегая к первому варианту — кодирования символов английских и японских, пока нет представления.

Сами файлы написаны на Lua. Если с вводимыми символами решаемо, то если в нижнем коде менять 1 на 2, при том что — выше в коде будет стоять 3, в окне ввода введённые символы исчезают, но появляются в диалоге как и должно быть на русском.

Так же непонятен код расстояния между символами, для любой кодировки при вводе этих символов, его как будто, куда-то впихнули не в тот скрипт.

Вот эта злосчастная 1 — портит всё.

Изменено пользователем Tericonio

Поделиться сообщением


Ссылка на сообщение
On 6/3/2018 at 11:38 PM, lilinoa said:

Можно как-то заблокировать возможность выбора имени?

Заблокировать ввод имени возможно так же.

Но тогда вам придётся придумать имя Героине. Изменить немного диалог до ввода имени, и заменить #Name[0] на имя героини во всех файлах .iet/*.lua. Где что закомментировать я помогу. Но это не совсем верное решение.

Блокировку ввода добился, после диалога о вводе имени

        [maintxt_print text="   What about your name?"]
        [maintxt_print text="   Do you think you can at least"]
        [maintxt_print text="   remember your name?"]

переходит к следующему диалогу игнорируя ввод символов.

        [maintxt_print text="   #Name[0]......?"]
        [maintxt_print text="   Is that your name?"]

Если ввести за место #Name[0] — Сью, то диалог примет такой оборот.

Сью......?
Is that your name?

А вот решить проблему с вводом имени пока не удаётся, кроме как кодировать шрифт от A-Z и a-z.  Тут нужен спец по Lua, а также нужны будут:  вся игра, и все распакованные файлы, если кто-то возьмётся.

Код скорее всего для правильного ввода, находится в mode_name.iet

Spoiler

    local _text_set = function (e, dst, src, byte_len)
        for i = 1, #src do
            dst = {}
            for j = 1, math.floor(string.len(src) / byte_len) do
                local idx_begin = 1 + byte_len * (j -1)
                dst[j] = string.sub(src, idx_begin, idx_begin + (byte_len -1))
            end
        end
    end

Или может не только в ней, но ещё и ниже.

 

Изменено пользователем Tericonio

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Продвигаемые темы

  • Последние сообщения

    • Какие ещё условности если там валюта — крышки от колы? Это не условности, это реальность данной вселенной.
    • Да там ГГ-жиробасик этой ядерколой отхиливался как с добрым утром. На вид то может и ниче так. А вот звук при движении — как будто полупустая консервная банка громыхает.
    • @0wn3df1x Спс, за объяснение, всё чётко описал.
    • Да, похоже что добавлено некоторое количество нового текста
    •   https://wtftime.ru/articles/143386/lords-of-the-fallen-poluchila-patch-15-s-modifikatorami-menjajuschimi-gejmplej/
    • Объясняю изменения по возврату средств изнутри.
      Изменения касаются только предзаказов. Ранее документация предусматривала: ВОЗВРАТ СРЕДСТВ ЗА ПРЕДЗАКАЗЫ Если вы оформили предзаказ на товар в Steam и оплатили его стоимость, вы сможете запросить возврат в любой момент, пока товар еще не вышел. Стандартные правила возврата (14 дней/2 часа) вступят в действие, как только состоится релиз. Сейчас документация предусматривает: ВОЗВРАТ СРЕДСТВ ЗА ИГРЫ, ПРИОБРЕТЁННЫЕ ДО ИХ ОФИЦИАЛЬНОЙ ДАТЫ ВЫХОДА Как правило, если вы приобретаете игру в Steam до её официальной даты выхода, для возврата средств будут действовать правила двухчасового лимита игрового времени, однако 14-дневный период для возврата средств начнётся только после официальной даты выхода. Вместе с этим было введено понятие “расширенный доступ”, согласно документации: Расширенный доступ — функция, которая позволяет игрокам, купившим игру по предзаказу, сыграть в неё до официального выхода. Например, такую функцию могут включать делюкс-издания, продаваемые по предзаказу. А теперь объясняю простыми словами:
      Раньше была юридическая прореха: у игр, продающихся по предзаказу, не было прописанного двухчасового лимита пользования, ограничивающего запрос на возврат средств. Действовало только правило “до официального выпуска игры деньги можно вернуть в любой момент. После выпуска игры начинает действовать стандартное правило 14 дней и 2-х часов”.  Таким образом, когда разработчики продавали какое-нибудь издание за 5000 рублей, позволяющее играть за месяц или несколько недель до выхода игры, люди могли купить это издание, пройти игру хоть 5 раз подряд, наиграть 200 часов, а затем, воспользовавшись юридической дырой и вернуть свои 5000 рублей.  Естественно, это было злоупотреблением системой возвратов, поскольку, как указывается в документах: Возможность делать возвраты была добавлена, чтобы при покупке продуктов в Steam вы ничем не рисковали. Это ни в коем случае не способ бесплатно пользоваться играми. Если у нас возникнут подозрения, что вы злоупотребляете этой системой, мы можем отменить возможность возврата для вашего аккаунта. Но, благодаря прорехе в документах, эти возвраты были возможны. Теперь прореха была устранена.

      Если вы купите дорогое издание, открывающее доступ до выхода игры, и наиграете в нём больше двух часов — вы не сможете вернуть деньги за предварительный заказ. Но если вы купите и не будете играть, то, как и раньше, будет действовать правило возврата “в течение 14 дней после выхода”.
    • и халявные выходные тоже сюда.
    • А, да. Вы правы. 
    • А белорусы у нас истина? Мне, как фанату все эти условности очень зашли. С силовой тож не увидел проблем — в большинстве случаев ей управлял тот, кто ее тока на картинках видел. Плюс очень круто было показано, что силовая — это не решение всех проблем, ей действительно надо уметь пользоваться и у нее есть слабые места. Так что все эти моменты 50/50 с какой точки зрения смотреть — как и положительно можно рассматривать так и отрицательно — на свой вкус. У меня эти моменты негатива не вызывали)
  • Изменения статусов

  • Лучшие авторы


Zone of Games © 2003–2024 | Реклама на сайте.

×