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

Project1

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

[已经解决] 二周目的腳本不會使用

[复制链接]

Lv1.梦旅人

梦石
0
星屑
70
在线时间
212 小时
注册时间
2011-6-22
帖子
19
跳转到指定楼层
1
发表于 2017-2-13 20:39:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我找到了這個腳本,可是我不會用事件中使用這腳本。

我看了日本人的範例,但還是不懂,求步驟教學。


#==============================================================================
# ■ InheritSet
#------------------------------------------------------------------------------
#  2週目引継ぎの各種設定をします。
#==============================================================================

module InheritSet
#==============================================================================
# ○設定項目
#------------------------------------------------------------------------------
# 2週目引継ぎシステムで利用する用語を設定します。
#
#   VocabInherit      : タイトル画面で表示されるコマンド名(クリア後表示される)
#   VocabClearMark    : クリア後セーブ画面に表示されるマーク
#   VocabLap          : 2週目以降セーブ画面に表示される、何週目かの単位
#   VocabLoadtMessage : 強くてニューゲムを選択したとき、一番上に表示される文
#==============================================================================
  VocabInherit        = "強くてニューゲーム"
  VocabClearMark      = "★"
  VocabLap            = "週目"
  VocabLoadtMessage   = "どのファイルを引き継ぎますか?"
  
#==============================================================================
# 2週目に引継ぐ項目を設定します。
#
# 引継ぐ場合は「true」
# 引継がない場合は「false」を設定します。
# スイッチ及び変数は、引継ぎたい物のみ、[]内にそのIDを羅列してください。
# IDはカンマ「,」で区切って羅列してください。
# ・1と5と6のみ引継ぐ場合 [1,5,6]
# ・何も引継がない場合 []
#==============================================================================
  InheritItem     = true   # アイテム
  InheritWeapon   = true   # 武器 (待機メンバー等、全装備品も含む)
  InheritArmor    = true   # 防具 (待機メンバー等、全装備品も含む)
  InheritStatus   = true   # ステータス(レベル、能力値、経験値、スキル、職業)
  InheritGold     = true   # 所持金
  InheritSteps    = true   # 歩数
  InheritSaves    = true   # セーブ回数
  InheritTime     = true   # プレイ時間
  InheritSwitch   =        # スイッチ (引き継ぎたいスイッチIDを羅列)
    [1,18,19,20,21,22,23,24,25,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76]
  InheritVariable =        # 変数 (引き継ぎたい変数IDを羅列)
    [1]
  
#==============================================================================
# アイテム類を引継ぐ時、一部のアイテムだけ引継ぎたくない場合の設定です。
#
# アイテム、武器、防具の引継ぎたくない物のみ、[]内にそのIDを羅列してください。
# IDはカンマ「,」で区切って羅列してください。
# ・1と5と6のみ引継がない場合 [1,5,6]
# ・全て引継ぐ場合 []
#==============================================================================
  InheritNoItem   =        # アイテム (引き継ぎたくないアイテムIDを羅列)
    [13,36,37]
  InheritNoWeapon =        # 武器 (引き継ぎたくないアイテムIDを羅列)
    []
  InheritNoArmor  =        # 防具 (引き継ぎたくないアイテムIDを羅列)
    []
  
