关于Ruby

Python011

关于Ruby,第1张

Ruby on Rails是一个用于编写网络应用程序的框架,它基于计算机软件语言Ruby,给程序开发人员提供强大的框架支持。Ruby on Rails包括两部分内容:Ruby语言和Rails框架。

什么是Ruby?

Ruby 语言是一种动态语言,它与Python、Smalltalk和Perl这3种编程语言有些类似。Ruby语言起源于日本,它的研发者是日本人松本行弘(Matsumoto Yukihiro)。松本行弘在1993年开始着手Ruby语言的研发工作,他开发Ruby语言的初衷是为了提高编程的效率。 1995年12月Matz推出了Ruby的第一个版本Ruby 0.95。

Ruby语言的主要特点如下。

1.纯的面向对象语言

在Ruby中,一切皆是对象。下面举一个例子来更直观地说明Ruby语言的这一特点。

在Java中,求一个数的绝对值的代码如下。

int c = Math.abs(-20)

而在Ruby语言中,一切皆是对象,也就是说“-20”这个数也是一个对象,因此,求一个数绝对值的Ruby代码形式如下。

c = -20.abs

这样的代码编写方式是不是更形象一些呢?

2.解释型脚本语言

Ruby 语言是解释型脚本语言,它既有脚本语言强大的字符串处理能力和正则表达式,又不失解释型语言的动态性。一方面,在最初设计Ruby语言时,Ruby的研发者松本行弘考虑到文字处理方面的需要,他借鉴了Perl语言在文字处理方面的成功经验。另一方面,松本行弘将Ruby语言设定为一种解释型语言,Ruby 的动态性使得由Ruby语言编写的程序不需要事先编译即可直接运行,这为程序的调试带来了方便。同时,这一特点可以实现开发过程中的快速反馈。

3.其他特点

(1)动态载入。可以在运行时候重定义自己,类也可以在运行时继承或取消继承。

(2)自动内存管理机制。

(3)多精度整数。

(4)迭代器和闭包。

(5)开源项目。有大量活跃的社区支持Ruby语言。

什么是Rails?

虽然Ruby语言有很多优点,但是一直以来,其流行的范围也仅限于日本。直到2004年,Ruby才逐渐被世界上其他地区的人们所认识,那么是什么让Ruby语言走向世界的呢?是Rails。

Rails 框架首次提出是在2004年7月,它的研发者是26岁的丹麦人David Heinemeier Hansson。不同于已有复杂的Web 开发框架, Rails是一个更符合实际需要而且更高效的Web开发框架。Rails结合了PHP体系的优点(快速开发)和Java体系的优点(程序规整),因此, Rails在其提出后不长的时间里就受到了业内广泛的关注。

Rails框架主要有如下的6大特点。

1.全栈式的MVC框架

Rails是一个全栈式的MVC框架,换句话说,通过Rails可以实现MVC模式中的各个层次,并使它们无缝地协同运转起来。

在实际开发一个MVC模式的Web应用项目时,如果使用Java开发,需要用到Struts(Model层)、Hibernate (Controller 层)和Spring(View层)3个框架,而且需要额外整合3个框架开发出的内容。而使用Ruby语言开发相同的项目时,只需要用到Rails框架就可以完成。

2.约定优于配置

为了说明各个对象之间的关联关系,一般的Web应用开发框架往往采用写入XML配置文件的方法。这种方式虽然可以解决一些问题,但是却带来了管理上的混乱。

Rails 对此的态度是约定优于配置,这意味着在Rails中不会出现XML配置文件。Rails使用Web应用多年来积累的各种常见约定(更具体地说是命名规则)来代替XML配置文件,而在Rails内部的映射与发现机制根据这些约定可以实现对象之间的关联。在第1章中,通过Rails的映射与发现机制实现了数据表与Ruby对象之间的关联。

3.更少的代码

使用约定来代替XML配置文件说明Rails本身完成了大量的底层工作,这意味着使用更少的代码来实现应用程序是极有可能的。此外,代码量的缩减也减小了出现bug的可能性,降低了维护程序和升级程序的难度。

4.生成器

Rails 使用的实时映射技术和元编程技术,免去了开发人员在开发过程中编写大量样板文件代码的烦恼。在少数需要使用样板文件代码的时候,开发人员可以通过 Rails内建的生成器脚本实时创建,而不再是通过手工编写。Rails的这个特点可以使开发人员更专注于系统的逻辑结构,而不必为一些琐碎的细节所烦扰。

5.零周转时间

对已有的Web应用系统进行修改后,其一般需要经过配置、编译、发布、重新设置、测试等一系列步骤才能投入使用,这明显浪费了许多时间。而使用Rails开发Web应用系统,可以通过浏览器即时查看程序运行结果,从而节约了大量的时间。

6.支架系统

Rails的支架系统可以自动为任何相关的数据库表创建一套包含标准CRUD操作和前台视图的系统。通过支架系统,开发人员可以方便快捷地操纵数据库中的数据表。此外,Rails也允许开发人员使用自己设计的代码或视图来替换自动生成的代码和视图。

目前,Rails的最新版本是2005年12月13日发布的v1.0.0。从RoR正式提出到v1.0.0的发布,RoR在一年多的时间里受到了业内人士的广泛关注。RoR受到广泛关注主要有如下两个原因:首先,RoR的开发效率高(部署容易)、功能丰富(支持Ajax等流行应用),有消息称对于相同的 Web开发项目,使用RoR开发比使用Java体系架构开发快5~10倍;此外,令人不可思议的高性能是其受到关注的另一个重要原因,根据CSDN上转载的新闻称使用RoR开发出来的项目性能,比基于Struts+Hibernate+Spring的Java应用还要高15%~20%。

RoR 当前遇到的主要问题是使用RoR搭建的大型商业应用还很少,究其原因可以概括为两点:第一,从开发能力的角度,RoR是一个基于Ruby语言的轻型Web 开发框架,很多开发者对其是否适合大型应用难以把握。第二,本身使用RoR开发的大型商业应用较少,使得后来者持观望态度。

综合分析来看,RoR的发展前景还是很光明的。RoR在短时间内取得了巨大的成就,它打破了Web开发领域的固有观念,方便快捷的开发方式使其被广泛接受。而事实上,现在已有几家跨国公司正在使用RoR开发自己的Web应用程序,并且有多家大型公司在考虑使用RoR进行Web应用开发。

一.前言

注:因为复制的时候太激动了,所以本文的转载无法经过夏克的同意,这里说声对不住了,希望有人能给个地址,大家上他那去看看!本文在原文的基础上面稍微扩充了RGSS2的知识,但是不多,很多地方都修改了,希望希望夏克同学原谅我,因为我实在没办法联系到你.那么,请各位看官阅览本文过后,仔细看看RPG Maker自带的帮助,虽然说是帮助,但是那个也是很好的教材哦!

