幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 10770|回复: 2

[菜鸟视觉研究会]标题画面-改-事件才是王道……

 关闭 [复制链接]

122

主题

3954

帖子

24万

积分

超级版主

传说中的Bunny坑神~!

Rank: 8Rank: 8

积分
244543

声命组铜赏

发表于 2005-6-1 19:14:30 | 显示全部楼层 |阅读模式
XP里面所有的Scene其实都是一个画面……而每张地图也是。因此,标题画面,尽管它完全是由RGSS组成的……它也可以当作地图看待。而且,系统自带标题挡路,这是一个多么碍眼的东西……

=v=其实……完全可以不用担心如何用RGSS写出一个标题,或者花三个小时去参考一个动态标题脚本。我们不需要会写RGSS,我们只需要会删就可以了……

Scene_Title里面的流程其实是:

1载入数据库。

2显示标题背景画面。播放音乐

3显示选择窗口。[在这里判断如果有存档,则“读取进度”选项可选]

4等待玩家选择。

5选择以后分为储存/读取/退出三个分歧。

6分别定义选择以后的效果。

A消除标题图片,音乐等等等……开始新游戏

B进入读取画面

C离开游戏

以上,全部是废话……因为注释里都写着。

但是这么拿出来一看。除了载入数据库……其他都可以删了嘛。=v=

class Scene_Title
  #--------------------------------------------------------------------------
  # ● 住处理
  #--------------------------------------------------------------------------
  def main
    # 战斗测试的情况下
    if $BTEST
      battle_test
      return
    end
    # 载入数据库
    $data_actors        = load_data("Data/Actors.rxdata")
    $data_classes       = load_data("Data/Classes.rxdata")
    $data_skills        = load_data("Data/Skills.rxdata")
    $data_items         = load_data("Data/Items.rxdata")
    $data_weapons       = load_data("Data/Weapons.rxdata")
    $data_armors        = load_data("Data/Armors.rxdata")
    $data_enemies       = load_data("Data/Enemies.rxdata")
    $data_troops        = load_data("Data/Troops.rxdata")
    $data_states        = load_data("Data/States.rxdata")
    $data_animations    = load_data("Data/Animations.rxdata")
    $data_tilesets      = load_data("Data/Tilesets.rxdata")
    $data_common_events = load_data("Data/CommonEvents.rxdata")
    $data_system        = load_data("Data/System.rxdata")
    # 生成系统对像
    $game_system = Game_System.new
    # 生成标题图形
    @sprite = Sprite.new
    @sprite.bitmap = RPG::Cache.title($data_system.title_name)


    # 生成命令窗口
    s1 = "计划发动"
    s2 = "风之分歧"
    s3 = "告别之章"
    @command_window = Window_Command.new(192, [s1, s2, s3])
    @command_window.back_opacity = 160
    @command_window.x = 320 - @command_window.width / 2
    @command_window.y = 288


    # 判定继续的有效性
    # 存档文件一个也不存在的时候也调查
    # 有効为 @continue_enabled 为 true、無効为 false
    @continue_enabled = false
    for i in 0..3
      if FileTest.exist?("Save#{i+1}.rxdata")
        @continue_enabled = true
      end
    end
    # 继续为有效的情况下、光标停止在继续上
    # 无效的情况下、继续的文字显示为灰色
   if @continue_enabled
      @command_window.index = 1
    else
      @command_window.disable_item(1)
    end
    # 演奏标题 BGM
    $game_system.bgm_play($data_system.title_bgm) #可直接在事件里播放音乐
    # 停止演奏 ME、BGS
    Audio.me_stop
    Audio.bgs_stop
    # 执行过渡
    Graphics.transition
    # 主循环
    loop do
      # 刷新游戏画面
      Graphics.update
      # 刷新输入信息
      Input.update
      # 刷新画面
      update
      # 如果画面被切换就中断循环
      if $scene != self
        break
      end
    end
    # 装备过渡
    Graphics.freeze
    # 释放命令窗口
    @command_window.dispose
    # 释放标题图形
    @sprite.bitmap.dispose
    @sprite.dispose

  end
  #--------------------------------------------------------------------------
  # ● 刷新画面
  #--------------------------------------------------------------------------
  def update
   # 刷新命令窗口
    @command_window.update
    # 按下 C 键的情况下
    if Input.trigger?(Input::C)
      # 命令窗口的光标位置的分支
      case @command_window.index
      when 0  # 新游戏
        command_new_game
      when 1  # 继续
        command_continue
      when 2  # 退出
        command_shutdown
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 命令 : 新游戏
  #--------------------------------------------------------------------------
  def command_new_game
    # 演奏确定 SE
    $game_system.se_play($data_system.decision_se)
    # 停止 BGM
    Audio.bgm_stop
    # 重置测量游戏时间用的画面计数器
    Graphics.frame_count = 0
    # 生成各种游戏对像
    $game_temp          = Game_Temp.new
    $game_system        = Game_System.new
    $game_switches      = Game_Switches.new
    $game_variables     = Game_Variables.new
    $game_self_switches = Game_SelfSwitches.new
    $game_screen        = Game_Screen.new
    $game_actors        = Game_Actors.new
    $game_party         = Game_Party.new
    $game_troop         = Game_Troop.new
    $game_map           = Game_Map.new
    $game_player        = Game_Player.new
    # 设置初期同伴位置
    $game_party.setup_starting_members
    # 设置初期位置的地图
    $game_map.setup($data_system.start_map_id)
    # 主角向初期位置移动
    $game_player.moveto($data_system.start_x, $data_system.start_y)
    # 刷新主角
    $game_player.refresh
    # 执行地图设置的 BGM 与 BGS 的自动切换
    $game_map.autoplay
    # 刷新地图 (执行并行事件)
    $game_map.update
    # 切换地图画面
    $scene = Scene_Map.new
  end
  #--------------------------------------------------------------------------
  # ● 命令 : 继续
  #--------------------------------------------------------------------------
  def command_continue
    # 继续无效的情况下
    unless @continue_enabled
      # 演奏无效 SE
      $game_system.se_play($data_system.buzzer_se)
      return
    end
    # 演奏确定 SE
    $game_system.se_play($data_system.decision_se)
    # 切换到读档画面
    $scene = Scene_Load.new
  end
  #--------------------------------------------------------------------------
  # ● 命令 : 退出
  #--------------------------------------------------------------------------
  def command_shutdown
    # 演奏确定 SE
    $game_system.se_play($data_system.decision_se)
    # BGM、BGS、ME 的淡入淡出
    Audio.bgm_fade(800)
    Audio.bgs_fade(800)
    Audio.me_fade(800)
    # 退出
    $scene = nil
  end



