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

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

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

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

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

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

scgame , u* p2 J& H" X  x2 e4 {3 B, I
, ^/ {7 I9 I: ?9 a3 I  w
你好,exttextout函数替换工具的功能部分的设计我写好了。 ) E  B, {0 W! N
请编写后放入gdi32.dll的proxy dll里,谢谢! ; }) \2 u8 F% ~! {: j6 \5 L8 Z
这个工具制作完以后可以通用于所有Exttextout输出字幕的游戏 ,非常有用。
0 R- l8 x# X! q0 {4 ?; {/ j* E0 v7 K: ^5 @: ]9 {$ z
hook Exttextout 为myExttextout,对传入的字符串作如下变化。 6 V5 C- C8 N) F) I( }
先把hash变换为1个12位的字符串,比如eb013c782344,然后到sub.ini文件寻找key 4 M, H2 W2 D3 }# N) n: U( [
eb013c782344_cn,如有取出key值作为译文,如无,则在eb013c782344_en中写入原文, $ p% E8 \4 A4 X& k: |6 E
在eb013c782344_cn写入一个空字符串,以备翻译。
2 a, Q1 ]) ]! ^/ u+ j) f; A+ Z* Q' f" U5 f5 p9 V* c0 _
对了,为了不导致乱码,还要hook creatfont系列函数。+ }3 H0 f% w5 U; A
把charset和字体修改一下,就可以出中文了。9 _2 [) q( M0 J) u6 _
可以先用那个俄文游戏试试看。1 m" k) E6 }* C9 c

, _0 ?4 l* a+ R9 t# j, [有问题的话,请提问。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2010-4-13 10:09 | 只看该作者
汗~~不懂的还真有好多
0 E7 R% ?  |7 n7 E是不是说把lpstring通过hash改成个12位的字符传然后到sub.ini里找相应的中文?9 k$ ^7 v2 |! i2 l" `- n
然后用原来的exttextout输出吗?" _& x; g% f# I1 `3 U# `9 l

) d' p. K) {! R) M4 ~hook createfont就是不管怎么样都载入中文字体?
, U8 t5 J4 I- K9 u7 Z0 n  X+ C* F6 U5 d' ?: J2 D0 Y
不好意思哈,我对windows API不太了解,怎么hook还不是很了解呢,有什么简单的方法测试一下吗?
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2010-4-13 11:12 | 只看该作者
引用第1楼scgame于2010-04-13 10:09发表的 : ) v& H: d" u# U( ^/ z
汗~~不懂的还真有好多
1 H$ s/ I4 ]+ |, O: V& Q: S4 c% F是不是说把lpstring通过hash改成个12位的字符传然后到sub.ini里找相应的中文?
" K, T/ v! c% e, Y然后用原来的exttextout输出吗? ' }; g) \2 s( P3 H3 {) ~2 T
1 W% x& l( z4 C2 n; n
hook createfont就是不管怎么样都载入中文字体?
7 N1 g8 x% m/ e* l.......

$ a/ b* {' I0 {- J& F; q
( a$ G- A6 G$ m/ K4 C你的理解都对。
3 b( v" V$ n4 Ihook 的方法就是按下面的方法作个gdi32.dll,要修改的就是上面提到的2个函数。5 f* u7 j$ I0 n4 U: @2 ]: k, @; U  w
完成后请放出源码。; K8 h* B1 @4 S% V  \
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发表的 :
6 F7 q" J0 W0 ^一定要12位的吗?好像看到有32位,16位,12位的没找到啊 [s:102]
% F: x3 d! T+ N4 @1 R$ ]# a5 c
" |: Q- C' K$ M
不一定12位的,16位,32位均可。
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2010-4-14 07:58 | 只看该作者
关键是速度和唯一性。
- \4 L7 W4 Y; [; D' o
  P9 s; t5 ^# v我建议这样,% E, E, }. `+ M. m* j! e+ z
取13位,第1位为字符串长度,后6位为字符串前6个字节的ascii码,2 f7 ^- F& i5 o1 _' Y. q5 J" P! `
最后6位为字符串最后6个字节的ascii码,不足部分左侧或右侧补0X00.
0 b" r. B4 L( ~5 c/ ^% L8 D& ?$ v& O这样可能比较快,也能保持唯一性。
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

9#
 楼主| 发表于 2010-4-14 11:11 | 只看该作者
引用第6楼scgame于2010-04-14 08:11发表的 :
( c6 Z+ {+ E! p/ a; @0 M0 H我现在先抄了个MD5的用用,对HASH还不是很明白 . S9 E6 B8 o$ S) r+ _
不过照这个方法的话,那自符串长度一样,中间那段字不一样的话会出错的吧.
9 P, B3 R- }) i3 j  x5 ]  O
2 d' E3 p. p9 j' w7 W, _4 ]. W( v

) d0 l$ L6 ?8 \! Z4 N能按md5来做是最好的,就是担心速度。
% T: l9 a: k5 c; r& G/ v' m我的方法的确是有出错的可能性,但是加大取的字节数的话应该可以避免。
回复 支持 反对

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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