#◆◇◆◇◆ セルリンクカットインスクリプト ver 1.01 ◇◆◇◆◇ # 全マスタースクリプト共通スクリプト # サポート掲示板 http://www2.ezbbs.net/21/minto-aaa/ # by みんと =begin ■ 更新履歴 ver 1.01 include のミスを修正 ■説明 アニメ表示中にカットインが表示できるようになります。 カットインは指定したセルの動きをコピーし、 コピーしたセルと全く同じ動きをします。 ですので、座標の変更や拡大、不透明度の変更などが自由に設定できます。 表示には任意のフレームに、 カットイン実行 という名前のSEを実行してください。 そのタイミングでカットインが表示されます。 また、カットインの種類にはフラッシュの強さを、 コピーするセルのIDはフラッシュの時間を使用します。 カットインはアクター、エネミーのIDで分岐しますので、 わざわざアニメを数種類用意する必要はありません。 ただし、セルの表示自体はされますので、 コピーするセルのパターンには50などのありえない値を設定してください。 例 SE カットイン実行 フラッシュの強さ 1 フラッシュの時間 2 実行したバトラーの種類1のカットインを表示し、 セルID2番のデータをコピーします。 詳しい設定はソース内部を参照してください。 カットイン画像はすべてピクチャーフォルダを使用します。 =end #============================================================================== # ☆ MINTO #------------------------------------------------------------------------------ # 様々なフラグを扱うメインモジュールです。 #============================================================================== module MINTO # セルリンクカットインスクリプトを有効化 ( true で有効 / false で無効 ) RGSS["セルリンクカットイン"] = true end # セルリンクカットインスクリプトが有効な場合に以降の処理を実行する if MINTO::RGSS["セルリンクカットイン"] == true then #============================================================================== # ☆ カスタマイズ #------------------------------------------------------------------------------ # 機能のカスタマイズをここで行います。 #============================================================================== module MINTO_Cut_in #------------------------------------------------------------------------- # ● カットインのセットアップ # type : フラッシュの強さ(カットインのID) # エネミーの場合は実際のIDに 1000 を足した値を設定してください #------------------------------------------------------------------------- def setup_cut_in(type) # アクティブバトラーが無効な場合 if $scene.active_battler == nil then # メソッドを返す return end # カットイン画像名 cut_in = "" # アクティブバトラーの所属IDに応じて分岐 case $scene.active_battler.belong_id # アクターID_1 when 1 then # フラッシュの強さに応じて分岐 case type when 1 then # カットイン画像名を設定 cut_in = "デバッグ君カットイン1" end # アクターID_2 when 2 then # フラッシュの強さに応じて分岐 case type when 1 then # カットイン画像名を設定 cut_in = "デバッグさんカットイン1" when 2 then # カットイン画像名を設定 cut_in = "デバッグさんカットイン2" end # エネミーID_1 when 1001 then # フラッシュの強さに応じて分岐 case type when 1 then # カットイン画像名を設定 cut_in = "ゴーストカットイン1" end end # カットイン画像が有効な場合 if cut_in != "" then # カットインスプライトの作成 setup_cut_in_sprite(cut_in) end end end #============================================================================== # ☆ MINTO_Cut_in #------------------------------------------------------------------------------ # カットインの演出を管理するシステムモジュールです。 #============================================================================== module MINTO_Cut_in #-------------------------------------------------------------------------- # ● SEとフラッシュのタイミング処理 # timing : タイミングデータ (RPG::Animation::Timing) # hit : ヒットフラグ #-------------------------------------------------------------------------- def animation_process_timing(timing, hit) # 条件が ヒット で攻撃がミスだった場合か、 # 条件が ミス で攻撃がヒットだった場合 if(timing.condition == 1 and hit == false) or (timing.condition == 2 and hit == true) then # メソッドを返す return end # SE名が カットイン実行 の場合 if timing.se.name == "カットイン実行" then # カットイン作成 setup_cut_in(timing.flash_color.alpha) # 動きを参照するセルIDを取得する(フラッシュの時間) @cut_in_cell_id = timing.flash_duration - 1 # それ以外のSE名の場合 else # スーパークラスを実行 (継承先の処理に移行する) super(timing, hit) end end #-------------------------------------------------------------------------- # ● カットインスプライトの作成 # cut_in : カットイン画像ファイル名 #-------------------------------------------------------------------------- def setup_cut_in_sprite(cut_in) # カットインスプライトが有効な場合 if @cut_in_sprite != nil then # 古いビットマップを解放 @cut_in_sprite.bitmap.dispose @cut_in_sprite.bitmap = nil # カットインスプライトが無効な場合 else # カットインスプライトを作成 @cut_in_sprite = Sprite.new(self.viewport) end # 新しいビットマップを読み込む @cut_in_sprite.bitmap = RPG::Cache.picture(cut_in) # カットインスプライトを不可視にする @cut_in_sprite.visible = false end #-------------------------------------------------------------------------- # ● フレーム更新(アニメーション) #-------------------------------------------------------------------------- def update_animation # アニメーションの更新時間が残っている場合 if @_animation_duration >= 1 then # カットインスプライトが有効な場合 if @cut_in_sprite != nil then # 動きをコピーするセルの情報を取得 frame_index = @_animation.frame_max - @_animation_duration cell_data = @_animation.frames[frame_index].cell_data # カットインの更新 update_cut_in(cell_data) end end # スーパークラスを実行 (継承先の処理に移行する) super end #-------------------------------------------------------------------------- # ● フレーム更新(カットイン) # cel_data : セルの情報 #-------------------------------------------------------------------------- def update_cut_in(cell_data) # セルのパターンを取得 pattern = cell_data[@cut_in_cell_id, 0] # 無効なパターンの場合 if pattern == nil or pattern == -1 then # カットインスプライトを不可視にする @cut_in_sprite.visible = false # メソッドを返す return end # カットインスプライトを可視状態にする @cut_in_sprite.visible = true # カットインスプライトの基本座標を設定 @cut_in_sprite.x = self.viewport.rect.width / 2 @cut_in_sprite.y = self.viewport.rect.height - 160 @cut_in_sprite.x += cell_data[@cut_in_cell_id, 1] @cut_in_sprite.y += cell_data[@cut_in_cell_id, 2] @cut_in_sprite.z = 9999 @cut_in_sprite.ox = @cut_in_sprite.bitmap.width / 2 @cut_in_sprite.oy = @cut_in_sprite.bitmap.height / 2 # 各情報をコピー @cut_in_sprite.zoom_x = cell_data[@cut_in_cell_id, 3] / 100.0 @cut_in_sprite.zoom_y = cell_data[@cut_in_cell_id, 3] / 100.0 @cut_in_sprite.angle = cell_data[@cut_in_cell_id, 4] @cut_in_sprite.mirror = (cell_data[@cut_in_cell_id, 5] == 1) @cut_in_sprite.opacity = cell_data[@cut_in_cell_id, 6] @cut_in_sprite.blend_type = cell_data[@cut_in_cell_id, 7] end #-------------------------------------------------------------------------- # ● アニメーションの解放 #-------------------------------------------------------------------------- def dispose_animation # カットインスプライトが有効な場合 if @cut_in_sprite != nil then # 古いビットマップを解放 @cut_in_sprite.bitmap.dispose @cut_in_sprite.bitmap = nil # スプライトを解放 @cut_in_sprite.dispose @cut_in_sprite = nil end # スーパークラスを実行 (継承先の処理に移行する) super end end #============================================================================== # ■ Game_Actor #------------------------------------------------------------------------------ #  アクターを扱うクラスです。このクラスは Game_Actors クラス ($game_actors) # の内部で使用され、Game_Party クラス ($game_party) からも参照されます。 #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # ● 所属IDの取得 #-------------------------------------------------------------------------- def belong_id return self.id end end #============================================================================== # ■ Game_Enemy #------------------------------------------------------------------------------ #  エネミーを扱うクラスです。このクラスは Game_Troop クラス ($game_troop) の # 内部で使用されます。 #============================================================================== class Game_Enemy < Game_Battler #-------------------------------------------------------------------------- # ● 所属IDの取得 #-------------------------------------------------------------------------- def belong_id return 1000 + self.id end end #============================================================================== # ■ Sprite_Battler #------------------------------------------------------------------------------ #  バトラー表示用のスプライトです。Game_Battler クラスのインスタンスを監視し、 # スプライトの状態を自動的に変化させます。 #============================================================================== class Sprite_Battler < RPG::Sprite #-------------------------------------------------------------------------- # ● システムインクルード #-------------------------------------------------------------------------- include(MINTO_Cut_in) # みんとカットイン end #============================================================================== # ■ Scene_Battle (分割定義 1) #------------------------------------------------------------------------------ #  バトル画面の処理を行うクラスです。 #============================================================================== class Scene_Battle #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :active_battler # アクティブバトラー end end