幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 9639|回复: 10

简体汉化版NScripter 2.45的两处修正

[复制链接]

1

主题

5

帖子

18

积分

②入门

积分
18
发表于 2005-10-13 18:34:03 | 显示全部楼层 |阅读模式
今天对简体汉化版NScripter 2.45存在的两处问题作了修正,希望对大家有用。
1、字体问题:原版的字体选择列表不能正常列举中文字体,现在可以了;且默认字体已设置为宋体。
2、输入框的全角检测问题:原版常误把汉字当作半角字符,使输入框的全角检测功能无法发挥作用,这个问题已经修正。
下载地址(右键另存):
http://www.wdx04.0nyx.com/nscrc.rar
或者用CM:
匿名提取文件连接 http://pickup.mofile.com/8548531737518999
或登录Mofile,使用提取码 8548531737518999 提取文件
回复

使用道具 举报

6

主题

67

帖子

802

积分

⑤进阶

积分
802
发表于 2005-10-13 21:32:35 | 显示全部楼层
请问一下这是如何修改的?
回复 支持 反对

使用道具 举报

122

主题

3954

帖子

24万

积分

超级版主

传说中的Bunny坑神~!

Rank: 8Rank: 8

积分
244543

声命组铜赏

发表于 2005-10-13 21:36:34 | 显示全部楼层
辛苦了。精华一个先。
另外NS的版本已经更新了很多了啊。
楼主有兴趣汉化新版本吗?我们正在联系中文化授权的说。
http://www.nvlmaker.net/
回复 支持 反对

使用道具 举报

5

主题

43

帖子

1428

积分

⑥精研

活·潑·可·愛

积分
1428
发表于 2005-10-13 22:12:34 | 显示全部楼层
感謝樓主……目前nscr確實是2.45漢化得最完善。
回复 支持 反对

使用道具 举报

125

主题

288

帖子

1387

积分

⑥精研

积分
1387
发表于 2005-10-13 23:52:28 | 显示全部楼层
下面是引用Yumi于2005-10-13 21:32发表的:
请问一下这是如何修改的?

用静态反编译或动态调试器找出相关判断部分的机器码,并用16进制修改器修改
回复 支持 反对

使用道具 举报

50

主题

994

帖子

6699

积分

管理员

爱干啥干啥!

Rank: 9Rank: 9Rank: 9

积分
6699
发表于 2005-10-14 00:08:06 | 显示全部楼层
下面是引用Advance于2005-10-13 23:52发表的:
用静态反编译或动态调试器找出相关判断部分的机器码,并用16进制修改器修改

orz名词×_×

瓒楼主~~顶之~~

“放下屠刀,立地成佛” 故应先杀生,然后再成佛。

(\\_/) (-_-) ()+() this is bunny priest.
回复 支持 反对

使用道具 举报

1

主题

5

帖子

18

积分

②入门

积分
18
 楼主| 发表于 2005-10-14 17:22:09 | 显示全部楼层
修改的方法:
1、列举系统中的字体要用到Windows的EnumFontFamiliesEx函数,设置其参数可以筛选支持特定字符集的字体。这个参数在原程序中为80(十六进制数),表示日文Shift_JIS字符集;修改为86(GB字符集)就可以列举中文字体了。实际情况原程序还对列举出的字体作了进一步的筛选,只有支持默认字符间距的字体才会被加入菜单的字体列表,而许多中文字体并不支持,所以这里也要改。而修改默认字体更简单,直接用十六进制编辑器在程序中搜索两个最常用日文字体名(明朝和MS Gothic,当然要用Shift-JIS编码的日文),替换掉就可以了。
2、全角字符判断:日文Shift-JIS编码的双字节字符,第一字节数值范围是81-9F和E0-FC,第二字节是40-7E和80-FC。程序一般只判断第一字节是否在81-9F和E0-FC这个范围内。这样,在反汇编程序之后,应当能够看到比较指令(CMP)中出现常数81,9F,E0,A0(但不一定是直接比较,待判断字符和E0按位与之后比较高位也有可能),在反汇编文本中仔细搜索,就可以找到这样的代码段。不过这只是比较简单的情况,如果软件作者刻意隐藏这样的细节,就只能老老实实动态跟踪程序了。

新版本应该可以用同样的方法修改吧。
回复 支持 反对

使用道具 举报

6

主题

67

帖子

802

积分

⑤进阶

积分
802
发表于 2005-10-14 20:05:46 | 显示全部楼层
谢谢解说

虽然听不懂 囧rz
回复 支持 反对

使用道具 举报

125

主题

288

帖子

1387

积分

⑥精研

积分
1387
发表于 2005-10-14 21:48:39 | 显示全部楼层
EnumFontFamiliesEx是一个WIN32API函数,用来枚举系统中指定字体家族的扩展信息,其中有一个需要提供的参数就是CHARSET(字符集)。在程序中会有一个push XXXXX指令,将一个LOGFONT构造体(其中包含CHARSET)的指针(这个构造体在内存中保存的位置)压入堆栈,并交给WIN32API函数处理,因此修改其指向的内容就可以实现对中文字体枚举的支持了。改全角判断也是这样,其实只要简单的判断第一字符是否大于7Fh就可以,其他全部NOP掉,呵呵
回复 支持 反对

使用道具 举报

2

主题

57

帖子

620

积分

⑤进阶

积分
620
QQ
发表于 2006-9-9 21:37:45 | 显示全部楼层
为什么我运行这个程序,老说找不到标签呀 [s:3]
剑是凶器,剑术是杀人术,这才是事实。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-3-29 16:39 , Processed in 0.023596 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表