设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1802|回复: 3
打印 上一主题 下一主题

[已经解决] 关于战败读档会弹出……

[复制链接]

Lv1.梦旅人

梦石
0
星屑
49
在线时间
202 小时
注册时间
2010-12-16
帖子
156
跳转到指定楼层
1
发表于 2014-8-10 10:29:29 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 550806810 于 2014-8-10 19:36 编辑

P.S. 已经解决

就是这样,下面是脚本。

#==============================================================================
# ■ Scene_Gameover
#------------------------------------------------------------------------------
#  处理游戏结束画面的类。
#==============================================================================

class Scene_Gameover
  #--------------------------------------------------------------------------
  # ● 主处理
  #--------------------------------------------------------------------------
  def main
    # 生成游戏结束图形
    @sprite = Sprite.new
    @sprite.bitmap = RPG::Cache.gameover($data_system.gameover_name)
    # 停止 BGM、BGS
    $game_system.bgm_play(nil)
    $game_system.bgs_play(nil)
    # 演奏游戏结束 ME
    $game_system.me_play($data_system.gameover_me)
    # 执行过渡
    Graphics.transition(120)
    # 主循环
    loop do
      # 刷新游戏画面
      Graphics.update
      # 刷新输入信息
      Input.update
      # 刷新画面情报
      update
      # 如果画面被切换的话就中断循环
      if $scene != self
        break
      end
    end
    # 准备过渡
    Graphics.freeze
    # 释放游戏结束图形
    @sprite.bitmap.dispose
    @sprite.dispose
    # ■■■■■ [战斗失败再挑战]释放战斗失败后的选择窗口 ■■■■■
    if @gameover_command_window != nil
      @gameover_command_window.dispose
    end
    # ■■■■■■■■■■■■■■ END ■■■■■■■■■■■■■■
    # 执行过度
    Graphics.transition(40)
    # 准备过渡
    Graphics.freeze
    # 战斗测试的情况下
    if $BTEST
      $scene = nil
    end
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面
  #--------------------------------------------------------------------------
  def update
   # ■■■■■■■■ [战斗失败再挑战] ■■■■■■■■
    # 如果战斗失败后的选择窗口活动中
    if @gameover_command_window != nil
      @gameover_command_window.update
      # 按下 B 键的情况下
      if Input.trigger?(Input::B)
        # 演奏取消 SE
        $game_system.se_play($data_system.cancel_se)
        # 切换到标题画面
        $scene = Scene_Title.new
        return
      end
      # 按下 C 键的情况下
      if Input.trigger?(Input::C)
        case @gameover_command_window.index
        # 选择[重新挑战]
        when 0
          # 演奏确定 SE
          $game_system.se_play($data_system.decision_se)
          # 再生成临时对像
          $game_temp = Game_Temp.new
          # 再次存档时,光标移到最近存的档案
          latest_time = Time.at(0)
          for i in 0..39
            filename = "Save/Save#{i + 1}.rxdata"
            if FileTest.exist?(filename)
              file = File.open(filename, "r")
              if file.mtime > latest_time
                latest_time = file.mtime
                $game_temp.last_file_index = i
              end
              file.close
            end
          end
          # 读取战斗临时存档
          file = File.open("Save/Battle_Auto_Save.rxdata", "rb")
          # 增加 1 次存档次数
          #(战败后选择再挑战才有实际使用临时存档,故在这里增加,而不是存档时)
          $game_system.save_count += 1
          # 读取描绘存档文件用的角色数据
          $game_map_name      = Marshal.load(file)
          # 读取各种游戏对像
          $game_system        = Marshal.load(file)
          $game_switches      = Marshal.load(file)
          $game_variables     = Marshal.load(file)
          $game_self_switches = Marshal.load(file)
          $game_screen        = Marshal.load(file)
          $game_actors        = Marshal.load(file)
          $game_party         = Marshal.load(file)
          $game_troop         = Marshal.load(file)
          $game_map           = Marshal.load(file)
          $game_player        = Marshal.load(file)
          # 刷新同伴成员
          $game_party.refresh
          # 如果重新挑战对象为地图遇暗敌
          if $fight_again_map == 1
            # 读取敌人队伍ID
            $vs_troop_id      = Marshal.load(file)
          end
          file.close
          # 停止演奏 ME
          Audio.me_stop
          # 还原 BGM、BGS
          $game_system.bgm_play($game_system.playing_bgm)
          $game_system.bgs_play($game_system.playing_bgs)
          # 刷新地图 (执行并行事件)
          $game_map.update
          # 切换到地图画面
          $scene = Scene_Map.new
          return
        # 选择[回去读档]
        when 1
          # 演奏确定 SE
          $game_system.se_play($data_system.decision_se)
          # 切换到标题画面
          $scene = Scene_Title.new  
          return
        end
      end
    # 此外(如果战斗失败后的选择窗口不活动)
    else
      # 不论按下 B 键还是 C 键
      if Input.trigger?(Input::B) or Input.trigger?(Input::C)
      # 如果是战斗失败
        if $game_temp.in_battle == true
          s1 = "   重新挑战"
          s2 = "   返回标题"
          @gameover_command_window = Window_Command.new(192, [s1, s2])
          @gameover_command_window.x = 320 - @gameover_command_window.width / 2
          @gameover_command_window.y = 240 - @gameover_command_window.height / 2
          @gameover_command_window.index = 0
        else # 平时非战斗导致死亡
          # 切换到标题画面
          $scene = Scene_Title.new
          return
        end
      end
    end
    # ■■■■■■■■■■■■■■■■ END ■■■■■■■■■■■■■■■■
  end
