Project1

标题: RGSS1脚本教程 重写!!! [打印本页]

作者: 天地有正气    时间: 2013-12-27 09:10
标题: RGSS1脚本教程 重写!!!
本帖最后由 天地有正气 于 2014-2-17 19:59 编辑

实在太乱了!!!!
我决定重新排版!!!!!

所有教程都拜托P叔删除了,接下来我将重新写一篇!

预计:

改写脚本篇

第一章 标题画面
这一章实现:在标题画面下增加选项,移动位置,点击选项后显示图片。

第二章 菜单画面
这一章实现:新的菜单画面。

第三章 对话窗口
这一章实现:添加新的对话框功能。

动手实践篇

第一章 地图名显示
这一章实现:各种地图名效果。

第二章 人物介绍窗口
这一章实现:自行编写一个状态窗口。

第三章 自己的菜单
这一章实现:重新编写菜单脚本。

第四章 技能书脚本
这一章实现:编写技能书脚本。

第五章 敌人等级系统
这一章实现:给敌人附带等级。

其他的我就不再列出了,毕竟现在一章也没写呢!不过我保证,一定会努力、认真的写的!

但是、更新速度、、不敢保证太快。

text.jpg (111.8 KB, 下载次数: 13)

text.jpg

作者: 天地有正气    时间: 2013-12-27 09:39
本帖最后由 天地有正气 于 2013-12-31 21:19 编辑

第一章:标题画面的美化(1)

大家都知道,RM默认只能是3个选项,怎么变成4个选项呢?本章来告诉你。
我们打开脚本编辑器,找到Scene_Title组,你会发现一大堆“生成XX窗口”,我们找到37行左右的"生成命令窗口",会发现下面写着如下代码。
  1.     # 生成命令窗口
  2.     s1 = "新游戏"
  3.     s2 = "继续"
  4.     s3 = "退出"
  5.     @command_window = Window_Command.new(192, [s1, s2, s3])
  6.     @command_window.back_opacity = 160
  7.     @command_window.x = 320 - @command_window.width / 2
  8.     @command_window.y = 288
复制代码
那么我们就想,这个新游戏继续退出就是对应着标题画面里的那些选项,既然这里有"s1,s2,s3",我们为什么不能添加一个s4呢?
我们在s3后面加上一行。
  1.     s4 = "说明"
复制代码
然后,我们看到下面一行也有s123,我们也相应的添加上。更改后的这段脚本应该如下。
  1.     # 生成命令窗口
  2.     s1 = "新游戏"
  3.     s2 = "继续"
  4.     s3 = "退出"
  5.     @command_window = Window_Command.new(192, [s1, s2, s3, s4])
复制代码
那么这样行不行呢?我们来测试一下,果然,s4已经出来了。但是这个s4没有任何作用,具体怎么添加,我们下一讲再说。

作者: 天地有正气    时间: 2013-12-27 10:08
本帖最后由 天地有正气 于 2014-2-17 19:49 编辑

无效楼层!
作者: 天地有正气    时间: 2013-12-27 12:51
本帖最后由 天地有正气 于 2014-2-17 19:50 编辑

无效楼层!
作者: 喵呜喵5    时间: 2013-12-27 16:02
又见写作RGSS教程的Ruby教程.........
作者: 天地有正气    时间: 2014-1-1 15:09
本帖最后由 天地有正气 于 2014-2-17 19:51 编辑

无效楼层!
作者: 火烧兔子    时间: 2014-1-1 23:35
很不错
边学边实践才能真正掌握住,像我以前看F1的时候,学了好几天,还是没有进入主题结果就放弃了
像LZ这样的,能够现学现卖才能真正的令读者有学习下去的动力
LZ加油更新哟!
作者: zmz6668    时间: 2014-1-1 23:37
加油更新加油更新
作者: 天地有正气    时间: 2014-1-3 20:31
本帖最后由 天地有正气 于 2014-1-5 13:31 编辑

第五章:标题画面的美化(5)

这一章我们接上次的内容,来讲解一下如何使图片淡出淡入。
首先我们要介绍一个语句就是循环的一种——loop do ~ end。
首先请看一个示例~
  1. loop do
  2.   i+=2
  3. p i
  4. end
