在玩秘密档案2这个游戏时,我们发现了一个游戏找不到指定文件而出错的问题。
6 V+ ~) {! p7 k4 a6 U* s根据我的经验,最后终于确认是游戏调用了一个德文文件名的文件。
" Z6 q$ n6 h" Z& ?6 O2 m这个文件名中文环境下无法识别,游戏自然会出错。. }0 |5 S" O' r7 x3 K/ ]. m, F# n
" a$ I6 e9 H3 I解决办法1
- P7 X# c' } a! b( E把系统的区域,语言之类的都设置为德文,经验证可以解决问题。
+ p9 B; N8 m, l# n5 v% Z不过,这个办法似乎不太好,太麻烦,用其他软件的时候也会许会产生乱码现象。
T2 I: m6 z9 t( a7 c* A; e% D
7 i9 h0 I' N0 y: j( v/ j解决办法2/ {( n% R2 }& {, G; [: V
其实,在研究1个半骑士的时候,我们已经遇到过类似的问题,并且已经成功地解决了。
, P5 P! A0 j+ L8 @6 Z5 d为了更容易说明问题,我把问题简化一下来说明。
l7 X9 K7 c; X9 ?0 @. ~, H- A8 t
: M! R7 f0 ?* P6 J/ t# S假设游戏有AAA,BBB2个文件,AAA文件调用了BBB文件,其中BBB文件的文件名中含有一个德文专有字符,在中文环境下无法正常显示。这2个文件被打包入一个game.pak文件,并被加密,也就是说我们用hexworkshop无法从game.pak文件检索出AAA或BBB的文件名来。同时,我们手头有一个game.pak文件的解包器。
) H( |6 v) `! v: O
# G3 x6 B/ c9 F) X2 ?4 G- u! z就这样,我们模拟了一个游戏的出错环境。下面,我们说说解决办法。! s5 T$ A1 ?: s( E
& L) g/ _( Z c7 y4 u4 T1.我们用解包器在德文环境中,把game.pak文件中的AAA,BBB2个文件解出来。由于是德文环境,自然不会有问题。/ E4 ~5 l6 H* I, S9 n3 s
: w6 a, a: @- R2.解包完毕以后,我游戏将会优先读取解包出来的AAA,BBB文件,而不是从包文件里面读取。) t( }& T/ ^1 F8 U" g h
接下来就很简单了,既然AAA调用了BBB。那么在AAA的内部必定有BBB这个含有德文字符的文件名。 我们找到这个文件名,把它修改为全英文的,再把BBB的文件名改为和它一致即可。
$ _8 V2 s1 `* `/ o# i- `! A
8 a; z8 b4 }3 n' R" X3.再把游戏改为中文环境,游戏应该不会出错了。! J+ B2 v: G/ _! [; T
由于包游戏文件被加密了,所以必须象这样把文件解包出来以后再修改。
, n/ G/ ?3 J# D/ q% {4 w 用这个方法我成功地解决了1个半骑士的问题,秘密档案2我还没试,热心的朋友可以试一下。
. l; S, P$ W& ~ 就像刘谦的魔术一样,一旦秘密被拆穿了,也就没有神秘的了。
2 f0 }0 l- c8 u0 u4 _! D r. b. z4 b# I t, n
补充一点,从多个文件中寻找一个字符串,可以用秀丸的grep功能。7 y8 x2 u: U& `3 f2 i1 u
一个半骑士的相关帖子如下,早已提到过类似问题
7 a2 Z8 q& `9 V) Rhttps://www.chinaavg.com/read.php?tid=14367 |