大概就是这样的流程,用开关控制剧情这个还好,但是却忽然想起来,事件标题相当于新游戏而不是载入存档问下怎么能让事件标题实现像这样流程的多周目? ...
taroxd 发表于 2014-12-24 12:28 https://rpg.blue/home.php?mod=space&uid=291206&do=blog&id=11794
查看全部评分
tseyik 发表于 2014-12-24 11:26 ゲーム内共有変数 =begin ★ゲーム内共有変数★
=begin ★ゲーム内共有変数★ 設定箇所で指定したスイッチと変数を、 セーブファイルの違いなど関係なく、ゲーム全体で共有します。 素材の一番下に挿入することをオススメします。 ● 仕様 ●========================================================== スクリプト導入後にセーブするとゲームフォルダ内に新しく "PublicData" というrvdataファイルが自動的に作成されます。 -------------------------------------------------------------------- 共有データセーブのタイミングは、通常のセーブ時&シャットダウン時(設定可)、 共有データロードのタイミングは、通常のロード時&ゲーム立ち上げ時です。 -------------------------------------------------------------------- ゲーム立ち上げ時にも共有データファイルをロードするため、 タイトル画面にも変数やスイッチが反映されます。 ==================================================================== ● 注意 ●========================================================== PublicData.rvdataが作成された後に、このスクリプトの設定を変更した場合、 ロード時にエラーを吐くことがあります。 その場合は、古いPublicData.rvdataを削除してからゲームを起動してください。 ==================================================================== ● イベントについて ●============================================== イベントコマンドのスクリプトに、 PUBLIC_DATA.write_public_data と記述すると、任意のタイミングで共有データのセーブを行うことができます。 エンディング時などにどうぞ。 -------------------------------------------------------------------- また、この記述をスクリプトエディタの任意の箇所にすると、 そのタイミングで共有データのセーブを行います。 戦闘終了後強制セーブなど、スクリプトができる人はどうぞ改造に。 ==================================================================== ※「スクリプト内グローバル変数」の部分に限り、 サポート対象外とさせていただきます。ゴメンネ。 ver1.01 Last Update : 2011/12/14 12/14 : ソースコードの見直し ----------------------2011-------------------------- 04/08 : 新規 ----------------------2009-------------------------- ろかん [url]http://kaisou-ryouiki.sakura.ne.jp/[/url]=end module PUBLIC_DATA#----------------------------------------------------------------------------# ● 設定箇所ここから#---------------------------------------------------------------------------- # 共有するスイッチ番号 (例 : SWITCH = [3, 7, 12]) SWITCH = [] # 共有する変数番号 (例 : VARIABLE = [1, 6]) VARIABLE = [] # 通常のセーブと同時に共有データのセーブも行うかどうか(true/ false) S_AUTOSAVE = true # シャットダウンと同時に共有データのセーブも行うかどうか(true/ false) D_AUTOSAVE = true#==========================================================================# ● 以下、スクリプトが少しわかる人向け設定箇所#========================================================================== # 共有する変数の書き込み def self.public_script_global_variable_save(file_name) # Marshal.dump($abc, file_name) # このような形で追加 $abcの部分を変更 end # 共有する変数の読み込み def self.public_script_global_variable_load(file_name) # $abc = Marshal.load(file_name) # このような形で追加 $abcの部分を変更 end#----------------------------------------------------------------------------# ● 設定箇所ここまで#----------------------------------------------------------------------------end $rsi ||= {}$rsi["ゲーム内共有変数"] = true #==============================================================================# ■ PUBLIC_DATA#------------------------------------------------------------------------------# 共有データの書き込み、読み込みを実行するモジュール#==============================================================================module PUBLIC_DATA # 共有データファイル名 FILE_NAME = "PublicData" #-------------------------------------------------------------------------- # ● 共有データの書き込み #-------------------------------------------------------------------------- def self.write_public_data file = File.open("#{FILE_NAME}.rvdata", "wb") $public ||= {} $public[0] = SWITCH $public[1] = VARIABLE Marshal.dump($public, file) $public[0].each{|i| Marshal.dump($game_switches[i], file)} $public[1].each{|i| Marshal.dump($game_variables[i], file)} public_script_global_variable_save(file) file.close end #-------------------------------------------------------------------------- # ● 共有データの読み込み #-------------------------------------------------------------------------- def self.read_public_data if File.exist?("#{FILE_NAME}.rvdata") file = File.open("#{FILE_NAME}.rvdata", "rb") $public = Marshal.load (file) $public[0].each{|i| $game_switches[i] = Marshal.load(file) if SWITCH.include?(i) } $public[1].each{|i| $game_variables[i] = Marshal.load(file) if VARIABLE.include?(i) } public_script_global_variable_load(file) file.close end endend class Scene_Title < Scene_Base #-------------------------------------------------------------------------- # ● 各種ゲームオブジェクトの作成 #-------------------------------------------------------------------------- alias public_data_create_game_objects create_game_objects def create_game_objects public_data_create_game_objects PUBLIC_DATA.read_public_data end #-------------------------------------------------------------------------- # ● コマンド : シャットダウン #-------------------------------------------------------------------------- alias public_data_command_shutdown command_shutdown def command_shutdown PUBLIC_DATA.write_public_data if PUBLIC_DATA::D_AUTOSAVE public_data_command_shutdown endend class Scene_File < Scene_Base #-------------------------------------------------------------------------- # ● セーブの実行 #-------------------------------------------------------------------------- alias pablic_save do_save def do_save PUBLIC_DATA.write_public_data if PUBLIC_DATA::S_AUTOSAVE pablic_save end #-------------------------------------------------------------------------- # ● ロードの実行 #-------------------------------------------------------------------------- alias pablic_load do_load def do_load pablic_load PUBLIC_DATA.read_public_data endend class Scene_End < Scene_Base #-------------------------------------------------------------------------- # ● コマンド [シャットダウン] 選択時の処理 #-------------------------------------------------------------------------- alias shutdown_public_save command_shutdown def command_shutdown PUBLIC_DATA.write_public_data if PUBLIC_DATA::D_AUTOSAVE shutdown_public_save endend
=begin ★ゲーム内共有変数★ 設定箇所で指定したスイッチと変数を、 セーブファイルの違いなど関係なく、ゲーム全体で共有します。 素材の一番下に挿入することをオススメします。 ● 仕様 ●========================================================== スクリプト導入後にセーブするとゲームフォルダ内に新しく "PublicData" というrvdataファイルが自動的に作成されます。 -------------------------------------------------------------------- 共有データセーブのタイミングは、通常のセーブ時&シャットダウン時(設定可)、 共有データロードのタイミングは、通常のロード時&ゲーム立ち上げ時です。 -------------------------------------------------------------------- ゲーム立ち上げ時にも共有データファイルをロードするため、 タイトル画面にも変数やスイッチが反映されます。 ==================================================================== ● 注意 ●========================================================== PublicData.rvdataが作成された後に、このスクリプトの設定を変更した場合、 ロード時にエラーを吐くことがあります。 その場合は、古いPublicData.rvdataを削除してからゲームを起動してください。 ==================================================================== ● イベントについて ●============================================== イベントコマンドのスクリプトに、 PUBLIC_DATA.write_public_data と記述すると、任意のタイミングで共有データのセーブを行うことができます。 エンディング時などにどうぞ。 -------------------------------------------------------------------- また、この記述をスクリプトエディタの任意の箇所にすると、 そのタイミングで共有データのセーブを行います。 戦闘終了後強制セーブなど、スクリプトができる人はどうぞ改造に。 ==================================================================== ※「スクリプト内グローバル変数」の部分に限り、 サポート対象外とさせていただきます。ゴメンネ。 ver1.01 Last Update : 2011/12/14 12/14 : ソースコードの見直し ----------------------2011-------------------------- 04/08 : 新規 ----------------------2009-------------------------- ろかん [url]http://kaisou-ryouiki.sakura.ne.jp/[/url] =end module PUBLIC_DATA #---------------------------------------------------------------------------- # ● 設定箇所ここから #---------------------------------------------------------------------------- # 共有するスイッチ番号 (例 : SWITCH = [3, 7, 12]) SWITCH = [] # 共有する変数番号 (例 : VARIABLE = [1, 6]) VARIABLE = [] # 通常のセーブと同時に共有データのセーブも行うかどうか(true/ false) S_AUTOSAVE = true # シャットダウンと同時に共有データのセーブも行うかどうか(true/ false) D_AUTOSAVE = true #========================================================================== # ● 以下、スクリプトが少しわかる人向け設定箇所 #========================================================================== # 共有する変数の書き込み def self.public_script_global_variable_save(file_name) # Marshal.dump($abc, file_name) # このような形で追加 $abcの部分を変更 end # 共有する変数の読み込み def self.public_script_global_variable_load(file_name) # $abc = Marshal.load(file_name) # このような形で追加 $abcの部分を変更 end #---------------------------------------------------------------------------- # ● 設定箇所ここまで #---------------------------------------------------------------------------- end $rsi ||= {} $rsi["ゲーム内共有変数"] = true #============================================================================== # ■ PUBLIC_DATA #------------------------------------------------------------------------------ # 共有データの書き込み、読み込みを実行するモジュール #============================================================================== module PUBLIC_DATA # 共有データファイル名 FILE_NAME = "PublicData" #-------------------------------------------------------------------------- # ● 共有データの書き込み #-------------------------------------------------------------------------- def self.write_public_data file = File.open("#{FILE_NAME}.rvdata", "wb") $public ||= {} $public[0] = SWITCH $public[1] = VARIABLE Marshal.dump($public, file) $public[0].each{|i| Marshal.dump($game_switches[i], file)} $public[1].each{|i| Marshal.dump($game_variables[i], file)} public_script_global_variable_save(file) file.close end #-------------------------------------------------------------------------- # ● 共有データの読み込み #-------------------------------------------------------------------------- def self.read_public_data if File.exist?("#{FILE_NAME}.rvdata") file = File.open("#{FILE_NAME}.rvdata", "rb") $public = Marshal.load (file) $public[0].each{|i| $game_switches[i] = Marshal.load(file) if SWITCH.include?(i) } $public[1].each{|i| $game_variables[i] = Marshal.load(file) if VARIABLE.include?(i) } public_script_global_variable_load(file) file.close end end end class Scene_Title < Scene_Base #-------------------------------------------------------------------------- # ● 各種ゲームオブジェクトの作成 #-------------------------------------------------------------------------- alias public_data_create_game_objects create_game_objects def create_game_objects public_data_create_game_objects PUBLIC_DATA.read_public_data end #-------------------------------------------------------------------------- # ● コマンド : シャットダウン #-------------------------------------------------------------------------- alias public_data_command_shutdown command_shutdown def command_shutdown PUBLIC_DATA.write_public_data if PUBLIC_DATA::D_AUTOSAVE public_data_command_shutdown end end class Scene_File < Scene_Base #-------------------------------------------------------------------------- # ● セーブの実行 #-------------------------------------------------------------------------- alias pablic_save do_save def do_save PUBLIC_DATA.write_public_data if PUBLIC_DATA::S_AUTOSAVE pablic_save end #-------------------------------------------------------------------------- # ● ロードの実行 #-------------------------------------------------------------------------- alias pablic_load do_load def do_load pablic_load PUBLIC_DATA.read_public_data end end class Scene_End < Scene_Base #-------------------------------------------------------------------------- # ● コマンド [シャットダウン] 選択時の処理 #-------------------------------------------------------------------------- alias shutdown_public_save command_shutdown def command_shutdown PUBLIC_DATA.write_public_data if PUBLIC_DATA::D_AUTOSAVE shutdown_public_save end end
=begin RGSS3 ★ スタートコマンド拡張 ★ タイトルコマンドを増やし複数のマップからゲームを開始することができます。 おまけの追加などにどうぞ。 ● 仕様 ●========================================================== これはタイトル画面から複数のマップに飛ばすことを可能にするものです。 -------------------------------------------------------------------- これ自体にサウンドやギャラリーの機能はありません。 ==================================================================== ● 注意 ●========================================================== 「ゲーム内共有変数」との併用を前提条件にしたスクリプト素材です。 -------------------------------------------------------------------- 最初からコマンドを増やした状態で開始し、その後も変更させない場合は、 「ゲーム内共有変数」は必要ありません。 ==================================================================== ver1.00 Last Update : 2011/12/23 12/23 : RGSS2からの移植 ろかん [url]http://kaisou-ryouiki.sakura.ne.jp/[/url]=end #===========================================# 設定箇所#===========================================module Rokanmodule Game_Start_Command # 判断に利用する変数番号 GSV = 20 DEF_LIST = { #-------------------------------------------------------------------- # 追加コマンドを定義(0~2は使用しないでください) #-------------------------------------------------------------------- # 0 => ニューゲーム # 1 => コンティニュー # 2 => シャットダウン #-------------------------------------------------------------------- # 定義番号 => ["コマンド名", 開始マップID, マップX座標, マップY座標], #-------------------------------------------------------------------- 3 => ["ギャラリー", 4, 10, 13], 4 => ["サウンド", 3, 11, 10], #-------------------------------------------------------------------- } COMMAND_LIST = { #-------------------------------------------------------------------- # 指定変数内容によるコマンド内容を設定 # 望むコマンドの順番を上で定義した番号をつかって表現してください #-------------------------------------------------------------------- # 指定変数に格納されている数値 => [コマンドの順番], #-------------------------------------------------------------------- 0 => [0, 1, 2], 1 => [0, 1, 3, 2], 2 => [0, 1, 4, 2], 3 => [0, 1, 3, 4, 2], #-------------------------------------------------------------------- }endend#===========================================# ここまで#=========================================== $rsi ||= {}$rsi["スタートコマンド拡張"] = true module DataManager #-------------------------------------------------------------------------- # ● インクルード Rokan::Game_Start_Command #-------------------------------------------------------------------------- include Rokan::Game_Start_Command #-------------------------------------------------------------------------- # ● 定義されたコマンドリストの取得 #-------------------------------------------------------------------------- def self.def_list DEF_LIST end #-------------------------------------------------------------------------- # ● 定義されたコマンドリストの取得 #-------------------------------------------------------------------------- def self.command_list COMMAND_LIST[$game_variables[GSV]] end #-------------------------------------------------------------------------- # ● 拡張コマンドのセットアップ #-------------------------------------------------------------------------- def self.setup_ex_command(index) create_game_objects data = def_list[command_list[index]] $game_party.setup_starting_members $game_map.setup(data[1]) $game_player.moveto(data[2], data[3]) $game_player.refresh Graphics.frame_count = 0 endend class Window_TitleCommand < Window_Command #-------------------------------------------------------------------------- # ● コマンドリストの作成 #-------------------------------------------------------------------------- def make_command_list DataManager.command_list.each{|i| case i when 0 add_command(Vocab::new_game, :new_game) when 1 add_command(Vocab::continue, :continue, continue_enabled) when 2 add_command(Vocab::shutdown, :shutdown) else add_command(DataManager.def_list[i][0], :ex_command) end } endend class Scene_Title < Scene_Base #-------------------------------------------------------------------------- # ● コマンドウィンドウの作成 #-------------------------------------------------------------------------- alias _ex_command_create_command_window create_command_window def create_command_window _ex_command_create_command_window @command_window.set_handler(:ex_command, method(:command_ex)) end #-------------------------------------------------------------------------- # ● 拡張コマンド #-------------------------------------------------------------------------- def command_ex DataManager.setup_ex_command(@command_window.index) close_command_window fadeout_all $game_map.autoplay SceneManager.goto(Scene_Map) endend
=begin RGSS3 ★ スタートコマンド拡張 ★ タイトルコマンドを増やし複数のマップからゲームを開始することができます。 おまけの追加などにどうぞ。 ● 仕様 ●========================================================== これはタイトル画面から複数のマップに飛ばすことを可能にするものです。 -------------------------------------------------------------------- これ自体にサウンドやギャラリーの機能はありません。 ==================================================================== ● 注意 ●========================================================== 「ゲーム内共有変数」との併用を前提条件にしたスクリプト素材です。 -------------------------------------------------------------------- 最初からコマンドを増やした状態で開始し、その後も変更させない場合は、 「ゲーム内共有変数」は必要ありません。 ==================================================================== ver1.00 Last Update : 2011/12/23 12/23 : RGSS2からの移植 ろかん [url]http://kaisou-ryouiki.sakura.ne.jp/[/url] =end #=========================================== # 設定箇所 #=========================================== module Rokan module Game_Start_Command # 判断に利用する変数番号 GSV = 20 DEF_LIST = { #-------------------------------------------------------------------- # 追加コマンドを定義(0~2は使用しないでください) #-------------------------------------------------------------------- # 0 => ニューゲーム # 1 => コンティニュー # 2 => シャットダウン #-------------------------------------------------------------------- # 定義番号 => ["コマンド名", 開始マップID, マップX座標, マップY座標], #-------------------------------------------------------------------- 3 => ["ギャラリー", 4, 10, 13], 4 => ["サウンド", 3, 11, 10], #-------------------------------------------------------------------- } COMMAND_LIST = { #-------------------------------------------------------------------- # 指定変数内容によるコマンド内容を設定 # 望むコマンドの順番を上で定義した番号をつかって表現してください #-------------------------------------------------------------------- # 指定変数に格納されている数値 => [コマンドの順番], #-------------------------------------------------------------------- 0 => [0, 1, 2], 1 => [0, 1, 3, 2], 2 => [0, 1, 4, 2], 3 => [0, 1, 3, 4, 2], #-------------------------------------------------------------------- } end end #=========================================== # ここまで #=========================================== $rsi ||= {} $rsi["スタートコマンド拡張"] = true module DataManager #-------------------------------------------------------------------------- # ● インクルード Rokan::Game_Start_Command #-------------------------------------------------------------------------- include Rokan::Game_Start_Command #-------------------------------------------------------------------------- # ● 定義されたコマンドリストの取得 #-------------------------------------------------------------------------- def self.def_list DEF_LIST end #-------------------------------------------------------------------------- # ● 定義されたコマンドリストの取得 #-------------------------------------------------------------------------- def self.command_list COMMAND_LIST[$game_variables[GSV]] end #-------------------------------------------------------------------------- # ● 拡張コマンドのセットアップ #-------------------------------------------------------------------------- def self.setup_ex_command(index) create_game_objects data = def_list[command_list[index]] $game_party.setup_starting_members $game_map.setup(data[1]) $game_player.moveto(data[2], data[3]) $game_player.refresh Graphics.frame_count = 0 end end class Window_TitleCommand < Window_Command #-------------------------------------------------------------------------- # ● コマンドリストの作成 #-------------------------------------------------------------------------- def make_command_list DataManager.command_list.each{|i| case i when 0 add_command(Vocab::new_game, :new_game) when 1 add_command(Vocab::continue, :continue, continue_enabled) when 2 add_command(Vocab::shutdown, :shutdown) else add_command(DataManager.def_list[i][0], :ex_command) end } end end class Scene_Title < Scene_Base #-------------------------------------------------------------------------- # ● コマンドウィンドウの作成 #-------------------------------------------------------------------------- alias _ex_command_create_command_window create_command_window def create_command_window _ex_command_create_command_window @command_window.set_handler(:ex_command, method(:command_ex)) end #-------------------------------------------------------------------------- # ● 拡張コマンド #-------------------------------------------------------------------------- def command_ex DataManager.setup_ex_command(@command_window.index) close_command_window fadeout_all $game_map.autoplay SceneManager.goto(Scene_Map) end end
折叠内容标题(非必须)
折叠内容
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2024-11-6 16:50
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.