二.基本概念

1.什么是RGSS/RGSS 2?

Ruby Game Scripting System(以下简称RGSS),中文意思就是:Ruby游戏脚本系统,是一个脚本性质的游戏编程系统,并不是整个游戏都用它来生成,RGSS所能做的只是一些有限的功能,而这些功能,是由厂家也就是EnterBrain所规定的,我们只能在自己力所能及的范围内来挖掘RGSS的潜力,RGSS 2则是在RGSS的基础上扩充和删减了一部分形成的,也可以称之为RGSS的换代版本,是RMVX所使用的

2.脚本(Script):

脚本这个概念应用的范围很广,Windows系统里就有VBScript,JavaScript,WScript等脚本程序,Unix系统也有很多Perl,C等脚本程序,脚本可以解释为是一种系统内用来实现一些特定功能的有着局限性的编程环境.有的脚本可以触及到系统底层,有的却只是完成一些运算或者控制流程的功能,这取决于脚本系统的权限,也可以说取决于脚本系统所提供的库函数功能.

3.RGSS/RGSS2中的脚本:

在RPG Maker XP/RPG Maker VX(以下简称RMXP/RMVX)中,按F11就可以打开[脚本编辑器],不过RM2003或更早的版本却没有这个功能,左边的窗口是脚本列表,右边的窗口是脚本内容,左下角可以修改脚本名称.

在RMXP/RMVX中,游戏开始运行后,总是从最上边的脚本开始运行,依次往下,所以,经常把变量声明、类声明、函数声明、函数定义的脚本放在上面,而MAIN脚本总是放在最后.

三.开始神奇的脚本学习旅程

1.Hello,World!

经过上面的基本知识后,相信你对RGSS/RGSS2的相关知识有了一定了解,一般的编程语言教程都是从"Hello,World!"开始的,那好,我们也从"Hello,World!"开始,不过为了体现RGSS语言与Ruby的不同,我们将其改为"Hello,World,我来学习RGSS语言了!",首先,请打开RMXP/RMVX,在新建好一个空白工程后,按下键盘上面的"F11"键,开始我们的RGSS/RGSS2脚本学习之旅!为了保证执行脚本的快速,请在脚本列表中选中最顶端的那个脚本,然后按下方向键上面的Delete(也称为DEL、删除)键,删除脚本直到Main脚本为止(这里的意思是只保留Main脚本),选择[插入]来插入一个新的脚本,给新脚本命名为Test,删除Main脚本,点[确定].这样我们就得到了一个空的脚本系统,试着运行一下游戏,可以看到游戏在短暂的启动后就自动终止了,这表明没有任何脚本可以执行,游戏只好退出.既然测试成功了,那么下面我们在Test脚本中加入一些内容.按F11打开[脚本编辑器],因为我们只有Test一个空脚本,所以在Test的内容中输入下面的代码:

p "Hello,World,我来学习RGSS语言了!"

把这行代码复制并粘贴在Test脚本中,按[确定],按F12,保存后游戏开始运行,短暂停顿后就会弹出一个对话框,内容是不是:"Hello,World!"?这样我们就做出了第一个脚本,如果是学过Ruby的你一定会发现中文会被正常的输出,而不是类似于"/数字/"的结果,但是这里要说的是,RGSS不支持puts命令,而printf命令则会忽略掉,如果您实在怀恋,可以通过其他的脚本来辅助实现.值得说一下的是,RGSS是会区分大小的,所以这里的p不能使用P(大写的P).

2.脚本的注释

在学习任何语言的过程中,注释是少不了的,因为注释不仅仅可以让新手更明白脚本语句的含义,而且还会使脚本看起来更整洁、美观,当然,能做到的当然还有很多.在RGSS中,有两种注释,它们分别是符号 # 和

=begin

=end

如果你比较细心的话应该可以看出他们的用途, 符号#是用来注释单行,而 =begin ... =end 是用来注释多行的,在这里,有个知识点需要提一下,符号#后的脚本是会被忽略的,也就是说,你把符号#插入到某一脚本的前面,那么那条脚本就会无效,很多人都将在脚本前添加#看做是一种解决脚本故障的办法(也就是DEBUG),举个例子:

p "Hello,World,我来学习RGSS语言了!" #我是很可爱的注释,执行脚本的时候你会无视我!

将这段代码插入到脚本中,#后面的语句或者注释将被无视,然而在这段代码中,无论是什么都会无效.

=begin

p "Hello,World,我来学习RGSS语言了!" #我是很可爱的注释,执行脚本的时候你会无视我!

=end

到此,基础部分完毕,如果你想要学习更深入的知识,请往下看.

四.数据类型

1.数字

数字包括整数和小数,小数在计算机术语中被称为浮点数,相信大家都明白什么是整数和小数了.整数包括正整数和负整数,0可以被视为整数,数字属于常量的一部分.

常见的数字种类有:

1= 整数

100 = 整数

-10 = 整数

0= 整数

0.11 = 浮点数

-12.3 = 浮点数

那好,让我们写一个脚本来学习如何显示一个常量的值,在Test脚本中,清除脚本内容,插入下面的代码:

p 100

运行游戏,看到弹出的对话框显示:"100",若输入我们输入:

p 100.100

作为新手的你觉得会弹出什么呢,想想,实际上弹出的是100.1,而不是100.100

2.数字的计算

我们在上节讲了数字的类型与输出给用户的方法,现在我们来体验一下数字的计算,在脚本 TEST 中插入以下代码:

p 1+1

运行游戏,看到弹出的对话框显示:2.这就是常量的加法.你可以很聪明地想象出乘法、除法、减法:

p 3+5

p 3*5

p 3/5

p 3-5

运行游戏,你会发现游戏按脚本顺序输出了加、乘、除、减,你会发现,3/5输出的是0而不是正确结果,整数和整数的运算,其结果仍旧表现为整数,如果你希望得到浮点数,那么就应该使被除数或者除数至少有一个是小数形式的表示.请看下面的代码:

p 3.0/5

p 3/5.0

运行游戏,显示的结果就都是小数了.值得一提的是还有两个很有用的算符,求余数(%)和乘方(**),输入以下代码:

p 14%4

p 2**3

它们分别输出了2与8,和预期的正确结果一样.

3.括号的用处

各种运算符之间总会存在优先顺序,加减乘除的顺序是不变的,对于其它你所不熟悉的或者弄不清除的,只要记住一点就可以了,那就是括号的优先权是最高的,善用括号能够至少确保程序的准确性而先不管是不是很难看,当然,强大的RGSS所使用的基本不是只有一个功能,或考得其他功能我们会在以后的章节一一阐述.

