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