Project1

标题: 我想问一下怎么用事件标题实现二周目 [打印本页]

作者: kuerss    时间: 2014-12-24 11:18
标题: 我想问一下怎么用事件标题实现二周目
大概就是这样的流程,用开关控制剧情这个还好,但是却忽然想起来,事件标题相当于新游戏而不是载入存档问下怎么能让事件标题实现像这样流程的多周目?

DSC_0213.jpg (1.71 MB, 下载次数: 31)

DSC_0213.jpg

作者: tseyik    时间: 2014-12-24 11:26
本帖最后由 tseyik 于 2014-12-24 11:44 编辑

ゲーム内共有変数
RUBY 代码复制
  1. =begin
  2.    ★ゲーム内共有変数★
  3.  
  4.       設定箇所で指定したスイッチと変数を、
  5.       セーブファイルの違いなど関係なく、ゲーム全体で共有します。
  6.       
  7.       素材の一番下に挿入することをオススメします。
  8.       
  9.       ● 仕様 ●==========================================================
  10.       スクリプト導入後にセーブするとゲームフォルダ内に新しく
  11.       "PublicData"
  12.       というrvdataファイルが自動的に作成されます。
  13.       --------------------------------------------------------------------
  14.       共有データセーブのタイミングは、通常のセーブ時&シャットダウン時(設定可)、
  15.       共有データロードのタイミングは、通常のロード時&ゲーム立ち上げ時です。
  16.       --------------------------------------------------------------------
  17.       ゲーム立ち上げ時にも共有データファイルをロードするため、
  18.       タイトル画面にも変数やスイッチが反映されます。
  19.       ====================================================================
  20.       
  21.       ● 注意 ●==========================================================
  22.       PublicData.rvdataが作成された後に、このスクリプトの設定を変更した場合、
  23.       ロード時にエラーを吐くことがあります。
  24.       その場合は、古いPublicData.rvdataを削除してからゲームを起動してください。
  25.       ====================================================================
  26.       
  27.       ● イベントについて ●==============================================
  28.       イベントコマンドのスクリプトに、
  29.         PUBLIC_DATA.write_public_data
  30.       と記述すると、任意のタイミングで共有データのセーブを行うことができます。
  31.       エンディング時などにどうぞ。
  32.       --------------------------------------------------------------------
  33.       また、この記述をスクリプトエディタの任意の箇所にすると、
  34.       そのタイミングで共有データのセーブを行います。
  35.       戦闘終了後強制セーブなど、スクリプトができる人はどうぞ改造に。
  36.       ====================================================================
  37.       
  38.       ※「スクリプト内グローバル変数」の部分に限り、
  39.          サポート対象外とさせていただきます。ゴメンネ。
  40.       
  41.       ver1.01
  42.       
  43.       Last Update : 2011/12/14
  44.       12/14 : ソースコードの見直し
  45.       ----------------------2011--------------------------
  46.       04/08 : 新規
  47.       ----------------------2009--------------------------
  48.       
  49.       ろかん   [url]http://kaisou-ryouiki.sakura.ne.jp/[/url]
  50. =end
  51.  
  52. module PUBLIC_DATA
  53. #----------------------------------------------------------------------------
  54. # ● 設定箇所ここから
  55. #----------------------------------------------------------------------------
  56.   # 共有するスイッチ番号 (例 : SWITCH = [3, 7, 12])
  57.   SWITCH = []
  58.   # 共有する変数番号 (例 : VARIABLE = [1, 6])
  59.   VARIABLE = []
  60.   # 通常のセーブと同時に共有データのセーブも行うかどうか(true/ false)
  61.   S_AUTOSAVE = true
  62.   # シャットダウンと同時に共有データのセーブも行うかどうか(true/ false)
  63.   D_AUTOSAVE = true
  64. #==========================================================================
  65. # ● 以下、スクリプトが少しわかる人向け設定箇所
  66. #==========================================================================
  67.   # 共有する変数の書き込み
  68.   def self.public_script_global_variable_save(file_name)
  69.     # Marshal.dump($abc, file_name)  # このような形で追加 $abcの部分を変更
  70.   end
  71.   # 共有する変数の読み込み
  72.   def self.public_script_global_variable_load(file_name)
  73.     # $abc = Marshal.load(file_name) # このような形で追加 $abcの部分を変更
  74.   end
  75. #----------------------------------------------------------------------------
  76. # ● 設定箇所ここまで
  77. #----------------------------------------------------------------------------
  78. end
  79.  
  80. $rsi ||= {}
  81. $rsi["ゲーム内共有変数"] = true
  82.  
  83. #==============================================================================
  84. # ■ PUBLIC_DATA
  85. #------------------------------------------------------------------------------
  86. #  共有データの書き込み、読み込みを実行するモジュール
  87. #==============================================================================
  88. module PUBLIC_DATA
  89.   # 共有データファイル名
  90.   FILE_NAME = "PublicData"
  91.   #--------------------------------------------------------------------------
  92.   # ● 共有データの書き込み
  93.   #--------------------------------------------------------------------------
  94.   def self.write_public_data
  95.     file = File.open("#{FILE_NAME}.rvdata", "wb")
  96.     $public ||= {}
  97.     $public[0] = SWITCH
  98.     $public[1] = VARIABLE
  99.     Marshal.dump($public, file)
  100.     $public[0].each{|i| Marshal.dump($game_switches[i], file)}
  101.     $public[1].each{|i| Marshal.dump($game_variables[i], file)}
  102.     public_script_global_variable_save(file)
  103.     file.close
  104.   end
  105.   #--------------------------------------------------------------------------
  106.   # ● 共有データの読み込み
  107.   #--------------------------------------------------------------------------
  108.   def self.read_public_data
  109.     if File.exist?("#{FILE_NAME}.rvdata")
  110.       file = File.open("#{FILE_NAME}.rvdata", "rb")
  111.       $public = Marshal.load (file)
  112.       $public[0].each{|i|
  113.         $game_switches[i] = Marshal.load(file) if SWITCH.include?(i)
  114.       }
  115.       $public[1].each{|i|
  116.         $game_variables[i] = Marshal.load(file) if VARIABLE.include?(i)
  117.       }
  118.       public_script_global_variable_load(file)
  119.       file.close
  120.     end
  121.   end
  122. end
  123.  
  124. class Scene_Title < Scene_Base
  125.   #--------------------------------------------------------------------------
  126.   # ● 各種ゲームオブジェクトの作成
  127.   #--------------------------------------------------------------------------
  128.   alias public_data_create_game_objects create_game_objects
  129.   def create_game_objects
  130.     public_data_create_game_objects
  131.     PUBLIC_DATA.read_public_data
  132.   end
  133.   #--------------------------------------------------------------------------
  134.   # ● コマンド : シャットダウン
  135.   #--------------------------------------------------------------------------
  136.   alias public_data_command_shutdown command_shutdown
  137.   def command_shutdown
  138.     PUBLIC_DATA.write_public_data if PUBLIC_DATA::D_AUTOSAVE
  139.     public_data_command_shutdown
  140.   end
  141. end
  142.  
  143. class Scene_File < Scene_Base
  144.   #--------------------------------------------------------------------------
  145.   # ● セーブの実行
  146.   #--------------------------------------------------------------------------
  147.   alias pablic_save do_save
  148.   def do_save
  149.     PUBLIC_DATA.write_public_data if PUBLIC_DATA::S_AUTOSAVE
  150.     pablic_save
  151.   end
  152.   #--------------------------------------------------------------------------
  153.   # ● ロードの実行
  154.   #--------------------------------------------------------------------------
  155.   alias pablic_load do_load
  156.   def do_load
  157.     pablic_load
  158.     PUBLIC_DATA.read_public_data
  159.   end
  160. end
  161.  
  162. class Scene_End < Scene_Base
  163.   #--------------------------------------------------------------------------
  164.   # ● コマンド [シャットダウン] 選択時の処理
  165.   #--------------------------------------------------------------------------
  166.   alias shutdown_public_save command_shutdown
  167.   def command_shutdown
  168.     PUBLIC_DATA.write_public_data if PUBLIC_DATA::D_AUTOSAVE
  169.     shutdown_public_save
  170.   end
  171. end


