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

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

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

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

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

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

scgame
, V( ^8 |* X8 ]/ @) ]
5 o0 h2 I' ?9 }# x& G5 ?1 _$ p& w你好,exttextout函数替换工具的功能部分的设计我写好了。 8 J* z+ D5 Y4 e5 z0 Z5 P& p) b
请编写后放入gdi32.dll的proxy dll里,谢谢!
/ g) i& q$ x8 S' q- T- w这个工具制作完以后可以通用于所有Exttextout输出字幕的游戏 ,非常有用。
5 }% x7 _9 H6 i+ `
8 B% v0 [8 M/ G* Jhook Exttextout 为myExttextout,对传入的字符串作如下变化。
8 e5 G7 k9 O0 P3 E; l. N先把hash变换为1个12位的字符串,比如eb013c782344,然后到sub.ini文件寻找key & N; t3 d8 u; I0 y) Q8 [! C
eb013c782344_cn,如有取出key值作为译文,如无,则在eb013c782344_en中写入原文,   Q/ Z: N- x: E3 Q
在eb013c782344_cn写入一个空字符串,以备翻译。
; F7 T( k0 b# n: q# S
  f( K# M; J3 w0 h7 ?对了,为了不导致乱码,还要hook creatfont系列函数。% R( s, j  Q6 ]7 `# Z
把charset和字体修改一下,就可以出中文了。$ F4 b+ t8 X$ e( p: S% U, @2 W2 S- d6 E
可以先用那个俄文游戏试试看。
, z, A! ?, |  j# D/ c; S' [$ ~* J0 ]7 ~
有问题的话,请提问。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2010-4-13 10:09 | 只看该作者
汗~~不懂的还真有好多
, o6 `9 r# s# m/ O/ \# G- Y. X是不是说把lpstring通过hash改成个12位的字符传然后到sub.ini里找相应的中文?
+ ^; x# ^3 k5 i+ K, b然后用原来的exttextout输出吗?
+ c, j5 t3 s0 R7 \$ E2 S+ u# c9 _6 H. B' u" n; I) @* e
hook createfont就是不管怎么样都载入中文字体?9 n5 A" Q* t7 Z

& m9 y9 G, @9 d不好意思哈,我对windows API不太了解,怎么hook还不是很了解呢,有什么简单的方法测试一下吗?
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2010-4-13 11:12 | 只看该作者
引用第1楼scgame于2010-04-13 10:09发表的 :
! U( h$ `" ^8 I  C7 M- X汗~~不懂的还真有好多
: m4 j" C' ?7 ^  E' l, S是不是说把lpstring通过hash改成个12位的字符传然后到sub.ini里找相应的中文? " n" o& o' ]% f# [9 W' @, Z
然后用原来的exttextout输出吗?
: _7 n. I) C+ `6 u+ L/ C- W
$ V5 ^( k- f- B. zhook createfont就是不管怎么样都载入中文字体?
+ |9 A9 f9 {3 w# y+ u2 I- d- W.......

  X" v( ^3 }2 H4 r
# o: o6 Q0 Z# e# h7 R你的理解都对。8 O+ X. r8 s; B: e4 I/ W( `& N
hook 的方法就是按下面的方法作个gdi32.dll,要修改的就是上面提到的2个函数。; \2 P9 x0 q" S8 `3 ]
完成后请放出源码。; K6 ^* p9 |7 ?- Z; x, M
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发表的 :
+ ?; S: M) h* i4 S一定要12位的吗?好像看到有32位,16位,12位的没找到啊 [s:102]

9 [$ }0 C* i6 b' r! m# V) _
) z9 B! I6 s: ?不一定12位的,16位,32位均可。
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2010-4-14 07:58 | 只看该作者
关键是速度和唯一性。
6 B$ W, d8 R% E% D. q, U! e( e3 O  n% [
我建议这样,
( Q; L! B) O3 s  n" B/ G. @5 R取13位,第1位为字符串长度,后6位为字符串前6个字节的ascii码,
! _( e% d4 r7 w4 q  G最后6位为字符串最后6个字节的ascii码,不足部分左侧或右侧补0X00.2 g9 S; g$ W2 C- Y
这样可能比较快,也能保持唯一性。
回复 支持 反对

使用道具 举报

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

使用道具 举报

8#
发表于 2010-4-14 08:17 | 只看该作者
哦,对了,我现在为了方便,并没有给hash加上_cn和_en2 V( y: M) q$ j) o* @7 E; s0 \2 j& r
只是把英文原文写到了一个新的文件里,而在sub.ini相应的字符串前添加了个*以方便查找
回复 支持 反对

使用道具 举报

9#
 楼主| 发表于 2010-4-14 11:11 | 只看该作者
引用第6楼scgame于2010-04-14 08:11发表的 : ; ~4 z' p9 R$ [3 ^( L! D1 a- I( ^) Q
我现在先抄了个MD5的用用,对HASH还不是很明白
" {. ~- w) [/ R5 }3 r/ C! t不过照这个方法的话,那自符串长度一样,中间那段字不一样的话会出错的吧.
' k' g0 V* ?5 B* X
2 ^: W9 }( K' [4 Y7 a
) i* r7 I& N7 X( l' q- B! Q
能按md5来做是最好的,就是担心速度。- R" G' |8 J+ p3 j$ f9 R
我的方法的确是有出错的可能性,但是加大取的字节数的话应该可以避免。
回复 支持 反对

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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