4. 常量与变量

常量:常量就是我们经常会用的数字、字符串了,比如我们问一张光盘多少钱,回答说5元,那么5就是常量,如果说一张光盘的价格不定,在3-5元的范围内浮动,那么这就是我们学过的未知数,对于这样的未知数我们经常会用一个变量来表示.

变量:变量就是我们用一个符号来表示一个我们想要表示的概念,比如我们可以用price这个变量来表示一张光盘的价格.变量与常量的区别就在变量是可以变动的,也就是说我们用变量来定义一个概念后,接下来就会来操作这个变量使它变化.而我们不能让一个常量变化,比如我们不能让5=4,但我们可以让price=4.

命名规则: 变量的取名有以下的限制:

1、必须以英文字母(大小写均可)、汉字、下划线开头.

2、第二个字符开始可以使用数字、英文字母、汉字、下划线.

3、不能使用保留字作变量的名字.

保留字是保留给系统用的,也就是说系统已经占用了,以下是系统的保留字:

alias def false nil return unless

and do for not self until

begin else if or super when

break elsif in redo then while

case end module rescue true yield

class ensure next retry undef

所以不要使用上面列出的单词做你的变量的名字.

变量的赋值:变量无需事先声明,可以拿来就用,例如:

a=100

p a

运行脚本,看到弹出的对话框显示:100 , 但必须先赋值才可以使用变量,否则,试试下面的代码:

p b

会弹出什么呢,如果不赋值给变量,就相当于这个变量不存在,而一旦赋值给它,就表明这个变量存在了.

变量的运算:

下面的代码你应该可以猜出是什么结果的:

战斗前的体力=234

战斗后的体力=200

p 战斗前的体力

p 战斗后的体力

继续:

p 战斗前的体力-战斗后的体力

看到了吗,这里我进行了运算,变量的运算.

就像对于常量一样,加减乘除和括号同样适用于变量的运算:

x=1

y=2

z=3

p x+(y*z)/(y+z)-y+z

但下面的运算是常量所没有的:

自运算:

x+=5

y*=2

z/=3

p x

p y

p z

+=,-=,*=,/=这四个运算符是自运算符,x+=1相当于x=x+1,其它同理.

全局变量:

局部变量和全局变量的区别在于局部变量只能被所在的脚本访问,而全局变量能被所有的脚本访问.

在变量名前加$符号就可以声明全局变量了.

5. 字符串

显示字符串:

先看看下面这几行语句在RGSS中的效果:

p"这将会显示双引号"

p'这也会显示双引号'

print"这不会显示双引号"

print'这也不会显示双引号'

把上面的四行语句复制下来,然后在我们刚刚建立好的Test脚本中粘贴,粘贴前最好把Test脚本的内容清除掉,我们只需要测试我们现在的代码.好,运行游戏,看看效果吧.

首先,看得出来,用来输出显示的方法又多了一种:print,不同的是,p可以显示很多种数据类型,对不同的数据类型,它会按人们容易理解

的格式来显示,比如说这里的字符串,它都会加上双引号来告诉人们:这次显示的是字符串,而print直接显示字符串本身.

在上面的代码中,分别输出下面的四行字符串:

"这将会显示双引号"

"这也会显示双引号"

这不会显示双引号

这也不会显示双引号

6.字符串常量:

字符串常量的表示有两种方法.

1.双引号表示的字符串:

这种表示方法使得字符串可以支持一些特殊格式,这将是我们用的最多的表示方法,下面会有更详细的介绍.

2.单引号表示的字符串:

直白的说,单引号所包括的字符串会被原样显示出来,也就是说,即使单引号中包含特殊格式,也不会显示这种特殊格式.

7.字符串变量:

和数字变量一样,看看例子吧:

1、赋值:

a="欢迎使用RGSS来编程"

print a

结果输出:欢迎使用RGSS来编程

2、连接:

a="中华人民"

b="共和国"

print a+b

结果输出:中华人民共和国

3、乘法:

a="连续两遍"

print a*2

结果输出:连续两遍连续两遍

4、换行符:

\n表示换行,但是只能用在双引号字符串内,若是在单引号字符串内便不起作用了,看看下面两个例子:

a='中华人民\n共和国'

b="中华人民\n共和国"

print a

print b

结果输出:

中华人民\n共和国

中华人民

共和国

5、常量中包含变量:

a="人民"

print "中华#{a}共和国"

结果输出:中华人民共和国

记住:这个特殊格式和\n一样只能在双引号形式的字符串中使用,这里提一下,这里的#符号不是注释的意思.

再看一个:

a="C:\\Program Files\\RPG Maker XP\\System\\Data\\Skills.rxdata"

print "系统安装后的初始脚本文件是:#{a}"

你可以试试看下面的例子:

a="人民"

print '中华#{a}共和国'

结果输出:中华#{a}共和国

五. 控制语句

1. 条件分歧语句

1.比较运算符:

有6个比较运算符,分别是

== 相等

!= 不相等

<小

>大

<= 小或相等

>= 大或相等

比较运算符,顾名思义,就是用来比较的,比较的对象可以是任意的,比较的结果是True或者False.

举例:

p(" 早安 "==" 早安 ") # =>true

p(" 早安 "==" 晚安 ") # =>false

p (3 + 1 == 3 + 5) # =>false

p (3 + 1 == 2 + 2) # =>true

观察一下结果就会明白.

逻辑运算符:

逻辑运算符也有6个,分别是:

与:and , &&

或:or , ||

非:not , !

举例:

p (100 >77 and 1 + 1 == 2) # =>true

p (100 >77 &&1 + 1 == 2) # =>true

if..elseif..else..end 语句:

结构:

if 条件1

语句1

elseif 条件2

语句2

.

.

else

语句

end

举例:

x=123

y=23

z=67

a=(x*y*z+x/y+z/y)*(y-z)+x*z

if a>0

print "大于0"

elseif a=0

print "等于0"

else

print "小于0"

end

最常用的还是if...end语句:

金钱数=10

if 金钱数<100

print "对不起,你的钱不够了.."

end

unless..end 语句:

这是if..end语句的变种,正好跟if..end相反,就是除非的意思:

unless 条件

语句

end

举例:

金钱数=10

unless 金钱数>=100

print "对不起,你的钱不够了.."

end

除非你的金钱数大于等于100,否则:“对不起,你的钱不够了..”

case..when..end 语句:

如果对于把条件限制在某个范围或者某些特定的值的情况,使用case..end语句更方便:

case 变量

when 特定的值或者范围

when 特定的值或者范围

.

.

end

举例:

主角状态="昏睡"

case 主角状态

when "昏迷"

print "你昏迷了.."

when "中毒"

print "你中毒了.."

when "昏睡"

