#============================================================================== # ■ RGSS3 移動失敗時SE演奏&歩行アニメ Ver1.00 by 星潟 #------------------------------------------------------------------------------ # プレイヤーの移動が、移動不可タイルやイベントに衝突する等で失敗した際 # イベント実行中でない場合は指定したSEを鳴らすようにします。 # 移動失敗時も歩行アニメの更新を行うようにする設定も可能です。 #============================================================================== module MF_SS #移動失敗時にSEの演奏を行うか否かを指定します。 #(trueで行う/falseで行わない) SE_OK = true #移動失敗時のSEを設定します。 #['SEの名前', 音量, ピッチ]の1セットでの設定となります。 SE = ['Blow1', 60, 100] #SEを鳴らした後、次の移動失敗時にSEを鳴らすまでのウェイトを指定します。 #低い数字にすればするほど、短い間隔でSEを鳴らします。 #(ただし、0以上の値にして下さい) INTERVAL = 30 #移動失敗時も歩行アニメの更新を行うか否かを指定します。 #(trueで行う/falseで行わない) STEP_OK = false #イベント中も移動失敗時のSEを演奏するか否かかを指定します。 #(trueで演奏する/falseで演奏しない) EVENT_SE = false #イベント中も移動失敗時の歩行アニメの更新を行うか否かかを指定します。 #(trueで行う/falseで行わない) EVENT_ST = false #SE演奏を行わないようにするスイッチIDを指定します。 #指定したIDのスイッチをONにする事で、SE演奏を行われなくなります。 SWITCH_1 = 10 #移動失敗時の歩行アニメの更新を行わないようにするスイッチIDを指定します。 #指定したIDのスイッチをONにする事で #移動失敗時の歩行アニメの更新が行われなくなります。 SWITCH_2 = 11 end class Game_Temp attr_accessor :last_mf_time end class Game_Player < Game_Character #-------------------------------------------------------------------------- # まっすぐに移動 #-------------------------------------------------------------------------- alias move_straight_mfss move_straight def move_straight(d, turn_ok = true) #本来の処理を実行。 move_straight_mfss(d, turn_ok) #移動に失敗した場合は移動失敗時の特殊処理を実行。 mf_s_execute if !@move_succeed end #-------------------------------------------------------------------------- # 斜めに移動 #-------------------------------------------------------------------------- alias move_diagonal_mfss move_diagonal def move_diagonal(horz, vert) #本来の処理を実行。 move_diagonal_mfss(horz, vert) #移動に失敗した場合は移動失敗時の特殊処理を実行。 mf_s_execute if !@move_succeed end #-------------------------------------------------------------------------- # 移動失敗時に音を鳴らす #-------------------------------------------------------------------------- def mf_s_execute #イベント実行中か否かを取得。 ev_f = $game_map.interpreter.running? #設定に応じてSE演奏を行うかどうかを判定。 unless !MF_SS::SE_OK or (!MF_SS::EVENT_SE && ev_f) or $game_switches[MF_SS::SWITCH_1] #最後に移動に失敗した時刻が存在しない場合 #もしくは一定時間が経過している場合は処理を分岐。 if ($game_temp.last_mf_time == nil or ((Graphics.frame_count - $game_temp.last_mf_time) > MF_SS::INTERVAL)) #時間を更新する。 $game_temp.last_mf_time = Graphics.frame_count #指定したSEを鳴らす。 RPG::SE.new(MF_SS::SE[0],MF_SS::SE[1],MF_SS::SE[2]).play end end #設定に応じて歩行アニメ更新を行うかどうかを判定。 unless !@walk_anime or !MF_SS::STEP_OK or (!MF_SS::EVENT_ST && ev_f) or $game_switches[MF_SS::SWITCH_2] #パターンがオリジナルパターンと異なる場合はカウントを0.5増やす。 #同一の場合は3増やす。 if @pattern != @original_pattern @anime_count += 0.5 else @anime_count += 3 end end end end