设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 9628|回复: 14
打印 上一主题 下一主题

[随意闲聊] 眩晕RGSS3初级教程

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
616 小时
注册时间
2010-10-29
帖子
463
跳转到指定楼层
发表于 2012-11-26 02:21:49 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
首先,我想解释一下标题。
这个教程取名字叫 眩晕 的原因是因为鄙人第一次写脚本教程,所以很多人看了这个估计都会晕。
(现在还是没有想好如何给大家解释加引号的问题。。。)

这个不是F1的解说,所以说比较混乱。
但鄙人还是认为这是一个不错的教程,请大家好好欣赏吧!


很抱歉,因为平板对使用代码不方便,于是只好普通方法了。。。




既然大家是来学习RGSS3的,那么,你知道RSGG3是什么吗?
RGSS3,就是Ruby Game Scripting System 3 的简称。是Ruby的拓展库。

那么Ruby 是什么?
如果你去英文词典查:“Ruby”的话,你会查出:“红宝石”这个翻译?那么它到底是什么?

Ruby——是由20世纪90年代由日本人松本行弘创造的面向对象程序语言。主要用于中,小型工程的开发,在中小型工程中开发比更早出现的Java更加节省时间,和成本。于是Enterbrain公司才决定用这种简洁,高效的语言创造出RGSS。

那么,什么是面向对象?
面向对象,就是相对于面向过程的一种抽象方法。以后我们会详细探讨,这里先给出基础的解释。
在基础的解释之前,你要先明白以下2个说法:
1:如果采用原理是现实生活中的原理,则游戏会超级仿真。
很好理解,如果你做了个游戏。将所有学科的原理都加上。那么,恭喜你,你不用设置数据库了,这个游戏会自动产生生命,道具,敌人。。。这将会是超级自由游戏。
2:脚本方式越接近人类语言,脚本越容易理解。
你有没有设想过,就给电脑输入中文,之后游戏脚本就制造出来了呢?那么我很抱歉的告诉你,不行。因为中文等语言有多义词等特殊情况,所以不行。
但是我们最好做到接近人类语言,之后你就会理解了。

你有没有想过自己创造一个事件指令,比如说,叫做:显示提示信息的一个事件?
现在,假设RMVA的事件里面有一个叫创建窗口的事件,那么你要制作一个任务公告板系统,那么,你会怎么做呢?
创建窗口,宽544,高416。
显示文字,“任务公告板”,32像素,X坐标:2;Y坐标:2,颜色:黑,半透明:False
显示文字,“操作说明”,32像素,X坐标:2;Y坐标:50,颜色:蓝,半透明:False
显示选项,“查看任务”、“已经解决”、“离开”、宽:XX,高:XX,X:XXX,Y:XXX,横排,栏数:XXX⋯⋯
条件分歧:如果选择为1
则:⋯⋯
如果选项为2:
则:⋯⋯

于是你一点点的重复同样的步骤来创建同样大小,同样颜色,同样透明度,同样格式的东西⋯⋯

你多么希望有一个叫做:创建任务用文字,创建任务用选项的事件啊!
于是你想到了面向对象:
那么,我来弄一个自己的事件⋯⋯

定义 显示任务用文字,需要输入以下参数:文字,X坐标,Y坐标
显示文字(这是一个事件指令):文字(这个等于上面的参数:文字),32像素,X坐标:2;Y坐标:2,颜色:黑,半透明:False
结束定义

于是,你又搞了一个新的事件

显示任务用文字:“任务公告版”,2,2

这个跟之前的:
显示文字,“任务公告板”,32像素,X坐标:2;Y坐标:2,颜色:黑,半透明:False
达到的效果是一样的
所以,这就是面向对象的一个应用。如果你把事件全部转换为脚本之后,就是一个新的“方法”哦!

