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

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

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

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

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

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

scgame 6 r/ \) j4 u' i
& }0 l; ~. x4 @7 \
你好,exttextout函数替换工具的功能部分的设计我写好了。 0 n' B# v6 `; d$ s4 W
请编写后放入gdi32.dll的proxy dll里,谢谢! # H, ]- Z" L# j5 C6 D5 K: L
这个工具制作完以后可以通用于所有Exttextout输出字幕的游戏 ,非常有用。
' d0 U9 O' ^3 [
/ E4 I& |$ f5 c1 ^0 Whook Exttextout 为myExttextout,对传入的字符串作如下变化。 : w% m$ n8 w5 K( J4 B' e! ^8 |
先把hash变换为1个12位的字符串,比如eb013c782344,然后到sub.ini文件寻找key : F4 f, F' a' B+ g/ m
eb013c782344_cn,如有取出key值作为译文,如无,则在eb013c782344_en中写入原文,
) W+ ?9 _: J3 }) s在eb013c782344_cn写入一个空字符串,以备翻译。 8 ^+ H+ g; d- k  D& `" u
, n; A" D1 p6 b# Y5 o9 e+ f
对了,为了不导致乱码,还要hook creatfont系列函数。
( J( Y% D6 B# e# \( k& Z把charset和字体修改一下,就可以出中文了。
# p% A$ O- X1 J( ~可以先用那个俄文游戏试试看。
3 ]* I. @3 N. k" B9 l, `2 p
. @2 j) P' V5 m0 b7 T7 O: O0 U有问题的话,请提问。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2010-4-13 10:09 | 只看该作者
汗~~不懂的还真有好多
- q$ @1 S9 u1 _, f是不是说把lpstring通过hash改成个12位的字符传然后到sub.ini里找相应的中文?4 P: l9 Q( z6 }4 @% Y
然后用原来的exttextout输出吗?
5 T# c/ |. c4 m/ ^+ |  {, {; k
( a9 X. P. {6 C: I$ bhook createfont就是不管怎么样都载入中文字体?1 v7 U0 B& \* s+ d' Y) _  e* I
: D# q# g& i9 W$ ~% D; }
不好意思哈,我对windows API不太了解,怎么hook还不是很了解呢,有什么简单的方法测试一下吗?
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2010-4-13 11:12 | 只看该作者
引用第1楼scgame于2010-04-13 10:09发表的 :
; l3 c. i" _/ z' g# m& d7 }汗~~不懂的还真有好多 0 M6 v, x: J: [+ K3 t
是不是说把lpstring通过hash改成个12位的字符传然后到sub.ini里找相应的中文? 4 X- \. Z6 v- I. O$ L; \
然后用原来的exttextout输出吗?
8 _: N8 ~% I0 G3 U
/ h& o" u" X+ G: I$ C+ a$ Jhook createfont就是不管怎么样都载入中文字体?
% K. R8 ?' p# ]- X.......
: g9 h% W# A& [1 B0 Y) {
- `  d  U& n! f9 ^* X! }. o( e
你的理解都对。
0 Z( |, r4 H  q; q5 Phook 的方法就是按下面的方法作个gdi32.dll,要修改的就是上面提到的2个函数。, K  v6 @3 g) F  e! d' f' _6 ]
完成后请放出源码。5 q' T, Z0 U8 F; j" }' t
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发表的 : 0 ?1 i" l( h: g6 A, C
一定要12位的吗?好像看到有32位,16位,12位的没找到啊 [s:102]

2 A  ^/ t& F( f$ p) p' w. w  R9 ~7 ~) @, G+ M+ j' }8 Z8 T4 q6 R
不一定12位的,16位,32位均可。
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2010-4-14 07:58 | 只看该作者
关键是速度和唯一性。. k1 `- k; }5 E1 b1 V- ~

2 m, g3 c- A* g% ]0 k# K# m我建议这样,
) U5 ?9 \2 q" a; E. {! Z1 s取13位,第1位为字符串长度,后6位为字符串前6个字节的ascii码,2 [/ d- O6 x% Z7 a2 I% s
最后6位为字符串最后6个字节的ascii码,不足部分左侧或右侧补0X00.8 ^/ y' o; V- r& F5 [
这样可能比较快,也能保持唯一性。
回复 支持 反对

使用道具 举报

7#
发表于 2010-4-14 08:11 | 只看该作者
我现在先抄了个MD5的用用,对HASH还不是很明白
3 l: ?* C/ c5 l/ o, o: E- X/ i  G3 q+ y不过照这个方法的话,那自符串长度一样,中间那段字不一样的话会出错的吧.
回复 支持 反对

使用道具 举报

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

使用道具 举报

9#
 楼主| 发表于 2010-4-14 11:11 | 只看该作者
引用第6楼scgame于2010-04-14 08:11发表的 :
/ Y+ x6 x$ A2 K我现在先抄了个MD5的用用,对HASH还不是很明白 " T" Z. |2 [( }& U  k
不过照这个方法的话,那自符串长度一样,中间那段字不一样的话会出错的吧.
/ m) N7 q4 _. D1 `
$ c& B  ], k8 m/ Z2 l# m
1 }& x4 ~- m, N! t" Q  ?5 j' ?
能按md5来做是最好的,就是担心速度。
+ |8 \& f" s) g6 Z! s  ~我的方法的确是有出错的可能性,但是加大取的字节数的话应该可以避免。
回复 支持 反对

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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