在玩秘密档案2这个游戏时,我们发现了一个游戏找不到指定文件而出错的问题。) J/ O% \: `) S0 M& ]8 L
根据我的经验,最后终于确认是游戏调用了一个德文文件名的文件。* k" V$ s; d0 T" ~3 [, U' U. W1 Q X
这个文件名中文环境下无法识别,游戏自然会出错。
" n* z2 V6 r. K X k2 e* Z& u3 Y! `2 g
解决办法1
8 C# p; u' z9 p& u$ m( s把系统的区域,语言之类的都设置为德文,经验证可以解决问题。0 ?# u' j/ r3 {4 e4 j7 |5 o( X
不过,这个办法似乎不太好,太麻烦,用其他软件的时候也会许会产生乱码现象。
- u5 A) t: M2 y$ i- \. u. C6 [* o5 n3 E6 o, ~$ e
解决办法2
5 ~0 L- g3 m! h) q8 k其实,在研究1个半骑士的时候,我们已经遇到过类似的问题,并且已经成功地解决了。( B- k& P: E$ m' f
为了更容易说明问题,我把问题简化一下来说明。
5 O: O4 R# ^4 P; q. z- G8 l* B8 ]- _- h
假设游戏有AAA,BBB2个文件,AAA文件调用了BBB文件,其中BBB文件的文件名中含有一个德文专有字符,在中文环境下无法正常显示。这2个文件被打包入一个game.pak文件,并被加密,也就是说我们用hexworkshop无法从game.pak文件检索出AAA或BBB的文件名来。同时,我们手头有一个game.pak文件的解包器。
# O, y* e: o$ j. C; K' } j9 K+ o. N& C
就这样,我们模拟了一个游戏的出错环境。下面,我们说说解决办法。8 g/ V$ G6 J4 Y' N& a9 g, R: F
+ |* A- [, {7 \$ E( u% c. X( I/ f4 y) r1.我们用解包器在德文环境中,把game.pak文件中的AAA,BBB2个文件解出来。由于是德文环境,自然不会有问题。
/ [7 M7 A% E" I3 z
O/ H! N8 A# u2.解包完毕以后,我游戏将会优先读取解包出来的AAA,BBB文件,而不是从包文件里面读取。
7 T$ J' f% a4 v" {" U7 P# M 接下来就很简单了,既然AAA调用了BBB。那么在AAA的内部必定有BBB这个含有德文字符的文件名。 我们找到这个文件名,把它修改为全英文的,再把BBB的文件名改为和它一致即可。; P s0 j3 g, {8 N
3 a5 j! [+ ~/ g3 v1 M/ T' D/ m: N
3.再把游戏改为中文环境,游戏应该不会出错了。
9 ]6 Y% R$ V1 ]' X& f5 r1 ~4 @ 由于包游戏文件被加密了,所以必须象这样把文件解包出来以后再修改。
$ t) Y# w. n1 E- _% I 用这个方法我成功地解决了1个半骑士的问题,秘密档案2我还没试,热心的朋友可以试一下。
. S* f* g% x9 @( w 就像刘谦的魔术一样,一旦秘密被拆穿了,也就没有神秘的了。& y! ?2 Y3 J% o2 o
& f( m- x, U6 x* U7 u
补充一点,从多个文件中寻找一个字符串,可以用秀丸的grep功能。
1 h6 i) F' @& q' K一个半骑士的相关帖子如下,早已提到过类似问题; v1 o8 C. C8 v; W, k! \, g
https://www.chinaavg.com/read.php?tid=14367 |