Project1

标题: gameover回到初始地点或读档 [打印本页]

作者: hohbhx2b    时间: 2018-2-19 10:05
标题: gameover回到初始地点或读档
gameover画面可选择回到初始点或读档
作者: mori13    时间: 2018-2-19 10:32
这个呀...在Scene_Gameover 的56行$scene=Scene_Title.new改成$scene=Scene_Load.new就行了吧
作者: 春风莉露    时间: 2018-2-19 10:35
新建场景和窗口,执行内容写入读档的命令等操作
作者: 文雅夕露    时间: 2018-2-19 11:52
随便写了个,有些小问题没有解决。
但战斗中造成的游戏结束可正常返回地图。
其余方面还弄不明白。
先上暂时的脚本:
  1. #==============================================================================
  2. # ■ Scene_Gameover
  3. #------------------------------------------------------------------------------
  4. #  处理游戏结束画面的类。
  5. #==============================================================================

  6. class Scene_Gameover
  7.   #--------------------------------------------------------------------------
  8.   # ● 主处理
  9.   #--------------------------------------------------------------------------
  10.   def main
  11.     # 生成游戏结束图形
  12.     @sprite = Sprite.new
  13.     @sprite.bitmap = RPG::Cache.gameover($data_system.gameover_name)
  14.     # 停止 BGM、BGS
  15.     $game_system.bgm_play(nil)
  16.     $game_system.bgs_play(nil)
  17.     # 演奏游戏结束 ME
  18.     $game_system.me_play($data_system.gameover_me)
  19.     # 执行过渡
  20.     Graphics.transition(120)
  21.     # 生成命令窗口
  22.     s1 = "返回重试"
  23.     s2 = "读取存档"
  24.     s3 = "返回标题"
  25.     s4 = "退出"
  26.     @command_window = Window_Command.new(192, [s1, s2, s3,s4])
  27.     @command_window.back_opacity = 160
  28.     @command_window.x = 320 - @command_window.width / 2
  29.     @command_window.y = 160
  30.     # 判定继续的有效性
  31.     # 存档文件一个也不存在的时候也调查
  32.     # 有効为 @continue_enabled 为 true、无效为 false
  33.     @continue_enabled = false
  34.     for i in 0..3
  35.       if FileTest.exist?("Save#{i+1}.rxdata")
  36.         @continue_enabled = true
  37.       end
  38.     end
  39.     # 继续为有效的情况下、光标停止在继续上
  40.     # 无效的情况下、继续的文字显示为灰色
  41.     if @continue_enabled
  42.       @command_window.index = 1
  43.     else
  44.       @command_window.disable_item(1)
  45.     end
  46.     # 主循环
  47.     loop do
  48.       # 刷新游戏画面
  49.       Graphics.update
  50.       # 刷新输入信息
  51.       Input.update
  52.       # 刷新画面情报
  53.       update
  54.       # 如果画面被切换的话就中断循环
  55.       if $scene != self
  56.         break
  57.       end
  58.     end
  59.     # 准备过渡
  60.     Graphics.freeze
  61.     # 释放游戏结束图形
  62.     @sprite.bitmap.dispose
  63.     @sprite.dispose
  64.     # 释放命令窗口
  65.     @command_window.dispose
  66.     # 执行过度
  67.     Graphics.transition(40)
  68.     # 准备过渡
  69.     Graphics.freeze
  70.     # 战斗测试的情况下
  71.     if $BTEST
  72.       $scene = nil
  73.     end
  74.   end
  75.    #--------------------------------------------------------------------------
  76.   # ● 刷新画面
  77.   #--------------------------------------------------------------------------
  78.   def update
  79.     # 刷新命令窗口
  80.     @command_window.update
  81.     # 按下 C 键的情况下
  82.     if Input.trigger?(Input::C)
  83.       # 命令窗口的光标位置的分支
  84.       case @command_window.index
  85.       when 0  # 返回重试
  86.         command_goto
  87.       when 1  # 继续
  88.         command_continue
  89.       when 2  # 标题
  90.         command_to_title
  91.       when 3  # 退出
  92.         command_shutdown
  93.       end
  94.     end
  95.   end
  96.   #--------------------------------------------------------------------------
  97.   # ● 命令 : 返回重试
  98.   #--------------------------------------------------------------------------
  99.   def command_goto
  100.     # 演奏确定 SE
  101.     $game_system.se_play($data_system.decision_se)
  102.     #全回复
  103.     for actor in $game_party.actors
  104.         actor.recover_all
  105.     end
  106.     #场景移动
  107.     $game_temp.player_transferring = true # 场所移动标示,必须为true才会执行场所移动
  108.     $game_temp.player_new_map_id = 1 # 地图标号
  109.     $game_temp.player_new_x = 1 # 横坐标
  110.     $game_temp.player_new_y = 1 # 纵坐标
  111.     $game_temp.player_new_direction = 15 # 朝向
  112.     # 刷新主角
  113.     $game_player.refresh
  114.     # 执行地图设置的 BGM 与 BGS 的自动切换
  115.     $game_map.autoplay
  116.     # 刷新地图 (执行并行事件)
  117.     $game_map.update
  118.     #等待60帧
  119.     @wait_count = 60
  120.     # 切换到地图
  121.     $scene = Scene_Map.new
  122.      #让gameover赋值nil
  123.     $game_temp.gameover = nil
  124.     # 画面渐变
  125.     Graphics.transition(120)
  126.   end
  127.   #--------------------------------------------------------------------------
  128.   # ● 命令 : 继续
  129.   #--------------------------------------------------------------------------
  130.   def command_continue
  131.     # 继续无效的情况下
  132.     unless @continue_enabled
  133.       # 演奏无效 SE
  134.       $game_system.se_play($data_system.buzzer_se)
  135.       return
  136.     end
  137.     # 演奏确定 SE
  138.     $game_system.se_play($data_system.decision_se)
  139.     # 切换到读档画面
  140.     $scene = Scene_Load.new
  141.   end
  142.   #--------------------------------------------------------------------------
  143.   # ● 选择命令 [返回标题画面] 时的处理
  144.   #--------------------------------------------------------------------------
  145.   def command_to_title
  146.     # 演奏确定 SE
  147.     $game_system.se_play($data_system.decision_se)
  148.     # 淡入淡出 BGM、BGS、ME
  149.     Audio.bgm_fade(800)
  150.     Audio.bgs_fade(800)
  151.     Audio.me_fade(800)
  152.     # 切换到标题画面
  153.     $scene = Scene_Title.new
  154.   end
  155.   #--------------------------------------------------------------------------
  156.   # ● 命令 : 退出
  157.   #--------------------------------------------------------------------------
  158.   def command_shutdown
  159.     # 演奏确定 SE
  160.     $game_system.se_play($data_system.decision_se)
  161.     # BGM、BGS、ME 的淡入淡出
  162.     Audio.bgm_fade(800)
  163.     Audio.bgs_fade(800)
  164.     Audio.me_fade(800)
  165.     # 退出
  166.     $scene = nil
  167.   end
  168. end
复制代码

作者: mori13    时间: 2018-2-19 13:25
文雅夕露 发表于 2018-2-19 11:52
随便写了个,有些小问题没有解决。
但战斗中造成的游戏结束可正常返回地图。
其余方面还弄不明白。

楼上的脚本偶试了下。虽然想用$game_temp.gameover = nil来取消gameover
但是场所移动后,之前执行的游戏结束的事件又会自动执行了,所以才会不断的游戏结束
作者: hohbhx2b    时间: 2018-2-19 18:39
有bug,返回后事件不能继续工作了




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