复制代码
大家千万不要复制到脚本编辑器里~loop do ~end是无限循环,如果执行这段脚本的话,会依次显示2,4,6,8,10,12一直加到无限...通过这个例子,我们知道loop可以进行无限循环,那么我们就可以增加透明度,然后刷新,增加增加透明度,再刷新。
像这样:
  1. loop do
  2.   text.opacity += 10
  3.   Graphics.update
  4. end
复制代码
我们知道,opacity不透明度,用在脚本里XXX的不透明度就是XXX.opacity,这个“.”用的很多,我们可以解释为像英语里的be动词,或者是into,of,with这种没有固定的意义但很重要的单词~   好了,我们继续回归主题,Graphics就是图形的类,F1里有,而“.update”则是调用update方法,刷新一帧。
然后,我们接着看脚本,我们需要添加一点内容,就是条件分歧,当不透明度大于等于255时,跳出循环,跳出循环是break。更改后的脚本如下。
  1. loop do
  2.   text.opacity += 10
  3.   Graphics.update
  4.   if text.opacity >= 255
  5.     break
  6.   end
  7. end
复制代码
这样就完成了。但是并不完美,下一讲将会优化一下。注意,不要忘了一开始设置text.opacity = 0。我把这节课修改过的脚本放出来~
  1.   #--------------------------------------------------------------------------
  2.   # ● 命令 : 说明
  3.   #--------------------------------------------------------------------------
  4.   def command_text
  5.     text = Sprite.new
  6.     text.opacity = 0
  7.     text.bitmap = RPG::Cache.picture("text")
  8.     loop do
  9.       text.opacity += 1
  10.       Graphics.update
  11.       if text.opacity >= 255
  12.         break
  13.       end
  14.      end
  15.   end
复制代码

作者: wang89531734    时间: 2014-1-6 02:30
这个写的不错
作者: 不会脚本    时间: 2014-1-6 17:28
比起教程更像动手改脚本
作者: 紫英晓狼1130    时间: 2014-1-6 19:36
稍稍受不了各位的挑毛病,我觉得很不错
还不如叫脚本脚本我要学呢
作者: alpacanist    时间: 2014-1-6 20:21
已经从高端脚本教程急流勇退的我决定来跟进一下这个入门,楼主加油,希望早日写到改菜单布局TAT
作者: 候鸟swallow    时间: 2014-1-7 01:19
十分感谢楼主大哥的讲解,偶感觉受益匪浅,但是目前偶遇到一个瓶颈,相信也是很多新手的瓶颈
——想要自己读懂slg脚本,却不知从何下手,虽然指令是相同的,但是作为新手还是很难联系很多知识点
希望楼主大哥能出一个简单slg系统的讲解,哪怕是最简单的提出几个要点也会对新手们很有帮助的
作者: 候鸟swallow    时间: 2014-1-7 21:35
非常感谢,感觉总是因为自己自己的理由而麻烦大家真不好意
虽然站里XP的教程多到让人看花眼,但是遗憾的是找不到关于slg系统的任何提示,
希望能指点下
作者: nvvchfc    时间: 2014-1-9 21:57
我最想战旗了;额= =
作者: lanyaolove    时间: 2014-1-9 22:43
@失落迷白 你也要来学学啊 加入我大XP
作者: rpgchina    时间: 2014-1-17 14:33
正在找脚本教程  谢谢分享 先收藏
作者: 天地有正气    时间: 2014-1-30 12:49
第六章 标题画面的美化6

许多天一直没时间弄,所以坑了好久……于是我借着老家电脑上一下,因为电脑上没有之前弄得,所以我也许会讲错,欢迎指正。

我们要做的效果是,当图片显示时,按取消键键退出。
下面是一个条件分歧。
if Input.trigger?(Input::B)
end
这就是按下取消键退出的条件分歧。
我们继续写,
loop do
  Graphics.update
  text.opacity -= 10
  if text.opacity <= 0
    text.bitmap.dispose
    text.dispose
    break
  end
end

dispose是释放,也就是让图片消失。
作者: 恐惧剑刃    时间: 2014-1-31 09:05
教程内容太过容易。
另外我要吐槽下这个标题
脚本这么容易学那请大大教我正则表达式好了

