仙境傳說RO:npc漢化方法

仙境傳說RO:npc漢化方法
大家好我是艾西,在我們說了那么多期的教程中大家應(yīng)該有發(fā)現(xiàn)游戲內(nèi)很多都還是英文的,如果對于國內(nèi)的玩家開展這個游戲可能有些不熟悉的小伙伴玩起來會有點難受,今天艾西跟大家分享下怎么漢化NPC等。
我們的仙境傳說RO是基于Pandas編譯出來的,而Pandas的前身是rAthenaCH,之前rAthenaCH的作者有維護過游戲內(nèi)的漢化工作,但因為游戲整體的漢化量太大了就放棄了。但還是漢化不少內(nèi)容等,目前pandas是全英文的,如果先要漢化那就把rAthenaCH已經(jīng)漢化好的NPC腳本直接翻譯丟進去。大家可以在GIthub去找一下資源包小編在這里就不太方便放入因PING臺限制。
?
資源包下載好后,會有zh-CH和zh-TW 意思是一個是簡體漢化包一個是繁體的,將文件包丟進Pandas服務(wù)端目錄中既可,舊的npc文件包記得備份一下或是直接改文件名后綴用于區(qū)分即可。文件丟進去后啟動服務(wù)器,在游戲中輸入:@reloadsoript 加載一下腳本即可
?

因翻譯量的問題,還是會有部分不是中文大家可以自己嘗試查看一下
邏輯工程代碼:
import os
import sys
import codecs
from zhconv import convert
?
# args 0 is inputDir
# args 1 is outputDir
#遞歸遍歷inputDir, 對每個文件執(zhí)行func
def walkDir(inputDir, func):
for root, dirs, files in os.walk(inputDir):
for file in files:
#如果是目錄,遞歸遍歷
if os.path. isdir(os.path.join( root, file)):
wa1kDir(os . path . join(root, file), func)
#如果是文件,執(zhí)行func
else :
func (os.path . join(root, file))
#把inputUri指向的文件轉(zhuǎn)為繁體中文,輸出到outputUri
def zhcn2zhtw( inputUri, outputUri):
print( ”converting“+ inputUri +‘to ' + outputUri)
inputFile = codecs.open( inputUri, 'r', 'utf-8')
outputFile = codecs .open( outputUri, 'w', ' utf-8' )
for line in inputFile :
outputFile. write(convert(line, ' zh-tw' ))
inputFile . close( )
outputFile . close()
def walkFunc (inputUri):
# inputUri = zh- CN\npc \re \mobs \fields \prontera. txt
# outputDir = zh-TW
# inputDir = zh-CN
# outputUri = zh- TW\npc \re \mobs \fields \prontera . txt
outputUri = outputDir + inputUri[1en(inputDir):]
如果是自己想去漢化游戲可以在Pandas>zh-CN > npc > custom > etc >autopot.txt文檔里找到我們需要翻譯的英文代碼例如:直接選中你想翻譯的代碼利用CHatGPT去翻譯
disable_ items ;
mes” [Perchik]";
mes "I can ^0055FFsign your name^000000 on almost any rare item you hold.";
next ;
if(select("Tel1 me more...:Sign my items, please!") == 1) {
mes”[Perchik]";
mes" I can put your name on any slotless equipment or weapon." ;
emotion ET _AHA;
next;
mes”[Perchik]" ;
if (getarraysize( .@Item) | getarraysize( .@Cost)) {
mes "For my work I accept:" ;
if (getarraysize( .@Item)) for(set .@i,0; . @i < getarraysize( . @Item); set .@i, .@i+2)
mes“~ "+.@Item[ .@i+1]+"x "+ getitemname( . @Item[ .@i]);
if (. @Cost[0]) mes”~ "+callfunc("F_ InsertComma" ,. @Cost[0])+" Zeny";
if ( . @Cost[1]) mes”~ "+callfunc("F_ InsertComma", . @Cost[1])+" Zeny per refine";
}
else mes "I work for free, but...";
next;
emotion e_ cry;
mes” [Perchik]";
mes "Alas, I have 12 hungry children";
mes?'and a very angry wife." ;
next;
mes”[Perchik]";
mes "Or it was 12 angry children";
mes "and a very hungry wife..."
emotion ET_ SCRATCH;
close;
?
先下達一個指令:請幫我把下面這段代碼里的字符串翻譯成中文,中括號括起來的部分是人名,其余部分每行的字符串都是相連的,請把它們連接起來后再翻譯,并且翻譯后的中文字符串按每行最多14個漢字拆分成新的代碼,然后將我們復(fù)制下來的代碼粘貼進去形成新的代碼,將新的代碼直接粘貼進我們剛剛說復(fù)制的代碼替換掉即可
mes"[派爾奇克]";
mes"我可以在你手上的任何稀有物品上^0055FF簽上你的名字000000。";
next;
If(select("告訴我....請為我的物品簽名! ") == 1){
mes"[派爾奇克]";
mes“我可以在任何無槽裝備或武器上簽上你的名字。";
emotion ET _AHA;
next;
mes"[派爾奇克]";
if (getarraysize(.@ltem) II getarraysize(.@Cost) {
mes“我接受以下支付方式:";
if (getarraysize(.@ltem)) {
for(set .@i,0; .@i<getarraysize(.@ltem); set @i.@i+2) {
mes。~ + .@ltem[.@i+ 1]+“個+getitemname(.@ltem[.@i);
}
}
if (.@Cost[0]) {
mes“~" + calfunc("F InsertComma".@Costl0)+" Zeny";
if (.@Cost[1]) {
mes " ~ "+callfunc("F InsertComma' ..@Cost[1])+" Zeny每次強化";
}
}
else{
mes“我是免費的,但是......“;
}
next; (此代碼僅為示例并沒有全部填寫全大家參考下即可)
那么今天的分享教程就到這里啦我們下期再見! 我是馳網(wǎng)艾西
擁有一臺服務(wù)器可以做很多有趣的事情!
?
?
?
?