#◆◇◆◇◆ セルリンクカットインスクリプトVX ver 1.02 ◇◆◇◆◇ # サポート掲示板 http://www2.ezbbs.net/21/minto-aaa/ # by みんと =begin ■ 更新履歴 ○ ver 1.02(2009/07/25) エネミーにカットインが表示できなかったミスを修正 ○ ver 1.01(2009/04/30) アニメFPS変更スクリプトに対応 謎落ちをおそらく修正 ○ ver 1.00(2009/02/22) 公開 ■説明 アニメ表示中にカットインが表示できるようになります。 カットインは指定したセルの動きをコピーし、 コピーしたセルと全く同じ動きをします。 ですので、座標の変更や拡大、不透明度の変更などが自由に設定できます。 表示には任意のフレームに、 カットイン実行 という名前のSEを実行してください。 そのタイミングでカットインが表示されます。 また、カットインの種類にはフラッシュの強さを、 コピーするセルのIDはフラッシュの時間を使用します。 カットインはアクター、エネミーのIDで分岐しますので、 わざわざアニメを数種類用意する必要はありません。 ただし、セルの表示自体はされますので、 コピーするセルのパターンには100などの値を設定してください。 例 SE カットイン実行 フラッシュの強さ 1 フラッシュの時間 2 実行したバトラーの種類1のカットインを表示し、 セルID2番のデータをコピーします。 詳しい設定はソース内部を参照してください。 カットイン画像はすべてピクチャーフォルダを使用します。 =end #============================================================================== # ☆ MINTO #------------------------------------------------------------------------------ # 様々なフラグを扱うメインモジュールです。 #============================================================================== module MINTO # セルリンクカットインスクリプトVXを有効化 ( true で有効 / false で無効 ) RGSS["セルリンクカットイン"] = true end # セルリンクカットインスクリプトVXが有効な場合に以降の処理を実行する 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 = "Actor1-0L" end # アクターID_2 when 2 then # フラッシュの強さに応じて分岐 case type when 1 then # カットイン画像名を設定 cut_in = "Actor1-1L" when 2 then # カットイン画像名を設定 cut_in = "Actor1-1L" end # アクターID_3 when 3 then # フラッシュの強さに応じて分岐 case type when 1 then # カットイン画像名を設定 cut_in = "Actor1-2L" end # アクターID_4 when 4 then # フラッシュの強さに応じて分岐 case type when 1 then # カットイン画像名を設定 cut_in = "Actor2-1L" end # アクターID_5 when 5 then # フラッシュの強さに応じて分岐 case type when 1 then # カットイン画像名を設定 cut_in = "Actor2-4L" end # アクターID_6 when 6 then # フラッシュの強さに応じて分岐 case type when 1 then # カットイン画像名を設定 cut_in = "Actor3-1L" end # エネミーID_1 when 1001 then # フラッシュの強さに応じて分岐 case type when 1 then # カットイン画像名を設定 cut_in = "Actor1-0L" 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) #-------------------------------------------------------------------------- def animation_process_timing(timing) # 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) 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 = Cache.picture(cut_in) # カットインスプライトを不可視にする @cut_in_sprite.visible = false end #-------------------------------------------------------------------------- # ● フレーム更新(アニメーション) #-------------------------------------------------------------------------- def update_animation # アニメーションの更新時間が残っている場合 if @animation_duration >= 1 then # カットインスプライトが有効な場合 if @cut_in_sprite != nil then # アニメFPS変更スクリプトVXが有効な場合 if MINTO::RGSS["アニメFPS変更スクリプトVX"] == true then # 動きをコピーするセルの情報を取得 frame_index = @animation.frame_max - @animation_duration else # 動きをコピーするセルの情報を取得 frame_index = @animation.frame_max - (@animation_duration + 3) / 4 end 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 # 無効なデータの場合 if @cut_in_sprite.nil? or @cut_in_sprite.bitmap.nil? or @cut_in_sprite.bitmap.disposed? # メソッドを返す 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 = 99999 @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 + enemy_id end end #============================================================================== # ■ Sprite_Battler #------------------------------------------------------------------------------ #  バトラー表示用のスプライトです。Game_Battler クラスのインスタンスを監視し、 # スプライトの状態を自動的に変化させます。 #============================================================================== class Sprite_Battler < Sprite_Base #-------------------------------------------------------------------------- # ● システムインクルード #-------------------------------------------------------------------------- include(MINTO_Cut_in) # みんとカットイン end #============================================================================== # ■ Scene_Battle (分割定義 1) #------------------------------------------------------------------------------ #  バトル画面の処理を行うクラスです。 #============================================================================== class Scene_Battle #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :active_battler # アクティブバトラー end end