建议LZ好好研究下Array String Hash 这些常用的内部类 把常用方法总结出来,
比这个小教程要好很多
作者: 霜月cis    时间: 2014-1-31 10:11
窝觉得不错啊面向我这种新手还是比较好的入门教程 现在别的不说我好想知道如何改菜单布局_(:з」∠)_应该快更了吧
作者: eve592370698    时间: 2014-1-31 13:39
标题让我想到了癫狂侠客的视频讲解。希望内容不是雷同的。
作者: dengwei    时间: 2014-1-31 13:43
恩恩,还可以,适合新人
作者: meteorrider    时间: 2014-1-31 15:30
看帖回帖是美德~~
作者: 天地有正气    时间: 2014-1-31 20:24
插楼!
第一章已经结束!下一章我准备写如何创建窗口,为更改菜单打下基础。

作者: 天地有正气    时间: 2014-1-31 20:36
第七章  创建第一个窗口(1)

窗口类其实很简单的,我们可以先从在地图上显示一个地图名开始。

首先,请输入一下内容。
class Window_MapName < Window_Base
end
这是创建一个窗口类Window_MapName,关于创建类,可以参考F1帮助手册。
这个 < Window_Base ,是说它是Window_Base子类,这样的好处是可以继承Window_Base的方法,可以方便的创建窗口。
接下来,要做的是在这个类里面添加一个初始化方法,关于方法,也请参考一下F1,这个初始化方法名是固定的,叫做initialize

def initialize
    super(0,0,160,80)
end
这是添加initialize方法的代码,其中super是继承父类的参数,意义是(x,y,width,height),这就是窗口的基本属性。
我们在地图上新建一个事件,在里面输入事件脚本"$w = Window_MapName.new",这些代码的意义可以暂且不管,是生成实例的。接下来通过独立开关调至第二页,选“并行处理”,里面用事件脚本,“$w.update”,调用了Window_MapName的update刷新方法。说道这里可能有点混乱了,我想以最简单的语言来解释一下生成实例。$w是一个变量,用它生成了Window_MapName的实例,就相当于把$w代入了这个窗口,$w就变成了这个窗口了,所以可以用update方法来刷新,因为它继承了父类Window_Base的方法,所以update是调用Window_Base的update方法。

本讲结束。可能有错误,欢迎指正!
作者: 天地有正气    时间: 2014-2-1 19:59
第八章  创建第一个窗口(2)

在上次的super后面,插入两行。
self.contents = Bitmap.new(width - 32, height - 32)
refresh
第一行暂且不管,窗口类必定有的,第二行是调用refresh方法。接下来就定义一下refresh方法。
关于方法的定义,是用def~end语句,具体请参考F1帮助手册。

def refresh
    self.contents.clear
end
这里面的clear是清除的意思,是bitmap类的方法。因为刚刚那句脚本,self.contents变成了Bitmap类的实例,就拥有
了bitmap类的方法。bitmap类的方法很多,可以打开F1 -> RGSS参考 -> 游戏库 -> RGSS内部类 -> Bitmap,会看到许多东西。
其中,我们现在要用到的是clear方法draw_text方法,这也是Bitmap类里中很重要的方法。

为什么要clear呢?因为接下来我们要用draw_text描绘文字,每次刷新一遍的话,会反复描绘,所以,在描绘之前要先清除一下。
我们来看draw_text。
draw_text(x, y, width, height, str[, align])

参考注释,就能明白了。
我们可以这样写:
self.contents.draw_text(0,0,66,22,"新手村")
有人可能问了,为什么宽度是66?因为“新手村”所占的字符宽度是66,至于是怎么算出来的,以后再说,22是文字初始的高度。

打开游戏测试一下,应该成功了。
  1. # 本章代码
  2. def refresh
  3.     self.contents.clear
  4.     self.contents.draw_text(0,0,66,22,"新手村")
  5. end
复制代码

作者: 天地有正气    时间: 2014-2-1 22:10
第九章  创建第一个窗口3

这一节主要是讲上一次是如何得出那个66的 = = 刚刚发现和66rpg的66一样..好吉利 = =

大家可以打开帮助,找到Bitmap,看到最后面有一个方法。
  1. text_size(str)
  2. 取得以 draw_text 方法描绘字符串 str 的矩形(Rect)。但是,不包含斜体的部分。
复制代码
我就是用这个方法得到的..

