在玩秘密档案2这个游戏时,我们发现了一个游戏找不到指定文件而出错的问题。% C1 ^" C* a: n2 R( D& M
根据我的经验,最后终于确认是游戏调用了一个德文文件名的文件。6 Z. L2 k/ K; h. H/ m
这个文件名中文环境下无法识别,游戏自然会出错。
+ W# j) q" y6 y o% F% C4 z& F' a$ L6 p0 b$ g6 U3 ^
解决办法1; C2 j$ s9 R5 d- Y
把系统的区域,语言之类的都设置为德文,经验证可以解决问题。& j( O" C9 d) k* ^7 c
不过,这个办法似乎不太好,太麻烦,用其他软件的时候也会许会产生乱码现象。- J! C1 A/ G: N: Q8 ]; L# _
$ t+ T; F) @$ m: q5 E: K: Q
解决办法2
( f, y3 S3 G) U$ m% }' c8 A; U其实,在研究1个半骑士的时候,我们已经遇到过类似的问题,并且已经成功地解决了。
5 f' M0 {3 z5 u4 n2 A为了更容易说明问题,我把问题简化一下来说明。; }# A/ N7 s8 {* a# j! a
9 ]6 h$ n' D# m S- z- g) O假设游戏有AAA,BBB2个文件,AAA文件调用了BBB文件,其中BBB文件的文件名中含有一个德文专有字符,在中文环境下无法正常显示。这2个文件被打包入一个game.pak文件,并被加密,也就是说我们用hexworkshop无法从game.pak文件检索出AAA或BBB的文件名来。同时,我们手头有一个game.pak文件的解包器。7 l. v* {, h f
8 d- U/ m" b9 w: _就这样,我们模拟了一个游戏的出错环境。下面,我们说说解决办法。
) E, {3 K+ t* i3 O% g y$ d! W) e& h% U) g) y
1.我们用解包器在德文环境中,把game.pak文件中的AAA,BBB2个文件解出来。由于是德文环境,自然不会有问题。' o, o% e0 D; e6 ]0 e6 J
; S3 H5 I( h- c* @ S! {! `2.解包完毕以后,我游戏将会优先读取解包出来的AAA,BBB文件,而不是从包文件里面读取。- s( h" w9 a: I$ g6 P
接下来就很简单了,既然AAA调用了BBB。那么在AAA的内部必定有BBB这个含有德文字符的文件名。 我们找到这个文件名,把它修改为全英文的,再把BBB的文件名改为和它一致即可。
+ H+ S1 Q3 v+ t! x: y
& g$ k! u, M# ]' Z) Z$ |3.再把游戏改为中文环境,游戏应该不会出错了。
0 K: ?* W' `" s& ^ 由于包游戏文件被加密了,所以必须象这样把文件解包出来以后再修改。
# ], o( p3 Z4 x5 k 用这个方法我成功地解决了1个半骑士的问题,秘密档案2我还没试,热心的朋友可以试一下。7 k4 B/ X3 W& d* y
就像刘谦的魔术一样,一旦秘密被拆穿了,也就没有神秘的了。+ ~, I: N/ J2 }2 _4 P5 J" ^
N; S8 W+ Z" e0 [6 [
补充一点,从多个文件中寻找一个字符串,可以用秀丸的grep功能。. D' ?# u2 e& V2 O J1 C
一个半骑士的相关帖子如下,早已提到过类似问题
0 v6 G: h& H* J/ @1 ghttps://www.chinaavg.com/read.php?tid=14367 |