#< hatrack >http://hatrack.sakura.ne.jp/ < ver >2006/05/06 # # バトル中にメッセージを表示、色調変更などを行うと処理落ちが発生してしまいます。 # そこで、パーティステータスの更新を必要時だけにし、処理落ちを防ぎます。 # # HPなどをゲージ表示するようなスクリプトを導入している場合に、効果大です。 # ( 設定変更箇所の説明は、スクリプトソース内に記載してあります ) # #============================================================================== # ★ バトル中イベント軽量化 #------------------------------------------------------------------------------ # ※ Scene_Battle 1 より下に入れてください #============================================================================== class Scene_Battle # ※注意(ほとんどの方は、関係ないと思いますが) # このRGSSは、バトル中のイベント実行中はパーティのステータスウィンドウを # 更新しないことにより、処理の軽量化を図っています。 # そのため、以下の設定箇所が設けてあります。 HAT_BEL_ID = 0 # ▲ステータスウィンドウ更新のために使用するスイッチIDを設定してください。 # # 例:使用するスイッチIDが[0123]の場合、HAT_BEL_ID = 123  #   この機能を使用しない場合、HAT_BEL_ID = 0 に設定。 # #   ここでスイッチIDを設定した場合、バトル中イベントで #   そのスイッチをONにした瞬間だけ、ステータスウィンドウが更新されます。 #   ( ONにしたあと、わざわざOFFに戻す必要はありません。 #     ステータスウィンドウの更新と共に、自動的にOFFになります。 ) #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update # バトルイベント実行中の場合 if $game_system.battle_interpreter.running? # インタプリタを更新 $game_system.battle_interpreter.update # アクションを強制されているバトラーが存在しない場合 if $game_temp.forcing_battler == nil # バトルイベントの実行が終わった場合 unless $game_system.battle_interpreter.running? # 戦闘継続の場合、バトルイベントのセットアップを再実行 unless judge setup_battle_event end # アフターバトルフェーズでなければ if @phase != 5 # ステータスウィンドウをリフレッシュ @status_window.refresh end end # ステータスウィンドウ更新用スイッチがONの場合 if $game_switches[HAT_BEL_ID] # ステータスウィンドウをリフレッシュ @status_window.refresh # 更新用スイッチをOFFに $game_switches[HAT_BEL_ID] = false end end end # システム (タイマー)、画面を更新 $game_system.update $game_screen.update # タイマーが 0 になった場合 if $game_system.timer_working and $game_system.timer == 0 # バトル中断 $game_temp.battle_abort = true end # ウィンドウを更新 @help_window.update @party_command_window.update @actor_command_window.update @status_window.update @message_window.update # スプライトセットを更新 @spriteset.update # トランジション処理中の場合 if $game_temp.transition_processing # トランジション処理中フラグをクリア $game_temp.transition_processing = false # トランジション実行 if $game_temp.transition_name == "" Graphics.transition(20) else Graphics.transition(40, "Graphics/Transitions/" + $game_temp.transition_name) end end # メッセージウィンドウ表示中の場合 if $game_temp.message_window_showing return end # エフェクト表示中の場合 if @spriteset.effect? return end # ゲームオーバーの場合 if $game_temp.gameover # ゲームオーバー画面に切り替え $scene = Scene_Gameover.new return end # タイトル画面に戻す場合 if $game_temp.to_title # タイトル画面に切り替え $scene = Scene_Title.new return end # バトル中断の場合 if $game_temp.battle_abort # バトル開始前の BGM に戻す $game_system.bgm_play($game_temp.map_bgm) # バトル終了 battle_end(1) return end # ウェイト中の場合 if @wait_count > 0 # ウェイトカウントを減らす @wait_count -= 1 return end # アクションを強制されているバトラーが存在せず、 # かつバトルイベントが実行中の場合 if $game_temp.forcing_battler == nil and $game_system.battle_interpreter.running? return end # フェーズによって分岐 case @phase when 1 # プレバトルフェーズ update_phase1 when 2 # パーティコマンドフェーズ update_phase2 when 3 # アクターコマンドフェーズ update_phase3 when 4 # メインフェーズ update_phase4 when 5 # アフターバトルフェーズ update_phase5 end end end