在玩秘密档案2这个游戏时,我们发现了一个游戏找不到指定文件而出错的问题。1 P' A, R! ?- y
根据我的经验,最后终于确认是游戏调用了一个德文文件名的文件。
4 ?6 K; {# c, r+ d/ B这个文件名中文环境下无法识别,游戏自然会出错。
! ?! E2 a1 e6 m6 K8 |1 ~) q: C1 D! j/ ?" V' G4 o* Z
解决办法1; N5 h; d1 K7 ], p
把系统的区域,语言之类的都设置为德文,经验证可以解决问题。. T6 ]1 L+ `8 @# e
不过,这个办法似乎不太好,太麻烦,用其他软件的时候也会许会产生乱码现象。
# a# G$ R# T ^7 u6 W; I, E+ ^
& [8 E0 a/ \( q3 L( l+ d解决办法25 ^: a9 b" Q2 a4 U7 o2 G' b" _' I/ }
其实,在研究1个半骑士的时候,我们已经遇到过类似的问题,并且已经成功地解决了。
7 x1 T0 j1 Q% N6 N为了更容易说明问题,我把问题简化一下来说明。
: v2 c' A- I! _5 z$ E! I- ^ h6 T+ D; ?& R# u
假设游戏有AAA,BBB2个文件,AAA文件调用了BBB文件,其中BBB文件的文件名中含有一个德文专有字符,在中文环境下无法正常显示。这2个文件被打包入一个game.pak文件,并被加密,也就是说我们用hexworkshop无法从game.pak文件检索出AAA或BBB的文件名来。同时,我们手头有一个game.pak文件的解包器。+ i, \- b; m9 d# [' ]( s2 P1 y
; H" ~+ `$ f+ a0 x- u1 p就这样,我们模拟了一个游戏的出错环境。下面,我们说说解决办法。
/ ]9 [( L9 B7 @9 N
8 K& D* R8 w' ^2 ^) Y1.我们用解包器在德文环境中,把game.pak文件中的AAA,BBB2个文件解出来。由于是德文环境,自然不会有问题。
& Y. ~! X; S4 d/ X6 \4 g6 ]. |; }' D4 z6 b/ y/ n+ M$ z b5 B
2.解包完毕以后,我游戏将会优先读取解包出来的AAA,BBB文件,而不是从包文件里面读取。
- {( O# U" b+ ~* {8 G 接下来就很简单了,既然AAA调用了BBB。那么在AAA的内部必定有BBB这个含有德文字符的文件名。 我们找到这个文件名,把它修改为全英文的,再把BBB的文件名改为和它一致即可。
d& e5 L" q/ r; f: _ E: b7 E0 _2 ?; b4 C
3.再把游戏改为中文环境,游戏应该不会出错了。8 f. f, d% W+ Y$ ^; m; Y
由于包游戏文件被加密了,所以必须象这样把文件解包出来以后再修改。
a# ~" W6 t1 I' v" {% c5 E* K 用这个方法我成功地解决了1个半骑士的问题,秘密档案2我还没试,热心的朋友可以试一下。
2 m5 Q. e, I; {8 G. d0 T 就像刘谦的魔术一样,一旦秘密被拆穿了,也就没有神秘的了。
& L# @8 i# b/ O# F$ T
0 E1 B- r4 Y2 f4 t' g补充一点,从多个文件中寻找一个字符串,可以用秀丸的grep功能。
5 m) B4 S1 Q" C" `. b- G一个半骑士的相关帖子如下,早已提到过类似问题
5 A& K9 ~: W& v; zhttps://www.chinaavg.com/read.php?tid=14367 |