各種文本處理方法的作用和用法
INFO
一般在Hook模式下,有時會讀取到錯誤的文本,例如有重複的文本,或者其他亂七八糟的文本,這時需要使用文本處理來解決
TIP
如果有非常複雜的錯誤形式,可以通過激活多種處理方式,並調整他們的執行順序來得到豐富的處理方法組合
TIP
內嵌翻譯時大部分處理方法不會生效,以減少遊戲崩潰的可能。可以使用的方法包括:過濾換行符
,字符串替換
,自定義python處理
,過濾尖括號<>
,去除花括號{}
過濾文字中的非日語字元集字元
有時,會hook到一些亂碼文本。由於一般是日語遊戲會出現這個問題,因此預設了這個方法,來過濾掉無法使用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的某個顯示文本的函數,其參數是顯示的文本,這個函數會再每顯示一個字符時都會調用,且每次會把參數的字符串指向下一個字符,從而導致其實第一次調用其實就已經得到完整的文本了,後續每次又輸出了剩下的子串,直到長度遞減爲0。例如
恵麻さんは再び液タブへ視線を落とす。麻さんは再び液タブへ視線を落とす。さんは再び液タブへ視線を落とす。んは再び液タブへ視線を落とす。は再び液タブへ視線を落とす。再び液タブへ視線を落とす。び液タブへ視線を落とす。液タブへ視線を落とす。タブへ視線を落とす。ブへ視線を落とす。へ視線を落とす。視線を落とす。線を落とす。を落とす。落とす。とす。す。。
經過分析將判斷真實的文本應該是恵麻さんは再び液タブへ視線を落とす。
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
來表示換行符,從而實現可以過濾僅在換行符前後出現的字符等。激活
正則
後,將使用正則表達式替換。