#============================================================================== # ■ RGSS3 スキット補助システム Ver1.00 by 星潟 #============================================================================== # ゲーム中にスキット機能を実装する為の補助スクリプトです。 # マップ上でイベントが実行されていない時に # 右下にスキットタイトルを表示するウィンドウを表示させ # 指定キーを押す事で、設定されたコモンイベントを実行させます。 #============================================================================== module SKIT_SUPPORT #スキットウィンドウのX座標を指定。 X = 344 #スキットウィンドウのY座標を指定。 Y = 368 #スキットウィンドウの幅を指定。 W = 200 #スキットウィンドウの高さを指定。 H = 48 #スキットウィンドウのキーを指定。 KEY = :Z #スキットウィンドウの表示&スキット許可スイッチIDを指定。 SID1 = 30 #軽量化用スキット更新スイッチIDを指定。 #指定する場合はスイッチIDを。 #指定しない(軽量化しない)場合はnilとしてください。 #(設定されている場合、スキットウィンドウの更新タイミングが # メニュー開閉等で画面が切り替わった時か # 指定したスイッチIDが押された場合に限定されます。 # 更新が行われた場合、指定したスイッチは自動的にOFFになります) SID2 = nil #スキットウィンドウ内のフォントサイズを指定。 FSIZE = 20 #スキットウィンドウ内で先頭に表示する文字列を指定。(システムカラーで描写) WORD = "Skit" #スキット設定用の配列を用意。 ARRAY = [] #それぞれ #ARRAY.push([コモンイベントID,優先度,条件判定用スクリプトの文字列]) #この形式で指定します。 #例1. #ARRAY.push([11,1,"true"]) #この場合は、コモンイベント11を優先度1のスキットとして設定し #スキット発生条件は設定しません。 #例2. #ARRAY.push([12,3,"$game_switches[1]"]) #この場合は、コモンイベント12を優先度3のスキットとして設定し #スキット発生条件として、スイッチID1がONである事が条件となります。 #例3. #ARRAY.push([13,3,"!$game_switches[2]"]) #この場合は、コモンイベント13を優先度3のスキットとして設定し #スキット発生条件として、スイッチID2がOFFである事が条件となります。 #例4. #ARRAY.push([15,4,"$game_variables[3] > 0"]) #この場合は、コモンイベント15を優先度4のスキットとして設定し #スキット発生条件として、変数ID3の値が0より大きい事が条件となります。 #例5. #ARRAY.push([16,4,"$game_variables[3] > 2 && $game_variables[3] < 5"]) #この場合は、コモンイベント16を優先度4のスキットとして設定し #スキット発生条件として、変数ID3の値が2より大きく、5より小さい事が条件となります。 #例6. #ARRAY.push([17,7,"$game_switches[4] && $game_variables[6] < 5"]) #この場合は、コモンイベント17を優先度7のスキットとして設定し #スキット発生条件として、スイッチID4がONであり #変数ID6の値が5より小さい事が条件となります。 #例7. #ARRAY.push([18,3,"$game_party.members.include?($game_actors[1])"]) #この場合は、コモンイベント18を優先度3のスキットとして設定し #スキット発生条件として、アクターID1のキャラがパーティにいる事が条件となります。 #例8. #ARRAY.push([20,9,"$game_party.members.include?($game_actors[1]) && #$game_party.members.include?($game_actors[2]) && #$game_party.members.include?($game_actors[3]) && #$game_switches[3] && $game_variables[4] > 5 && !$game_switches[5]"]) #この場合は、コモンイベント20を優先度9のスキットとして設定し #スキット発生条件として、アクターID1・2・3のキャラがパーティにいて #スイッチID3がONであり、変数ID4の値が5より大きく #スイッチID5がOFFである事が条件となります。 #以下にスキットを設定。 ARRAY.push([11,1,"$game_switches[1] && $game_variables[1] > 0"]) ARRAY.push([12,2,"$game_switches[3] && $game_switches[4]"]) ARRAY.push([13,1,"$game_switches[5]","$game_switches[6]"]) ARRAY.push([14,3,"$game_switches[7]","$game_switches[8]"]) ARRAY.push([15,1,"$game_switches[9]","$game_switches[10]"]) ARRAY.push([16,2,"$game_switches[11]","$game_switches[12]"]) ARRAY.push([17,1,"$game_switches[13]","$game_switches[14]"]) ARRAY.push([18,3,"$game_switches[15]","$game_switches[16]"]) ARRAY.push([19,1,"$game_switches[17]","$game_switches[18]"]) ARRAY.push([20,2,"$game_switches[19]","$game_switches[20]"]) end class Game_Temp attr_accessor :last_skit_common_id #-------------------------------------------------------------------------- # スキット可否判定 #-------------------------------------------------------------------------- def skit_enable #実行するスキットコモンIDが0より大きく #スイッチ許可スイッチがONである場合は可能。そうでない場合は不可。 @last_skit_common_id > 0 && $game_switches[SKIT_SUPPORT::SID1] end #-------------------------------------------------------------------------- # スキットコモンID #-------------------------------------------------------------------------- def skit_common_id #判定用配列を準備。 data = [0] * 2 #スキット設定別に判定。 SKIT_SUPPORT::ARRAY.each {|array| #判定用配列2番目の値より優先度が大きく、なおかつ条件を満たす場合は #判定用配列をスキット判定配列にする。 next unless array[1] > data[1] next unless eval(array[2]) data = array } #判定用配列の最初の要素(スキットコモンID)を返す。 data[0] end end class Game_Map #-------------------------------------------------------------------------- # フレーム更新 #-------------------------------------------------------------------------- alias update_skit update def update(main = false) #本来の処理を実行。 update_skit(main) #イベント実行中でなく、他にコモンイベントIDが設定されておらず #キャラクターが行動可能であり、スキットが可能であり #指定したキーが押されている場合に限り処理を続行。 return if $game_map.interpreter.running? return if $game_temp.common_event_reserved? return unless $game_player.movable? return unless $game_temp.skit_enable return unless Input.trigger?(SKIT_SUPPORT::KEY) #コモンイベントをセットする。 $game_temp.reserve_common_event($game_temp.last_skit_common_id) end end class Scene_Map < Scene_Base #-------------------------------------------------------------------------- # 全ウィンドウの作成 #-------------------------------------------------------------------------- alias create_all_windows_skit create_all_windows def create_all_windows #本来の処理を実行。 create_all_windows_skit #スキットウィンドウの作成を実行。 create_skit_window end #-------------------------------------------------------------------------- # スキットウィンドウの作成 #-------------------------------------------------------------------------- def create_skit_window @skit_window = Window_Skit.new end end class Window_Skit < Window_Base #-------------------------------------------------------------------------- # オブジェクト初期化 #-------------------------------------------------------------------------- def initialize #ウィンドウを準備。 super(SKIT_SUPPORT::X,SKIT_SUPPORT::Y,SKIT_SUPPORT::W,SKIT_SUPPORT::H) #ウィンドウを閉じておく。 self.openness = 0 #リフレッシュ。 refresh end #-------------------------------------------------------------------------- # リフレッシュ #-------------------------------------------------------------------------- def refresh #軽量化用スイッチが設定されている場合 #リフレッシュの度に指定されたスイッチをOFFにする。 $game_switches[SKIT_SUPPORT::SID2] = false if SKIT_SUPPORT::SID2 #内容を再構築する。 create_contents #フォントサイズを変更する。 contents.font.size = SKIT_SUPPORT::FSIZE #スキットコモンIDを取得する。 $game_temp.last_skit_common_id = $game_temp.skit_common_id #スキットコモンIDが0の場合は処理を中断する。 return if $game_temp.last_skit_common_id == 0 #ウィンドウの内容を描写する。 contents.font.color = system_color contents.draw_text(0,0,contents.width,contents.height,SKIT_SUPPORT::WORD) contents.font.color = normal_color contents.draw_text(0,0,contents.width,contents.height,$data_common_events[$game_temp.last_skit_common_id].name,2) end #-------------------------------------------------------------------------- # 更新 #-------------------------------------------------------------------------- def update #Window_Baseの処理を実行。 super #リフレッシュ条件を満たした場合に限りリフレッシュを実行。 refresh if skit_refresh_flag #表示条件を満たす場合は開き、そうでない場合は閉じる。 $game_temp.skit_enable && !$game_map.interpreter.running? ? open : close end #-------------------------------------------------------------------------- # リフレッシュ条件 #-------------------------------------------------------------------------- def skit_refresh_flag #軽量化用スイッチが設定されていないか、軽量化用スイッチがONの場合はtrue、 #そうでない場合はfalseを返す。 !SKIT_SUPPORT::SID2 or $game_switches[SKIT_SUPPORT::SID2] ? true : false end end