还有一个更好理解的应用
事件党:
我要创造一个纯事件的战斗。
那么你会怎么弄怪物的属性值呢?
一般来讲,我们应该弄几个变量来设定为怪物的属性
比如说:怪物1的hp,怪物1的atk等等等
怪物2的hp,怪物2atk
之后还有各个角色的属性⋯⋯
之后就是逻辑判断流程⋯⋯

等一等,你是怎么将在逻辑上新建一个怪物的?
你拷贝了几个变量⋯⋯
那么你怎么读取怪物的属性?
你选择了 变量XX号
难道不应该是这样思考吗?新建一个怪物只是新建了一个空的怪物,之后我修改怪物:怪物No1:Slime,攻击力:12,防御力:8⋯⋯
之后读取方式是:怪物1的攻击力,怪物2的名字 等等
难道第二种方法不是更好理解吗?

别看你现在搞得懂变量代表着什么,你进行超复杂的操作时你就得一遍一遍地查看变量的备注,这样比记住:怪物1的攻击力这种变量名称难多了。


言归正传:
在20世纪80年代末,人们发现了一些问题。传统的语言无法自定义一个方法来显示内容,以BASIC举例。
看这段代码:
PRINT "Hello World!"

这样,运行时:屏幕上会出现:
Hello World!

但是不太美观,不是吗?于是就有了脑残的方法。
PRINT "----------------------"
PRINT "    Hello World!"
PRINT "----------------------"
这样,屏幕上就会出现:
----------------------
    Hello World!
----------------------

看起来好一些,不是吗?
于是就有脑残的程序员,为了输出信息,疯狂拷贝粘贴这段代码,这样脚本长不说,出现错误或者要更改需要改太多地方了。于是程序员便开始思考一个更高效的方法:
这个代码: PRINT 不就是需要1个参数吗?
按照数学函数观点来讲就是:
PRINT(x),而我们为什么不可以定义一个函数叫做:CUS_PRINT(x)呢?于是程序员修改了BASIC语言函数库,定义了CUS_PRINT这种方法
而CUS_PRINT(x)就是
PRINT "----------------------"
PRINT x
PRINT "----------------------"

所以:CUS_PRINT("     Hello World!")就等于:
PRINT "----------------------"
PRINT "    Hello World!"
PRINT "----------------------"

运行结果就是:
----------------------
    Hello World!
----------------------

简洁多了,不是吗?
之后的语言不希望每个程序员都得去改这个脚本内核,于是给了大家自己定义的方便⋯⋯这个以后再讲。


那么,开始进入正题。

第一课:从显示文章到消息框。
RM你用的第一个事件是什么?你最常用的事件是什么?基本上必不可少的事件是什么?
那就是:显示文章

显示文章提供了基础的消息需要。

那么我们学脚本,当然有用脚本实现事件的方法,但是,我们要 高~级~ 一点啊!
那么,我们就用最经典的hello, world 来示范吧!
什么是hello, world?
字面上:你好,世界
实际上:这个是每个编程语言必须走过的一步,它在编程历史上的地位无法改变。一切语言,一切主流教程的第一个练习:
你好,世界!

高级的方法⋯⋯
我们这次要用一个叫做 msgbox 的指令来完成任务,

介绍:msgbox
是message box (消息框)的简写,总共有1个常用参数(其他的我不知道有没有,VB是有的。大概也不会用到),而参数都是通过括号“()”[注意,全部都是英文状态下的括号!]
而且,你有没有遇到过这种情况:

A说:什么?
B说:A说了什么?
C说:什么 (他的意思是,A说了2个字:什,么)
B说:我问:A说了什么?
C说:他说了2个字:什,么
B说:哦,我明白了⋯⋯

那么我们为了防止歧义,对于所有不希望代指的东西,比如说刚才提到的”什么“用英文状态下的引号括住。

大家可以看一下之前的BASIC脚本,中间的文本全部用引号扩起来了的⋯⋯

那么,打开脚本编辑器:
新建(Insert)一个脚本(在main上面),输入以下内容
msgbox ("hello, world")
之后保存,测试。之后看到对话框内容:
hello, world

