#============================================================================== # ■ RGSS3 選択肢限界数突破 Ver1.00 by 星潟 #------------------------------------------------------------------------------ # デフォルトでは選択肢の限界は4ですが、この限界を突破します。 # 選択肢を4つ設定したイベントコマンドの上に # 以下の設定例のようにイベントコマンドのスクリプトを入れておくことで # 選択肢の限界数を突破できます。 #------------------------------------------------------------------------------ # array = [ # "あいうえお", # "かきくけこ", # "さしすせそ", # "たちつてと" # ] # $game_temp.extra_choice = array #------------------------------------------------------------------------------ # 上記の場合、新たに あいうえお かきくけこ さしすせそ たちつてと という # 4つの選択肢が表示されます。 # # これらの選択肢を選んだ際、指定した変数に選択結果が保存されます。 # 追加選択肢の上から順番に1,2,3...という風に値が代入されていますので # 例えば上記の例で「あいうえお」を選択した場合は # 「あいうえお」は最初の追加選択肢の為、変数には1が代入されています。 # # 後は、その変数を使って条件分岐を行う事で # 選択肢による分岐部分を作成できます。 #============================================================================== module ADD_CHOICE #選択肢の分岐に用いる変数を指定します。 V_ID = 1 #選択肢の数に応じてウィンドウの高さを4行以上にするかどうかを決定します。 #(true:数に応じて4行を超える/false:4行を限界とし、それ以上はスクロール) LN_C = true end class Game_Temp attr_accessor :extra_choice end class Game_Message def extra_choices_plus(data) @choices.push(data) end end class Window_ChoiceList < Window_Command #-------------------------------------------------------------------------- # 決定ハンドラの呼び出し #-------------------------------------------------------------------------- alias call_ok_handler_add_choice call_ok_handler def call_ok_handler #リスト数が4より多く、インデックスが3より大きい場合は #変数を変更する。 $game_variables[ADD_CHOICE::V_ID] = index - 3 if @list.size > 4 && index > 3 #インデックスが3より大きい場合(追加選択肢の場合)は #本来の選択肢処理を飛ばし、ウィンドウを閉じる。 #そうでない場合は、通常の処理を行う。 if index > 3 $game_message.choice_proc.call close else call_ok_handler_add_choice end end #-------------------------------------------------------------------------- # ウィンドウ位置の更新 #-------------------------------------------------------------------------- alias update_placement_add_choice update_placement def update_placement #高さ調整を行う場合、先に選択肢を調整する。 add_extra_choices if ADD_CHOICE::LN_C #本来の処理を行う。 update_placement_add_choice #高さ調整を行わない場合、後から選択肢を調整する。 add_extra_choices if !ADD_CHOICE::LN_C end #-------------------------------------------------------------------------- # コマンドリストの作成 #-------------------------------------------------------------------------- def add_extra_choices #変数に0を代入しておく。 $game_variables[ADD_CHOICE::V_ID] = 0 #元々の選択肢の数が4であり、なおかつ追加選択肢が存在し #その内容が空でもない場合は選択肢を追加する。 if $game_message.choices.size == 4 && $game_temp.extra_choice != nil && !$game_temp.extra_choice.empty? $game_temp.extra_choice.each {|choice| $game_message.extra_choices_plus(choice)} end #追加選択肢を消去する。 $game_temp.extra_choice = nil end end