用法一:在开始游戏之前临时建立一个Bitmap类的实例,调用该方法得到宽度。
代码:
text = Bitmap.new(1,1).text_size("新手村").width
p text
exit
临时建立一个宽1长1的Bitmap,调用方法。

用法二:在窗口里使用该方法。
代码:
def refresh
    self.contents.clear
    w = self.contents.text_size("新手村").width
    draw_text(0,0,w,22,"新手村")
end

用法三(重点):
在draw_text(x,y,width,height)后面,有
draw_text(rect, str[, align])

这里用到了Rect类(矩形),可以直接利用text_size获得矩形。
代码:
w = self.contents.text_size("新手村")
draw_text(w,"新手村")

好了,上面那些纯属非重点,重点从这里开始 = =

既然“新手村”是不会变的,那么为什么要反复描绘呢?
我们现在就要让它“变”起来,我们要将“新手村”换成当前队伍里一号角色的名字
首先介绍一个非常有用的东西,内嵌表达式
在F1帮助里也有,就是可以在字符串里以“#{变量名}”的方式代入变量。
于是可以得到下面的东西。
  1. def refresh
  2.     self.contents.clear
  3.     @name = $game_party.actors[0].name # 变量@name代入一号角色名字
  4.     self.contents.draw_text(0,0,text_size(@name).width,text_size(@name).height,"#{@name}")
  5. end
复制代码
好了,本章结束 = = 由于本章未经测试,可能有误,欢迎批评指正!我会塞最大的糖表示感谢(虽然只有30)!
作者: 天地有正气    时间: 2014-2-2 09:29
第十章  如何创建一个窗口4

这次来说说如何在窗口中显示图标什么的。
rect
取得位图的矩形(Rect)。

blt(x, y, src_bitmap, src_rect[, opacity])
传送 src_bitmap 的矩形 src_rect(Rect)到该位图的座标(x,y)。

opacity 指定其不透明度,范围为 0 ~ 255。

这是F1帮助手册里的内容。我来简单解释一下,为什么要有个“矩形”。
比如说,一张标题图片是640*480,而矩形就是它的显示范围,如果矩形是120*120,那就只会显示120*120的图片。

上一次不是显示了个角色姓名吗?这一次就加一个图标。
self.contents.blt(66,0,Bitmap.new("001-Weapon01"),Rect.new(0,0,24,24))
我们来解释一下。
66是X坐标,0是Y坐标,Bitmap.new就是一个实例,显示图片,Rect.new是矩形的实例,从图标的x0,y0位置也就是左上角开始,截取24*24的像素。

大家运行一下试试看吧。
作者: 天地有正气    时间: 2014-2-2 09:39
本帖最后由 天地有正气 于 2014-2-2 11:13 编辑

第十一章  如何创建一个窗口5

这一节主要说一下血条的绘制。Bitmap类里面有一个方法,是专门用来填充颜色的。
fill_rect(x, y, width, height, color)
fill_rect(rect, color)
以 color(Color)颜色填充该位图的矩形(x,y,width,height)或 rect(Rect)。


我们把refresh方法中,除了self.contents.clear之外的内容都删光,开始编写血条。
编写之前,有必要了解一下血条的宽度是怎么算出来的,下面这句我认为是最好的写法,简介明了。
w = self.width * $game_party.actors[0].hp / [$game_party.actors[0].maxhp,1].max

然后,开始用fill_rect编写一个血条。
两种方法:
1.self.contents.fill_rect(0,0,w,20,Color.new(255,0,0,220))。
2.self.contents.fill_rect(Rect.new(0,0,w,20),Color.new(255,0,0,220))

至于边框,也是用fill_rect描绘,注意一条边一条边的描绘。
作者: cxyhn    时间: 2014-2-2 13:56
LZ辛苦了。写的很好!支持一个
作者: 你最珍贵    时间: 2014-2-3 00:39
一讲能写长点么……
作者: 天地有正气    时间: 2014-2-6 19:31
插个楼!普通窗口已经讲完了,接下来该美化菜单了!不过我会先说说场景类基础,希望有哪位好人能够提供一个菜单排版!
作者: 天地有正气    时间: 2014-2-6 19:39
第十二章  场景类基础

本章咱们来看看场景类(Scene_Xxx)是如何构成的~

