RPGツクールXP/VX用のRGSS素材です。
一部英語版対応です。
(A few materials can be used for English RPG MAKER XP/VX.)
競合率はルファーの独断と偏見なのでたまにハズレます。
#==============================================================================
# ■ ダブルプレイヤーモード (分割定義 5)
#------------------------------------------------------------------------------
# 2 つのデータを読み込んで対戦するシーンクラスの定義です。
# ゲーム内で使うには、 $scene = Scene_DoublePlayersLoad.new というスクリプトを
# どこかに挿入する必要があります。
# (C) ルファー
# HP https://tkoolerlufar.pages.dev/
#==============================================================================
#----------------------------------------------------------------------------
# ◆ Scene_DoublePlayersLoad クラス
#----------------------------------------------------------------------------
class Scene_DoublePlayersLoad < Scene_File
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super("1P のファイルを選んでください。")
end
#--------------------------------------------------------------------------
# ● メイン処理
#--------------------------------------------------------------------------
def main
$game_temp = Game_Temp.new
$game_temp.doubleplayers_mode = true
$game_temp.last_file_index = 0
latest_time = Time.at(0)
for i in 0..3
filename = make_filename(i)
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
@player_index = 0
@normal_windowskin = RPG::Cache.windowskin($data_system.windowskin_name)
@decided_windowskin =
RPG::Cache.windowskin($data_system.windowskin_name).clone
@decided_windowskin.hue_change(180)
$game_doubleplayers = []
super
@decided_windowskin.dispose
end
#--------------------------------------------------------------------------
# ● 決定時の処理
#--------------------------------------------------------------------------
def on_decision(filename)
unless FileTest.exist?(filename)
$game_system.se_play($data_system.buzzer_se)
return
end
if @player_index == 0 or @file_index != @p1_index
$game_system.se_play($data_system.load_se)
file = File.open(filename, "rb")
read_save_data(file)
file.close
if @player_index == 2
$game_system.bgm_stop
$game_system.se_play($data_system.battle_start_se)
$game_system.bgm_play(Lfer::DP_BATTLE_BGM)
$scene = Scene_DoublePlayersBattle.new
end
else
$game_system.se_play($data_system.decision_se)
@player_index = 0
$game_doubleplayers[0] = nil
@savefile_windows[@p1_index].windowskin = @normal_windowskin
@help_window.set_text("1P のファイルを選んでください。")
end
end
#--------------------------------------------------------------------------
# ● キャンセル時の処理
#--------------------------------------------------------------------------
def on_cancel
$game_system.se_play($data_system.cancel_se)
if @player_index > 0
@player_index = 0
$game_doubleplayers[0] = nil
@savefile_windows[@p1_index].windowskin = @normal_windowskin
@help_window.set_text("1P のファイルを選んでください。")
else
$game_temp.doubleplayers_mode = false
$scene = Lfer::DP_END_SCENE.new
end
end
#--------------------------------------------------------------------------
# ● セーブデータの読み込み
# file : 読み込み用ファイルオブジェクト (オープン済み)
#--------------------------------------------------------------------------
def read_save_data(file)
until file.eof?
game = Marshal.load(file) rescue break
case game
when Game_Actors then game_actors = game
when Game_Party then game_party = game
end
end
$game_doubleplayers[@player_index] = Game_DoublePlayers.new(game_actors,
game_party, @player_index)
$game_doubleplayers[@player_index].refresh
for actor in $game_doubleplayers[@player_index].actors
actor.recover_all
end
@player_index += 1
@help_window.set_text("2P のファイルを選んでください。")
@savefile_windows[@p1_index = @file_index].windowskin =
@decided_windowskin
end
end
戻る