print "你昏睡了.."

end

2.条件赋值语句:

条件赋值语句给我们提供了一个非常方便的if..else..end的简化版.

(条件1 ? 语句1 : 语句2)

相当于:

if 条件1

语句1

else

语句2

end

举例:

战斗状态=1

print (战斗状态>0 ? "胜利" : "失败")

2.循环

1.while..end 循环:

举例:

a = 0

i = 1

while i <= 5

a += i

i += 1

end

p a

这很简单,很容易明白的.

2.for..in..end 循环:

类似于c语言中的for,但不同,in后面给出变量的变化范围.

3变化范围:

类似于1..5表示一个变化范围,其所含的值为大于等于1小于等于5.

举例:

a = 0

for i in 1..5

a += i

end

p a

这也很简单,很容易明白的.

4.loop do..end 循环:

举例:

i = 0

loop do

i += 1

p i

end

上面的代码会一直循环下去,也就是说是个死循环.只有使用break才可以从中跳出.

5.break 语句:

上面的例子如果改成下面的样子,就不再是死循环了:

i = 0

loop do

i += 1

if i == 5

break

end

p i

end

break也可以从while、for循环中跳出.

6.next 语句:

跳过本次循环,进入下次循环.

举例:

for i in 1..5

if i == 3

next

end

p i

end

结果显示四次,就只有1,2,3,4,5被显示出来了.

3. 函数

1. 函数的概念:

我们把事先编好的,能够解决或者说处理某种情况的功能的集合叫做函数.不必在意概念,用得多了自然就明白.其实我们一直在使用的

p,print就是函数的一种,下面介绍一个很有用的函数,随机函数rand():

rand(x)返回0-(xx-1)范围内的随机数,例如:

p rand(100)

返回的数字在0-99范围内.

我们也可以设计自己的函数以便增加我们需要的功能,更多的时候,我们大多数时间是在跟函数打交道.

2. 函数的声明:

函数的名字基本上和变量的名字有着相同的限制,例外的情况是,函数可以在名字的最后添加?或!符号,这种符号有着特殊的用处,以后会讲到.

函数的声明要用def..end语句,形如:

def 函数名字

语句

end

我们用rand函数来设计一个自己的函数bet():

def bet

if rand(6)>3

return "大"

else

return "小"

end

end

print bet

这里的return表示函数返回的值,如果省略return也可以,但最好带上,能够使程序可读性更好.

我们给bet函数增加参数:

def bet(x)

if rand(x)>3

return "大"

else

return "小"

end

end

print bet(7)

还可以为参数设置默认值:

def bet(x=7)

if rand(x)>3

return "大"

else

return "小"

end

end

print bet #这和print bet(7)一样

函数可以有很多参数:

def bet(x,y,z)

if rand(x)>3 and rand(y)>3 and rand(z)>3

return "大"

else

return "小"

end

end

print bet(7,6,10)

4. 重定义函数:

如果定义了两次相同的函数,则只有后面定义的函数有效,而先前的定义就无效了.

def hello

return" 您好 "

end

def hello

return" 晚安 "

end

p hello #=>" 晚安 "

六. 数组

如果知道将多次对一个变量,例如 $salut赋值,您会怎样做呢?这在很多情况下都会发生.因此,您可以将所有的变量值放进一个数组里,而不是手动

地给变量重新赋值.

数组允许对每个变量值进行分别的处理.请看如下示例:

$salut = ['Hello World','Good Bye World','What do you mean Good Bye World?'] print $salut

运行上述代码得到的输出如下所示:

Hello WorldGood Bye WorldWhat do you mean Good Bye World?

显然,这不是我们想要的输出.没有间隔也没有换行.因此,我们可以标识希望显示数组的哪一部分,并使用先前解释的串联技术来更方便地提供易读的输出.

$salut = ['Hello World','Good Bye World','What do you mean Good Bye World?']

print $salut[0] + "\n"

print $salut[1] + "\n"

print $salut[2] + "\n"

将会导致如下输出:

Hello World

Good Bye

World What do you mean Good Bye World?

仔细分析这些代码.如果回顾一下我们建立的数组:

$salut = ['Hello World','Good Bye World','What do you mean Good Bye World?']

我们告诉 Ruby 定义一个名为 salut 的变量,其值为:

$salut = 0 1 2

Hello World Good Bye World What do you mean Good Bye World?

每个值通过一个数字来被识别.数字通过数组中的数字位置来定义.位置总是从 0 开始,并从 0 开始递增.所以要打印数组中的第 2 个值,

您要输入:

print $salut[1]

最容易忘记的是字段从 0 而不是从 1 开始.

七. load,require语句

在许多知名网站上,很多的人都认为RGSS不支持load,requir,语句,如果需要使用的话好去破解Scripts.rxdata文件(XP)或者Scripts.rvdata(VX),其实你不用去研究破解Scripts.rxdata了,因为RGSS完全支持load,require语句,只不过与Ruby语言稍有区别的是这两个语句只支持绝对地址,也就是说不支持类似于:require "win32/***" 的格式

在我们的试验脚本中输入:

load "d:/sequh.rb"

就可以加载D盘的sequh.rb文件了,同理:

require "D:/sequh.rb"

这里我输入的是绝对路径,绝对路径的表示方法是:

把DOS格式的路径名中的“\”统统改为“/”即可

而相对路径的获得,需要一点儿办法:

因为在我的游戏目录下有game.exe文件,所以我们可以通过它来获得游戏目录,然后得到绝对目录,把我们的相对路径加到绝对目录后面,例

子:

load "#{File.dirname(File.expand_path("Game.exe"))}/scripts/sequh.rb"

其中的File.dirname(File.expand_path("Game.exe"))便是游戏目录的绝对路径.

八. 对象和方法

这个代码段中用到的一些技术和方法您可能是第一次见到.RGSS是一种面向对象的编程(Object Oriented Programming,OOP)语言.使用 OOP 时,通常情况下程序员将调用诸如对象和方法之类的项目.对象就象一个容器.它包含自己特定的变量和函数. 方法是一种被调用的东西,就像函数对对象进行专门处理一样.如果看一下先前的示例,我们就可以显示工作中的对象和方法.

while enterWorld = STDIN.gets enterWorld.chop!

这里我们有两个对象和两个方法的示例.第一个对象是 enterWorld,第二个对象是 STDIN.enterWorld 对象是用户定义的对象,而 STDIN 对象(Standard Input 的缩写)是RGSS内建的.

这个示例中还有两种方法.第一种是 gets,第二种是 chop!.前面提到过,方法对对象进行专门处理.明确地说,方法将在对象中执行一个操作.用 gets 方法,我们告诉 RGSS 去获取 STDIN.当 RGSS 看到与 STDIN 关联的 gets,它就会等待键盘输入和一个回车.简而言之,STDIN.gets 就是等待用户输入一些内容然后敲 Enter 键.