#==============================================================================
# ○設定項目ここまで
#==============================================================================



  #--------------------------------------------------------------------------
  # ● クリア後セーブデータにフラグを立てるイベントコマンドから呼び出し)
  #    一度ロードorセーブしていないと無効
  #--------------------------------------------------------------------------
  def self.clear
    $game_system.clear_flag = true
    filename = "Save#{$game_temp.last_file_index + 1}.rvdata"
    if FileTest.exist?(filename)
      file = File.open(filename, "rb")
      characters           = Marshal.load(file)
      Graphics.frame_count = Marshal.load(file)
      last_bgm             = Marshal.load(file)
      last_bgs             = Marshal.load(file)
      game_system          = Marshal.load(file)
      game_message         = Marshal.load(file)
      game_switches        = Marshal.load(file)
      game_variables       = Marshal.load(file)
      game_self_switches   = 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)
      file.close
      game_system.clear_flag = true
      file = File.open(filename, "wb")
      Marshal.dump(characters,           file)
      Marshal.dump(Graphics.frame_count, file)
      Marshal.dump(last_bgm,             file)
      Marshal.dump(last_bgs,             file)
      Marshal.dump(game_system,          file)
      Marshal.dump(game_message,         file)
      Marshal.dump(game_switches,        file)
      Marshal.dump(game_variables,       file)
      Marshal.dump(game_self_switches,   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
    end
  end
end

#==============================================================================
# ■ Scene_Title
#------------------------------------------------------------------------------
#  タイトル画面の処理を行うクラスです。
#==============================================================================

class Scene_Title < Scene_Base
  #--------------------------------------------------------------------------
  # ● 開始処理
  #--------------------------------------------------------------------------
  alias harts_inherit_start start
  def start
    super
    check_inherit
    harts_inherit_start
  end
  #--------------------------------------------------------------------------
  # ● 2週目引継ぎの有効判定
  #--------------------------------------------------------------------------
  def check_inherit
    for i in 0...4
      @time_stamp = Time.at(0)
      filename = "Save#{i + 1}.rvdata"
      @file_exist = FileTest.exist?(filename)
      if @file_exist
        file = File.open(filename, "r")
        @time_stamp = file.mtime
        begin
          @characters     = Marshal.load(file)
          @frame_count    = Marshal.load(file)
          @last_bgm       = Marshal.load(file)
          @last_bgs       = Marshal.load(file)
          @game_system    = Marshal.load(file)
        rescue
          @file_exist = false
        ensure
          file.close
        end
        if @game_system.clear_flag || @game_system.clear_count > 0
          @inherit_enabled = true
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  alias harts_inherit_update update
  def update
    super
    if !@inherit_enabled
      harts_inherit_update
    else
      @command_window.update
      if Input.trigger?(Input::C)
        case @command_window.index
        when 0    # ニューゲーム
          command_new_game
        when 1    # 強くてニューゲム
          command_inherit
        when 2    # コンティニュー
          command_continue
        when 3    # シャットダウン
          command_shutdown
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● コマンドウィンドウの作成
  #--------------------------------------------------------------------------
  alias harts_inherit_create_command_window create_command_window
  def create_command_window
    if !@inherit_enabled
      harts_inherit_create_command_window
    else
      s1 = Vocab::new_game
      s2 = InheritSet::VocabInherit
      s3 = Vocab::continue
      s4 = Vocab::shutdown
      @command_window = Window_Command.new(260,[s1, s2, s3, s4,])
      @command_window.x = (640 - @command_window.width) / 2
      @command_window.y = 300
      if @continue_enabled                    # コンティニューが有効な場合
        @command_window.index = 2             # カーソルを合わせる
      else                                    # 無効な場合
        @command_window.draw_item(1, false)   # コマンドを半透明表示にする
      end
      @command_window.openness = 0
      @command_window.open
    end
  end
  #--------------------------------------------------------------------------
  # ● コマンド : 強くてニューゲーム
  #--------------------------------------------------------------------------
  def command_inherit
    Sound.play_decision
    $scene = Scene_InheritFile.new
  end
end

#==============================================================================
# ■ Game_System
#------------------------------------------------------------------------------
#  システム周りのデータを扱うクラスです。乗り物や BGM などの管理も行います。
# このクラスのインスタンスは $game_system で参照されます。
#==============================================================================

class Game_System
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :clear_flag               # クリアフラグ
  attr_accessor :clear_count              # クリア回数
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias harts_inherit_initialize initialize
  def initialize
    harts_inherit_initialize
    @clear_flag = false
    @clear_count = 0
  end
end

#==============================================================================
# ■ Window_SaveFile
#------------------------------------------------------------------------------
#  セーブ画面およびロード画面で表示する、セーブファイルのウィンドウです。
#==============================================================================

class Window_SaveFile < Window_Base
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_reader   :game_system                # システム情報
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  alias harts_inherit_refresh refresh
  def refresh
    harts_inherit_refresh
    if @file_exist
      draw_clear_mark
      draw_clear_lap
    end
  end
  #--------------------------------------------------------------------------
  # ● クリアマークの描画
  #--------------------------------------------------------------------------
  def draw_clear_mark
    if @game_system.clear_flag
      self.contents.font.color = normal_color
      self.contents.draw_text(5, 32, 95, WLH, InheritSet::VocabClearMark,2)
    end
  end
  #--------------------------------------------------------------------------
  # ● 週回の描画
  #--------------------------------------------------------------------------
  def draw_clear_lap
    if @game_system.clear_count > 0
      self.contents.font.color = normal_color
      lap = @game_system.clear_count + 1
      mes = lap.to_s + InheritSet::VocabLap
      self.contents.draw_text(0, 0, contents.width - 4, WLH, mes,2)
    end
  end
end

#==============================================================================
# ■ Scene_InheritFile
#------------------------------------------------------------------------------
#  強くてニューゲムするファイルを選択する画面の処理
#==============================================================================

class Scene_InheritFile < Scene_Base
  #--------------------------------------------------------------------------
  # ● 開始処理
  #--------------------------------------------------------------------------
  def start
    super
    create_menu_background
    @help_window = Window_Help.new
    create_savefile_windows
    @index = self.latest_file_index
    @help_window.set_text(InheritSet::VocabLoadtMessage)
    @savefile_windows[@index].selected = true
  end
  #--------------------------------------------------------------------------
  # ● 終了処理
  #--------------------------------------------------------------------------
  def terminate
    super
    dispose_menu_background
    @help_window.dispose
    dispose_item_windows
  end
  #--------------------------------------------------------------------------
  # ● 元の画面へ戻る
  #--------------------------------------------------------------------------
  def return_scene
    $scene = Scene_Title.new
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    super
    update_menu_background
    @help_window.update
    update_savefile_windows
    update_savefile_selection
  end
  #--------------------------------------------------------------------------
  # ● セーブファイルウィンドウの作成
  #--------------------------------------------------------------------------
  def create_savefile_windows
    @savefile_windows = []
    for i in 0..3
      @savefile_windows.push(Window_SaveFile.new(i, make_filename(i)))
    end
    @item_max = 4
  end
  #--------------------------------------------------------------------------
  # ● セーブファイルウィンドウの解放
  #--------------------------------------------------------------------------
  def dispose_item_windows
    for window in @savefile_windows
      window.dispose
    end
  end
  #--------------------------------------------------------------------------
  # ● セーブファイルウィンドウの更新
  #--------------------------------------------------------------------------
  def update_savefile_windows
    for window in @savefile_windows
      window.update
    end
  end
  #--------------------------------------------------------------------------
  # ● セーブファイル選択の更新
  #--------------------------------------------------------------------------
  def update_savefile_selection
    if Input.trigger?(Input::C)
      determine_savefile
    elsif Input.trigger?(Input::B)
      Sound.play_cancel
      return_scene
    else
      last_index = @index
      if Input.repeat?(Input::DOWN)
        cursor_down(Input.trigger?(Input::DOWN))
      end
      if Input.repeat?(Input::UP)
        cursor_up(Input.trigger?(Input::UP))
      end
      if @index != last_index
        Sound.play_cursor
        @savefile_windows[last_index].selected = false
        @savefile_windows[@index].selected = true
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● セーブファイルの決定
  #--------------------------------------------------------------------------
  def determine_savefile
    if @savefile_windows[@index].file_exist
      if @savefile_windows[@index].game_system.clear_flag || @savefile_windows[@index].game_system.clear_count > 0
        Sound.play_load
        do_inherit
      else
        Sound.play_buzzer
        return
      end
    else
      Sound.play_buzzer
      return
    end
    $game_temp.last_file_index = 0
  end
  #--------------------------------------------------------------------------
  # ● カーソルを下に移動
  #     wrap : ラップアラウンド許可
  #--------------------------------------------------------------------------
  def cursor_down(wrap)
    if @index < @item_max - 1 or wrap
      @index = (@index + 1) % @item_max
    end
  end
  #--------------------------------------------------------------------------
  # ● カーソルを上に移動
  #     wrap : ラップアラウンド許可
  #--------------------------------------------------------------------------
  def cursor_up(wrap)
    if @index > 0 or wrap
      @index = (@index - 1 + @item_max) % @item_max
    end
  end
  #--------------------------------------------------------------------------
  # ● ファイル名の作成
  #     file_index : セーブファイルのインデックス (0~3)
  #--------------------------------------------------------------------------
  def make_filename(file_index)
    return "Save#{file_index + 1}.rvdata"
  end
  #--------------------------------------------------------------------------
  # ● タイムスタンプが最新のファイルを選択
  #--------------------------------------------------------------------------
  def latest_file_index
    index = 0
    latest_time = Time.at(0)
    for i in 0...@savefile_windows.size
      if @savefile_windows.time_stamp > latest_time
        latest_time = @savefile_windows.time_stamp
        index = i
      end
    end
    return index
  end
  #--------------------------------------------------------------------------
  # ● 引継ぎの実行
  #--------------------------------------------------------------------------
  def do_inherit
    file = File.open(@savefile_windows[@index].filename, "rb")
    read_save_data(file)
    file.close
    inherit_method                                # 引継ぎ処理
    $game_system.clear_count += 1                 # 何週目か記録
    $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
    $scene = Scene_Map.new
    RPG::BGM.fade(1500)
    Graphics.fadeout(60)
    Graphics.wait(40)
    RPG::BGM.stop
    $game_map.autoplay
  end
  #--------------------------------------------------------------------------
  # ● セーブデータの読み込み
  #     file : 読み込み用ファイルオブジェクト (オープン済み)
  #--------------------------------------------------------------------------
  def read_save_data(file)
    characters           = Marshal.load(file)
    Graphics.frame_count = Marshal.load(file)
    last_bgm             = Marshal.load(file)
    last_bgs             = Marshal.load(file)
    @game_system         = Marshal.load(file)
    @game_message        = Marshal.load(file)
    @game_switches       = Marshal.load(file)
    @game_variables      = Marshal.load(file)
    @game_self_switches  = 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)
  end
  #--------------------------------------------------------------------------
  # ● 引継ぎ内容処理
  #--------------------------------------------------------------------------
  def inherit_method
    $game_system.clear_count = @game_system.clear_count
    $game_party.inherit_item(@game_party)
    $game_party.inherit_weapon(@game_party, @game_actors)
    $game_party.inherit_armor(@game_party, @game_actors)
    $game_party.inherit_gold(@game_party)
    $game_party.inherit_steps(@game_party)
    $game_system.save_count = @game_system.save_count if InheritSet::InheritSaves
    inherit_status
    inherit_switch
    inherit_variable
    Graphics.frame_count = 0 if !InheritSet::InheritTime
  end
  #--------------------------------------------------------------------------
  # ● ステータスの引継ぎ
  #--------------------------------------------------------------------------
  def inherit_status
    if !InheritSet::InheritStatus
      return
    end
    $game_actors = @game_actors
    for i in 0...$game_actors.data.size
      if $game_actors.data != nil
        $game_actors.data.equip_initialize(i)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● スイッチの引継ぎ
  #--------------------------------------------------------------------------
  def inherit_switch
    for i in 0...InheritSet::InheritSwitch.size
      $game_switches[InheritSet::InheritSwitch] = @game_switches[InheritSet::InheritSwitch]
    end
  end
  #--------------------------------------------------------------------------
  # ● 変数の引継ぎ
  #--------------------------------------------------------------------------
  def inherit_variable
    for i in 0...InheritSet::InheritVariable.size
      $game_variables[InheritSet::InheritVariable] = @game_variables[InheritSet::InheritVariable]
    end
  end
