Project1

标题: 【XP】脚本教程 [打印本页]

作者: 天地有正气    时间: 2014-3-21 21:07
标题: 【XP】脚本教程
本帖最后由 天地有正气 于 2014-3-22 16:02 编辑

「前言」

之前写过不少脚本教程了……积累了不少的经验,RGSS实践脚本教程停止编写的原因是当时有一段时间的写作态度很不认真,甚至都没有测试过。

这次的脚本教程我已经酝酿了很久了,希望可以真正帮到大家!

目录
1.        基础入门篇
2.        自主修改篇
3.        入门实践篇
4.        脚本解析篇
5.        附录

作者: 天地有正气    时间: 2014-3-21 21:22
本帖最后由 天地有正气 于 2014-3-22 16:01 编辑

一 基础入门篇
1.1 RGSS是什么?
RGSS是基于Ruby的语言。Ruby语言是一种面向对象编程语言,可以编写在传统编程语言中几乎不可想象的语法。在这个语言中,几乎一切的东西都是对象。
由于直接使用Ruby会加大脚本的难度,因此对Ruby脚本进行了特殊处理,就是RMXP中所使用的RGSS1。(Ruby Game Scripting System)
1.2 最基础的脚本
首先请打开我们的RMXP,对着它按下F11打开脚本编辑器。它对于已经能够熟练运用RM的人肯定不陌生了。请找到最上方的「Game_Temp」组。在脚本编辑器里,每一个脚本页都叫做「组」。请按下Game_Temp,然后按下「Insert」键新建一个组,当然,也可以使用右击的方法来新建一个组。
然后,我们就该来做点什么了。请输入「exit」,然后保存运行。注意,exit都是要小写的,Ruby是一种对大小写要求极其严格的语言。
运行后,游戏会一闪然后退出。这就是exit命令,顾名思义,就是退出。
请在这四个字母的后面打上两个空格,然后打出「#」这个符号。之后在后面输入 退出。
你会发现所写的东西都变成了绿色,这是注释,可以随意书写,写脚本的过程中,需要注意书写注释,否则以后有可能连自己写的什么东西都不知道。
1.3 print和p命令
请把exit删除,然后输入「print “测试”」,保存运行,弹出了测试窗口,注意,一定要加引号!然后使用p命令「p “测试”」作用几乎一样,但是p命令弹出了引号。这两种命令就是在屏幕上打印,大多数用于调试程序,但是p命令的使用次数通常都会高于print,这是因为p命令还可以显示变量等。
1.4 数字的运算
首先请把我们新写的脚本删除。输入「p 3+4」,弹出7,这就是简单的运算。可以尝试运用其他运算。需要注意的是,%是取余数,除法运算中(除号/),如果除数或被除数没有「浮点数」,是不会得出小数结论的。「浮点数」就是小数,带有小数点,比如说1.0,要注意浮点数运算速度比整数要慢一些,因此请尽量使用整数运算。
1.5 变量
相信大家对「变量」都不陌生,制作游戏中经常会使用到。现在就来看看脚本中的变量吧。
脚本中的变量大致分成「全局变量」「局部变量」。局部变量是临时使用的变量,是以@、小写字母,下划线开头的变量。比如说「@a」「a」,局部变量只是暂时有效,属于临时的变量。
而全局变量则是在整个游戏中使用的变量,以$开头。
变量的赋值、运算相信熟悉事件的大家都不会太陌生。赋值号是 = ,这一点常用变量处理的人应该非常了解。但是变量的运算是有些区别的。
自运算是变量自己运算,比如说「a = 5; a += 5; p a # -> 10」,就是加好后带=,如果是对变量赋值的话,则可以省略「a = 5; b = 3; c = a – b; p c # -> 2」。
1.6 字符串
字符串就是各种文本的集结,比如说”RPG Maker XP”。字符串的赋值如下。
「a = “RPG Maker XP”; p a # -> “RPG Maker XP”」。字符串也是可以加减的,例如。
「a = “RPG Maker XP”; b = “我爱”; p b + a # -> “我爱RPG Maker XP”」。
1.7 条件分歧
条件分歧相信大家都不陌生,在脚本中,条件分歧主要有这么几种。
if~else~end;case~when~end。
首先介绍if语句。它是这样的。
if a>b
a-= 1
else
a+=1
end
意思是,如果a大于b,那就给a减1,否则给a加1。
而case语句则是对一个值进行多次判定。
case a
when 1
  a -= 1
