パーティーメンバーカスタム in VX



パーティーメンバーの一時退避、初期化、復元が出来ます

※シナリオが複数あってシナリオごとにパーティーメンバーが違うってな場合に便利・・・かも?。

変更点
2011:12:23
・ひとつのパーティーの最大アクター数の制限を解除(VX Ace用)

#==============================================================================
# ■ パーティーメンバーの退避&復帰 in VX by 貪藻矢射妥←
#------------------------------------------------------------------------------
#  パーティーメンバーの一時退避、初期化、復元が出来ます
#  シナリオが複数あってシナリオごとにパーティーメンバーが違うってな場合に
#  便利かも。
#  
#  現行パーティーの一時退避&初期化は
#  party_save(n)
#  (この後別のパーティーを参入させてください。)
#  
#  パーティーを元に戻すには
#  party_return(n)
#  
#  を使用してください。
#  
#  ※注意!
#  party_save(n)を続けざまに2回実行すると当然の如く現行メンバーが
#  全員消失してしまうので注意してください。
#  
#==============================================================================
# 更新っぽいもの
# 2011:12:23
# ・ひとつのパーティーの最大アクター数の制限を解除(VX Ace用)

module PSL
  # パーティーメンバーを退避するデータスロットの最大数
  SAVEMAX  = 10
  # エラーメッセージ
  ERR_MSG_001 = "%sできません"
  ERR_MSG_002 = "パーティー%s箇所が不正です。"
end

class Game_Party
  include PSL
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :save_actors
  
  #--------------------------------------------------------------------------
  # ● 現行パーティーの一時退避&初期化
  #--------------------------------------------------------------------------
  def party_save(n)
    if n < 0 || n > SAVEMAX
      p sprintf(ERR_MSG_001, "セーブ")
    else
      party_save_root(n)
      party_init
    end
  end
  
  #--------------------------------------------------------------------------
  # ● パーティーを元に戻す
  #--------------------------------------------------------------------------
  def party_return(n)
    if n < 0 || n > SAVEMAX
      p sprintf(ERR_MSG_001, "ロード")
    else
      party_init
      party_return_root(n)
    end
  end
  
  #--------------------------------------------------------------------------
  # ● 退避先パーティーの初期化
  #--------------------------------------------------------------------------
  def party_initialize(n)
    if @save_actors == nil
      @save_actors = Array.new(SAVEMAX + 1)
      @save_actors[0] = false
    end
    
    @save_actors[n] = []
  end
  
  #--------------------------------------------------------------------------
  # ● 現行パーティーの保存
  #--------------------------------------------------------------------------
  def party_save_root(n)
    party_initialize(n)
    
    tmp_array = []
    
    for i in 1..$game_party.members.size
      tmp_array[i - 1] = $game_party.members[i - 1].id
    end
    @save_actors[n] = tmp_array
  end
  
  #--------------------------------------------------------------------------
  # ● 現行パーティーの初期化
  #--------------------------------------------------------------------------
  def party_init
    for i in 0...$data_actors.size
      if $data_actors[i] != nil && @actors.include?(i)
        remove_actor(i)
      end
    end
  end
  
  #--------------------------------------------------------------------------
  # ● 現行パーティーの復元
  #--------------------------------------------------------------------------
  def party_return_root(n)
    for i in 0...@save_actors[n].size
      add_actor(@save_actors[n][i])
    end
  end
end

class Game_Interpreter
  #--------------------------------------------------------------------------
  # ● 現行パーティーの一時退避&初期化
  #--------------------------------------------------------------------------
  def party_save(n)
    if n.is_a?(Numeric)
      $game_party.party_save(n)
    else
      p sprintf(ERR_MSG_002, "セーブ")
    end
  end
  #--------------------------------------------------------------------------
  # ● パーティーを元に戻す
  #--------------------------------------------------------------------------
  def party_return(n)
    if n.is_a?(Numeric)
      $game_party.party_return(n)
    else
      p sprintf(ERR_MSG_002, "ロード")
    end
  end
end
party_save(1〜SAVEMAX) で現行パーティーを一時退避したのちに別パーティーを設定してください。 戻す場合は party_return(1〜SAVEMAX) で元に戻ります。 また、薄緑色の部分でデータをセーブする最大の領域を設定することが可能です。 (0番目の領域は予備フラグとして使用) ※注意! party_save(n)を続けざまに2回実行すると当然の如く現行メンバーが全員消失してしまうので注意してください。

戻る