#后面是战斗测试,我们忽略它……

---------------------------------------------------------------------

无聊完毕。现在开始说正经的。

红色的部分,是100%删除掉就可以了。

但是需要把
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
  # 刷新命令窗口
  @command_window.update
  # 按下 C 键的情况下
  if Input.trigger?(Input::C)
    # 命令窗口的光标位置的分支
    case @command_window.index
    when 0  # 新游戏
      command_new_game
    when 1  # 继续
      command_continue
    when 2  # 退出
      command_shutdown
    end
  end

end

修改为


#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------

def update
command_new_game
end
#--------------------------------------------------------------------------


这样的话,不需要选择就可以自动进入新游戏……


接下来,是蓝色的部分。可以和红色部分一样删除,但是可以用它来搞搞怪。

这部分原来是用来显示和消除标题图片的……虽然现在可以完全不需要系统定义的标题图片了,但是,在事件标题开始之前自动显示一张图片然后消除图片……这不就是所谓的LOGO了……

现在,简单版的处理完成。接下来要做的只是新建一张地图然后把队伍初始位置设在那里。然后在地图上做事件标题就行了。


[此贴子已经被作者于2005-6-2 0:19:17编辑过]
http://www.nvlmaker.net/
回复

使用道具 举报

122

主题

3954

帖子

24万

积分

超级版主

传说中的Bunny坑神~!

Rank: 8Rank: 8

积分
244543

声命组铜赏

 楼主| 发表于 2005-6-1 19:30:07 | 显示全部楼层
接下来是橙色部分。本来也是删除大吉的,但是为了事件标题,留下榨干它们的价值。

这一个部分,是用来判断是否有存档的。这里的@continue_enabled是一个变量。

但是@开头的变量是不好用在事件操作里的。所以,把@改成$,作为全局变量来使用。    @continue_enabled = false
    for i in 0..3
      if FileTest.exist?(\"Save#{i+1}.rxdata\")
        @continue_enabled = true
      end
    end


修改之后变成这样

    $continue_enabled = false
    for i in 0..3
      if FileTest.exist?(\"Save#{i+1}.rxdata\")
        $continue_enabled = true
      end
    end


这样,在制作事件标题的“读取”一栏时,“条件分歧-脚本$continue_enabled”这个指令的符合和不符合,就可以用来判断读取按钮是否可选了。

然后,我也是做到这里才发现,指令一览里居然没有叫出读取画面这样的命令。= =所以还是不得不用脚本。

不过既然已经把command_continue函数留下来了,马上就可以看出来叫出读取画面的命令是哪个,

就直接把这句当作一条指令。

脚本 : $scene = Scene_Load.new

同样的,退出游戏用的命令就是

脚本:# 演奏确定 SE
    $game_system.se_play($data_system.decision_se)
    # BGM、BGS、ME 的淡入淡出
    Audio.bgm_fade(800)
    Audio.bgs_fade(800)
    Audio.me_fade(800)
    # 退出
    $scene = nil


剩下的就和RGSS完全无关了……要怎么华丽是自己的事。

我还是想说,RGSS哪里有那么神秘高深……惹不起,难道还躲不起么?

[此贴子已经被作者于2005-6-1 19:33:58编辑过]
http://www.nvlmaker.net/
回复 支持 反对

使用道具 举报

20

主题

357

帖子

4300

积分

⑥精研

真·RMXP废柴

积分
4300
发表于 2005-6-2 19:55:38 | 显示全部楼层
那个...经过研究,最后,退出游戏的那个部分好象在我的机器上不可行。
我稍微的改动了一下,CD桑的原文是:
退出游戏用的命令就是
脚本:# 演奏确定 SE
    $game_system.se_play($data_system.decision_se)
    # BGM、BGS、ME 的淡入淡出
    Audio.bgm_fade(800)
    Audio.bgs_fade(800)
    Audio.me_fade(800)
    # 退出
    $scene = nil

但是这样的语句加在事件里的话,在我的机器上会发生脚本运行的错误,所以,我就把这个部分改动了一下,供有和我出现同样问题的人参考:
退出游戏的事件:
停止SE
淡出BGM
淡出BGS
脚本:$scene = nil
这样一来似乎就没问题出现了...[em02]
《非·英雄传说Episode 1.5  —传说的后来—》 ↑ 制作中。别点,不是链接...
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-4-20 01:43 , Processed in 0.023882 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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