end
想成为触的渣一枚Or觉得自己是渣的渣一枚。

Lv1.梦旅人

梦石
0
星屑
49
在线时间
202 小时
注册时间
2010-12-16
帖子
156
2
 楼主| 发表于 2014-8-10 10:45:56 | 只看该作者
#==============================================================================
# ■ Interpreter (分割定义 6)
#------------------------------------------------------------------------------
#  执行事件命令的解释器。本类在 Game_System 类
# 和 Game_Event 类的内部使用。
#==============================================================================

class Interpreter
  #--------------------------------------------------------------------------
  # ● 战斗处理
  #--------------------------------------------------------------------------
  def command_301
    # 如果不是无效的队伍
    if $data_troops[@parameters[0]] != nil
      # ■■■■■■■■ [战斗失败再挑战]战斗前自动存临时档 ■■■■■■■■
      file = File.open("Save/Battle_Auto_Save.rxdata", "wb")
      # ■END■
      # 保存魔法编号
      # (将编辑器保存的值以随机值替换)
      $game_system.magic_number = $data_system.magic_number
      # 写入各种游戏对像
      Marshal.dump($game_system, file)
      Marshal.dump($game_switches, file)
      Marshal.dump($game_variables, file)
      Marshal.dump($game_self_switches, file)
      Marshal.dump($game_screen, file)
      Marshal.dump($game_actors, file)
      Marshal.dump($game_party, file)
      Marshal.dump($game_troop, file)
      Marshal.dump($game_map, file)
      Marshal.dump($game_player, file)
      file.close
      # 关闭地图遇暗敌标记
      $fight_again_map = nil
      # ■■■■■■■■■■■■■■■ END ■■■■■■■■■■■■■■■■
      # 设置中断战斗标志
      $game_temp.battle_abort = true
      # 设置战斗调用标志
      $game_temp.battle_calling = true
      $game_temp.battle_troop_id = @parameters[0]
      $game_temp.battle_can_escape = @parameters[1]
      $game_temp.battle_can_lose = @parameters[2]
      # 设置返回调用
      current_indent = @list[@index].indent
      $game_temp.battle_proc = Proc.new { |n| @branch[current_indent] = n }
    end
    # 推进索引
    @index += 1
    # 结束
    return false
  end
  #--------------------------------------------------------------------------
  # ● 胜利的情况下
  #--------------------------------------------------------------------------
  def command_601
    # 战斗结果为胜利的情况下
    if @branch[@list[@index].indent] == 0
      # 删除分支数据
      @branch.delete(@list[@index].indent)
      # 继续
      return true
    end
    # 不符合条件的情况下 : 指令跳转
    return command_skip
  end
  #--------------------------------------------------------------------------
  # ● 逃跑的情况下
  #--------------------------------------------------------------------------
  def command_602
    # 战斗结果为逃跑的情况下
    if @branch[@list[@index].indent] == 1
      # 删除分支数据
      @branch.delete(@list[@index].indent)
      # 继续
      return true
    end
    # 不符合条件的情况下 : 指令跳转
    return command_skip
  end
还有这个一小段
想成为触的渣一枚Or觉得自己是渣的渣一枚。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
76
在线时间
1379 小时
注册时间
2012-7-5
帖子
1698

开拓者

3
发表于 2014-8-10 18:50:01 | 只看该作者
一看看就觉得像<囧魂>里的没想到真的是= =
使用这个脚本时必须把Scene_File/Load/Save/Window_SaveFile一起使用才行, 或者你自己把有关game_map_name的Marshal的代码删掉也行

点评

谢谢~解决了喵~  发表于 2014-8-10 19:36
不要在意啦,这是自娱自乐的游戏不准备发6R的……因为用的别人的东西太多我……=A=  发表于 2014-8-10 19:29
还有 Game_Map 里的 map_name  发表于 2014-8-10 18:51

评分

参与人数 2星屑 +10 梦石 +1 收起 理由
RyanBern + 1 认可答案
550806810 + 10 认可答案

查看全部评分


  -fk: -azogi:
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-4 03:39

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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