设为首页收藏本站官方微博

汉化任务 exttextout函数替换工具(scgame请进)

[复制链接]
查看: 2941|回复: 8
打印 上一主题 下一主题

[汉化任务] exttextout函数替换工具(scgame请进)

跳转到指定楼层
楼主
发表于 2010-4-13 07:56 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

exttextout函数替换工具(scgame请进)

scgame
* g) D. c( C) q
  G* j: b  N. ~0 f4 r你好,exttextout函数替换工具的功能部分的设计我写好了。 - A5 A) _+ h1 {
请编写后放入gdi32.dll的proxy dll里,谢谢!
2 `# C! s( N' r  z) \5 ]这个工具制作完以后可以通用于所有Exttextout输出字幕的游戏 ,非常有用。
4 U0 j7 O4 f; K3 V+ m9 Y
! u* U9 h) M) D8 d! ^hook Exttextout 为myExttextout,对传入的字符串作如下变化。 ; i6 l( `; c2 q1 W% o, w6 J
先把hash变换为1个12位的字符串,比如eb013c782344,然后到sub.ini文件寻找key 4 w! I$ Z/ g, n. ]+ p4 Z2 g
eb013c782344_cn,如有取出key值作为译文,如无,则在eb013c782344_en中写入原文,   ~# k3 e; G$ X& Y5 c1 f3 T# S. y
在eb013c782344_cn写入一个空字符串,以备翻译。
1 Z3 A7 ^1 [- N! d. |$ c
# v% N5 c  t& X, A  [" z0 n对了,为了不导致乱码,还要hook creatfont系列函数。/ |/ ~* s$ F4 X: B% x; j* M6 \
把charset和字体修改一下,就可以出中文了。
4 W* Y6 K9 e* E  c8 i可以先用那个俄文游戏试试看。* {. Y6 j! ^' P4 |1 h
5 s/ H; w: p6 I7 G% A4 k
有问题的话,请提问。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

9#
 楼主| 发表于 2010-4-14 11:11 | 只看该作者
引用第6楼scgame于2010-04-14 08:11发表的 :
/ P  E$ g& d$ \' w我现在先抄了个MD5的用用,对HASH还不是很明白
2 R, w7 |& G5 d不过照这个方法的话,那自符串长度一样,中间那段字不一样的话会出错的吧.
" \/ {& p7 a3 P

/ t. K" b; ^- \' f: j: X* W( X: m9 b
- u8 n' r+ g# E1 x9 c能按md5来做是最好的,就是担心速度。
4 Z& J$ m. p+ j; E" L- W我的方法的确是有出错的可能性,但是加大取的字节数的话应该可以避免。
回复 支持 反对

使用道具 举报

8#
发表于 2010-4-14 08:17 | 只看该作者
哦,对了,我现在为了方便,并没有给hash加上_cn和_en$ ~3 Z4 m8 n' t5 ^
只是把英文原文写到了一个新的文件里,而在sub.ini相应的字符串前添加了个*以方便查找
回复 支持 反对

使用道具 举报

7#
发表于 2010-4-14 08:11 | 只看该作者
我现在先抄了个MD5的用用,对HASH还不是很明白
2 q5 v* T4 Z! [' M& z- L1 k/ r9 ]不过照这个方法的话,那自符串长度一样,中间那段字不一样的话会出错的吧.
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2010-4-14 07:58 | 只看该作者
关键是速度和唯一性。- k9 g: j2 w7 c7 C( c4 b5 y% k

  Y  P$ K0 J2 B3 p我建议这样,
1 J$ c/ \1 W/ m( I取13位,第1位为字符串长度,后6位为字符串前6个字节的ascii码,
* v3 ]" u# I$ ], \9 U最后6位为字符串最后6个字节的ascii码,不足部分左侧或右侧补0X00.
7 v2 U9 d: a9 z9 ?/ G( C3 D; W  k/ g这样可能比较快,也能保持唯一性。
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2010-4-14 06:01 | 只看该作者
引用第3楼scgame于2010-04-13 23:54发表的 : . B% O5 G/ a! I2 E8 B
一定要12位的吗?好像看到有32位,16位,12位的没找到啊 [s:102]
) x: ^+ R, A$ x6 @% p$ B

( G: I/ K% t( r$ Y6 f1 f不一定12位的,16位,32位均可。
回复 支持 反对

使用道具 举报

地板
发表于 2010-4-13 23:54 | 只看该作者
一定要12位的吗?好像看到有32位,16位,12位的没找到啊 [s:102]
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2010-4-13 11:12 | 只看该作者
引用第1楼scgame于2010-04-13 10:09发表的 :
# l5 R1 i% G/ r3 b4 c8 d汗~~不懂的还真有好多 * V2 y) D* J6 \. h
是不是说把lpstring通过hash改成个12位的字符传然后到sub.ini里找相应的中文?
. Z: T2 m0 o$ @6 ]' u- O然后用原来的exttextout输出吗?
1 i! z1 m) A7 T$ r* F: L7 x0 G
, m7 ^6 p9 c) c, ^3 Thook createfont就是不管怎么样都载入中文字体?
4 z& g! ?% u4 G- o4 m  R( z) M.......

) p7 T4 n) T: r4 Z0 K  T# @& ?4 Q$ U  M" O( j
你的理解都对。
5 R) {& x; _9 q! ahook 的方法就是按下面的方法作个gdi32.dll,要修改的就是上面提到的2个函数。& [4 i1 S+ G" d
完成后请放出源码。0 e6 o2 `8 A7 c2 J& ?3 [. f3 W& R* `
https://www.chinaavg.com/read.php?tid=21849
回复 支持 反对

使用道具 举报

沙发
发表于 2010-4-13 10:09 | 只看该作者
汗~~不懂的还真有好多! ~0 _( Y. Q& H% o
是不是说把lpstring通过hash改成个12位的字符传然后到sub.ini里找相应的中文?2 ^' Q! k) j# p; d; {7 X/ s
然后用原来的exttextout输出吗?; w5 j( [5 u/ B. l+ U' ^

& G3 g6 b" v) U% X4 \hook createfont就是不管怎么样都载入中文字体?
* v8 c! ~4 ~' I
- j# t) S0 w0 n( `不好意思哈,我对windows API不太了解,怎么hook还不是很了解呢,有什么简单的方法测试一下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

官方微博官方微信号小黑屋 微信玩家群  

(C) ChinaAVG 2004 - 2019 All Right Reserved. Powered by Discuz! X3.2
辽ICP备11008827号 | 桂公网安备 45010702000051号

冒险,与你同在。 冒险解谜游戏中文网ChinaAVG诞生于2004年9月9日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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