在玩秘密档案2这个游戏时,我们发现了一个游戏找不到指定文件而出错的问题。
- c0 b3 x+ l9 e) J% t X# R根据我的经验,最后终于确认是游戏调用了一个德文文件名的文件。
1 }1 v5 B9 [6 p8 a这个文件名中文环境下无法识别,游戏自然会出错。1 Z' ^# S6 o( h: m y$ }+ {
! }0 D9 i o3 A9 z" [解决办法1
4 g: {1 U# v0 A c6 ]% q2 H把系统的区域,语言之类的都设置为德文,经验证可以解决问题。! G: R) g- u4 v9 \4 {0 D% Z3 {
不过,这个办法似乎不太好,太麻烦,用其他软件的时候也会许会产生乱码现象。
% T: R% k3 H- J8 g. @8 L
. q, a0 ^! n$ |, V' l解决办法2# d' _/ L' a9 ~5 M% i1 S& H$ _
其实,在研究1个半骑士的时候,我们已经遇到过类似的问题,并且已经成功地解决了。1 ]' [2 H. S$ i
为了更容易说明问题,我把问题简化一下来说明。" }# M3 G N5 a/ q/ l: s
1 q, h0 x: l$ @% w( Z
假设游戏有AAA,BBB2个文件,AAA文件调用了BBB文件,其中BBB文件的文件名中含有一个德文专有字符,在中文环境下无法正常显示。这2个文件被打包入一个game.pak文件,并被加密,也就是说我们用hexworkshop无法从game.pak文件检索出AAA或BBB的文件名来。同时,我们手头有一个game.pak文件的解包器。" [9 H9 t" G }& B, Q5 B2 k+ x
$ q, S" K6 S" C; T8 W- L
就这样,我们模拟了一个游戏的出错环境。下面,我们说说解决办法。
" R1 y3 {2 @! R* B
# M9 L, z: k& `: C! l% D( D1.我们用解包器在德文环境中,把game.pak文件中的AAA,BBB2个文件解出来。由于是德文环境,自然不会有问题。
# ~, @% i+ _. K& i( c6 o8 C% ]4 O8 k3 a# x8 F: f7 W7 v
2.解包完毕以后,我游戏将会优先读取解包出来的AAA,BBB文件,而不是从包文件里面读取。2 u, W. `3 s0 G3 V/ D) V0 [' B
接下来就很简单了,既然AAA调用了BBB。那么在AAA的内部必定有BBB这个含有德文字符的文件名。 我们找到这个文件名,把它修改为全英文的,再把BBB的文件名改为和它一致即可。
) [/ F# l3 n( Y$ F7 `) J* u' C' U! L
3.再把游戏改为中文环境,游戏应该不会出错了。
0 K* w% T, O0 f) f 由于包游戏文件被加密了,所以必须象这样把文件解包出来以后再修改。
$ b9 |: j9 S% Z 用这个方法我成功地解决了1个半骑士的问题,秘密档案2我还没试,热心的朋友可以试一下。
* O, B* Z9 M9 R4 H 就像刘谦的魔术一样,一旦秘密被拆穿了,也就没有神秘的了。2 S+ {1 p0 X7 |
4 \/ h9 f# u3 ]8 [$ u" P
补充一点,从多个文件中寻找一个字符串,可以用秀丸的grep功能。
7 N0 W6 @6 g5 H v% Q* q一个半骑士的相关帖子如下,早已提到过类似问题
* T, Z4 j9 a9 ]; V% Zhttps://www.chinaavg.com/read.php?tid=14367 |