在玩秘密档案2这个游戏时,我们发现了一个游戏找不到指定文件而出错的问题。2 A T/ D4 ^9 f: B9 N
根据我的经验,最后终于确认是游戏调用了一个德文文件名的文件。5 }* s+ `' v) g3 M$ r$ }
这个文件名中文环境下无法识别,游戏自然会出错。
% Q# {/ z0 C5 s3 Z- g8 X: t9 k$ |1 i
解决办法1
! F5 ~( F+ Y, Y" Y, m把系统的区域,语言之类的都设置为德文,经验证可以解决问题。 ]4 \8 f$ a, c) d; X
不过,这个办法似乎不太好,太麻烦,用其他软件的时候也会许会产生乱码现象。
8 ^7 u8 q/ D7 ^ d0 Q3 `! A
+ Q, ~8 \% h( r5 X解决办法2$ ~% j% q. p5 R' a# J' H7 y
其实,在研究1个半骑士的时候,我们已经遇到过类似的问题,并且已经成功地解决了。3 j5 D9 v q7 @: T) K
为了更容易说明问题,我把问题简化一下来说明。& P. e6 `2 l8 x; Q
2 w8 J0 y7 P z, U3 h N& `
假设游戏有AAA,BBB2个文件,AAA文件调用了BBB文件,其中BBB文件的文件名中含有一个德文专有字符,在中文环境下无法正常显示。这2个文件被打包入一个game.pak文件,并被加密,也就是说我们用hexworkshop无法从game.pak文件检索出AAA或BBB的文件名来。同时,我们手头有一个game.pak文件的解包器。 C0 |* y& [5 r9 p
7 @" T' g/ ?) b
就这样,我们模拟了一个游戏的出错环境。下面,我们说说解决办法。% @/ y) t) ~& \5 G7 [7 u
* C9 T c" D0 g6 R- R( x1.我们用解包器在德文环境中,把game.pak文件中的AAA,BBB2个文件解出来。由于是德文环境,自然不会有问题。
7 g& {! k* S6 {
/ Z1 V+ U7 o! C8 z, @2.解包完毕以后,我游戏将会优先读取解包出来的AAA,BBB文件,而不是从包文件里面读取。) h& d0 w. \% c
接下来就很简单了,既然AAA调用了BBB。那么在AAA的内部必定有BBB这个含有德文字符的文件名。 我们找到这个文件名,把它修改为全英文的,再把BBB的文件名改为和它一致即可。' v; s6 {6 Q$ ~4 B4 ]' ]
5 I5 V/ X: v, P0 _7 h' g" w0 P3.再把游戏改为中文环境,游戏应该不会出错了。
, S7 n' ?8 f. S 由于包游戏文件被加密了,所以必须象这样把文件解包出来以后再修改。. b! e$ }, G& }& Z; @5 }
用这个方法我成功地解决了1个半骑士的问题,秘密档案2我还没试,热心的朋友可以试一下。
5 ^ Y: j6 L q* @: v 就像刘谦的魔术一样,一旦秘密被拆穿了,也就没有神秘的了。; H5 U+ b! i& S* e
- A" ~8 Q0 m9 Q. f, ^" R
补充一点,从多个文件中寻找一个字符串,可以用秀丸的grep功能。& z7 d, Y( b6 ~& c1 K* H9 \* x; C
一个半骑士的相关帖子如下,早已提到过类似问题% i& s! R: L6 h5 l& Z
https://www.chinaavg.com/read.php?tid=14367 |