第二种方法 chop! 用来对用户定义的对象 enterWorld 进行专门处理.chop! 方法告诉 enterWorld 将 enterWorld 对象关联的数据的换行符

和回车符截去.如果不使用 chop!(或者 chomp!),那么包含在先前代码上下文中的下面语句永远都不会为真.

if enterWorld == $salut[0]

因为没有使用 chop!,所以得出结果将为假,$salut[0] 实际上就等于 $salut[0]\n.新行是由 STDIN 对象从 gets 方法接收的输入产生的.使用回车将会在值末尾添加一个换行符.

rpg maker xp下载:

http://www.skycn.com/soft/17372.html#downUrlMap

rpg maker xp使用:

游戏属性

在游戏运行中按 F1 键,会显示游戏属性对话框,如右图。这个窗口可以自行分配游戏手柄和键盘的按钮设定。 按「重置」键,就可以回复为系统默认设定。

在「常规」页里可以进行以下设置。

平滑模式

通常,游戏画面是以每秒 20 帧的速率显示,达到推荐配置以上的电脑(推荐 Pentium4 1.5 GHz 以上)可选择此项,游戏画面将以每秒 40 帧的速率显示而使画面更加平滑。

抑制画面抖动

垂直扫描完后更新画面,选择此项可以最低限度的减少画面的细微闪烁。然而,画面 会出现稍微延迟的情况。选择与否,可以根据哪个更舒适,PC 配置和个人的爱好决定。

播放 BGM 和 ME

此项可以选择是否欣赏游戏中的音乐。想一边听其他音乐一边测试游戏,就可以取消对勾,选择无声设置。

播放 BGS 和 SE

此项可以选择是否播放游戏中的声音效果。

其他操作键 功能

Alt+Enter 窗口模式和全屏模式的切换。

Alt+F4 强制结束游戏。

F12 强制回到标题画面。

F2 测试游戏时,标题栏上显示 FPS(每秒的画面帧数)。

F9 测试游戏时,移动中按下该键可以呼出调试窗口(开关,变量一览表)。

Ctrl 测试游戏时,按下该键不放同时移动,会使地图图块的通行设置无效,而能在不充许通行的元件上自由移动。

帮助提示

在 RPGXP 中,大致全部对话框选项都准备有相应的简单说明,可以在不中断工作流程的情况下得到必要的信息。将这个功能称为帮助提示。调出帮助提示,有以下 3 种方法。

在选项操作中按 F1 键。

在选项上点击鼠标右键,于弹出菜单中选择「帮助」(如右图)。由于选项的种类不同,某些情况下可能不能使用。

点击标题栏右上角的「?」图标后,把光标移到目标的上方点击鼠标左键。

要了解更详细的信息,请看本软件附属的使用说明手册。

工程

新建工程

更改标题

工程的操作

游戏的发布

在 RPGXP 中,是以工程为单位来制作游戏的。建立一个工程,就会在硬盘中新建一个文件夹,而游戏中的各种数据资料就以文件保存在其中。

新建工程

制作一款新游戏,在主菜单「文件」菜单中选择「新建工程」。于显示的对话框中依照指示输入文件夹名和标题,并可选择一个路径,输入完毕按「确定」,就建立了一个新工程。

新建文件夹内的 Game.rxproj 文件就是工程文件。以后,只要双击这个文件就能直接打开该工程。可以把编辑中的工程在桌面上建立一个快捷方式,这样会更快捷方便。

更改标题

更改已建立工程的标题(游戏名),打开该工程,在主菜单「游戏」菜单中选择「更改标题」。于显示的对话框中输入新的标题,按「确定」就完成了标题的更改。

工程的操作

删除工程和更改文件夹名,在 RPGXP 中没有此项功能。想要删除工程和更改文件夹名,可于 Windows 中转到该文件夹,直接操作即可。

还有,复制游戏工程文件夹,就可完成整个游戏的拷贝。为了减少操作疏忽和无法预料的错误引起数据丢失的风险,推荐定期备份制作中的游戏。

游戏的发布游戏制作完成后要于 Web 上发布,在主菜单「文件」菜单中选择「压缩游戏数据」。压缩结束,就在指定文件夹中生成了一个自解压文件,发布那个文件就 OK 了。

游戏发布后,如果玩家电脑内没有安装 RPGXP,要想运行 RPGXP 制作的游戏,就必须下载和安装 RGSS-RTP(也有不需要 RTP 的游戏制作方法,但不推荐)。 RGSS-RTP 可以从下面地址下载。

デジタルファミ通网页

http://www.enterbrain.co.jp/digifami/

如果不想别人编辑修改你的游戏内容,可在压缩时选取「生成加密档案文件」选项。这样生成的加密后的文件别人就不能修改了,但加密的文件会比通常的文件要大,所以要根据你自己的情况来决定。

不使用「压缩游戏数据」功能,也可以用其它软件进行游戏文件夹的压缩和发布,比如 winrar 或制成安装程序等,但一定要注意保持整个游戏数据的完整。

地图

地图元件和图块

地图的制作

地图元件的配置

自动地图元件

原野、迷宫、城市街道和建筑物内部等主角移动的舞台称为地图。

游戏是由很多地图构成的,名个地图间可以随着事件的处理来回移动。例如主角在接触建筑物的入口后,画面就会消失,而转移到建筑物内部的另一个地图里。因此通过这样的衔接方式便能将整个地图联系在一起。

地图元件和图块

地图看起来就像一整张图画,然而实际上和拼图玩具的小块一样是由许多小部件组合而成的。构成地图的最小部件称为地图元件。地图元件可以设定各种不同的属性,比如人物能否通行等。

表现特定的场所就需要一组整理在一起的许多地图元件,并设定各种不同的属性,这就称为图块。各个地图可以选择使用不同的图块,然后用该图块中的地图元件组合配置成一张地图。在图块中,还可以设定战斗时显示的背景(战斗背景)图形,遭遇敌人时会自动使用该背景。

地图的制作

新地图的制作和多个地图的管理,是在主窗口左下方的地图树状目录里进行。

首先,在地图树状目录里选择一个地图名称,按下鼠标右键,出现选单后选择「新建地图」,便会开启制作地图窗口,设定好地图名称、图块、地图大小、遇敌率等必要信息后按下「确定」,就完成了新地图的制作。各项的具体意义请参照帮助提示。

地图设定完毕,最初选择的地图下方就会建立一个新的子地图,而上方的地图就叫母地图。这和 Windows 文件夹的目录结构相同。这个结构并不直接影响游戏的运行,比如城市的建筑物内部地图作成该城市整体地图的子地图,这样对多个地图的管理就会更加容易。地图可以通过鼠标直接拖曳 &移动选项中的上下移动来改变目录结构。

