在玩秘密档案2这个游戏时,我们发现了一个游戏找不到指定文件而出错的问题。' F6 ^/ L R' Q: E1 r, I
根据我的经验,最后终于确认是游戏调用了一个德文文件名的文件。
) q3 R$ f5 d* y6 m# b3 c3 [这个文件名中文环境下无法识别,游戏自然会出错。; Z+ |( M" z) L% r* x; \& N, ]: Z
: j4 _" c0 U$ j1 p- P& G- t# `( t解决办法15 X! n2 A3 c. M9 O0 q" C5 {8 p
把系统的区域,语言之类的都设置为德文,经验证可以解决问题。" h2 f5 B6 t, m* Z
不过,这个办法似乎不太好,太麻烦,用其他软件的时候也会许会产生乱码现象。
4 c/ I5 B& [* \* D* ^1 h$ u% I) M4 F; N8 a0 i( ?2 f
解决办法2
% v6 \6 B" U0 x其实,在研究1个半骑士的时候,我们已经遇到过类似的问题,并且已经成功地解决了。
, v# G6 d' l% p$ M为了更容易说明问题,我把问题简化一下来说明。" u% a' g- W, {2 V
. Q- A" E3 l' z! N2 D
假设游戏有AAA,BBB2个文件,AAA文件调用了BBB文件,其中BBB文件的文件名中含有一个德文专有字符,在中文环境下无法正常显示。这2个文件被打包入一个game.pak文件,并被加密,也就是说我们用hexworkshop无法从game.pak文件检索出AAA或BBB的文件名来。同时,我们手头有一个game.pak文件的解包器。; [: e; c# m! x4 j) r
& F% ~& ?4 [; a. ~, Z就这样,我们模拟了一个游戏的出错环境。下面,我们说说解决办法。7 j0 X' L& I0 a$ b6 K$ q# y
: H$ \- a* r/ w1.我们用解包器在德文环境中,把game.pak文件中的AAA,BBB2个文件解出来。由于是德文环境,自然不会有问题。
3 A) v; H5 I9 |+ \
; [# B( d! {/ k' `1 X2.解包完毕以后,我游戏将会优先读取解包出来的AAA,BBB文件,而不是从包文件里面读取。9 o a0 c( B ~' @" N% g+ e+ q% y
接下来就很简单了,既然AAA调用了BBB。那么在AAA的内部必定有BBB这个含有德文字符的文件名。 我们找到这个文件名,把它修改为全英文的,再把BBB的文件名改为和它一致即可。
& c$ `& c' b6 K& s" j Z
' P$ u/ j8 c7 U* E- H6 ^3.再把游戏改为中文环境,游戏应该不会出错了。- q) K3 e# G) M4 w0 K
由于包游戏文件被加密了,所以必须象这样把文件解包出来以后再修改。( A+ ]2 O J/ \+ A
用这个方法我成功地解决了1个半骑士的问题,秘密档案2我还没试,热心的朋友可以试一下。+ c) K9 l8 B# r3 G9 q4 `& E7 r
就像刘谦的魔术一样,一旦秘密被拆穿了,也就没有神秘的了。+ d" P9 l4 I+ ]: _$ B& T+ v
# c$ M# A% M9 D6 Q9 m补充一点,从多个文件中寻找一个字符串,可以用秀丸的grep功能。
' J4 P2 `8 L9 F6 x5 @2 |$ s一个半骑士的相关帖子如下,早已提到过类似问题0 H* p5 n2 w% K2 P( Y3 Q6 F$ G
https://www.chinaavg.com/read.php?tid=14367 |