恭喜你,你踏出了走向RGSS3高手的第一步!
——————————————————————————————————————————
如果大家有兴趣,可以去 Try Ruby那里学一下Ruby语法哦!










第二课:数据类型 & 变量 &注释
1:数据类型
数据类型,就是你看到的一切东西的类型,下面介绍主要的数据类型
整数     Integer   例子: 3,82229993
字符串   String   例子: 你好 以及一切各种语言组成的句子
小数(可以细分) 例子: 3.14            70.00
布林    Boolean   例子:true         false

注意:
字符串类型在一般使用时需要用英文引号括住。
像 70.00 这样的数,也被归类为 小数 类型
true false 在做为布林类型时 不要 加引号,否则将会被视为字符串,但我们一般说true,false默认是布林型
每种类型都有自己的范围,但一般使用时都不会超出这个范围。

那么,这个东西有什么用?

你得先明白一点:电脑是很笨的
电脑看见你输入  250, 他不知道你是想输入一个叫250的数字还是一个骂别人250的话。
所以,你得告诉电脑让他怎么处理你的数据。。。

像我们用的事件中的变量全都是 整数类型 的数据,这也就是为什么你用变量计算 10÷3 得到结果为 3 的原因

练习:请将以下数据归类!
8377373 "再见" true "60" 34.75 true




2:变量
变量(variable)是区别于常量的一种量,常量就是~~~188387 5 34.272766337848 等等。。。
而变量就是 x。。。

变量的变就在于你可以随时更改他的值。
1这个数字你无论如何都改变不了它所代表的值,但是-   x     你想取哪个值就取哪个值。。。

在rgss3中,变量的定义方法是这样的

变量名称 = 值

例子:
x = 3
name = "shenyuwoton"
@part = true
@@hello = "false"
$pi = 3.1415926


看起来还算简单,不是吗?
接下来解释一下这2个部分的意义所在
变量名称:
只是一个名字,自己随便起名。(最好好记。。)(别太奇怪,否则会出错。。)
如果前面什么都不加,那就是一般的变量。
如果前面加 美元符号,那么就是全局变量(说白了就是你在哪里都可以读取到的变量。)
其他的我先不解释(有关系到“类”)

值:
必须按照数据格式即可。



变量的读取:
很简单,比如说我已经制造了一个叫 x 的变量,在你需要引用的地方输入 x 即可!
举例;
msgbox (x)      #(这是一个注释,不会运行的哦! )  弹出对话框:显示变量 x

实验用脚本:
x = 3
msgbox (x)    #没有加引号,代指 x 这个变量,弹出窗口 显示内容:3
msgbox ("x")  #加了引号,代指这个字符串,弹出窗口 显示内容:x


3:注释
大家肯定已经看到了,我之前用了警号 #,用作注释,接下来简单介绍一下注释。
注释,就是为了方便其他编辑者或者将来的自己更好地理解某一段脚本是干什么用的不会被执行的一行或者多行文字。
单行注释:
格式:
# 这里畅所欲言!
msgbox ("这里的内容还是要被执行的。。。")

多行注释
格式:
=begin
msgbox ("hello")
这里是多行注释!!
=end
msgbox ("这里不是多行注释。。。")


好了,今天的就讲到这里!

——------------
ps 如果觉得rgss3对于自己太难的话,可以去试一试Scratch哦!
rgss3 第三课:
数组

1:数组
数组就是一组数,也就是一串变量。一个基本的数组就象这样:
array = [1,3,­5,7,9]
也就是说,数组应当包括两部分
名称 = 内容

例子:
$names = ["Mik­e","Jimmy"­]
mixed = ["hel­lo",1.23,3­7,true]

从上面的例子我们可以看出,数组的名称部分几乎与变量是一样的。其它部分按照以下格式书写:
name = [元素1,元素2,元素3­] #可以一直到 元素 n
而这其中的元素可以是任意类型的数据(包括变量,甚至数组!)

数组元素的获取:
好了,现在我们已经定义了一个数组
array = [1,3,­5,7,9]