场景类可以说是一个容器吧,我们先写好各种窗口(Window_Xxx)、对象(Game_Xxx)然后,这些最后都在场景里集合。

默认的F1帮助已经给出了最最基础的场景类脚本,我们来看看。
  1. class Scene_Xxxx
  2.   def main
  3.     Graphics.transition
  4.     loop do
  5.       Graphics.update
  6.       Input.update
  7.       update
  8.       if $scene != self
  9.         break
  10.       end
  11.     end
  12.     Graphics.freeze
  13.   end
  14.   def update
  15.   end
  16. end
复制代码
这就是一个场景类最原始的状态。

然后,我给这个基础的东西再添加一下。
  1. class Scene_Xxxx
  2.   def main
  3. # ================
  4. # 这里生成窗口等。
  5. # 例:[url=home.php?mod=space&uid=37298]@Window[/url] = Window_Base.new(0,0,90,90)
  6. # ================
  7.     Graphics.transition
  8.     loop do
  9.       Graphics.update
  10.       Input.update
  11.       update
  12.       if $scene != self
  13.         break
  14.       end
  15.     end
  16.     Graphics.freeze
  17. # ----------------------------
  18. # 这里释放一些东西。
  19. # 例:@window.dispose
  20. # ----------------------------
  21.   end
  22.   def update
  23. # 刷新
  24. # 例:@window.update
  25.   end
  26. end
复制代码

作者: 天地有正气    时间: 2014-2-7 17:19
第十三章  解析默认菜单

其实我准备直接出修改菜单来着……但是实在想不出排版……于是先弄个这个。

希望有人能给我个菜单排版啊……………………

不知道又没用讲过new方法,它是Class类的方法,以下摘自F1帮助。

new( ... )
生成并返回类的实例。该方法的参数,包括块参数在内,都会被传给 initialize。


所以xxx = Xxx_Xxx.new是生成实例。

以下是正文部分。

首先,是用class~end定义类,随后,可以看到有一个initialize方法。

因为附带了一个参数,所以调用菜单时需要一个参数。

接下来是主要部分,main方法,场景类必须有main方法。

先看这部分。

    # 生成命令窗口
    s1 = $data_system.words.item
    s2 = $data_system.words.skill
    s3 = $data_system.words.equip
    s4 = "状态"
    s5 = "存档"
    s6 = "结束游戏"
    @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])
    @command_window.index = @menu_index
    # 同伴人数为 0 的情况下
    if $game_party.actors.size == 0
      # 物品、特技、装备、状态无效化
      @command_window.disable_item(0)
      @command_window.disable_item(1)
      @command_window.disable_item(2)
      @command_window.disable_item(3)
    end
    # 禁止存档的情况下
    if $game_system.save_disabled
      # 存档无效
      @command_window.disable_item(4)
    end

一行一行慢慢来。

s1、2、3、4、5、6分别代入字符串,接下来用@command_window这个变量生成Window_Command的实例。

这个160是宽度,翻翻Window_Command就知道了。

然后是index,index是Window_Selectable类的属性,因为Window_Command是Window_Selectable的子类,所以有了这个属性。

再看:$game_party.actors.size这个全局变量代表着队伍人数,$game_party是Game_Party的实例,是在Scene_Title里生成的。

@command_window.disable_item是Window_Command类的方法,用来无效选项。

$game_system是Game_System的实例,找到Game_System,就能看到用attr_accessor定义了几个实例变量,至于实例变量是个什么东西,以后

讲解默认脚本时会提到。这个save_disabled也是那几个变量中的一个。

    # 生成游戏时间窗口
    @playtime_window = Window_PlayTime.new
    @playtime_window.x = 0
    @playtime_window.y = 224
    # 生成步数窗口
    @steps_window = Window_Steps.new
    @steps_window.x = 0
    @steps_window.y = 320
    # 生成金钱窗口
    @gold_window = Window_Gold.new
    @gold_window.x = 0
    @gold_window.y = 416
    # 生成状态窗口
    @status_window = Window_MenuStatus.new
    @status_window.x = 160
    @status_window.y = 0

继续讲解。

这些都是用变量生成实例。x,y是Window类的属性,可以参考F1 里的Window。

