#============================================================================== # ■ パーティーメンバーの退避&復帰 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 |