冒险解谜游戏中文网 ChinaAVG
标题:
CSI纽约的汉化工具制作 (potemkin请进)
[打印本页]
作者:
shane007
时间:
2010-9-26 14:54
标题:
CSI纽约的汉化工具制作 (potemkin请进)
potemkin请来报到,细节qq上说过了,不再重复。
$ p! u! G8 D0 Z
" c+ E5 G4 a r3 T g$ R
部分伪代码如下
! y4 d" D$ d2 }1 p( c1 Z. Y
TTF_RenderUNICODE_Solid
3 d5 \8 O Q- X* i$ U5 Q
{
) U5 [7 g5 m' a! r% X) m, M5 W
call write_english_to_log
8 @0 b- V. G2 U) f
//call replace_english_to_chinese
" z3 A9 I# Z8 R
call TTF_RenderUNICODE_Solid_old
f6 U6 ^2 }% f- w5 Y
}
0 |* |5 \2 {+ K
) U+ `! i7 B( ^1 u3 `2 H
相关帖子
$ e, ~! V% u! f9 G0 t" L j
https://www.chinaavg.com/read.php?tid=24328
) f6 K* a- Q4 Z4 F: [$ g$ o8 ~- Z
* X& s9 X* `7 ~' o1 S3 d3 H
时间期限 3天
作者:
potemkin
时间:
2010-9-26 14:55
报道一枚 !
作者:
potemkin
时间:
2010-9-29 02:16
遇到困难了:
2 X! _- N. h; M$ o5 y8 z
+ d( N% \; `0 }3 |) d
利用
https://www.chinaavg.com/read.php?tid=12598&keyword=dll
里面给的工具,找到游戏相关的函数是TTF_RenderUTF8_Blended()一个(只试了开始的一段游戏,只有这一个函数起作用)。但是自己不知道怎样提取函数第二个实参,也就是const char * text这个,即所需的文本。
4 `; `, F. T; V3 D
. x/ a ]% ]: X( W& a
在网上翻了翻,似乎需要查到调用时ebp指向的地址,然后ebp+4为第一个参数地址,ebp+8为第二个参数。不过自己汇编还没入门,所以困在这里了。
- ]8 @+ {* n* D' S& d4 D
; C+ s# w$ i# m( s2 v$ \
Ahead工具那里还提到了Hook,说可以截获消息——依然不太明白。
' y! o* t3 _* j7 Y" l5 W4 E
& H8 a2 X7 e7 U3 u
各位能否给点提示,或者推荐下要补充那方面的知识?
作者:
shane007
时间:
2010-9-29 07:59
感觉你的方向不对,修改sdl_ttf.dll的代码即可。
) s! f0 ~" @3 Q+ T: J+ B
www.libsdl.org/projects/SDL_ttf/
作者:
potemkin
时间:
2010-9-29 12:37
明白了, 原来sdl_ttf.dll的源码都在的, 直接修改再重新编译就好了
* |; f- W( H/ ]4 p8 t$ R7 Z7 d6 v, |
做了一个粗糙版本的: 直接生成一个文本文件Helloworld_UTF, 然后把渲染过的文字都输出到这个文件里。
5 w' O8 I4 _( k* X; T3 C0 ]
n$ H ^# j+ j; ^
问题是里面很多重复的文字, 按你们以往的经验, 是不是还要写一个bool find(char *text, FILE * textLog)类似的过程, 如果重复了就不进行输出
0 M7 m! A3 U& B) s7 X2 B3 r; y
-----------
9 t. z% a! e# v! w% U
用法: 直接将SDL_ttf.dll拷贝到原目录下, 覆盖掉原dll
作者:
shane007
时间:
2010-9-29 17:06
请问这个dll有没有在CSI纽约里测试过,是否能把文本抓取出来呢?
. x9 c3 k# b+ j4 _
可以的话,请上传一个抓取下来的文本。
作者:
potemkin
时间:
2010-9-29 19:15
这是没处理直接截取的文本
& I0 i: q/ I& N$ ?9 P; p
一句话挨个字母生成是因为那些文字在游戏中是逐字显示的
作者:
shane007
时间:
2010-9-29 20:54
请在每行字幕前加上当前时间,要精确到毫秒级别的。
作者:
potemkin
时间:
2010-9-30 12:18
做的晚了.. 时间已加上
作者:
shane007
时间:
2010-9-30 22:24
收到,谢谢。
! {( O* q' c7 E! M4 f4 X9 z2 a! o
0 X4 I( b7 |/ \: U. s
这里有个俄文补丁,你试试看能否正常使用。
( |% n* |) D( A
http://rghost.net/2033504
作者:
potemkin
时间:
2010-10-7 21:42
抱歉 国庆这几天懒散了
9 W4 h2 _0 x0 I* H3 S
那个俄文补丁可以用,不过原理不一样,他们只是改了.dat文件
. A( N* X% u; G u' X
试了一下直接输出中文,用的utf8的输出函数,程序文件编码也是utf8,但是结果是乱码..
作者:
shane007
时间:
2010-10-7 22:09
这样吧,请你去接下面这个任务。
9 b8 J6 I A. m/ a
这个游戏应该是整句输出的,你做个ini文件,输出到ini文件并替换即可。
2 k! l3 l3 w Z6 S$ f' ]
游戏是俄文的。有不明白请提问。
5 @' H I' D9 {
f( H. |1 H" O' M( Y+ ~& B n
https://www.chinaavg.com/read.php?tid=24378&fpage=3
欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/)
Powered by Discuz! X3.2