那么我们怎么获取里面的数值呢?
试一下这段代码:
msgbox (arra­y[0]) #弹出array这个数组的第一个元素 =》 1

也就是说,如果有一个数组叫做 name的话,获取它第n个元素的表达式是
name[n-1]

同时你还可以用这个方法重新改变数组中某一元素的值。
array[1]=2
msgbox array­ #弹出对话框 [1, 2, 5, 7, 9]

还有些比较有趣的东西。。。
如果:
array[10]=­20 #那么这个数组会怎么样那?
msgbox array­ #试一试吧!





结果:弹出对话框 :
[1, 2, 5, 7, 9, nil, nil, nil, nil, nil, 20] #nil就是 空 的意思哦
很有趣吧。。。。。


有关数组的其他东西
获取数组长度:
array.leng­th

二维数组
如果你定义一个数组像这样:
hello = [[1,2­,3],[65,92­,1000]]
那么你就定义了一个二维数组
获取方法:
hello[1][2­] # 1000

同理,你还可以通过这种方法创建三维,乃至n维数组。。。

今天就到这里!
——--------------
没想到 yanfly的技能系统与XAS冲突呢,好好修改吧!


评分

参与人数 1星屑 +60 收起 理由
疯狂异形 + 60 精品文章

查看全部评分

我命令你给我点下面的东西!

LBQ Works

Lv1.梦旅人

梦石
0
星屑
50
在线时间
47 小时
注册时间
2013-2-1
帖子
108
14
发表于 2013-2-17 15:26:19 | 只看该作者
本帖最后由 神秘来客3 于 2013-2-17 15:40 编辑

我可以帮楼主讲讲吗?
随机数:通过rand(x),我们可以写出随机数。
比如rand(101),就是0~100里的任意数字。
比如:
  1. x = rand(101)
  2. if x < 60 #前面讲过那个case,这里忘用case了……
  3.   msgbox "你等死吧"
  4. elsif x == 60
  5.   msgbox "正好及格"
  6. elsif x <= 70 and x >= 61
  7.   msgbox "考得很差"
  8. elsif x <= 80 and x >= 71
  9.   msgbox "考得较差"
  10. elsif x <= 85 and x >= 81
  11.   msgbox "考得还行"
  12. elsif x <= 89 and x >= 86
  13.   msgbox "考上良了"
  14. elsif x <= 100 and x >= 90
  15.   msgbox "考上优了"
  16. else
  17.   msgbox "考了满分"
  18. end
复制代码
呃。。。“你等死吧”的出现几率超高了。。。
话说有人能满分么?
我刷了N次最高也就“考上优了”
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
616 小时
注册时间
2010-10-29
帖子
463
13
 楼主| 发表于 2012-11-28 13:09:11 | 只看该作者
数组那些事

数组是一个十分重要的东西,专门划出一点时间讲解一下:
join方法:
[1,2,3].jo­in
#=> "123"

[1,2,3].jo­in("_")
#=> "1_2_3"

join方法就是组合数组中的每一个元素,还可以添加中间的字符。




加法
[1,2,3]+[4­,5,6]
#=> [1, 2, 3, 4, 5, 6]

乘法
[1,2,3]*4
#=> [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]

减法
[1,2,3,4,5­]-[2,4,5]
#=> [1, 3]


include?方法:
["a","b","­c"].includ­e?("a")
#=> true
说白了,就是检验数组内是否包含一个元素。

reverse方法:
array = [1,2,­"hello",ni­l]
#=> [1, 2, "hello", nil]
array.reve­rse
#=> [nil, "hello", 2, 1]
就是将顺序全部反转。

sort,排序方法
[1,2,7366,­245,-12,0]­.sort
#=> [-12, 0, 1, 2, 245, 7366]
值得注意的是,如果你让这个方法排序一个字符串+数字或者布林的话,那么就会悲剧的出错了。。。