地图是由 3 层各种各样不同的地图元件配置而成的。可以向各层任意配置各种地图元件,一般来说第 1 层是地面,第 2 层是栅栏和建筑物,第 3 层是窗户和烟囱,按照这个标准,地图就能顺利制作完成。

地图编辑时层的选择,是在主菜单「模式」中设定的。而且,在「视图」菜单中还可以更改「暗淡显示其它层」,和显示「当前及下一层」还是「全部层」等设定。

地图元件的配置编辑地图时打算在地图上配置的地图元件,必须从主窗口左边的地图元件面板中选择。在地图元件面板中选择一个地图元件,也可以同时选择多个地图元件。选择了地图元件,就可以用绘图工具在右侧的绘图区域自由配置了。

配置地图元件的绘图工具,可以在主菜单「绘图」中选择。各个绘图工具的功能如下。

铅笔

是最常用的绘图工具。在绘图区域上进行点选和拖曳可将目前选取的地图元件配置到地图上。

四边形

籍由拖曳对角线形成一个四边形,将目前选取的地图元件填满该四边形区域。

椭圆

籍由拖曳对角线形成一个四边形缩起的圆形,将目前选取的地图元件填满该区域。

填充

在点选处的上下左右连续相同的地图元件全部置换为目前选取的地图元件。

选择

为地图的剪切和复制等选取一个编辑范围。这种情况下点击鼠标右键会显示一个弹出菜单,就可以进行该范围的剪切和复制等操作。另外,选取范围的复制等操作包括全部三层的所有对像。

绘图工具为「选择」以外的其它工具时,在绘图区域某处点击鼠标右键,地图元件面板中白线框选的地图元件就会自动切换为该处所配置的地图元件。这个功能称为吸管。使用吸管功能会省略从地图元件面板中选择地图元件的步骤,将大大提升作业效率。

自动地图元件

地图元件面板中最上面的一排地图元件叫做自动地图元件,是种特殊的地图元件。自动地图元件是一类有很多式样的地图元件,实际排列中会依照边界自动调节。

一边按「Shift」键一边配置自动地图元件和使用吸管时,这个功能会暂时失效。

而且,在地图元件面板上双击自动地图元件,就会出现「自动展开元件」对话框,可以直接选择边界调整的式样。

事件

事件的种类

事件页

事件开始条件

战斗事件的设定

执行内容

文章的显示

向村民打听情报,有条件才能打开的宝箱等游戏中发生的一切事情称为事件。

游戏如何进行全部都由事件来管理,比如「主角从城市出口移动到草原地图」的处理就是使用的事件,作为一个游戏,建立事件是必需的。

事件的种类事件共分为「地图事件」、「战斗事件」、「公共事件」三种。一般所说的独立事件,基本上指的是地图事件。

地图事件

就是在地图画面上运行的事件。包括场所的移动,人物的对话等。在主菜单「模式」菜单中选择「事件」,于地图编辑区域上双击(点右键选择「新建事件」亦可)就可新建一个地图事件。建立大量的地图事件会加大 CPU 的负荷,通常一个地图内事件数少于 100 会比较好。

战斗事件

就是在战斗画面中运行的事件。比如「敌人在 HP 值达到规定值以下时变身」的处理就是使用的战斗事件。在数据库「队伍」页中设定。

公共事件

可以从地图事件和战斗事件中调用,为特殊情况的处理,是通用的事件。在数据库「公共事件」页中设定。

事件页

在地图事件中,一个事件能设立多个不同内容的处理。这种设定的单位称为事件页。

各事件页内容的出现条件分为开关、变量、独立开关三种类型(开关总共是二个)。满足指定条件的事件页有多个的话,会执行号码最大的事件页的内容。

开关

整个游戏中,开关总会保持 ON/OFF 的数据。例如管理「接受了消灭怪物的委托」或「打倒了BOSS」的信息。

变量

整个游戏中,变量都会保持任意整数(最大 8 位)的数据。例如管理「主角的声望」或「收集世界中分散的物品,移交给委托者的件数」的信息。

独立开关

是引发个体事件的特殊开关。不会给其它事件造成影响,仅为该事件使用。例如管理「打开了宝箱」的信息。

战斗事件也有事件页,但是具体方法和地图事件不同。具体请参照战斗事件的设定。

公共事件没有事件页。如果自动执行事件的话,可以指定一个条件开关。

事件开始条件已定义事件页的「执行内容」,实际开始执行的条件称为事件开始条件。

决定键

在主角与事件接触的状态下,按下决定键(C 按钮)时事件开始执行。当主角与事件之间即使有柜台属性的地图元件也可以。向村民问话或调查宝箱等基本事件会使用这种方式。

与主角接触

增加了「决定键」的条件,当主角以方向按钮向事件接触时也能开始执行事件。如果主角与事件能重叠的话,那么重叠时开始执行事件。场所移动事件会使用这种方式。

与事件接触

增加了「与主角接触」的条件,当事件移动到与主角接触时也能开始执行事件。比如怪物在地图上来回移动,接触到主角时触发战斗的事件会使用这种方式。

自动执行

事件立即自动执行。事件页的出现条件满足的情况下事件会反复执行,需要适当转换开关和独立开关,必须控制事件的出现条件。比如移动到特定地图发生强制事件时会使用这种方式。

并行处理

在事件出现期间,周期性的执行事件内容。并行处理的事件与通常的性质有所不同,在其他事件执行的同时并行执行该事件,使用时必须要格外注意。比如监视计时器的事件,一定时间制造雷电闪光画面的事件会使用这种方式。即使完全没有使用这种事件开始条件也不会影响游戏的制作,所以没有必要勉强记住使用方法。

公共事件的情况和地图事件不同,其没有实体的存在,开始条件只有由其它事件调用执行的「无」、「自动执行」和「并行处理」三种。但是无论是哪种开始条件,由并行处理事件调用执行和并行处理功能一样,要格外注意。并行处理中执行通常事件时,不要直接调用执行公共事件,最好经由开关控制的自动执行事件调用执行。

并行处理事件会加大 CPU 的负荷。特别是执行开关和变量的操作时,条件的变化会加强对事件出现还是消失的判定,地图存在事件页的量和处理时间成正比。这样,不推荐经常执行大量的并行处理事件。

战斗事件的设定

发生战斗中的事件称为战斗事件。

战斗事件和地图事件一样有事件页。经常按号码顺序检查事件页,有满足条件的事件页就立即执行。

战斗事件的出现条件为回合数、敌人的 HP、角色的 HP 和开关这四种,可指定多个。各个设定的具体内容请参照帮助提示。

