在玩秘密档案2这个游戏时,我们发现了一个游戏找不到指定文件而出错的问题。: `& _; \- r6 u$ ^
根据我的经验,最后终于确认是游戏调用了一个德文文件名的文件。9 ~2 }2 r1 z* D* K6 T
这个文件名中文环境下无法识别,游戏自然会出错。
7 [+ d. i1 n; k! V$ {, `$ z% d( G$ m$ L: E
解决办法1
/ u4 I) e( M2 `5 h把系统的区域,语言之类的都设置为德文,经验证可以解决问题。' o4 ~6 }; k5 S! M
不过,这个办法似乎不太好,太麻烦,用其他软件的时候也会许会产生乱码现象。4 K! G) f O+ m& p/ z% U
1 W& o: e0 q( Z: q2 H( Q* I
解决办法20 M+ f1 H$ H6 k
其实,在研究1个半骑士的时候,我们已经遇到过类似的问题,并且已经成功地解决了。
3 ~+ r& u: C: @8 T- }% P为了更容易说明问题,我把问题简化一下来说明。5 K+ Z3 s2 r, ?/ o
& E7 I5 ?2 {2 j/ J
假设游戏有AAA,BBB2个文件,AAA文件调用了BBB文件,其中BBB文件的文件名中含有一个德文专有字符,在中文环境下无法正常显示。这2个文件被打包入一个game.pak文件,并被加密,也就是说我们用hexworkshop无法从game.pak文件检索出AAA或BBB的文件名来。同时,我们手头有一个game.pak文件的解包器。- M- U$ P) p% q9 H/ R
" J% L8 f% q. S: a9 I+ {" O8 o
就这样,我们模拟了一个游戏的出错环境。下面,我们说说解决办法。
$ O( |* b3 R5 a+ ?: N) F. _9 n4 g& N5 @% P5 U* Q" ~1 Q8 ~
1.我们用解包器在德文环境中,把game.pak文件中的AAA,BBB2个文件解出来。由于是德文环境,自然不会有问题。
% E9 `9 S4 C/ B V# @
: }# e" {0 E' X& E2.解包完毕以后,我游戏将会优先读取解包出来的AAA,BBB文件,而不是从包文件里面读取。/ }6 `4 z' |8 ^, W' c
接下来就很简单了,既然AAA调用了BBB。那么在AAA的内部必定有BBB这个含有德文字符的文件名。 我们找到这个文件名,把它修改为全英文的,再把BBB的文件名改为和它一致即可。/ S! ?' P$ _+ g
0 M/ c Y u8 N) @- P$ r* O$ g( j
3.再把游戏改为中文环境,游戏应该不会出错了。
- c( r% k) {, }; ?; \- ] 由于包游戏文件被加密了,所以必须象这样把文件解包出来以后再修改。8 W! F( x7 c+ K
用这个方法我成功地解决了1个半骑士的问题,秘密档案2我还没试,热心的朋友可以试一下。
9 y0 B" ]5 l! ?2 c! V: P V 就像刘谦的魔术一样,一旦秘密被拆穿了,也就没有神秘的了。
( h) m* [; `6 C4 W: A% V3 M' E1 s3 u$ d, ?, S
补充一点,从多个文件中寻找一个字符串,可以用秀丸的grep功能。% z: ~" k' ^- B
一个半骑士的相关帖子如下,早已提到过类似问题
+ w6 L$ n7 J& J" shttps://www.chinaavg.com/read.php?tid=14367 |