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

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

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

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

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

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

scgame
8 z+ y9 p6 r# z6 f2 }- P, O# r( a( B; J5 C1 \
你好,exttextout函数替换工具的功能部分的设计我写好了。
8 h. M' i* e; s* F: l. F请编写后放入gdi32.dll的proxy dll里,谢谢!
+ `. L3 O* u6 S/ Y这个工具制作完以后可以通用于所有Exttextout输出字幕的游戏 ,非常有用。$ P" ?, s9 M- l0 Y1 M

0 h) d/ U: W- J+ m+ u* hhook Exttextout 为myExttextout,对传入的字符串作如下变化。 - z' [( A. Z3 W2 N8 [7 ?' Q
先把hash变换为1个12位的字符串,比如eb013c782344,然后到sub.ini文件寻找key + S( H8 r, }8 u; j  q- W) k
eb013c782344_cn,如有取出key值作为译文,如无,则在eb013c782344_en中写入原文,
% D3 u* k9 u+ _# ~在eb013c782344_cn写入一个空字符串,以备翻译。
2 Y# H( D* k- y) Y
4 z. P9 M1 N6 c- h' A" N对了,为了不导致乱码,还要hook creatfont系列函数。
& w) f9 b: M( W6 S7 R: v! p; S把charset和字体修改一下,就可以出中文了。
5 b0 y- F9 ]  |, ~0 j可以先用那个俄文游戏试试看。
: o# Q& u4 U, v3 K' i* S9 v# k( g! e/ n$ `2 C
有问题的话,请提问。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2010-4-13 10:09 | 只看该作者
汗~~不懂的还真有好多
' w  J3 F$ O6 U, D' F是不是说把lpstring通过hash改成个12位的字符传然后到sub.ini里找相应的中文?4 F1 G0 \; A. Q- v# K' \
然后用原来的exttextout输出吗?
( `$ e1 q1 x! I9 {0 @! b  M% b# W; @. A/ n4 l- ?
hook createfont就是不管怎么样都载入中文字体?$ M# X0 Z" b( `- b
! j5 G, d; }' C9 o  C
不好意思哈,我对windows API不太了解,怎么hook还不是很了解呢,有什么简单的方法测试一下吗?
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2010-4-13 11:12 | 只看该作者
引用第1楼scgame于2010-04-13 10:09发表的 : 9 E/ Q2 d& }  G
汗~~不懂的还真有好多
; D4 A7 u: e# {  ], }是不是说把lpstring通过hash改成个12位的字符传然后到sub.ini里找相应的中文?
$ u3 a, _/ m! S: D8 N9 O" A2 E然后用原来的exttextout输出吗? " ~# z- w+ J$ ^8 B1 J1 o% Q
  d* V) |6 g3 f
hook createfont就是不管怎么样都载入中文字体?
- n: f+ q+ [+ J+ Z.......

5 _" k, U: Z" `& t5 B) P5 Q" W) h
8 P, D* u' c# c# G2 ]5 q8 b+ K- v4 ?你的理解都对。
, ~" Z' u  h6 R' D: @; _  Q' Vhook 的方法就是按下面的方法作个gdi32.dll,要修改的就是上面提到的2个函数。9 W2 b' L1 G: A/ [: ~. g
完成后请放出源码。* d" X+ j: @! a/ g6 s
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发表的 : & w  D4 t& O7 T4 ?/ q- U; `
一定要12位的吗?好像看到有32位,16位,12位的没找到啊 [s:102]
/ a: I# ^% |& x$ c
9 K8 l, B4 M. R4 l; O
不一定12位的,16位,32位均可。
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2010-4-14 07:58 | 只看该作者
关键是速度和唯一性。
) L  |9 x5 d$ U( h: i
* [; w  g9 e& r  Z. q我建议这样,
  x  U( n2 i; v9 j3 U( Z: ^6 V取13位,第1位为字符串长度,后6位为字符串前6个字节的ascii码,
$ [  ?) o. D" V4 [! `& W最后6位为字符串最后6个字节的ascii码,不足部分左侧或右侧补0X00., u$ s: E8 k* z* w
这样可能比较快,也能保持唯一性。
回复 支持 反对

使用道具 举报

7#
发表于 2010-4-14 08:11 | 只看该作者
我现在先抄了个MD5的用用,对HASH还不是很明白
9 g+ Y: c2 M" Z* s; ]4 `2 \不过照这个方法的话,那自符串长度一样,中间那段字不一样的话会出错的吧.
回复 支持 反对

使用道具 举报

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

使用道具 举报

9#
 楼主| 发表于 2010-4-14 11:11 | 只看该作者
引用第6楼scgame于2010-04-14 08:11发表的 : ( y) s0 Y; w7 z1 R
我现在先抄了个MD5的用用,对HASH还不是很明白 + I3 h2 }  q, s) Y% [
不过照这个方法的话,那自符串长度一样,中间那段字不一样的话会出错的吧. % P1 @+ Y' ?8 \( P, K; @7 f6 _! ]
* y, ], g0 D! q9 P
" v  s' V5 u4 {+ g' }( _
能按md5来做是最好的,就是担心速度。0 U, I$ p' N5 {1 S. [% V
我的方法的确是有出错的可能性,但是加大取的字节数的话应该可以避免。
回复 支持 反对

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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