飛揚寒星 发表于 2005-1-20 20:52:02

汉化使用wxWindows的VC++.net程序时的重要问题(急待解答!)

这是一个修改游戏的数据文件的程序,可以修改游戏里人物的能力。这个程序的源代码是Visual C++ .NET语言,用到了wxWindows 2.4.2版(原作者修改过里面的几个文件,可以参见源代码压缩包内的说明。而不修改的话也没事,只是程序在打开数据文件时会出现一个错误提示,不影响使用)。
这个程序很不错,我的很多朋友期待汉化版,而我也通过汉化源代码的方式将其中的字符串汉化好了。但是,里面还有一些地方无法通过汉化字符串的方式汉化,并且程序本身有一些Bug需要修正,然而我对C++语言却不是很懂,不知道如何修改。而我们之中也没有懂C++语言的,也联系不上原作者,所以现在正急切地盼望解答,请求各位高手能够告诉我如何修改,谢谢!(麻烦解答时能具体说清楚要将哪个文件、哪里的代码、改成什么代码,谢谢……)
因为这是个游戏修改程序,所以要下载的文件较多(包括游戏的数据文件),麻烦各位高手能够先下载一下,谢谢。
程序的源代码(已汉化):
<a href="https://www.hawkaoe.net/bbs/UploadFile/2005-1/source_gb.zip___2005120183131562.zip" target="_blank" >https://www.hawkaoe.net/bbs/UploadFile/2005-1/source_gb.zip___2005120183131562.zip</A>
程序修改的游戏数据文件:
<a href="https://www.hawkaoe.net/bbs/UploadFile/2005-1/empires2_x1.zip___2005120181531348.zip" target="_blank" >https://www.hawkaoe.net/bbs/UploadFile/2005-1/empires2_x1.zip___2005120181531348.zip</A>
程序修改时需要加载的游戏的语言DLL文件(英文版):
<a href="https://www.hawkaoe.net/bbs/UploadFile/2005-1/Enlang.zip___2005120182149481.zip" target="_blank" >https://www.hawkaoe.net/bbs/UploadFile/2005-1/Enlang.zip___2005120182149481.zip</A>
程序修改时需要加载的游戏的语言DLL文件(中文版,然而程序不能正常显示):
<a href="https://www.hawkaoe.net/bbs/UploadFile/2005-1/language.zip___200512018171811.zip" target="_blank" >https://www.hawkaoe.net/bbs/UploadFile/2005-1/language.zip___200512018171811.zip</A>
经过修改过使程序能够正常显示三个人物的中文名称的语言DLL文件:
<a href="https://www.hawkaoe.net/bbs/UploadFile/2005-1/newlang.zip___200512018276624.zip" target="_blank" >https://www.hawkaoe.net/bbs/UploadFile/2005-1/newlang.zip___200512018276624.zip</A>
英文原版程序(如果需要的话可以下载参考一下):
<a href="https://games.build-a.com/swgb/files/GeniEd2.exe" target="_blank" >https://games.build-a.com/swgb/files/GeniEd2.exe</A>
先说明一下程序加载文件修改的方法:启动程序后,点击“檔案”-&gt;“開啓”,按照下图设置,然后按“確定”即可。
https://www.hawkaoe.net/bbs/UploadFile/2005-1/1.JPG___2005120184536408.jpg
第一个问题:
请问怎样给它的菜单添加快捷键呢?(原作者未使用,但我希望在汉化时能够添加,以方便使用)比如,“幫助”是F1,“開啓”是Ctrl+O,“儲存”是Ctrl+S,“離開”是Alt+F4。不知具体如何实现。
第二个问题:
在未加载文件修改时,菜单“工具”-&gt;“複製到所有文明”理应是不可用的。但是现在未加载文件修改时它却可用,点击后程序就会出错退出。这是程序的一个大Bug。现在我想请问:如何修改代码,能使在未加载文件修改时这个菜单不可用,或者弹出错误提示框,按下“确定”后程序能够继续运行;而在已加载文件修改时这个菜单能和原来一样正常使用?
第三个问题:
在加载文件修改时,文明的列表是英文的(如图),然而在程序中我根本找不到这些字符串,无法汉化,可能程序是读取游戏数据文件中的资料。请问,如何通过修改代码,让这个列表里的文明显示中文呢?比如,把“Chinese”改为“中国人”(好像可以通过修改列表项的名称做到,但是不知具体用什么代码实现)
https://www.hawkaoe.net/bbs/UploadFile/2005-1/5.JPG___2005120193156136.jpg
最后一个问题,也是最重要的问题:
这个程序不能正确地读取中文版的游戏语言DLL文件,造成修改时很不方便。
正常情况下,程序在加载文件修改时,游戏中有名称的人物会通过读取游戏语言DLL文件中的人物名称列表来显示,而游戏中没有名称的人物则是读取游戏数据文件中的内部名称来显示。
而程序如果读取的是英文版的游戏语言文件,确实是属于这种正常的情况,如下图:
https://www.hawkaoe.net/bbs/UploadFile/2005-1/2.JPG___2005120184553848.jpg
而使用程序搜索人物名称(英文)(在人物名称列表下方的文本框中)时也是能正常找到,如下图:
https://www.hawkaoe.net/bbs/UploadFile/2005-1/3-S.JPG___2005120184611206.jpg
而且“語言資料庫編號”一栏的右边也能正常显示人物名称(英文)
https://www.hawkaoe.net/bbs/UploadFile/2005-1/6.JPG___2005120201540616.jpg
但是,如果程序读取的是中文版的游戏语言文件,那么程序就无法正确地识别语言DLL文件中的人物名称列表,所有的人物都显示成了内部名称,如下图:
https://www.hawkaoe.net/bbs/UploadFile/2005-1/3.JPG___20051201846289.jpg
而使用程序搜索人物的内部名称时也是能正常找到,但显然十分麻烦和难记。同时“語言資料庫編號”一栏的右边也不能显示人物名称了。
于是我用WinHex分析了英文版和中文版的语言DLL文件,发现了原因:原来英文版与中文版的语言文件格式不相同,比如人物“Chu Ko Nu”及其中文版中对应的“诸葛弩”,在英文版的文件中,其十六进制代码为:43(“C”的代码) 00 68(“h”的代码) 00 75(“u”的代码)00 …… 00 75(“u”的代码),每个字母的代码中间都间隔一个“00”。而中文版却不是这样,其中间没有“00”间隔,十六进制代码是这样的:D6 EE(“诸”的双字节代码) B8 F0(“葛”的双字节代码) E5 F3(“弩”的双字节代码)。我想就是这个原因,程序无法正确读取中文人物名称吧。
因此,我试着修改英文版的DLL语言文件,把其中的“Chu Ko Nu”的代码改成了“诸葛弩”,并且也仿造英文版的格式,中间插入一个“00”,代码为:D6 00 EE 00 B8 00 F0 00 E5 00 F3 00。此外修改了另两个人物,然后读取(修改后的文件就是上面的“经过修改过使程序能够正常显示三个人物的中文名称的语言DLL文件”),程序竟能够正确地显示中文人物名了,而且“語言資料庫編號”一栏的右边也能正常显示人物名称(中文),如下图:
https://www.hawkaoe.net/bbs/UploadFile/2005-1/4.JPG___2005120184623617.jpg
但是,这种方法有很大的缺点:首先必须把DLL文件改成这种特殊格式,游戏无法支持,而且工作量非常大。此外,使用程序搜索人物名称(中文)时却竟然不能找到,如下图:
https://www.hawkaoe.net/bbs/UploadFile/2005-1/4-S.JPG___2005120191716542.jpg
所以,我想请教大家,如何修改程序的代码,能使程序做到能够正常地直接读取中文版游戏自带的中文版语言DLL文件(就是中间没有“00”间隔的格式),中文人物名称能正常显示,而没有名称的人物也能正常显示内部名称;同时,“語言資料庫編號”一栏的右边也能正常显示人物名称(中文),并且使用程序搜索人物名称(中文)能够找到相应的人物,像原来读取英文版的语言文件一样。只有这样,使用这个程序的人才能方便地修改人物能力,而现在这样给我们造成了很大麻烦。所以这个问题是最重要的,也是我们最急切盼望解答的。
因为我们现在将程序的其他字符串都汉化好了,就这几个严重的问题实在无法解决,所以请求大家能够耐心地做出解答,在此,再次先向各位高手表示诚挚的感谢!!!!

飛揚寒星 发表于 2005-1-20 20:55:06

我在发到CSDN前,先发到这里看看效果,也希望论坛上懂得编程的人能够帮忙解答,谢谢

飛揚寒星 发表于 2005-1-20 20:59:12

对了,有谁知道这个问题在CSDN论坛上给几分悬赏比较合适?(最大100分,可我只有200可用分……)

飛揚寒星 发表于 2005-1-20 21:17:12

发上去了,可是为什么不能显示图片??
<U><FONT color=#800080><a href="https://community.csdn.net/Expert/TopicView1.asp?id=3742102" target="_blank" >https://community.csdn.net/Expert/TopicView1.asp?id=3742102</A></FONT></U>
[此贴子已经被作者于2005-1-20 21:19:15编辑过]

飛揚寒星 发表于 2005-1-23 18:10:22

至今没有人给出准确的答案……难道这个问题真的太难了?难道GE2就永远只能支持英文版的语言文件了吗?
页: [1]
查看完整版本: 汉化使用wxWindows的VC++.net程序时的重要问题(急待解答!)