这四个窗口也是预先定义好的,从脚本编辑器往上翻翻Window_Xxx的类就能看见,其余几个都没什么可说的,关键是

这个Window_MenuStatus需要好好说说,不过,我们先暂且放一放。

剩下的main里的内容就是我们上次说过的Scene场景类的基础,一定要写。

那些dispose都是释放(消失),如果不释放,那么这些窗口将会一直存在。

然后继续看。

  #--------------------------------------------------------------------------
  # ● 刷新画面
  #--------------------------------------------------------------------------
  def update
    # 刷新窗口
    @command_window.update
    @playtime_window.update
    @steps_window.update
    @gold_window.update
    @status_window.update
    # 命令窗口被激活的情况下: 调用 update_command
    if @command_window.active
      update_command
      return
    end
    # 状态窗口被激活的情况下: 调用 update_status
    if @status_window.active
      update_status
      return
    end
  end

首先是调用各个窗口的update方法(大都是继承了Window_Base的)。

active也是Window类的属性,表示激活状态。为true则表示激活,为false表示不激活。

什么意思呢?比如说,@command_window的active是false,那么那个一闪一闪的表示被选择项的透明框框就会停止闪动。

然后再看。

  #--------------------------------------------------------------------------
  # ● 刷新画面 (命令窗口被激活的情况下)
  #--------------------------------------------------------------------------
  def update_command
    # 按下 B 键的情况下
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 切换的地图画面
      $scene = Scene_Map.new
      return
    end
    # 按下 C 键的情况下
    if Input.trigger?(Input::C)
      # 同伴人数为 0、存档、游戏结束以外的场合
      if $game_party.actors.size == 0 and @command_window.index < 4
        # 演奏冻结 SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # 命令窗口的光标位置分支
      case @command_window.index
      when 0  # 物品
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 切换到物品画面
        $scene = Scene_Item.new
      when 1  # 特技
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 激活状态窗口
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 2  # 装备
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 激活状态窗口
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 3  # 状态
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 激活状态窗口
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 4  # 存档
        # 禁止存档的情况下
        if $game_system.save_disabled
          # 演奏冻结 SE
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 切换到存档画面
        $scene = Scene_Save.new
      when 5  # 游戏结束
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 切换到游戏结束画面
        $scene = Scene_End.new
      end
      return
    end
  end

$game_system.se_play都是Game_System里的方法,作用是播放se,$scene = Xxx都是切换场景用的。

return是结束函数(方法?)处理的命令。

case when end是条件分歧语句,不知道的童鞋请看F1默认帮助,我就不信你看不懂条件分歧~

然后继续。

  #--------------------------------------------------------------------------
  # ● 刷新画面 (状态窗口被激活的情况下)
  #--------------------------------------------------------------------------
  def update_status
    # 按下 B 键的情况下
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 激活命令窗口
      @command_window.active = true
      @status_window.active = false
      @status_window.index = -1
      return
    end
    # 按下 C 键的情况下
    if Input.trigger?(Input::C)
      # 命令窗口的光标位置分支
      case @command_window.index
      when 1  # 特技
        # 本角色的行动限制在 2 以上的情况下
        if $game_party.actors[@status_window.index].restriction >= 2
          # 演奏冻结 SE
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 切换到特技画面
        $scene = Scene_Skill.new(@status_window.index)
      when 2  # 装备
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 切换的装备画面
        $scene = Scene_Equip.new(@status_window.index)
      when 3  # 状态
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 切换到状态画面
        $scene = Scene_Status.new(@status_window.index)
      end
      return
    end
  end

这是角色选择的窗口,@status_window.index就是你选择的角色在$game_party.actors[]里的编号,以此来传递各个Scene类的参数。

恩,本章结束。因为已经解析过Scene_Menu了所以以后解析默认脚本就不会再额外解析Scene_Menu了~

作者: 天地有正气    时间: 2014-2-17 19:53
本帖最后由 天地有正气 于 2014-2-18 19:38 编辑

@protossonny
因为实在是太混乱了,我自己都看不下去了!
所以,请P叔帮忙把所有的教程都删除!我想重新编写!

0.0真神奇啊。
@protosssonny
作者: DayNight白夜    时间: 2014-8-27 13:37
无效楼层是怎么回事,这篇帖子对我来说很重要啊……




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