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

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

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

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

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

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

scgame
2 ?' L. i9 B5 q$ Z) A) j- |1 {( ?* A0 _9 p* u/ p+ m
你好,exttextout函数替换工具的功能部分的设计我写好了。 3 l$ y  N% J+ d' [. M$ P9 h
请编写后放入gdi32.dll的proxy dll里,谢谢!
$ [% t* ~, t: ?% b$ ~4 Y这个工具制作完以后可以通用于所有Exttextout输出字幕的游戏 ,非常有用。2 g# m2 y/ L! n" g$ w2 \9 {; o& \$ w$ h

: [: q6 r# N9 K' hhook Exttextout 为myExttextout,对传入的字符串作如下变化。 3 ?  ?9 Y( t0 b$ y3 o8 j( k( d
先把hash变换为1个12位的字符串,比如eb013c782344,然后到sub.ini文件寻找key
! G  f$ Z, W" d! t' beb013c782344_cn,如有取出key值作为译文,如无,则在eb013c782344_en中写入原文, ; I* {+ G, T- @! i
在eb013c782344_cn写入一个空字符串,以备翻译。
8 B. Y6 Z4 w/ i  w& c4 u$ d, C" T9 u4 O
对了,为了不导致乱码,还要hook creatfont系列函数。
1 T* q3 K: n  L' q, O$ `. ~4 q" p把charset和字体修改一下,就可以出中文了。
* ?% _" m; v5 C$ Y/ o+ N可以先用那个俄文游戏试试看。
. W$ U0 N" g' t! z# F8 m; O" |) X$ y0 @! c
有问题的话,请提问。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2010-4-13 10:09 | 只看该作者
汗~~不懂的还真有好多
/ N- {0 C' D3 c6 _- s8 B+ a! F! E是不是说把lpstring通过hash改成个12位的字符传然后到sub.ini里找相应的中文?% j/ c  S9 h2 m$ m
然后用原来的exttextout输出吗?
, |) A' C; H. U' g9 _
! H. B# X" T) Whook createfont就是不管怎么样都载入中文字体?8 f" Y/ `- _! s$ [4 ~

5 |- c% r9 b+ T不好意思哈,我对windows API不太了解,怎么hook还不是很了解呢,有什么简单的方法测试一下吗?
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2010-4-13 11:12 | 只看该作者
引用第1楼scgame于2010-04-13 10:09发表的 : " h# v6 q! P& s3 |% g* `
汗~~不懂的还真有好多
, \1 x& ?5 N# X. s% v4 p是不是说把lpstring通过hash改成个12位的字符传然后到sub.ini里找相应的中文?
' J1 |0 h! a5 }9 c4 t8 B然后用原来的exttextout输出吗? 0 r: Z- `$ [" @9 D
1 C& X+ Z6 r/ l( p
hook createfont就是不管怎么样都载入中文字体? ' e# N9 p" A3 c, ~6 x/ S
.......
) @6 @/ ?# c) I) @! g( ]- _. l
; W% M$ _3 Q* y: U. K2 N2 P
你的理解都对。& I5 j' `) e& h# m: l/ N, h
hook 的方法就是按下面的方法作个gdi32.dll,要修改的就是上面提到的2个函数。
6 A" X; [! U$ x2 b3 R) v3 @' Y: k完成后请放出源码。
' N4 \2 X% t3 a3 V; jhttps://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发表的 : , o1 O1 d7 ?, A& S1 a! G
一定要12位的吗?好像看到有32位,16位,12位的没找到啊 [s:102]

5 H0 Y; c5 Z; ^) U5 j$ u" h: U, N, a
7 n. f3 ?4 T& H3 p( `不一定12位的,16位,32位均可。
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2010-4-14 07:58 | 只看该作者
关键是速度和唯一性。
# i  T& i$ C0 v: {2 h7 \' ?$ V( k5 x! C% O
我建议这样,
0 |5 m& x) d, p" ^; d/ Q9 I取13位,第1位为字符串长度,后6位为字符串前6个字节的ascii码,. p) a1 e) H& r* r7 }
最后6位为字符串最后6个字节的ascii码,不足部分左侧或右侧补0X00.& w% [* s; _% V5 `+ t3 e
这样可能比较快,也能保持唯一性。
回复 支持 反对

使用道具 举报

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

使用道具 举报

8#
发表于 2010-4-14 08:17 | 只看该作者
哦,对了,我现在为了方便,并没有给hash加上_cn和_en% I  B- n3 W7 q2 h9 r; s
只是把英文原文写到了一个新的文件里,而在sub.ini相应的字符串前添加了个*以方便查找
回复 支持 反对

使用道具 举报

9#
 楼主| 发表于 2010-4-14 11:11 | 只看该作者
引用第6楼scgame于2010-04-14 08:11发表的 :
5 m* J- V+ Y- Q我现在先抄了个MD5的用用,对HASH还不是很明白
* g6 H5 n" V/ ~% I不过照这个方法的话,那自符串长度一样,中间那段字不一样的话会出错的吧. 4 o9 h/ I0 Z$ ?% F- O+ `

4 B7 N/ C3 C/ D1 j* B2 g
% b7 B5 i/ h+ @" q能按md5来做是最好的,就是担心速度。/ G" ?3 j" V# ?; E9 {. U. G
我的方法的确是有出错的可能性,但是加大取的字节数的话应该可以避免。
回复 支持 反对

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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