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

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

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

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

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

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

scgame + H6 I9 R4 ]5 W1 S/ h* e  ?; _+ o
: ~  _% w- R1 Q7 A. G$ k9 R
你好,exttextout函数替换工具的功能部分的设计我写好了。 ( r7 m- }& l& G, x
请编写后放入gdi32.dll的proxy dll里,谢谢!
; B: }* B# a0 _6 D, P+ y% ?5 N0 w+ p这个工具制作完以后可以通用于所有Exttextout输出字幕的游戏 ,非常有用。
- j7 g( }* ^0 S- I) O5 A  z0 o6 }. g4 k% H: Q* z( H
hook Exttextout 为myExttextout,对传入的字符串作如下变化。 9 L! X/ f( [) H% k& k: D- H7 _
先把hash变换为1个12位的字符串,比如eb013c782344,然后到sub.ini文件寻找key 9 g& n! B; Z8 [; E( V* l+ i
eb013c782344_cn,如有取出key值作为译文,如无,则在eb013c782344_en中写入原文,
) Y( |! C0 Q# Y' M在eb013c782344_cn写入一个空字符串,以备翻译。
* T$ K4 \* U% C8 J
! t& W& U- Y7 M9 A对了,为了不导致乱码,还要hook creatfont系列函数。
% E+ P4 `  k1 ^7 ?把charset和字体修改一下,就可以出中文了。; |- [; t/ U( Y, V
可以先用那个俄文游戏试试看。$ z* p/ Y$ d2 B, |* U9 |

% Q- C, v% U8 a6 K  O有问题的话,请提问。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

9#
 楼主| 发表于 2010-4-14 11:11 | 只看该作者
引用第6楼scgame于2010-04-14 08:11发表的 :
9 M. d- }7 W: I" A8 r; D我现在先抄了个MD5的用用,对HASH还不是很明白 5 D$ M7 S$ p$ K5 K
不过照这个方法的话,那自符串长度一样,中间那段字不一样的话会出错的吧. 2 j, {9 t! Y: s! ]6 K$ Y

4 C: R; P# {  f# e# b; s) U+ w% S: C. D/ A1 O" f7 L
能按md5来做是最好的,就是担心速度。
* b9 b- W7 ^6 M5 I我的方法的确是有出错的可能性,但是加大取的字节数的话应该可以避免。
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

6#
 楼主| 发表于 2010-4-14 07:58 | 只看该作者
关键是速度和唯一性。
7 \1 s+ Z& b  q
& p  O+ l3 Q% j' Q$ @3 w我建议这样,9 }$ g* I* D& _! E
取13位,第1位为字符串长度,后6位为字符串前6个字节的ascii码,1 }& u- t8 q2 z- {- `
最后6位为字符串最后6个字节的ascii码,不足部分左侧或右侧补0X00.
, S+ J& d$ X2 P  L$ j! ~# b6 ^2 ^' V" I这样可能比较快,也能保持唯一性。
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2010-4-14 06:01 | 只看该作者
引用第3楼scgame于2010-04-13 23:54发表的 :
, D/ c" }$ W) I. p- l. x( D一定要12位的吗?好像看到有32位,16位,12位的没找到啊 [s:102]

1 r+ c( A/ \4 w0 U8 n
+ `4 ]: K! B8 j% z不一定12位的,16位,32位均可。
回复 支持 反对

使用道具 举报

地板
发表于 2010-4-13 23:54 | 只看该作者
一定要12位的吗?好像看到有32位,16位,12位的没找到啊 [s:102]
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2010-4-13 11:12 | 只看该作者
引用第1楼scgame于2010-04-13 10:09发表的 :
% U- C  A% D! E/ d2 i) |, L汗~~不懂的还真有好多
5 w9 h- ~4 H' x, l8 ~  `是不是说把lpstring通过hash改成个12位的字符传然后到sub.ini里找相应的中文? 4 J9 M% G! ?7 ~9 q. u9 ?& p
然后用原来的exttextout输出吗?   m( p8 `# h: u4 z+ l; q+ ], E
- F; s( C0 L% g) B" i
hook createfont就是不管怎么样都载入中文字体? , B- v- Z* ~3 K7 v1 l& J- G
.......
% ~# g! V: c4 V

5 U! x0 n0 ?' n你的理解都对。: H& t3 R8 J+ X
hook 的方法就是按下面的方法作个gdi32.dll,要修改的就是上面提到的2个函数。
' W4 a$ y; F6 P4 ]完成后请放出源码。! k, T, m* o, q2 h7 V  |. ?# ^
https://www.chinaavg.com/read.php?tid=21849
回复 支持 反对

使用道具 举报

沙发
发表于 2010-4-13 10:09 | 只看该作者
汗~~不懂的还真有好多
2 w, b* e2 u/ z( t是不是说把lpstring通过hash改成个12位的字符传然后到sub.ini里找相应的中文?
0 e9 K$ v& p: z% ~$ F然后用原来的exttextout输出吗?
0 o& \: C- r* H0 C! m
4 C" J+ Q6 g) jhook createfont就是不管怎么样都载入中文字体?
7 I$ u; l, g9 R! c  u; d4 T! G8 O
不好意思哈,我对windows API不太了解,怎么hook还不是很了解呢,有什么简单的方法测试一下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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