Назначение и использование различных методов обработки текста
INFO
В Hook-режиме иногда могут считываться ошибочные тексты, например, дублирующиеся тексты или прочий бессмысленный текст. В таких случаях необходимо использовать обработку текста.
TIP
При наличии очень сложных форм ошибок можно активировать несколько методов обработки и настроить порядок их выполнения для получения богатых комбинаций методов обработки.
TIP
При встроенном переводе большинство методов обработки не применяются, чтобы снизить вероятность сбоя игры. Доступные методы включают: фильтрацию переносов строк
, замену строк
, пользовательскую python-обработку
, фильтрацию угловых скобок <>
, удаление фигурных скобок {}
Фильтрация символов вне японского набора символов
Иногда могут попадаться искаженные тексты. Поскольку эта проблема обычно возникает в японских играх, предусмотрен данный метод для фильтрации символов, которые не могут быть закодированы в кодировке shift-jis, например:
エマさんԟのイԠラストは全部大好き!
会被处理成エマさんのイラストは全部大好き!
Фильтрация управляющих символов
Этот метод фильтрует управляющие символы ASCII в тексте, такие как
и т.д.
Фильтрация английских знаков пунктуации
Этот метод фильтрует в тексте символы
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
Фильтрация всех символов, кроме 「」
例如:
こなみ「ひとめぼれってやつだよね……」
将被处理为「ひとめぼれってやつだよね……」
Удаление фигурных скобок {}
Многие игровые скрипты используют {} и некоторые другие символы для добавления фуриганы к китайским иероглифам, например:
{汉字/фуригана}
и{汉字:фуригана}
, как в примерах「{恵麻/えま}さん、まだ{起き/おき}てる?」
или「{恵麻:えま}さん、まだ{起き:おき}てる?」
, которые будут обработаны как「恵麻さん、まだ起きてる?」
. Сначала система попытается удалить фуригану по этим шаблонам, а затем удалит все фигурные скобки и их содержимое.Извлечение указанного количества строк
Этот метод извлекает количество строк, указанное в параметре количество извлекаемых строк.
Если активирован параметр извлечение с конца, то будут извлечены указанное количество строк текста с конца.
HOOK Удаление повторяющихся символов AAAABBBBCCCC->ABC
INFO
Этот фильтр применяется только к тексту, прочитанному в режиме HOOK.
Это наиболее часто используемый фильтр.
由于游戏的文字有时会绘制一遍文字在绘制一遍阴影再绘制一遍描边等之类的原因,Hook模式会多次提取到被重复绘制的字符。例如
恵恵恵麻麻麻さささんんんははは再再再びびび液液液タタタブブブへへへ視視視線線線ををを落落落とととすすす。。。
,这个方法会将他处理成恵麻さんは再び液タブへ視線を落とす。
。默认的重复次数是1
会自动分析重复的字数,但也有分析的不准确的情况,建议指定一个确定的重复字数。HOOK Удаление повторяющихся строк ABCDABCDABCD->ABCD
INFO
Этот фильтр применяется только к тексту, прочитанному в режиме HOOK.
这个也比较常见,和上面的类似,只不过一般不会反复刷新,而是快速的一次刷新多次。效果为
恵麻さんは再び液タブへ視線を落とす。恵麻さんは再び液タブへ視線を落とす。恵麻さんは再び液タブへ視線を落とす。
会变成恵麻さんは再び液タブへ視線を落とす。
。同样,默认的重复次数是1
会自动分析重复的字数,但也有分析的不准确的情况,建议指定一个确定的重复字数。HOOK Удаление повторяющихся строк S1S1S1S2S2S2->S1S2
INFO
Этот фильтр применяется только к тексту, прочитанному в режиме HOOK.
这个相对比较复杂,有时每个句子的刷新次数是不完全一样的,这时只能完全由程序分析来决定如何去重。例如
恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。なんてニヤニヤしていると、恵麻さんが振り返った。私は恵麻さんの目元を優しくハンカチで拭う。私は恵麻さんの目元を優しくハンカチで拭う。
, 其中恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。
重复了3次,なんてニヤニヤしていると、恵麻さんが振り返った。
没有重复,私は恵麻さんの目元を優しくハンカチで拭う。
重复了2次,最终经过分析将得到恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。なんてニヤしていると、恵麻さんが振り返った。私は恵麻さんの目元を優しくハンカチで拭う。
,其中因为过于复杂,会存在少许的分析错误,这也是无法避免的,但一般都能基本正确的得到结果。HOOK Удаление повторяющихся строк ABCDBCDCDD->ABCD
INFO
Этот фильтр применяется только к тексту, прочитанному в режиме HOOK.
Это также встречается довольно часто. Причина этого явления в том, что иногда при перехвате (HOOK) функции, отвечающей за отображение текста, её параметром является сам отображаемый текст. Эта функция вызывается при выводе каждого символа, и каждый раз строка параметра смещается на следующий символ. В результате при первом вызове уже получается полный текст, а при последующих вызовах выводятся оставшиеся подстроки, пока длина не уменьшится до нуля. Например:
恵麻さんは再び液タブへ視線を落とす。麻さんは再び液タブへ視線を落とす。さんは再び液タブへ視線を落とす。んは再び液タブへ視線を落とす。は再び液タブへ視線を落とす。再び液タブへ視線を落とす。び液タブへ視線を落とす。液タブへ視線を落とす。タブへ視線を落とす。ブへ視線を落とす。へ視線を落とす。視線を落とす。線を落とす。を落とす。落とす。とす。す。。
После анализа можно сделать вывод, что настоящий текст должен быть:恵麻さんは再び液タブへ視線を落とす。
HOOK Удаление повторяющихся строк AABABCABCD->ABCD
INFO
Этот фильтр применяется только к тексту, прочитанному в режиме HOOK
这个也比较常见,出现的原因是,每次绘制一个字符,然后绘制下一个字符时都会把前面的字符都再绘制一遍。例如
恵麻恵麻さ恵麻さん恵麻さんは恵麻さんは再恵麻さんは再び恵麻さんは再び液恵麻さんは再び液タ恵麻さんは再び液タブ恵麻さんは再び液タブへ恵麻さんは再び液タブへ視恵麻さんは再び液タブへ視線恵麻さんは再び液タブへ視線を恵麻さんは再び液タブへ視線を落恵麻さんは再び液タブへ視線を落と恵麻さんは再び液タブへ視線を落とす恵麻さんは再び液タブへ視線を落とす。
经过分析将判断真实的文本应该是恵麻さんは再び液タブへ視線を落とす。
При наличии многострочного текста, каждая строка обрабатывается отдельно по указанной выше логике, что приводит к дополнительной сложности. Из-за чрезмерной сложности этот процесс часто обрабатывается некорректно; если вы столкнулись с такой проблемой, рекомендуется написать собственный обработчик на Python.
Фильтрация угловых скобок <>
Фактически это фильтрация HTML-тегов, название дано для новичков, которые могут не понимать сути. Например, теги
<div>
,</div>
и<div id="dsds">
будут отфильтрованы. В основном используется в играх на TyranoScript, где HOOK извлекает текст как innerHTML, который обычно содержит множество таких тегов.Фильтрация символов переноса строки
Первоначальное название — Фильтрация символов переноса строки с адаптацией к языку, старая версия Фильтрация символов переноса строки устарела.
Если исходный язык не японский, то при фильтрации символов переноса строки они заменяются пробелами, а не удаляются, чтобы избежать слипания слов.
Фильтрация цифр
Пропущено
Фильтрация английских букв
Пропущено
Пользовательская обработка на Python
Написание Python-скрипта для более сложной обработки. Если скрипт обработки отсутствует, в каталоге userconfig автоматически создается файл
mypost.py
со следующим шаблоном:pythondef POSTSOLVE(line): # Пожалуйста, напишите здесь ваш пользовательский обработчик return line
Замена строк
Используется не только для замены, но и для фильтрации. Например, можно отфильтровать фиксированные наборы бессмысленных символов или постоянно обновляющиеся перевернутые треугольники, заменяя их на пустые строки.
Можно одновременно активировать опции
Регулярное выражение
иЭкранирование
, или выбрать только одну из них, или не активировать ни одну.Если ни одна не активирована, будет использована обычная замена строк.
При активации
Экранирования
вводимые данные будут рассматриваться как экранированные строки, а не как строковые литералы. Например, можно использовать\n
для обозначения перевода строки, что позволяет фильтровать символы, встречающиеся только до или после перевода строки.При активации
Регулярного выражения
будет использована замена по регулярному выражению.