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

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

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

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

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

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

scgame
) u3 U% F1 Y. m( I
; T9 H" r* v8 S# q+ w你好,exttextout函数替换工具的功能部分的设计我写好了。 5 R: y6 s& c  d0 D
请编写后放入gdi32.dll的proxy dll里,谢谢! 4 u4 {$ c% d% L) B: N9 J5 L
这个工具制作完以后可以通用于所有Exttextout输出字幕的游戏 ,非常有用。
  H2 l, ~# W9 w  b. P) g' t8 q* S
' ^( e: G9 A. |  [5 j& A+ v3 z" Phook Exttextout 为myExttextout,对传入的字符串作如下变化。
6 I* Q  l- _; F3 z先把hash变换为1个12位的字符串,比如eb013c782344,然后到sub.ini文件寻找key
; F  |1 {+ b: ^4 S, G* `2 Ceb013c782344_cn,如有取出key值作为译文,如无,则在eb013c782344_en中写入原文,
! B1 T& W& V# u. @- \8 K' S) W在eb013c782344_cn写入一个空字符串,以备翻译。 . _' }0 J* X9 d% Y5 A; T6 Z4 b
% d- A, e) d' J1 X% h! k4 \
对了,为了不导致乱码,还要hook creatfont系列函数。
7 k  d* O1 h& F把charset和字体修改一下,就可以出中文了。
' ?' o4 A2 L% A: h4 ?可以先用那个俄文游戏试试看。1 ~/ N. }$ C2 }) v

5 O& I! T6 l, [; @  e有问题的话,请提问。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2010-4-13 10:09 | 只看该作者
汗~~不懂的还真有好多# H# u& Z) x* F- g* w
是不是说把lpstring通过hash改成个12位的字符传然后到sub.ini里找相应的中文?3 d% _% C( `6 V# C
然后用原来的exttextout输出吗?! K5 C" w: g" o  v
& w  \) c0 l: f
hook createfont就是不管怎么样都载入中文字体?
- d2 v7 t; j1 }3 l# ]3 y$ X* I
' f5 ~0 L3 a  w6 q不好意思哈,我对windows API不太了解,怎么hook还不是很了解呢,有什么简单的方法测试一下吗?
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2010-4-13 11:12 | 只看该作者
引用第1楼scgame于2010-04-13 10:09发表的 :
& a, C3 x: c4 C  W; y/ {汗~~不懂的还真有好多   I) p- L0 J. g: P$ ~
是不是说把lpstring通过hash改成个12位的字符传然后到sub.ini里找相应的中文? - O+ K8 _. `' b2 U1 F$ z1 Y$ O
然后用原来的exttextout输出吗?
( @: o* ^9 p! V: I/ r3 z! F% R4 l4 t$ I6 f/ P6 {. y2 e/ B
hook createfont就是不管怎么样都载入中文字体?
. o% w9 K1 }5 t: ^# d. V2 r.......

( Q) w' o/ M. p; A9 T0 \$ N1 X9 ]/ C; U5 @1 s, a% t( W
你的理解都对。
0 N8 f8 I3 ?' `8 vhook 的方法就是按下面的方法作个gdi32.dll,要修改的就是上面提到的2个函数。+ A% d3 Z  z% _
完成后请放出源码。- u: W( Z. {. Z9 N: \1 ]3 q4 a( L
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发表的 : 9 R  V) e0 O0 t# ^: w) Y% t; f
一定要12位的吗?好像看到有32位,16位,12位的没找到啊 [s:102]

2 e- |) p, h9 f+ u' Q4 C2 H3 K2 D" r$ J* [: P0 A# ?
不一定12位的,16位,32位均可。
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2010-4-14 07:58 | 只看该作者
关键是速度和唯一性。
( u7 a. L% W2 K) P
/ R" e! d; H$ ^# p( }! T我建议这样,# w3 A- q: V5 p8 v- ^
取13位,第1位为字符串长度,后6位为字符串前6个字节的ascii码,: N- p. Y4 _& ^- z2 M
最后6位为字符串最后6个字节的ascii码,不足部分左侧或右侧补0X00.! @4 a/ `, G1 y, E3 Y' }, e: \& i
这样可能比较快,也能保持唯一性。
回复 支持 反对

使用道具 举报

7#
发表于 2010-4-14 08:11 | 只看该作者
我现在先抄了个MD5的用用,对HASH还不是很明白1 U1 Z4 E7 E+ g( |: x2 T# Y" ]
不过照这个方法的话,那自符串长度一样,中间那段字不一样的话会出错的吧.
回复 支持 反对

使用道具 举报

8#
发表于 2010-4-14 08:17 | 只看该作者
哦,对了,我现在为了方便,并没有给hash加上_cn和_en# X6 a. C: \- v- t' G! y* L* l" v
只是把英文原文写到了一个新的文件里,而在sub.ini相应的字符串前添加了个*以方便查找
回复 支持 反对

使用道具 举报

9#
 楼主| 发表于 2010-4-14 11:11 | 只看该作者
引用第6楼scgame于2010-04-14 08:11发表的 :
7 [  v, w7 X1 ?5 l+ m# ~7 g我现在先抄了个MD5的用用,对HASH还不是很明白
6 d5 V2 ], R- `不过照这个方法的话,那自符串长度一样,中间那段字不一样的话会出错的吧.
1 \$ l, ]- a7 ^& w" M6 `) v

( m2 s1 S1 ?% Q% u" \4 e
. t  H! `6 @) B  I) T7 ^能按md5来做是最好的,就是担心速度。# v) X# p: N2 X0 a! ~! c, @% n
我的方法的确是有出错的可能性,但是加大取的字节数的话应该可以避免。
回复 支持 反对

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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