スタートコマンド拡張
RUBY 代码复制
  1. =begin
  2.       RGSS3
  3.       
  4.       ★ スタートコマンド拡張 ★
  5.       
  6.       タイトルコマンドを増やし複数のマップからゲームを開始することができます。
  7.       おまけの追加などにどうぞ。
  8.       
  9.       ● 仕様 ●==========================================================
  10.       これはタイトル画面から複数のマップに飛ばすことを可能にするものです。
  11.       --------------------------------------------------------------------
  12.       これ自体にサウンドやギャラリーの機能はありません。
  13.       ====================================================================
  14.       
  15.       ● 注意 ●==========================================================
  16.       「ゲーム内共有変数」との併用を前提条件にしたスクリプト素材です。
  17.       --------------------------------------------------------------------
  18.       最初からコマンドを増やした状態で開始し、その後も変更させない場合は、
  19.       「ゲーム内共有変数」は必要ありません。
  20.       ====================================================================
  21.       
  22.       ver1.00
  23.  
  24.       Last Update : 2011/12/23
  25.       12/23 : RGSS2からの移植
  26.       
  27.       ろかん   [url]http://kaisou-ryouiki.sakura.ne.jp/[/url]
  28. =end
  29.  
  30. #===========================================
  31. #   設定箇所
  32. #===========================================
  33. module Rokan
  34. module Game_Start_Command
  35.     # 判断に利用する変数番号
  36.     GSV = 20
  37.  
  38.     DEF_LIST = {
  39.     #--------------------------------------------------------------------
  40.     # 追加コマンドを定義(0~2は使用しないでください)
  41.     #--------------------------------------------------------------------
  42.     # 0 => ニューゲーム
  43.     # 1 => コンティニュー
  44.     # 2 => シャットダウン
  45.     #--------------------------------------------------------------------
  46.     # 定義番号 => ["コマンド名", 開始マップID, マップX座標, マップY座標],
  47.     #--------------------------------------------------------------------
  48.     3 => ["ギャラリー", 4, 10, 13],
  49.     4 => ["サウンド",   3, 11, 10],
  50.     #--------------------------------------------------------------------
  51.     }
  52.  
  53.  
  54.     COMMAND_LIST = {
  55.     #--------------------------------------------------------------------
  56.     # 指定変数内容によるコマンド内容を設定
  57.     # 望むコマンドの順番を上で定義した番号をつかって表現してください
  58.     #--------------------------------------------------------------------
  59.     # 指定変数に格納されている数値 => [コマンドの順番],
  60.     #--------------------------------------------------------------------
  61.     0 => [0, 1, 2],
  62.     1 => [0, 1, 3, 2],
  63.     2 => [0, 1, 4, 2],
  64.     3 => [0, 1, 3, 4, 2],
  65.     #--------------------------------------------------------------------
  66.     }
  67. end
  68. end
  69. #===========================================
  70. #   ここまで
  71. #===========================================
  72.  
  73. $rsi ||= {}
  74. $rsi["スタートコマンド拡張"] = true
  75.  
  76. module DataManager
  77.   #--------------------------------------------------------------------------
  78.   # ● インクルード Rokan::Game_Start_Command
  79.   #--------------------------------------------------------------------------
  80.   include Rokan::Game_Start_Command
  81.   #--------------------------------------------------------------------------
  82.   # ● 定義されたコマンドリストの取得
  83.   #--------------------------------------------------------------------------
  84.   def self.def_list
  85.     DEF_LIST
  86.   end
  87.   #--------------------------------------------------------------------------
  88.   # ● 定義されたコマンドリストの取得
  89.   #--------------------------------------------------------------------------
  90.   def self.command_list
  91.     COMMAND_LIST[$game_variables[GSV]]
  92.   end
  93.   #--------------------------------------------------------------------------
  94.   # ● 拡張コマンドのセットアップ
  95.   #--------------------------------------------------------------------------
  96.   def self.setup_ex_command(index)
  97.     create_game_objects
  98.     data = def_list[command_list[index]]
  99.     $game_party.setup_starting_members
  100.     $game_map.setup(data[1])
  101.     $game_player.moveto(data[2], data[3])
  102.     $game_player.refresh
  103.     Graphics.frame_count = 0
  104.   end
  105. end
  106.  
  107. class Window_TitleCommand < Window_Command
  108.   #--------------------------------------------------------------------------
  109.   # ● コマンドリストの作成
  110.   #--------------------------------------------------------------------------
  111.   def make_command_list
  112.     DataManager.command_list.each{|i|
  113.       case i
  114.       when 0
  115.         add_command(Vocab::new_game, :new_game)
  116.       when 1
  117.         add_command(Vocab::continue, :continue, continue_enabled)
  118.       when 2
  119.         add_command(Vocab::shutdown, :shutdown)
  120.       else
  121.         add_command(DataManager.def_list[i][0], :ex_command)
  122.       end
  123.     }
  124.   end
  125. end
  126.  
  127. class Scene_Title < Scene_Base
  128.   #--------------------------------------------------------------------------
  129.   # ● コマンドウィンドウの作成
  130.   #--------------------------------------------------------------------------
  131.   alias _ex_command_create_command_window create_command_window
  132.   def create_command_window
  133.     _ex_command_create_command_window
  134.     @command_window.set_handler(:ex_command, method(:command_ex))
  135.   end
  136.   #--------------------------------------------------------------------------
  137.   # ● 拡張コマンド
  138.   #--------------------------------------------------------------------------
  139.   def command_ex
  140.     DataManager.setup_ex_command(@command_window.index)
  141.     close_command_window
  142.     fadeout_all
  143.     $game_map.autoplay
  144.     SceneManager.goto(Scene_Map)
  145.   end
  146. end


作者: kuerss    时间: 2014-12-24 12:25
tseyik 发表于 2014-12-24 11:26
ゲーム内共有変数
=begin
   ★ゲーム内共有変数★

求详解怎么用,看起来貌似是个公共存档什么的?
作者: taroxd    时间: 2014-12-24 12:28
https://rpg.blue/home.php?mod=sp ... o=blog&id=11794
作者: kuerss    时间: 2014-12-24 12:34
taroxd 发表于 2014-12-24 12:28
https://rpg.blue/home.php?mod=space&uid=291206&do=blog&id=11794

多谢啦(。◕∀◕。)




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1