compact方法:
[1,nil,234­,nil,nil,"­hello"].co­mpact
#=> [1, 234, "hello"]
这个方法会自动消除一切nil,空。

其他:
a = [1,2,­3,5,7]
#=> [1, 2, 3, 5, 7]
a[1]
#=> 2
a[0..2]    #这是一个范围
#=> [1, 2, 3]
a[1,4]
#=> [2, 3, 5, 7]
我命令你给我点下面的东西!

LBQ Works
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
616 小时
注册时间
2010-10-29
帖子
463
12
 楼主| 发表于 2012-11-27 12:05:34 | 只看该作者
今天我给大家赔罪了。。。
为了防止再次出现胡说的错误,今天我特地查了相关文档,这里我说的保证有效!
if, unless,case 讲解

x=123
if x > 1000
   msgbox "x是一个大于1000的数"
elsif x <= 300 and x!=123
   msgbox "x是一个小于等于300的数,并且还不等于123"
else
   msgbox "x不符合以上所有条件"
end


这里可以把叹号简单的理解为一般的不,!=,就是不等于,当然,比这个要复杂。。。


这个地方讲解具有ruby特色的unless的用法
x=2872638282
unless x>8283772
   msgbox "x比这么大的数字等于或者小,很正常"
else
  msgbox "这个数字不科学。。。"
end


这个是有关好使的case的
score =  85
case score
when 0 .. 60
    msgbox "你等死吧。。。"
when 61 .. 70
    msgbox "不怎么样"
when 71 .. 80
    msgbox "仍须努力"
when 81 .. 100
    msgbox "考的不错"
else
    msgbox "这个,分数。。。不科学。。"
end

其实,个人认为,假如就对游戏而言的话,case是最好使得。因为条件分歧可以干if和unless,而如果你用条件分歧狂搞case的话也不是办法,case搞一个测定小游戏分数的还是挺好使的。
我命令你给我点下面的东西!

LBQ Works
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv2.观梦者 (禁止发言)

梦石
0
星屑
653
在线时间
3774 小时
注册时间
2011-2-26
帖子
1839

开拓者

11
发表于 2012-11-27 10:26:03 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1205
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

10
发表于 2012-11-27 10:12:34 | 只看该作者
896409879 发表于 2012-11-27 09:02
好吧,这次用的电脑⋯⋯

大补充日

悬崖勒马兮,勒马兮!

^ 在Ruby中是异或,而不是乘方运算。乘方运算是 ** ,即两个连写的乘号。
  1. msgbox 2^2 #=> 0
  2. msgbox 2**2 #=> 4
复制代码
Try before you publish!

点评

Thank you!  发表于 2012-11-27 11:24

See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
616 小时
注册时间
2010-10-29
帖子
463
9
 楼主| 发表于 2012-11-27 09:02:57 | 只看该作者
本帖最后由 896409879 于 2012-11-26 21:33 编辑

好吧,这次用的电脑⋯⋯

十分感谢 DK大,与晴兰大的错误指出。现在错误是修正了。
不过,真是奇怪,tryruby为什么支持else if。。。难道是我打错了?

大补充日
1:运算符的补充
很抱歉呢,忘了介绍我们的
**
同学!

**乘方号
x**y 就是 x的y次方的意思。
RUBY 代码复制
  1. msgbox (2**3)     # => 8


当然拉,我们这里没有:开根号
因为 开 x 的 n 次跟就是 x的1/n次方

练习用脚本:
RUBY 代码复制
  1. msgbox (5**0.5-1)/2     # => 真的是黄金比乎?自己试试

这个,大家可以自己思考一下原因,到时候会讲解的⋯⋯

2:条件控制
这个,就是相当于我们事件里面的 条件分歧

if 判别式
内容
end

这个就是最基本的 if 脚本

举例:
RUBY 代码复制
  1. if 5>3
  2. msgbox ("5>3哦")
  3. end


最终结果:当然是:5>3!

