查看: 2440|回复: 4

[已经解决] 我想问一下怎么用事件标题实现二周目

[复制链接]
梦石
0
星屑
55
在线时间
30 小时
注册时间
2013-11-25
回帖
20
发表于 2014-12-24 11:18:04 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
大概就是这样的流程,用开关控制剧情这个还好,但是却忽然想起来,事件标题相当于新游戏而不是载入存档问下怎么能让事件标题实现像这样流程的多周目?
DSC_0213.jpg
梦石
0
星屑
22879
在线时间
8598 小时
注册时间
2011-12-31
回帖
3270
发表于 2014-12-24 11:26:40 | 显示全部楼层
本帖最后由 tseyik 于 2014-12-24 11:44 编辑

ゲーム内共有変数
[pre lang="ruby" line="1"]=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--------------------------
      
      ろかん   http://kaisou-ryouiki.sakura.ne.jp/
=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, file)}
    $public[1].each{|i| Marshal.dump($game_variables, 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 = Marshal.load(file) if SWITCH.include?(i)
      }
      $public[1].each{|i|
        $game_variables = 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

[/pre]

スタートコマンド拡張
[pre lang="ruby" line="1"]=begin
      RGSS3
      
      ★ スタートコマンド拡張 ★
      
      タイトルコマンドを増やし複数のマップからゲームを開始することができます。
      おまけの追加などにどうぞ。
      
      ● 仕様 ●==========================================================
      これはタイトル画面から複数のマップに飛ばすことを可能にするものです。
      --------------------------------------------------------------------
      これ自体にサウンドやギャラリーの機能はありません。
      ====================================================================
      
      ● 注意 ●==========================================================
      「ゲーム内共有変数」との併用を前提条件にしたスクリプト素材です。
      --------------------------------------------------------------------
      最初からコマンドを増やした状態で開始し、その後も変更させない場合は、
      「ゲーム内共有変数」は必要ありません。
      ====================================================================
      
      ver1.00

      Last Update : 2011/12/23
      12/23 : RGSS2からの移植
      
      ろかん   http://kaisou-ryouiki.sakura.ne.jp/
=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[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[/pre]
回复

使用道具 举报

梦石
0
星屑
55
在线时间
30 小时
注册时间
2013-11-25
回帖
20
 楼主| 发表于 2014-12-24 12:25:39 | 显示全部楼层
tseyik 发表于 2014-12-24 11:26
ゲーム内共有変数
=begin
   ★ゲーム内共有変数★

求详解怎么用,看起来貌似是个公共存档什么的?
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-12-24 12:28:18 | 显示全部楼层
回复

使用道具 举报

梦石
0
星屑
55
在线时间
30 小时
注册时间
2013-11-25
回帖
20
 楼主| 发表于 2014-12-24 12:34:38 | 显示全部楼层
taroxd 发表于 2014-12-24 12:28
https://rpg.blue/home.php?mod=space&uid=291206&do=blog&id=11794

多谢啦(。◕∀◕。)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部