end

#==============================================================================
# ■ Game_Party
#------------------------------------------------------------------------------
#  パーティを扱うクラスです。ゴールドやアイテムなどの情報が含まれます。このク
# ラスのインスタンスは $game_party で参照されます。
#==============================================================================

class Game_Party < Game_Unit
  
  #--------------------------------------------------------------------------
  # ● アイテムの引継ぎ
  #--------------------------------------------------------------------------
  def inherit_item(load_party)
    if !InheritSet::InheritItem
      return
    end
    # 引継ぎ
    for item in load_party.items
      number = load_party.item_number(item)
      case item
      when RPG::Item
        @items[item.id] = [[number, 0].max, 99].min
      end
    end
    # 引き継がない項目を削除
    for i in 0...InheritSet::InheritNoItem.size
      @items[InheritSet::InheritNoItem] = 0
    end
  end
  #--------------------------------------------------------------------------
  # ● 武器の引継ぎ
  #--------------------------------------------------------------------------
  def inherit_weapon(load_party, load_actors)
    if !InheritSet::InheritWeapon
      return
    end
    # アイテム引継ぎ
    for item in load_party.items
      number = load_party.item_number(item)
      case item
      when RPG::Weapon
        @weapons[item.id] = [[number, 0].max, 99].min
      end
    end
    # 装備品引継ぎ
    for i in 1..load_actors.data.size
      if load_actors.data != nil
        if load_actors.data.weapon_id != 0
          number = @weapons[load_actors.data.weapon_id]
          number = 0 if number == nil
          @weapons[load_actors.data.weapon_id] = [[number+1, 0].max, 99].min
        end
      end
    end
    # 引き継がない項目を削除
    for i in 0...InheritSet::InheritNoWeapon.size
      @weapons[InheritSet::InheritNoWeapon] = 0
    end
  end
  #--------------------------------------------------------------------------
  # ● 防具の引継ぎ
  #--------------------------------------------------------------------------
  def inherit_armor(load_party, load_actors)
    if !InheritSet::InheritArmor
      return
    end
    # アイテム引継ぎ
    for item in load_party.items
      number = load_party.item_number(item)
      case item
      when RPG::Armor
        @armors[item.id] = [[number, 0].max, 99].min
      end
    end
    # 装備品引継ぎ
    for i in 1..load_actors.data.size
      if load_actors.data != nil
        if load_actors.data.armor1_id != 0
          number = @armors[load_actors.data.armor1_id]
          number = 0 if number == nil
          @armors[load_actors.data.armor1_id] = [[number+1, 0].max, 99].min
        end
        if load_actors.data.armor2_id != 0
          number = @armors[load_actors.data.armor2_id]
          number = 0 if number == nil
          @armors[load_actors.data.armor2_id] = [[number+1, 0].max, 99].min
        end
        if load_actors.data.armor3_id != 0
          number = @armors[load_actors.data.armor3_id]
          number = 0 if number == nil
          @armors[load_actors.data.armor3_id] = [[number+1, 0].max, 99].min
        end
        if load_actors.data.armor4_id != 0
          number = @armors[load_actors.data.armor4_id]
          number = 0 if number == nil
          @armors[load_actors.data.armor4_id] = [[number+1, 0].max, 99].min
        end
      end
    end
    # 引き継がない項目を削除
    for i in 0...InheritSet::InheritNoArmor.size
      @armors[InheritSet::InheritNoArmor] = 0
    end
  end
  #--------------------------------------------------------------------------
  # ● 所持金の引継ぎ
  #--------------------------------------------------------------------------
  def inherit_gold(load_party)
    if !InheritSet::InheritGold
      return
    end
    @gold = load_party.gold
  end
  #--------------------------------------------------------------------------
  # ● 歩数の引継ぎ
  #--------------------------------------------------------------------------
  def inherit_steps(load_party)
    if !InheritSet::InheritSteps
      return
    end
    @steps = load_party.steps
  end
  