RUBY 代码复制
  1. if 5>3
  2. msgbox "hell­o!"
  3. elsif 3<5          #如果上面哪个不成立,判断 3<5?
  4. msgbox "Ni Hao"
  5. end
  6. end


unless就是:如果XXX不成立,那么⋯⋯
这个可以参考楼上的人⋯⋯
我命令你给我点下面的东西!

LBQ Works
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
453
在线时间
343 小时
注册时间
2012-8-9
帖子
118
8
发表于 2012-11-26 13:41:58 | 只看该作者
楼主你的教程还不错
但是排版有点糟糕= =看上去有[一坨文本]的感觉
希望改一下
hello, world

有事情邮件联系 shuenhoy#gmail.com(#换成@)
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

八宝粥的基叔

梦石
0
星屑
4719
在线时间
5242 小时
注册时间
2009-4-29
帖子
14318

贵宾

7
发表于 2012-11-26 13:19:57 | 只看该作者
896409879 发表于 2012-11-26 10:03
我自己转载我自己的东西不行吗。。。。。。。。。
不过还以为贴吧没人去呢。。。
不过,十分感谢。

LZ这些内容是人性化的讲解,通俗易懂,相当于小学英语教科书,是新手们的福音。
F1是工具书,内含各种函数的用法,我们一定不可能记得这所有的函数,所以F1是供查阅用的,相当于英汉词典。
我们大家虽然实在是受不了F1,但F1绝对是有极高的、不可替代的价值。
最后不要忘记说一句:“嗷呜~喵~”

评分

参与人数 1星屑 +12 收起 理由
satgo1546 + 12 嗷呜喵

查看全部评分

《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
1
星屑
2078
在线时间
920 小时
注册时间
2012-10-18
帖子
428

开拓者

6
发表于 2012-11-26 12:23:30 | 只看该作者
一直都没怎么注意数据类型有多少种,这下学到了,
而且向来都把数组和哈希表当作拥有无限抽屉的柜子来理解,
“每次写n堆数组最后复杂到自爆流派”跳过(把跳过当滚过理解就行了- -)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
616 小时
注册时间
2010-10-29
帖子
463
5
 楼主| 发表于 2012-11-26 11:57:47 | 只看该作者
运算符神马的楼上说的比较清楚。这里补充一下。。。(偷懒)
其实ruby的运算符跟java差不多的。只有一点区别。
运算符:
= 等号,赋值符号,不代表等于。假如看了楼上的讲解之后用这道题来训练一下
请听题:
x = 8
x = x+2
x = x*2
msgbox x

好吧,那么弹出的对话框显示内容是几?
自己先算。。。








不要偷看答案



答案:20
测试脚本,我们人就应该把流程全部过一遍。这个在debug时也很有用的。。。。

于是:我们自己充当一回电脑吧!

第一行:好,内存里 x 就是 8 了!
第二行:嗯,给x赋值成原来的x+2,现在x是10了。
第三行:现在x又是原来的2倍了。。。。
所以------20!

其他运算符规则介绍

% = 取余     13%3 = 1
x+=1 这个。。。 x+=b 就是 x = x+ b
注意:x++在ruby里是不行的!(x++就是 x+=1)


现在我们进入新的章节!(哈希表以后再讲,必须要讲一点rgss内建函数了,否则太无聊了)

首先,我们先要明白:我们之前学的90%都是ruby(msgbox貌似不完全。。。)
接下来,我们要讲rgss专属的了!
我们先来学习最简单的!

变量:(事件里的)
变量实际上来讲就是数组(所以才要编号化管理。。。)
$game_variables[n] = x

这个就是修改方法,n就是变量编号(不用处理。。),x就是值(不要试图乱给这个东西搞成字符串神马的,有几率死得很惨。。。)

前面的美元记号,就是说明这个是一个全局数组。在任何地方都可以读取到。

msgbox $game_variables[1]              #弹出一号变量的值
所以,现在我们已经学会了最简单的变量读取。


今天就码字,码到这里。。。
我命令你给我点下面的东西!

LBQ Works
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-1-6 14:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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