在玩秘密档案2这个游戏时,我们发现了一个游戏找不到指定文件而出错的问题。
% M' m _3 t1 ~$ d! B根据我的经验,最后终于确认是游戏调用了一个德文文件名的文件。
, v3 ?0 }- U1 Q! T这个文件名中文环境下无法识别,游戏自然会出错。 Q9 ]+ a' f& ^/ X
4 ^( X, C0 w" G+ w0 h7 I* \
解决办法1
& F2 u( A1 L2 }1 L u0 u7 N把系统的区域,语言之类的都设置为德文,经验证可以解决问题。
; `; y; ^4 z0 j& L6 g+ v不过,这个办法似乎不太好,太麻烦,用其他软件的时候也会许会产生乱码现象。( Y0 G* G% \% [( n3 z
% B# Q' a- d$ \2 q: \解决办法2
' Z& G3 }$ _8 ^% ~8 F9 K其实,在研究1个半骑士的时候,我们已经遇到过类似的问题,并且已经成功地解决了。
( J8 n/ B9 f8 V$ z3 C为了更容易说明问题,我把问题简化一下来说明。
' L3 I5 ~4 V4 _! Y: Z+ J7 _- F* k' G4 v! f8 u/ P4 x. e
假设游戏有AAA,BBB2个文件,AAA文件调用了BBB文件,其中BBB文件的文件名中含有一个德文专有字符,在中文环境下无法正常显示。这2个文件被打包入一个game.pak文件,并被加密,也就是说我们用hexworkshop无法从game.pak文件检索出AAA或BBB的文件名来。同时,我们手头有一个game.pak文件的解包器。+ _+ H9 @/ ~! V$ b7 n8 K, G! Y
( b8 z- {9 ?2 z! Z3 }. A D就这样,我们模拟了一个游戏的出错环境。下面,我们说说解决办法。
8 t. L; D" ?4 ?2 w* n2 I
9 x! r4 l. [7 D1 R# a N( v1.我们用解包器在德文环境中,把game.pak文件中的AAA,BBB2个文件解出来。由于是德文环境,自然不会有问题。
. y0 l8 P; x" B6 A- Q$ n
( f" w" i% f9 O9 _8 p2.解包完毕以后,我游戏将会优先读取解包出来的AAA,BBB文件,而不是从包文件里面读取。# [ _2 U# X) \5 E& a! i% v" T9 r
接下来就很简单了,既然AAA调用了BBB。那么在AAA的内部必定有BBB这个含有德文字符的文件名。 我们找到这个文件名,把它修改为全英文的,再把BBB的文件名改为和它一致即可。
- t3 q+ {' ?" s8 \, b8 Q9 T, [
8 ?5 z# Y; m k8 M% P3.再把游戏改为中文环境,游戏应该不会出错了。# {# v) p: K+ ~$ F
由于包游戏文件被加密了,所以必须象这样把文件解包出来以后再修改。
( ^4 I9 C+ T& Y5 b% q1 u2 N6 F 用这个方法我成功地解决了1个半骑士的问题,秘密档案2我还没试,热心的朋友可以试一下。
9 U" X; N' y& _. I8 x 就像刘谦的魔术一样,一旦秘密被拆穿了,也就没有神秘的了。4 \6 b, I7 X$ y* Z/ Q* C' F
0 o, b* T& J) ?% v* ?7 g补充一点,从多个文件中寻找一个字符串,可以用秀丸的grep功能。
2 Q/ _; x3 j6 G$ D; i5 L一个半骑士的相关帖子如下,早已提到过类似问题5 ^6 L( C- q$ A: {- F
https://www.chinaavg.com/read.php?tid=14367 |