when 2
  a -= 2
when 3
  a -= 3
else
  a = 0
end
意思是,当a = 1时,-1,当a = 2时,-2,当a = 3时,减3,否则a为零。

1.8 循环
循环有for~end,loop~end,while~end等几种。
loop~end是死循环,当要中断循环时,使用break。如下。
loop do
  a += 5
  if a == 20
break
  end
end
这样就是每次循环a+5,如果a为20,就跳出循环。
如果要进入下一次循环则使用next。
while~end是条件循环,如下。
a = 0
while a != 20
  a += 5
end
这是如果a不等于20就开始循环。
还有一种特殊的循环,叫做for~end。它是让一个值在范围内变化。如下。
for a in 1..5
  p a
end
屏幕上会一次显示一到五。
需要注意的是,1..5和1…5的区别是不含最后一个数。1…5显示的是1、2、3、4。
1.9 数组
数组是一个非常重要的东西,它的作用非常大。
「a = []」就是说a是一个空数组。
「a[0] = 1」是把a中的一号单元赋值为1,注意单元是从0开始的。
a[0]=1
a[1]=”text”
p a
显示的是[1,”text”]。
数组的方法非常多,具体可以去F1帮助手册里查看。
数组的类是Array,所以a = []就等于a = Array.new[]。
1.10 哈希表
哈希表和数组有点像,但是每个单元都有名称。
例如:
a = {}
a[“测试1”]=”阿尔西斯”
a[“测试2”]=”帕吉尔”
p a
显示{“测试1”=>”阿尔西斯”,”测试2”=>”帕吉尔”}。
判定哈希表里面是否有某个值,使用include?方法。
哈希表的方法还有很多,可以查看F1帮助手册。哈希的类是Hash。
1.11 函数方法
函数也叫做方法,exit也是函数的一种。
系统给我们提供了一些默认函数,如rand,是用来返回随机数的。
p rand(5)显示的是0~4中的随机一个数。
函数的定义是用def~end语句。如下。
def plus(a,b)
  return a+b
end
p plus(1,2) # -> 3
这定义了一个简单的加法。
def和end分别是定义函数的开头和结尾。
plus是函数名,(a,b)是说使用这个方法需要附带两个参数。1和2就是我们附带的参数。
而return就是结束函数处理,后面的a+b就是返回值。
1.12 类
类是什么
类是一个抽象的概念,就好比是一个容器,里面存储了很多东西。
默认的脚本编辑器都是类定义。
定义类的语句是class~end,在类里面也需要定义方法。
类非常复杂,以后在实践篇的时候,会慢慢的讲解。
类的父类就是Class,生成类的实例是xxx = xxx.new。
1.13 实例
xxx = Xxx.new就是生成实例。实例也是一个抽象的概念。
比如说a = []其实就是在a这个变量里面生成了数组的实例,生成了实例之后,a就拥有的数组的所有方法了,可以进行对数组的操作了。
1.14 显示图片
一般的显示图片是:
xxx = Sptiet.new # xxx是变量名,随意
xxx.bitmap = Bitmap.new(“文件路径”) # 由于xxx生成了Sprite类的实例,所以就有了Sprite类的属性,可以参考F1,bitmap就是Sprite的属性。在属性里生成了实例。

作者: zjb1990728    时间: 2014-3-22 15:09
前排支持。
作者: Im剑侠客    时间: 2014-3-24 05:05
期待更新课程。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1