在玩秘密档案2这个游戏时,我们发现了一个游戏找不到指定文件而出错的问题。
! Q% n, s/ s: o1 ]. f根据我的经验,最后终于确认是游戏调用了一个德文文件名的文件。
$ I' a0 Q/ \& z. c2 \这个文件名中文环境下无法识别,游戏自然会出错。/ R) p g# [# ~
+ j# a) G9 O) p5 c
解决办法1/ G6 o0 d: q/ P; J3 ^$ A
把系统的区域,语言之类的都设置为德文,经验证可以解决问题。) L0 W' [: _! Y% C0 C0 {( a) \
不过,这个办法似乎不太好,太麻烦,用其他软件的时候也会许会产生乱码现象。- G# T2 V* }" G& _7 E
8 ]; G/ ^2 U- }: I
解决办法20 ^, |8 D0 |, r
其实,在研究1个半骑士的时候,我们已经遇到过类似的问题,并且已经成功地解决了。
' l- k7 c' P& Y7 @- @6 n$ [为了更容易说明问题,我把问题简化一下来说明。2 o: o# Z, e0 w
$ ]3 s" a) K d! i" e假设游戏有AAA,BBB2个文件,AAA文件调用了BBB文件,其中BBB文件的文件名中含有一个德文专有字符,在中文环境下无法正常显示。这2个文件被打包入一个game.pak文件,并被加密,也就是说我们用hexworkshop无法从game.pak文件检索出AAA或BBB的文件名来。同时,我们手头有一个game.pak文件的解包器。
6 N9 e% `0 z0 A, |% ~6 e
4 Z2 f& C" E$ m6 T) ~就这样,我们模拟了一个游戏的出错环境。下面,我们说说解决办法。
- B* a. k* z* O0 ~4 b. E/ v k1 H/ W0 [% \& j) _ U
1.我们用解包器在德文环境中,把game.pak文件中的AAA,BBB2个文件解出来。由于是德文环境,自然不会有问题。& C! K5 z% O) G# {+ E3 Q: ~. U
$ [ g1 @& h# o9 d# O/ Z3 F- ~. f$ @% m
2.解包完毕以后,我游戏将会优先读取解包出来的AAA,BBB文件,而不是从包文件里面读取。
, x; N: q: h1 i 接下来就很简单了,既然AAA调用了BBB。那么在AAA的内部必定有BBB这个含有德文字符的文件名。 我们找到这个文件名,把它修改为全英文的,再把BBB的文件名改为和它一致即可。7 |% O3 p: K( R; v, R; _2 K
% a4 h6 U7 R% ]9 D8 d
3.再把游戏改为中文环境,游戏应该不会出错了。! }6 m4 O! V9 ?8 x" Y Y9 f5 Q( u
由于包游戏文件被加密了,所以必须象这样把文件解包出来以后再修改。
7 R( }% ?+ j8 m V 用这个方法我成功地解决了1个半骑士的问题,秘密档案2我还没试,热心的朋友可以试一下。
- L) l1 g1 v+ A/ }1 v* y 就像刘谦的魔术一样,一旦秘密被拆穿了,也就没有神秘的了。
* E9 m) | t* c" l7 D# e( \0 r0 g+ Z8 N
补充一点,从多个文件中寻找一个字符串,可以用秀丸的grep功能。: `% m) M$ g% Y* X2 V `# m5 [
一个半骑士的相关帖子如下,早已提到过类似问题
1 E0 v0 V+ W7 Q3 K8 I4 ghttps://www.chinaavg.com/read.php?tid=14367 |