执行内容在游戏中产生某个变化的命令称为事件指令。

实际中事件的执行内容是由登录于事件执行列表中的事件指令来定义的,执行时从上到下依次执行。事件指令有「显示文章」、「场所移动」、「战斗处理」等各种不同的指令,变化丰富多种多样共计有 90 种之多。

执行内容的编辑方法种类事件都是共同的。插入事件指令,以下列顺序进行。

双击列表中有「◆」符号的项目。

会开启「事件指令」对话框。在这里选择欲使用的事件指令,按下标有该事件指令名称的按钮。如果不明白指令的意思可以调用帮助提示,就能看到各种指令的简单说明。

除一部分指令外,将会开启事件指令设定对话框。完成必要的设定后按下「确定」。

在该双击项目的位置就会插入一个事件指令。

在事件指令列表中,选择一个事件指令点击右键会出现弹出菜单,应用此菜单能进行复制粘贴等操作。按下「Shift」键不放的话,就可以同时选择多个事件指令一起进行操作。

文章的显示

在游戏画面上显示信息就要用到事件指令「显示文章」。这是个常用的指令,在全部事件指令中使用得最多。

在文章中可以使用以下的控制码。

\V[n]

显示第 n 号变量中的值(n 为数字)。

\N[n]

显示第 n 号角色的名称(n 为数字)。

\C[n]

之后的文字用第 n 号的颜色显示。 0 1 2 3 4 5 6 7

\G

开启所持金钱窗口。

\\

显示文字“\”。

输入文章时按「F2」键,就可预览实际游戏中显示的信息窗口。

数据库

数据库的内容

编辑数据项目

更改最大值

游戏中使用的各种数据集合在一起称为数据库。

数据库的内容编辑数据库的内容,在主菜单「工具」菜单中选择「数据库」。在对话框的分页中进行切换,就可以编辑下列各种不同种类的数据。

角色 在游戏中被玩家操作的人物角色的数据。

职业 装备的武器、防具和能够学习的特技等,决定角色特征的数据。

特技 主要是消耗 SP 发动特别的效果,是技能和魔法等的数据。

物品 回复剂和事件物品等,除装备以外的物品的数据。

武器 具有攻击力等属性的武器的数据。作为物品的一种来使用。

防具 具有物理防御和魔法防御等属性的防具的数据。作为物品的一种来使用。

敌人 触发战斗和事件战斗的与主角敌对的敌人角色的数据。

队伍 敌人的组合。是游戏中实际出现的形态。

状态 对角色的能力和行动造成各种各样的影响,是健康情况和状态的数据。

动画 武器和特技的视觉效果等使用的动画的数据。

图块 设定绘制地图时所用图块的地图元件的数据。

公共事件 在整个游戏中通用的各种可调用事件的数据。

系统 初期同伴、属性、SE 和用语等各种各样的数据。

这些数据在游戏中基本不重复使用。比如角色中有「初期等级」设定项,然而实际角色在游戏中会成长,等级也会不断上升,从而会使用另外的数据。

编辑数据项目

除外「系统」,各分页的画面都是左右分开,左侧为数据项目的 ID(管理号)和名称目录,右侧显示为该数据项目的内容。编辑数据项目,单击左侧目录选择,再编辑右侧显示的各设定项目。各设定项目的具体意思请参照帮助提示。

数据库窗口中按「F4」、「F5」键,就能在各个数据项目中上下选择。在有很多数据要设定特定项目的情况下,使用该操作能大大提高工作效率。

在数据项目目录中点击右键会出现弹出菜单,可以进行复制和粘贴等操作。在这里选择「批量复制」,会出现指定批量复制项目数的对话框,设定一个要复制的项目数。这将会在从其它工程中转移数据的情况下使用。

更改最大值

要更改数据项目的数量,点击目录下面的「更改最大值」按钮。会显示更改最大值对话框,设定一个从 1 到 999 的数值。

增加最大值会增加游戏运行时必需的内存容量,数据的读写速度也会变慢。最好不要无意义的增加最大值。

如果减少了最大值,那么超过这个数量的项目会被全部删除。

脚本

Ruby 是什么

脚本编辑器

组的操作

编辑操作

脚本的使用方法

掌管游戏运行的简单程序语言称为脚本。

与一般把「显示文章」这样的指令称为脚本的情况不同,RPGXP 把在事件指令之上,更接近程序概念的指令称为脚本。所有事件指令其实不是程序,只有脚本系统解读后才能运行。

脚本的编辑,是针对游戏系统的高级用户提供的功能,难度很高。如果只是制作普通游戏,就没有必要了解。最初的脚本系统完全可以制作不错的游戏,最好只在对默认脚本感到不满意的时候再进行编辑。

Ruby 是什么脚本语言是一种独特的简单语言,RPGXP 采用的是 Ruby 脚本语言。Ruby 的官方网页是 http://www.ruby-lang.org/ 。

Ruby 是松本行弘先生开发的免费软件,描述大规模的游戏也能保持良好性能。是善长文本处理的语言,照原样会加大游戏开发的难度。因此,对游戏开发用途的 Ruby 语言进行了特殊化,这就是 RGSS(Ruby Game Scripting System),中文意思就是 Ruby 游戏脚本系统。详细内容请参照 RGSS 参考。

另外,把 Ruby 标记为 ruby 是充许的,但是不能标记为 RUBY、ルビー或るびー(这两个日语的发音同 Ruby)。

脚本编辑器

在主菜单「工具」菜单中选择「脚本编辑器」。会出现脚本编辑器对话框。

运行像 RPG 这类大规模的游戏需要非常多的脚本程序,所以把全部脚本程序分为多个适当的单位来管理是很重要的。RPGXP 把这个单位称为组。脚本编辑器左侧显示的就是组列表。

脚本编辑器,和数据库有相似的设计便于操作。同数据库一样按「F4」、「F5」键,就能在各个组中上下选择。这里还增加了一个「F6」键,可以取光标当前位置的单词复制为该脚本组的名称。

组的操作

在组名称上点右键会出现弹出菜单。选择「插入」,就会在所选组前面添加一个新的空白组。同样,选择「剪切」和「复制」操作,就能更改组的顺序。

和数据库不同,组不是以 ID 来管理的。而是按照各组在列表中的顺序,从上到下依次运行。游戏开始脚本是列表最下面的“Main”,各种定义完成后实际游戏的运行是从该组开始的。

编辑操作

在右侧文本编辑窗口中点右键,会出现一个弹出菜单如右图。就能进行「剪切」、「复制」、「查找」、「替换」等基本的编辑操作。

文本编辑中还可使用 Ctrl+F 和 Ctrl+G 等快捷键。