end

#==============================================================================
# ■ Game_Actors
#------------------------------------------------------------------------------
#  アクターの配列を扱うクラスです。このクラスのインスタンスは $game_actors で
# 参照されます。
#==============================================================================

class Game_Actors
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_reader :data              # データ
end

#==============================================================================
# ■ Game_Actor
#------------------------------------------------------------------------------
#  アクターを扱うクラスです。このクラスは Game_Actors クラス ($game_actors)
# の内部で使用され、Game_Party クラス ($game_party) からも参照されます。
#==============================================================================

class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● 装備の初期化
  #--------------------------------------------------------------------------
  def equip_initialize(actor_id)
    actor = $data_actors[actor_id]
    @weapon_id = actor.weapon_id
    @armor1_id = actor.armor1_id
    @armor2_id = actor.armor2_id
    @armor3_id = actor.armor3_id
    @armor4_id = actor.armor4_id
    recover_all
  end
end

点评

我去找了一下原出处,你这脚本是VX用的吧?  发表于 2017-2-14 14:44

Lv3.寻梦者

梦石
0
星屑
3372
在线时间
1123 小时
注册时间
2015-12-24
帖子
246
2
发表于 2017-2-14 14:57:39 | 只看该作者
本帖最后由 翠靈月 于 2017-2-14 15:03 编辑

虽然这脚本是VX的不过还是回答一下
请参阅原站压缩档内一同附带的使用方法



※事件指令-脚本填入
InheritSet::clear

借此开启通关FLAG


※条件分歧-脚本填入
$game_system.clear_flag

可作为通关过后才会触发的条件判定

填入
$game_system.clear_count == x

则是作为第(x+1)周目才会触发的条件判定(设定只有二周目触发的话就将x填为1)


填入
$game_system.clear_count > x

则是作为(x+1)周目之后才会触发的条件判定



顺便说,如果需要VA版二周目继承脚本的话
日站Code Crush也有类似的脚本
强くてニューゲーム

评分

参与人数 1梦石 +1 收起 理由
RaidenInfinity + 1 认可答案

查看全部评分

回复 支持 1 反对 0

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
70
在线时间
212 小时
注册时间
2011-6-22
帖子
19
3
 楼主| 发表于 2017-2-14 16:55:24 | 只看该作者
嗯・・・・謝謝您!!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 06:21

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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