冒险解谜游戏中文网 ChinaAVG
标题:
WinterMute Engine 汉化教程
[打印本页]
作者:
weiyun
时间:
2014-3-22 22:08
标题:
WinterMute Engine 汉化教程
本帖最后由 weiyun 于 2014-3-24 19:11 编辑
7 o [( \3 M& s1 a: P
$ S( T& g! B5 |* C4 R
Winter Mute这个引擎是专门用来开发点击式冒险游戏的,下面我来讲一下这个引擎的汉化方法。
7 ~, o/ ~4 S7 {" [) Z
使用此引擎的游戏比较多,而且汉化非常容易,论坛之前有很多相关资料,但没有完整格式分析等
W. p( m2 d3 R; o* [$ [' j
% v6 n! L3 @) c6 W! Z, c0 ^
以下是官方主页:
http://dead-code.org/home/
/ @& X3 d& O5 V* e' _+ B
注意本引擎是开源的,源码可以在这里查看:
: ^( i) S: [. P1 J7 w) X0 O! Z
https://bitbucket.org/MnemonicWME/wme1/
0 r& }. w5 y7 A/ e5 b0 E
6 e% t" ]5 `* U( m5 l/ V9 v
下面开始正文
+ H$ H% I3 i, c& V, |
& O ?, ]% g3 j! B
包格式
0 I3 B+ N e$ W9 e
游戏的包格式为dcp格式,文件标志是0xDEC0ADDE也就是DEADCODE。
$ m1 [, d- T7 t) N
5 q- x; v, S* J# m' ^
格式分析:
struct{
6 S, m; U, v1 o
DWORD Magic1; // 0xDEC0ADDE DEADCODE
5 j2 ~8 h/ L- }: q
DWORD Magic2; // 0x4B4E554A "JUNK"
) f6 a r' V* L4 a' l
DWORD PackageVersion; // 0x00000200 包版本
! u! Z% C+ D# l2 L! `4 A$ l
DWORD GameVersion; //游戏版本
6 e2 R& q0 {; m4 e% c
BYTE Priority; //优先级
! P4 O" k% M' l
BYTE CD;
1 Z) D3 q- u. k9 n
bool MasterIndex;
/ t! _% x" z/ M7 O) x5 ~( b! P# ^
__time32_t CreationTime;
4 b/ |8 ^2 Y' o6 B* |, ]4 e* [9 N
char Desc[100]; //包描述
* t1 Q7 P7 J2 L! p
DWORD NumDirs; //目录数
1 P! _" r4 I% I; m) e" r3 t( E
} PackageHeader;
9 C1 W/ R# Q2 J0 I* H
if (PackageHeader.PackageVersion >=0x200)
# Y. w2 q0 J' X0 w4 ^3 H
DWORD DirOffset //目录偏移量
, b H- v5 D3 ]- ^+ I! Q3 ]
struct Dir{
) g2 C7 i# o/ `( `- D
BYTE NameLength;
0 m; D. e+ U3 S" W& }5 U9 t- k
char Name [NameLength]; //文件名
5 G d Z1 Q3 |! q) ?7 O
BYTE CD;
) P3 a( Z* Q2 J. y+ }
DWORD NumEntries;//文件数
6 x4 D, O6 }- q# g6 h8 r- _4 b6 B9 L
struct Entry{
' r6 b" j& q* k+ b4 b
BYTE NameLength;
) `8 n8 f6 ]! Q- F, }% i
char Name [NameLength];
, A, D! R& U0 F- t9 u. l! R- g
DWORD Offset; //文件位置
+ g! P, u* b5 F
DWORD Length;//文件大小
% G2 x- y% Y6 P# \; b" V
DWORD CompLength;//压缩大小
. p$ X# d4 J ^
DWORD Flags;
. e! k; F5 P ]% [: r& j
if (PackageHeader.PackageVersion >=0x200)
6 x! L/ x: R/ b, o. W
{ DWORD TimeDate1
8 C, i/ Y8 F) E$ w" W) s
DWORD TimeDate2 // not used
B2 [, l. `7 S, }0 r
}
; `9 F2 ^9 X8 C2 b' q, y) ~7 |5 h. |
} Entries[NumEntries];
( Z8 r1 o+ v {
} Dirs[NumDirs];
复制代码
解包;
# e: h+ b# G" g1 [+ F
可选解包工具 GOBREAD,UNPAKKE,Quickbms 脚本,引擎自带的专用解包器。
) }, V$ s& I2 A. }5 C6 Z
1 H1 O# D) R! h; P
打包:
3 G# ^9 x( L3 `, _7 X
可以不打包,打包工具可选UNPAKKE和引擎自带的工具。
! { _2 S' M! N! F' q) y& `. O
! h" r" n% {8 p% }& X0 B3 C" k: C
文本:
7 K. j3 W7 G. S4 Z& X
语言表格式如下:
6 w4 d% ~; h! s* L
SYSENG0001 Game settings
' v7 M+ C# T2 ?& v) `* L$ `
SYSENG0002 Display
5 E# F8 q+ J$ h9 _% _
SYSENG0003 Sound
* x- o& G! }9 a2 [; J
SYSENG0004 Use hardware acceleration
7 S& G2 b' K! g+ v0 Z' D' Y4 j
SYSENG0005 Display device:
$ n5 i) k7 o" g( c# c; o, U
SYSENG0006 Colors:
$ ~1 b0 Q4 L8 f; n
SYSENG0007 Run in window
3 m0 I; \, N; Z' `7 J0 d" k5 l \. h2 g
语言表可以互相引用
( m' d4 {! U2 J6 c
SYSENG0001 Game settings
* j, K9 O% J# T6 u* f
SYSENG0008 /SYSENG0001/
* g. \+ [$ [) M8 h( }
甚至能支持阿拉伯语等从右向左的语言,只要文本里加上这个标记就行
/ U8 U9 ^' ^. G. Y0 l
@right-to-left
* V$ x( r; m+ ~- u3 I3 C
语言表一般为String.xls,这是csv文件,而不是真正的xls格式,直接翻译即可,注意编码选择可选简体中文(GBK编码,非中文系统将无法显示),和utf8编码,注意如果文本编码有BOM将自动切换为UTF8格式。
) U( S- U* v' i& y: z
+ f8 x9 l8 V; w) i: T# A9 |7 F
字库:
8 I* |' v1 t, D
游戏支持两种字库,图片字库和ttf字库,注意只有ttf字库支持中文。
; i" X: N! ~, z f+ W3 t2 m& ~
字库都需要描述文件,因为图片字库不支持中文,所以此处略过,有需要请看官网。
/ F. N1 H* Q# @: q5 w; k
http://docs.dead-code.org/wme/inside_ui_fonts_bitmap.html
! A, S0 X+ U$ G8 k( [0 B
要注意的是ttf字库是不能打包的。
; G; D1 {5 L+ y) d5 S* Y7 h
TTF格式字库的描述文件:
3 o- Z8 W/ J1 }: V1 Z! P0 ^
TTFONT
2 X4 V6 O3 C4 {2 O
{
8 K7 r6 H5 n, w! H: s( J
SIZE = 12
/ I# j7 `0 i% Z+ k! [% w4 Q/ L; p
FACE = "Arial"
; w8 U0 ]# J* v$ k6 h8 Q
FILENAME = "fonts\arial.ttf"
" @% w) z/ p* h6 C
4 S2 v: i$ t# D. B/ D" ?7 x
BOLD = TRUE
4 c" _! ]" }# S2 m# w3 }
ITALIC = FALSE
* X9 g0 w& y+ F$ C/ u, a
UNDERLINE = FALSE
# Z9 p7 L# h. A! W" U: q
STRIKE = FALSE
e* M. `) d: M5 N+ f+ \
$ @5 k. g$ u& s7 V' k. `$ t
CHARSET = 1
w. F$ U/ U' i5 C7 E& x
+ J, m' B; o7 Y, l" c( Y
COLOR { 255, 0, 0 }
+ \9 I% E. W# [4 I7 i& w+ ^; w c
ALPHA = 255
3 B8 V; ], E Q: K
LAYER
1 v# |6 t Y" n3 F% G
{
+ l! s) }/ u1 L( F* c. Z
OFFSET_X = 1
2 _2 m+ n7 s) S6 i6 Z q
OFFSET_Y = 1
; G3 N p( J# x( ^7 K* x) c4 F
COLOR { 0, 0, 0 }
( y7 ~- U$ ?' J; d% E, H* T
ALPHA = 255
3 O: Z( P% Z9 v. K: h
}
7 K0 o1 a4 U6 l' G" _- X
' Z! T9 \+ q# X- W
LAYER
) ?/ O9 _7 B3 k6 z, R
{
! w6 R% D- |* H+ K& B y
OFFSET_X = -1
, T. q. K+ |, X. [) x# r/ i: _
OFFSET_Y = -1
6 {3 {" O' k& x) A+ R% }6 T- f
COLOR { 0, 0, 0 }
2 O: l: E- `, G& Q; B$ A: [
ALPHA = 255
3 p/ L H/ ?( x& y6 v F4 R g( o
}
5 F2 G1 r! P7 o3 {3 P: A
+ e& \9 k! q- h# z3 F7 s
LAYER
p* b+ o# Y+ h# l Z5 o( b
{
+ H F2 d& P3 K3 T0 ~: U
OFFSET_X = -1
* t' y8 R6 t. x7 {2 c
OFFSET_Y = 1
0 O' N+ V/ I6 @* o, B/ x
COLOR { 0, 0, 0 }
- E" R) C k7 @' \3 L* o s+ E
ALPHA = 255
3 r* M6 ^7 }) R; \4 z. k+ _9 [
}
( [$ Q+ \' ^- ?9 L6 f: K
9 |' s' l& N8 U" k& ^
LAYER
% @- V4 g% j) j& R! W$ p' D
{
) C; O4 W0 m; N- |7 e1 o* C& }+ a( E; l
OFFSET_X = 1
/ c& u& g9 P/ O4 p6 a+ k
OFFSET_Y = -1
) z" ]. |7 a9 }9 [ h3 ?2 B
COLOR { 0, 0, 0 }
% ]0 W" ?2 A7 g& n8 d0 E3 X \* K
ALPHA = 255
6 E6 A. _* _; O6 R
}
8 w8 }2 `) C' e8 G1 l
u% p5 }2 t( A
LAYER
2 f. y$ l |) j; Q
{
; c+ t7 u9 T! E+ k7 e& K9 ^
OFFSET_X = 0
3 L# u4 X4 a' |1 w3 V5 o1 R3 q
OFFSET_Y = 0
: E3 \6 F. E! j6 n
COLOR { 255, 0, 0 }
( `: y' ]# p5 Q2 E- ~
ALPHA = 255
1 Q/ y5 ]; u: Y, ^8 o
}
1 W) y' G% F w5 i9 s2 r: L1 v }
}
! P1 z8 r& y( Q8 h, L1 ]
各参数说明
- V' ~ B) a7 t q
• SIZE – 字库的大小,一般根据英文来选择。
. h. c0 e6 X: k( z* I( x
• FACE – 字库的名称,注意是显示名称,比如系统自带宋体SimSun 。建议不要写中文,容易出现问题。
3 i v, U! _/ i$ c7 ?! ?
• FILENAME – 字体文件名称,就是ttf的文件名,如果要直接使用系统自带字库可以留空。
2 q1 s0 e+ M/ O4 E$ Z0 f
• BOLD – 为TRUE则以粗体显示。
I/ h: U$ f; n6 w1 ?
• ITALIC -为TRUE则以斜体显示。
: Z X a c/ k
• UNDERLINE -为TRUE则显示下划线。
" s9 v3 H$ T( H7 y7 g% t
• STRIKE -为TRUE则显示删除线。
2 W+ T- f7 N/ H
• CHARSET – 字符集,简体中文要选6,繁体要选4.
5 S+ y+ d2 m! {' Y% Q+ Q- @" q
• COLOR – 文字颜色(RGB)显示
+ [; V+ F) N- x7 k8 t8 n# T
• ALPHA – 透明度, (0 到 255),一般选255.
( [- n5 T1 C5 c& Y- p# J1 r1 }
注意这个定义文件下面的Layer就是按层绘制,可以实现模拟的描边效果,就是左移,右移,上移,下移1像素各绘制一次,颜色不同。如果不需要描边效果只需要1曾就够了。
) m# e1 C+ \; L! X
- D# z. W. Y H$ l6 P7 i9 I* q3 R
以下是字符集,注意和windows的GDI中LOGFONT的值是一样的,游戏本身也是用GDI处理文本绘制的。
, H2 ?. l1 `, ?' y) G
详细内容请看MSDN
: ]6 i% R0 f5 j2 i- ?+ |5 W
http://msdn.microsoft.com/en-us/library/windows/desktop/dd145037
(v=vs.85).aspx
( i- u1 Q e7 J5 _& ?0 t0 T; J% S! V
WME 字符集编号 解释
+ B' Z; b5 J! L6 N, j* `
0 ANSI 字符集(注意这是英文字符集)
3 c3 D% ?# A& a+ R3 k: ^8 F! B
1 默认字符集,根据系统语言变化。
5 [% t" S: J- L. j% t+ }. R5 o
2 OEM 字符集,根据系统变化。
( |- P9 I! H6 w6 h; d r
3 波罗的海。
- \% I2 v8 P) z/ \/ v5 O8 C
4 繁体中文。
0 B: e( `; ^, _" G
5 中欧及东欧语言。
( k6 }9 l& H; j8 e. M6 {5 k
6 简体中文。
" r t2 F; I6 t/ f* ~
7 希腊语。
4 H9 T/ F" ^. a" E6 [2 q: q+ c( k
8 韩语(Wansung)。
" Q9 I0 T: c$ o
9 Mac字符。
8 t: H- h' E0 u- V% t
10 西里尔字符(俄文)。
0 ]4 j1 o8 x, Y; W& @
11 日文 shift-jis 字符。
6 L. i0 {3 G& j, X0 k
12 标准符号集。
6 q, y) p+ \) J+ p" e/ D
13 土耳其语。
5 |+ Q V; N( y7 _. y
14 越南语。
. [% e) V/ f1 N( N) Y. ~; j
15 韩语(Johab) 。
4 W: ]) D; u1 Q2 w. [* i
16 阿拉伯语。
" H: z1 X5 I" |
17 希伯来语。
, R7 p, T* l! U' ~* x0 c3 N+ Z
18 泰语。
% l U- l5 U+ ~5 `- j7 I
3 h p7 e# n- G8 g+ t3 b; B$ [5 ~
图片:
T$ M8 O. W) G, D: Y& X
本游戏图片格式为PNG,直接处理即可。
4 N, v3 a- n8 u
! I% V& g! E; z6 e7 i
脚本:
$ C" g \9 t8 B2 B7 {+ V- J
一般不需修改,除非遇到文本保存在脚本中。
* e1 J0 v' Y4 c# G
: y$ R! S" ]) z4 ]
脚本格式分析(不含虚拟机分析):
DWORD magic; //DEADC0DE
+ M% k) O* ]) f! W r$ [7 \
DWORD version; //当前版本为0102
- \& S |% a9 W0 g, O
DWORD code_start ;//代码地址
# }( ^: `$ Z& P0 G" b2 c+ t4 e( }
DWORD function_table_start; //函数表地址
I5 z! Z( S) h, O
DWORD string_table_start; //字符串表地址,修改字符串表后需要更新后面的偏移
6 I, `9 I0 W5 H
DWORD event_table_start; //函数表地址
I! _7 W1 z, @- Y
if (verson >=0x0101)
2 z# i0 t t, }0 {' g' _/ @! Z
DWORD dll_table_start;
p* o$ l$ n7 O S: }
if (verson >=0x0102)
3 x+ z8 q" e: ]) z9 |& f, @( t1 J
DWORD method_table_start;
$ r3 G L/ C- v1 p, y
string source_name; //0结尾字符串
2 ~, @" d3 h$ Y0 [5 ^$ f( H* R" p
byte[] code; //代码的字节码
8 a* g# p; A+ R9 D& {& Q7 X
6 w' X/ ?, v# g0 P
struct {
* Y* }# S+ T! m6 Q
int num;
7 B1 A1 _* q8 |% S+ M4 F, a
struct {
$ n2 l3 } ?% T, g0 M
int pos;
" m6 ~- S7 R ]! |) `( ~
string name;
4 M+ [: m5 W4 O
} function[num];
3 m9 n$ _) y: i l+ o: P- }
} function_table ;
! S0 C: }6 D: |- z( J
struct {
2 _( G5 T# b1 P* l
int num;
: T. j" K9 M* K9 T! ~8 t+ b) M# G
struct {
. A" ~+ x) [8 O
int id;
# Y! Y1 x6 g6 Z' a3 S
string name;
# U) V0 t- x" W( `
} string [num];
. g( f3 o. S. e6 K0 `5 r- d& \! l
} string_table;
1 I. n' E4 [. W$ n$ H* P
struct {
- M. {9 w! P! W! X( k! a7 L
int num;
0 u, h; l3 b# s; ~/ X8 k/ k
struct {
: Q0 r3 v' Z" p8 k
int id;
0 O4 o. t7 |+ v) l% J& m. e
string name;
5 o' F' e" O U) U
} event [num];
3 h, Y4 }# @: _0 X
1 }1 z" v p ^( ]1 c: W' [3 a0 Z4 @
} event_table;
6 n; R( j' P8 n; A7 v- g
if (version >=0x0101)
( l4 q R* o& m/ W
struct {
7 b, u* K* P# F: j
int num;
, j5 W7 M, F6 V9 p% \ F
struct {
* P2 c7 v) u1 ]
string dll;
2 k( T! g# }. i4 ^/ P2 ~
string name;
% o+ ~# m3 i+ ]% W: {, Q
int call;
3 Y7 S1 m# Q1 t# y# |" }
int returns;
) N8 T3 c( R7 d+ J j6 S
int num_params;
4 x* t* n( q/ u A( E" O: l/ _
int params[num_params];
: F; Q% x) g }* K% ^9 [% S j! F2 C
} dll [num];
: B% l( h/ f1 D7 m) e1 f7 v. W' T6 q
1 a: r/ r& ?' Y; X0 I
} dll_table;
+ {$ P8 f \: j
if (version >=0x0102)
# b0 x3 Q8 r, g& M
struct {
# G" i/ F2 d4 z
int num;
! X" D1 Q* }4 X. O+ D! }
struct {
+ y& M: \ E9 m+ |3 n+ ?$ \; j
int pos;
+ A- j% m% c+ u5 o9 o
string name;
- @" |7 P$ U' r& z7 {
} method [num];
0 O# _" \8 H) w% R
} method table;
0 Z) c) Z3 P" _2 J' D8 l: x
( v- I7 B5 p/ V* l% |$ o" d
复制代码
音频:
7 N. j6 }7 m8 R4 v& d6 t/ _+ q
游戏音频格式是Ogg格式,Vorbis编码。
7 M0 G# z8 z% Y* H* \
. `& X( M- K% `. ?4 k/ ]
视频:
$ E( h: [8 G$ m6 B! S! R1 C
游戏视频是ogv格式,theora编码。
9 ]0 N: a6 {3 \" k; D! R4 M) g
. t4 i* ~' `7 p3 r3 G% Z! L! H
汉化流程:
# {% B. T& |- S. e4 ~" a7 I0 |" h m
1. 如果有dcp包,先解包
2 T; E' S- H6 ~% e i1 Q
2. 翻译字符串表
* C% ]7 f! n) z# K* M0 {
3. 找到中文ttf字库放入游戏目录,并修改定义文件为ttf的定义,参数根据需要调整
4 P- M8 ^0 I- L* [/ W
4. 修改图片
# R3 |, s6 U# Q% i
5. 改过的文件放到目录,或者打包
6 ?) n8 h6 F- y, h5 l6 w
6. 测试
4 ^9 Z3 A/ j: X- R; o T
6 G* M, o* q6 a$ M$ V+ \
注意:
$ ?) I& @) a% J
换行问题,经测试ansi格式下换行有bug,中文超出行数会出现乱码,utf-8也会出现一些问题,如unicode码低位为00时会无法显示,可以采用自定义编码方法解决,需修改文本编码和ttf中的映射表,或修改引擎解决,较为麻烦。
; c- l; q, N) T/ i6 e% F2 J
作者:
XYZ
时间:
2014-3-22 22:20
感谢分享!沙发支持!
作者:
davidgbl
时间:
2014-3-22 23:13
本帖最后由 davidgbl 于 2014-3-22 23:37 编辑
& L2 q. Q: |6 ?8 t1 W
3 V* T# T$ g$ O) ~
太好了 好好学习学习。avg用这个引擎开发的游戏很多。
1 g9 x1 F2 |3 S8 U
不过遇到过一些问题,主要是一些动词在汉化文本中没有。比用use XXX with XXX
8 ^- c! U0 o; t* L* d4 P3 L$ @
其中的XXX在翻译文本中是有的,但那些动词不知道藏在什么地方了。始终没有找到。
+ K; `* ~" b/ l9 B/ U4 Z
比如之前汉化的:409号黑夜童话,有这个问题
. y" m6 I# T$ T& f. L0 m9 s# |+ a( T( E
(另外328号埃德娜&哈维:逃离疯人院也有类似问题,但我不记得是不是wme的游戏了,我几个应该是,老啦,呵呵呵)。
2 g. a g7 i, A6 n4 W" L+ ?# ?
还有一点可能需要注意:
" ~: o% l0 n' n$ P4 u4 q
就是使用ttf的字库要用ttf字库的内部名称,尤其是中文的ttf字库。
& d' ]7 k! t% s0 b1 R7 u; y; }
不能简单用黑体.ttf啥的,最好用字库查看软件看一下字库的内部名称和字库名是否一致。
作者:
巴厘岛之夏
时间:
2014-3-22 23:23
牛贴必顶,强人必赞
作者:
setsail615
时间:
2014-3-22 23:27
本帖最后由 setsail615 于 2014-3-22 23:35 编辑
( s+ z9 A. R7 [" n1 \6 I; f( E
8 T" {* a9 X2 G' X+ _
不明觉厉啊~膜拜楼主~~
3 x: h, x5 E/ m1 t2 z
PS 友谊哥,328好像不是wme的,我也不太清楚……
作者:
seasonmonster
时间:
2014-3-22 23:31
嗯,很详细,值得学习
作者:
myq495
时间:
2014-3-23 09:54
支持楼主的处女贴
作者:
leahlee
时间:
2014-3-23 18:12
不明觉厉。。。:D
作者:
欧兰妮
时间:
2014-3-24 23:47
感谢楼主秉承着热爱汉化之心所做的技术分享~
作者:
慕言思语
时间:
2014-3-24 23:58
突然感受到了大家对汉化技术的热情,顶weiyun。
作者:
zxh17175
时间:
2014-3-25 01:26
本帖最后由 zxh17175 于 2014-3-25 01:27 编辑
2 s# r2 M' Z8 v) ^/ \, t
8 V, Z9 t4 C" f4 m9 O
默默撸过,既然鱼总发帖了,我就不敢献丑了。
0 Y6 \" Z6 E5 R- S1 T; a
说说改字库就好了,修改TTF fontforge非常强大,不过好像windows下面有点不太稳定
( B2 z" O% E: z& Q5 e
用fontforge打开字体之后有个脚本功能,
8 E1 B5 k2 Z# g+ c1 W, [0 Y
打开一个脚本文件,内容如下
Select(0u4e00)
4 O8 X4 a. S1 k2 V
Copy()
$ w$ O6 K; J% U3 M8 ~* C0 b
Select(0u53b7)
2 k9 \/ p& v* Z/ ~4 P6 f& `
Paste()
; t. O& M( s8 Q
! L. a8 b: u( ` k
Select(0u5200)
; R4 F+ X. B& G$ ~9 }9 u
Copy()
, U$ f9 H z: {+ K/ P- k
Select(0u53b8)
) s" Z4 c& {, @5 X& l
Paste()
4 Z8 G( u! x" @2 M7 S/ i
" Q s9 O: B, n8 S* ^3 Z7 G0 \
Generate($filename + "_2.ttf")
复制代码
0u4e00就是低位为00的Unicode编码,0u53b7随便找的ttf里面的偏僻字,并且游戏文本也没有出现过的字符
7 d% T* l/ ]9 H5 ?
执行这段脚本之后0u53b7实际显示就是0u4e00的字形,我这里就示范了两个。
2 S0 l( p, Q- Y$ _
然后生成一个字体文件名_2.ttf的文件
+ N. S9 g3 x, C
批量处理TTF字库还算方便
) a k. H* v- k
如果系统已经存在游戏的TTF字库,游戏默认会优先调用系统字库。所以还需要把修改好的TTF文件的内部名称(也就是字符脚本调用的FACE)改得尽量复杂和唯一。
X' l f( o: R" ]1 J. F
最后把游戏的文本替换成相应的字符就好。
! L+ O0 Q+ h% Q% R5 d: `
作者:
dengken
时间:
2015-1-27 13:27
感谢分享,下来研究研究
欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://www.chinaavg.com/)
Powered by Discuz! X3.2