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

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

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

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

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

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

scgame
- ~& J/ t# G# k* B0 |. n# `- |* J* t$ W: l1 A$ a3 D
你好,exttextout函数替换工具的功能部分的设计我写好了。
) m$ W5 u' {8 p- l请编写后放入gdi32.dll的proxy dll里,谢谢!
/ j* \, M; B' b) F- g+ T$ K这个工具制作完以后可以通用于所有Exttextout输出字幕的游戏 ,非常有用。
6 h- W; @: U7 G! z8 w- ?3 ?5 R/ v- u, P* B" \4 Z! `
hook Exttextout 为myExttextout,对传入的字符串作如下变化。 1 i. `1 s7 w& s1 C3 S0 {; c
先把hash变换为1个12位的字符串,比如eb013c782344,然后到sub.ini文件寻找key 7 k3 i' h* z' G/ u" |* X( j- v
eb013c782344_cn,如有取出key值作为译文,如无,则在eb013c782344_en中写入原文,
" W4 P- Y. c. w2 o8 T7 w在eb013c782344_cn写入一个空字符串,以备翻译。 ' K) E6 G9 S3 y/ V5 V

/ Y8 A7 J& V, u" E# B对了,为了不导致乱码,还要hook creatfont系列函数。1 N1 m7 j" B3 B, N$ _, u: y
把charset和字体修改一下,就可以出中文了。2 n( I: s. q" J' W% Q9 `
可以先用那个俄文游戏试试看。4 p/ d1 _; F/ P* W! g% v" D# r
4 A6 ^4 D9 Z/ p! D, k: y
有问题的话,请提问。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2010-4-13 10:09 | 只看该作者
汗~~不懂的还真有好多) a- d/ \$ [; p3 U% m
是不是说把lpstring通过hash改成个12位的字符传然后到sub.ini里找相应的中文?
7 E  C* D7 m, p& t然后用原来的exttextout输出吗?0 ]5 l4 B2 i6 e2 Q) c4 ]# l
' U. N7 D7 m, h# ?, h2 U1 y
hook createfont就是不管怎么样都载入中文字体?
) e1 P! o2 v: \. v
& ]- T; E" Y! B1 X# Z9 H/ Y# Z不好意思哈,我对windows API不太了解,怎么hook还不是很了解呢,有什么简单的方法测试一下吗?
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2010-4-13 11:12 | 只看该作者
引用第1楼scgame于2010-04-13 10:09发表的 : $ @; y3 M% b5 r
汗~~不懂的还真有好多
  F$ D) u- z4 h, c6 L' _  E, |2 c是不是说把lpstring通过hash改成个12位的字符传然后到sub.ini里找相应的中文? % y: k3 L- f& ?6 w# n. ~# D
然后用原来的exttextout输出吗?
. Y0 M$ I; l$ ?  f8 l0 ?
! y/ F+ D' _, S/ shook createfont就是不管怎么样都载入中文字体? 6 N4 y8 f3 J8 b; [
.......

" ^/ x4 ]3 S9 n1 I/ {* r1 s) c  S% p- l3 {9 I. I1 b/ z. x
你的理解都对。. L% S5 z3 P- E: ]' T  O/ V# q
hook 的方法就是按下面的方法作个gdi32.dll,要修改的就是上面提到的2个函数。
( t3 x( b6 h) Y* }, K) u7 {. Q完成后请放出源码。+ M; R$ a+ V1 i
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发表的 : - l& {: g) B: s5 e% d9 _6 S
一定要12位的吗?好像看到有32位,16位,12位的没找到啊 [s:102]
6 Z3 o- g3 ~' \/ C$ r$ c3 Z. {5 `0 p

6 W( L0 K3 c" I" c0 L不一定12位的,16位,32位均可。
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2010-4-14 07:58 | 只看该作者
关键是速度和唯一性。8 A3 h+ [! Q, q
' Q6 s$ o; ^1 T
我建议这样,
1 G% X* k! i9 ~- Y3 Y  {3 x取13位,第1位为字符串长度,后6位为字符串前6个字节的ascii码,
* v$ [: P- j  e3 B最后6位为字符串最后6个字节的ascii码,不足部分左侧或右侧补0X00.+ B* ]. x$ h+ O6 F/ _" \
这样可能比较快,也能保持唯一性。
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

9#
 楼主| 发表于 2010-4-14 11:11 | 只看该作者
引用第6楼scgame于2010-04-14 08:11发表的 : + d: P+ r% p4 Z8 g9 a6 M
我现在先抄了个MD5的用用,对HASH还不是很明白 8 ^! \/ i2 i/ A0 e
不过照这个方法的话,那自符串长度一样,中间那段字不一样的话会出错的吧. ( W( [& k/ x! M1 N9 x9 K1 F

# F" g% W7 x9 d: H
* j/ Z1 A4 ~/ d' F能按md5来做是最好的,就是担心速度。
  _& e; z0 P, B& x1 M4 a  ^0 V. F0 c我的方法的确是有出错的可能性,但是加大取的字节数的话应该可以避免。
回复 支持 反对

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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