如果使用「查找」在编辑的组中没有找到目标,而想对全部脚本组进行文本搜索时,可以在组的弹出菜单中选择「查找」。快捷键是 Ctrl+Shift+F。

脚本的使用方法脚本除了能在脚本编辑器中直接编辑以外还有以下三种使用方法。

在事件指令「脚本」中使用。

在事件指令「条件分歧」的条件中使用。

作为「移动路线」内的指令使用。

比如「调用加入了独立脚本的事件指令」的情况就能使用到脚本。这样或许能设计出各种各样有趣的使用方法。

素材规格

图片素材

自动地图元件说明

窗口皮肤说明

声音素材

RPGXP 可以使用其本身初始的图片和声音素材文件。

在主菜单「工具」菜单中选择「媒体库」,会出现媒体库对话框,可以进行各种素材的导入与导出。向游戏文件夹里直接复制文件也可以,媒体库中还有图片预览功能,对素材不熟悉的话可以使用。

图片素材可以使用 PNG 文件和 JPG 文件。如果是 PNG 文件则必须为 32 位元色彩(Alpha Channel)。

角色(Graphics/Characters)

收录地图上显示的角色图片的文件夹。

一个角色使用一个文件。尺寸任意,以 4 个方向(下、左、右、上)×4 个步行样式合计 16 个样式的规定顺序排列。位图宽高的各 1/4 就作为该角色的尺寸。

战斗者(Graphics/Battlers)

收录战斗画面中显示的角色图片的文件夹。

尺寸任意,但注意最好不要超过 640×320 的战斗画面。而且使用高 40 以下的图片会损害显示出来的清晰度。

动画(Graphics/Animations)

收录主要在战斗画面中显示效果的动画图片的文件夹。

一个个固定大小 192×192 的图片 5 张横向排列为一组,如有必要还可以纵向延长,即成为一整个动画文件。文件的尺寸大小无限制,但因为显示动画速度的关系,最好不要用太大的图片。

图块(Graphics/Tilesets)

收录构成地图的地图元件的文件夹。

一个个固定大小 32×32 的元件图片 8 张横向排列为一组,如有必要还可以纵向延长,即成为一整个图块文件。文件的尺寸大小无限制,但因为显示地图速度的关系,最好不要用太大的图片。

自动地图元件(Graphics/Autotiles)

收录边界自动生成的特殊地图元件的文件夹。

具体请参照自动地图元件说明。

远景(Graphics/Panoramas)

收录地图远处显示的图片(远景)的文件夹。

尺寸大小无限制。但要符合网页壁纸的特点,制作成上下左右能连接的样式。

雾(Graphics/Fogs)

收录地图前显示雾遮盖效果的图片的文件夹。

尺寸大小无限制。但要符合网页壁纸的特点,制作成上下左右能连接的样式。

战斗背景(Graphics/Battlebacks)

是收录战斗画面背景图片的文件夹。

尺寸为 640×320。

图标(Graphics/Icons)

收录技能和物品名称前显示的图标图片的文件夹。

尺寸为 24×24。

标题(Graphics/Titles)

收录标题画面图片的文件夹。

尺寸为 640×480。

游戏结束(Graphics/Gameovers)

收录游戏结束画面图片的文件夹。

尺寸为 640×480。

窗口皮肤(Graphics/Windowskins)

收录合成窗口画面的图片的文件夹。

具体请参照窗口皮肤说明。

图片(Graphics/Pictures)

收录游戏中事件所使用图片的文件夹。

尺寸任意。

切换效果(Graphics/Transitions)

收录游戏运行时指定画面切换效果的图片的文件夹。

必须是尺寸 640×480,灰色阶 256 色的 PNG 文件。按号码从小到大的顺序进行画面的切换。

自动地图元件说明

自动地图元件一般有如右图那样的 12 个基本样式。

A

代表样式。地图元件面板中显示的样式,在其它自动地图元件依存关系判定时使用。

B

边界样式。相同代表样式的自动地图元件紧邻放置在一起时,于边界侧作为边界线。

C

四角边界样式。

D

大范围边界带无边界中央区样式。

想以表现水面效果等动画作地图元件的话,基本结构组必须为横向排列配置。样式数量无限制。

地图动画元件必须是使用基本结构 32×32 的地图元件原样横向排列配置。

窗口皮肤说明

窗口皮肤是如右图那样的 192×128 的图片。通常是使用 32 位元色彩的 PNG 文件。

A

窗口的背景。128×128 的样式,会按照实际窗口的大小而扩大缩小。为了严谨,窗口周围缩小了 2 像素大小。这是为了能自然地看见圆角形窗口。而且一部分窗口中,背景部分只能以半透明显示。由于窗口为半透明,所以图片本身就没有作成半透明的必要。

B

窗口的边框及箭头。四角的 16×16 边框照这样显示,剩下的边框(边框的一部分)在窗口中按 16 像素的设计形状连接。箭头则作为窗口内容滚动的图标使用。

C

指令光标。在窗口内表现选择项目时使用。周围的 2 像素按长宽扩大缩小,剩下的按光标的大小平面显示。

D

暂停标记。在消息窗口中表示等待按钮输入的状态下使用。为 16×16 含 4 种图形的动画。

E

箭头光标。在战斗画面时选择角色和敌人时使用。显示为 32×32 的 2 种样式的交替。这虽然不是窗口的一部分,但放在这个文件夹中会很方便。

声音素材可以使用 MID,OGG,WMA,MP3,WAV 这五种类型的音频文件(MID 格式仅限于 BGM 和 ME)。

BGM(Audio/BGM)

背景音乐(BackGround Music)。主要使用 MID 文件。

BGS(Audio/BGS)

背景声音(BackGround Sound)。主要使用 OGG 文件。

ME(Audio/ME)

效果音乐(Music Effect)。主要使用 MID 文件。

SE(Audio/SE)

效果声音(Sound Effect)。主要使用 OGG 文件。

各文件格式的特点,如以下所示。

MID 是以 DirectMusic Synthesizer 演奏 MIDI 文件。BGM 播放中, MIDI 数据中有控制切换的 111 号,作为乐曲播放到最后重播位置的标记。

OGG 是含有音质和压缩率均优良的音频压缩格式 Ogg Vorbis 数据的文件。但是,RPGXP 中不对应流再生,OGG 文件要全部读取后才开始播放,不适合播放时间较长的乐曲。

WMA 是 Windows Media Player 使用的音频压缩格式。以 DirectShow 播放。和 OGG 不同,对应流再生(一边读取数据一边再生流),所以能播放长时间的乐曲。

MP3 是一种普及率高的音频压缩格式。以 DirectShow 播放。特点和 WMA 相同。

WAV 是 Windows 标准的音频格式。通常无压缩的WAV

先到这了,有什么不明白就去www.66rpg.com吧!很全...