在玩秘密档案2这个游戏时,我们发现了一个游戏找不到指定文件而出错的问题。6 |1 H; H9 p, x) l7 @/ Y' [
根据我的经验,最后终于确认是游戏调用了一个德文文件名的文件。
3 h8 B/ ^" ~2 K! |& I3 G这个文件名中文环境下无法识别,游戏自然会出错。
! n) k! T+ f) a8 W" A. \4 v0 M
, z1 n8 c5 J* o0 f, k" c解决办法1
8 E$ G( M9 G$ F' i把系统的区域,语言之类的都设置为德文,经验证可以解决问题。
* R1 J0 ~2 R3 [! U- a8 s不过,这个办法似乎不太好,太麻烦,用其他软件的时候也会许会产生乱码现象。. k a, S0 F& ]5 B, c
# z- ^( J; G. d( T
解决办法2) V8 ?! m% P5 B! L+ B2 H
其实,在研究1个半骑士的时候,我们已经遇到过类似的问题,并且已经成功地解决了。
6 k1 c* u3 k1 N9 c' L, n X A为了更容易说明问题,我把问题简化一下来说明。
7 W+ x3 `) f- u5 v0 g) z$ j2 i# [
假设游戏有AAA,BBB2个文件,AAA文件调用了BBB文件,其中BBB文件的文件名中含有一个德文专有字符,在中文环境下无法正常显示。这2个文件被打包入一个game.pak文件,并被加密,也就是说我们用hexworkshop无法从game.pak文件检索出AAA或BBB的文件名来。同时,我们手头有一个game.pak文件的解包器。
) _, x' t# z3 X" @# ?% o
0 U* q( p: U4 }8 T/ a t; c; R就这样,我们模拟了一个游戏的出错环境。下面,我们说说解决办法。. x# f e% ~. k' l
J4 l& o7 [: b w# G- {) X* g
1.我们用解包器在德文环境中,把game.pak文件中的AAA,BBB2个文件解出来。由于是德文环境,自然不会有问题。6 W( U9 j3 D$ _/ D
' C- m, W" S G* Y2.解包完毕以后,我游戏将会优先读取解包出来的AAA,BBB文件,而不是从包文件里面读取。1 b$ Q9 E+ |( V0 R% U: @. p
接下来就很简单了,既然AAA调用了BBB。那么在AAA的内部必定有BBB这个含有德文字符的文件名。 我们找到这个文件名,把它修改为全英文的,再把BBB的文件名改为和它一致即可。0 `4 k. T! r7 m
9 o8 \* q4 ]; E/ @: g4 L- G
3.再把游戏改为中文环境,游戏应该不会出错了。6 ?3 y5 q8 w% C- \+ ~# }+ ~ Y
由于包游戏文件被加密了,所以必须象这样把文件解包出来以后再修改。: e( B* p- C! b" u
用这个方法我成功地解决了1个半骑士的问题,秘密档案2我还没试,热心的朋友可以试一下。2 H* y& G( J, o0 x' k5 R2 H* X
就像刘谦的魔术一样,一旦秘密被拆穿了,也就没有神秘的了。
* U) }3 ` A9 G" |6 o; l: s
# k" k7 v( B, N2 w- I' t0 \补充一点,从多个文件中寻找一个字符串,可以用秀丸的grep功能。
# v! ^) c" X! K( K8 l! g2 u1 V一个半骑士的相关帖子如下,早已提到过类似问题4 P% I& W8 W. o: i
https://www.chinaavg.com/read.php?tid=14367 |