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

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

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

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

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

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

scgame : k1 h# ]$ e6 Y7 ~( \" c
( M7 B* g: N2 Q4 e/ v4 A
你好,exttextout函数替换工具的功能部分的设计我写好了。 7 a& p& f" o+ A" n& z  B+ d2 z6 `
请编写后放入gdi32.dll的proxy dll里,谢谢!
' }1 A( K1 g) w$ w8 H& K: n; d这个工具制作完以后可以通用于所有Exttextout输出字幕的游戏 ,非常有用。# z! O3 s+ [2 N9 X2 s9 p/ {
' m# c! f0 `& O* D- F2 C  }
hook Exttextout 为myExttextout,对传入的字符串作如下变化。 1 j  V% Y9 J. Z0 I6 |
先把hash变换为1个12位的字符串,比如eb013c782344,然后到sub.ini文件寻找key , X% z4 q2 f: k
eb013c782344_cn,如有取出key值作为译文,如无,则在eb013c782344_en中写入原文, $ d+ c( D% E4 r7 |
在eb013c782344_cn写入一个空字符串,以备翻译。 ; r, j) p$ O( o, r# H
8 [: w9 Z6 V* r& L
对了,为了不导致乱码,还要hook creatfont系列函数。6 [3 P3 O/ Z3 [7 g4 @* n
把charset和字体修改一下,就可以出中文了。
& i- p; h9 ?: w可以先用那个俄文游戏试试看。$ ?4 {3 R& Q+ D. O

& O+ f  l# `9 X有问题的话,请提问。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2010-4-13 10:09 | 只看该作者
汗~~不懂的还真有好多
9 t0 ?. F; B6 f5 S+ Z6 E是不是说把lpstring通过hash改成个12位的字符传然后到sub.ini里找相应的中文?; ?; D9 D4 u6 }: e4 M; ?+ }& H
然后用原来的exttextout输出吗?
  R0 H  n; {9 g' Y" |5 _5 L' [6 V- O% ~7 Q
hook createfont就是不管怎么样都载入中文字体?7 w2 {# q0 I9 x* `: H

$ D) R: ?3 j2 }1 d5 [& E不好意思哈,我对windows API不太了解,怎么hook还不是很了解呢,有什么简单的方法测试一下吗?
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2010-4-13 11:12 | 只看该作者
引用第1楼scgame于2010-04-13 10:09发表的 :
" v3 {1 I6 P( P$ U5 N汗~~不懂的还真有好多 9 B7 e) |/ Y5 I) b  ^3 X+ T
是不是说把lpstring通过hash改成个12位的字符传然后到sub.ini里找相应的中文?
: n& ~( ~0 ]& d; V然后用原来的exttextout输出吗?
+ F' H# a4 P( u( v$ k
/ b2 I# v$ h& O  s8 Mhook createfont就是不管怎么样都载入中文字体? / u) e4 J0 L* U( u* D! u
.......
- o& @$ z/ Y* N: f$ d

7 {# j4 Z& D8 g' ^4 S2 w4 p你的理解都对。
! I( L" n' g) B  q- [hook 的方法就是按下面的方法作个gdi32.dll,要修改的就是上面提到的2个函数。) c7 o4 O$ F" H
完成后请放出源码。5 b, l+ R" i  W+ p: k  Y. y8 U# o
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发表的 : 3 W3 Q0 Z( C2 D8 j  m7 E" a
一定要12位的吗?好像看到有32位,16位,12位的没找到啊 [s:102]

% G; |' r7 ?, F5 b& t5 r+ j
! g- Y4 |! d( `; f9 d不一定12位的,16位,32位均可。
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2010-4-14 07:58 | 只看该作者
关键是速度和唯一性。, l5 u% B: L" Z6 N& h$ B' m

( V5 G) p9 _( u1 ]* g我建议这样,+ X( }" I7 e& K) H
取13位,第1位为字符串长度,后6位为字符串前6个字节的ascii码,) Q' q) X/ d8 }* \  i
最后6位为字符串最后6个字节的ascii码,不足部分左侧或右侧补0X00.
  R3 y4 y' X* n2 A9 R: C这样可能比较快,也能保持唯一性。
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

9#
 楼主| 发表于 2010-4-14 11:11 | 只看该作者
引用第6楼scgame于2010-04-14 08:11发表的 : & o% T. W( `* M' m; k* q5 q4 B
我现在先抄了个MD5的用用,对HASH还不是很明白
# ]& S* K/ W" E不过照这个方法的话,那自符串长度一样,中间那段字不一样的话会出错的吧. ' M( e/ Y1 O5 L% n; o
7 P* o, L2 t3 ]

" d$ M; z( b3 b: B能按md5来做是最好的,就是担心速度。) H( W, B( M6 Z3 D5 P
我的方法的确是有出错的可能性,但是加大取的字节数的话应该可以避免。
回复 支持 反对

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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