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

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

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

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

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

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

scgame
. ?$ i. T4 w& I+ t
+ {* S# c6 D. c; A! T$ }+ V你好,exttextout函数替换工具的功能部分的设计我写好了。 + h( E( Y; {# d  D
请编写后放入gdi32.dll的proxy dll里,谢谢! + G& ~0 Q. ]0 |- n3 u
这个工具制作完以后可以通用于所有Exttextout输出字幕的游戏 ,非常有用。
' z% ]! i$ I( h- V2 _& j, B- w; w9 j
hook Exttextout 为myExttextout,对传入的字符串作如下变化。
5 ]. u  D  Q; Q+ E0 ?- b/ \* F- o先把hash变换为1个12位的字符串,比如eb013c782344,然后到sub.ini文件寻找key   Y- Y, j$ h) T/ g: f6 C0 X
eb013c782344_cn,如有取出key值作为译文,如无,则在eb013c782344_en中写入原文, " `. G! ?. n" v' s+ d
在eb013c782344_cn写入一个空字符串,以备翻译。
( B$ n) V6 F4 i5 T, O
. m# w4 `2 W0 n' J$ O对了,为了不导致乱码,还要hook creatfont系列函数。
! ~+ ^6 @" \, \* x: p8 K" p把charset和字体修改一下,就可以出中文了。/ h0 U; N9 G5 W1 W+ |4 J
可以先用那个俄文游戏试试看。5 [) U6 Y! A8 v8 ~9 ?7 l
5 k7 m2 J: y3 S% d# j( V
有问题的话,请提问。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2010-4-13 10:09 | 只看该作者
汗~~不懂的还真有好多
: S9 @/ L. V. i( R是不是说把lpstring通过hash改成个12位的字符传然后到sub.ini里找相应的中文?0 n- c" |# E/ D8 G1 V* N6 Z+ G
然后用原来的exttextout输出吗?
. W' O( j1 o* B$ p9 R. h
# k0 o) N' c7 N) A1 t! ?: h- Z  `2 Y* uhook createfont就是不管怎么样都载入中文字体?% X& J- W8 q: Q, W! x! V: Z/ M5 D( Z
; ]# {: P3 ^. u: X
不好意思哈,我对windows API不太了解,怎么hook还不是很了解呢,有什么简单的方法测试一下吗?
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2010-4-13 11:12 | 只看该作者
引用第1楼scgame于2010-04-13 10:09发表的 : # D$ J+ y/ T" ~# |
汗~~不懂的还真有好多
; p" {/ M# q& \0 |7 E是不是说把lpstring通过hash改成个12位的字符传然后到sub.ini里找相应的中文? 4 W; P+ J- {% @8 ?/ _/ K1 x& Z
然后用原来的exttextout输出吗? 8 R$ ~0 x  S9 D2 P  N

# }1 [) @5 d4 P0 _  vhook createfont就是不管怎么样都载入中文字体?
  W- A! G6 i: z# D( B$ ].......

2 d; z8 k6 D  {4 }2 C; w- k% T. t* y: E9 |; f8 Y7 h$ l
你的理解都对。) V4 S6 Z' Z4 P+ Y
hook 的方法就是按下面的方法作个gdi32.dll,要修改的就是上面提到的2个函数。
% ]: C& \4 u' e完成后请放出源码。& y$ D5 j3 b- t+ @) p. f! u7 K
https://www.chinaavg.com/read.php?tid=21849
回复 支持 反对

使用道具 举报

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

使用道具 举报

5#
 楼主| 发表于 2010-4-14 06:01 | 只看该作者
引用第3楼scgame于2010-04-13 23:54发表的 : / T' H: N% R( M( N) z" M$ X* H: k
一定要12位的吗?好像看到有32位,16位,12位的没找到啊 [s:102]

% u5 m* _" m* w5 ?- Z) |$ ^) m' u/ @6 l/ u2 Z4 Z" M2 g6 [% s0 B
不一定12位的,16位,32位均可。
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2010-4-14 07:58 | 只看该作者
关键是速度和唯一性。4 n( }# W) k/ n* ^. K1 o& p6 t
* w) R0 k) u5 o
我建议这样,
/ }! f* N- z! A3 V9 T取13位,第1位为字符串长度,后6位为字符串前6个字节的ascii码,& d& H" b. X; @" P
最后6位为字符串最后6个字节的ascii码,不足部分左侧或右侧补0X00.* U. i; ~# V3 ?3 ~
这样可能比较快,也能保持唯一性。
回复 支持 反对

使用道具 举报

7#
发表于 2010-4-14 08:11 | 只看该作者
我现在先抄了个MD5的用用,对HASH还不是很明白
. ~" D: C+ b& T8 F不过照这个方法的话,那自符串长度一样,中间那段字不一样的话会出错的吧.
回复 支持 反对

使用道具 举报

8#
发表于 2010-4-14 08:17 | 只看该作者
哦,对了,我现在为了方便,并没有给hash加上_cn和_en6 A, V5 y/ u  y, Q, y2 g
只是把英文原文写到了一个新的文件里,而在sub.ini相应的字符串前添加了个*以方便查找
回复 支持 反对

使用道具 举报

9#
 楼主| 发表于 2010-4-14 11:11 | 只看该作者
引用第6楼scgame于2010-04-14 08:11发表的 :
. D" Q" u, f6 R' W5 R/ }+ l' A我现在先抄了个MD5的用用,对HASH还不是很明白 4 L( m, W- ^4 f) D: s0 t
不过照这个方法的话,那自符串长度一样,中间那段字不一样的话会出错的吧. 6 g4 D) s) y! X) F# ^8 T
5 }. \4 W% ^7 O1 h4 h, w- h- s
" |" K0 [: m: B' b! t; j
能按md5来做是最好的,就是担心速度。
# ]! z$ [. p: {- K5 b4 {  j& K/ F我的方法的确是有出错的可能性,但是加大取的字节数的话应该可以避免。
回复 支持 反对

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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