#◆◇◆◇◆ 残像スクリプトVX ver 1・01 ◇◆◇◆◇ # サポート掲示板 http://www2.ezbbs.net/21/minto-aaa/ # by みんと =begin ■ 更新履歴 ○ ver 1.01(2010/12/20) スクロールに対応していなかったミスを修正 ○ ver 1.00(2009/05/24) 公開 ■ 説明 マップ上のキャラに残像を表示させます。 イベントの演出に一役買ってくれるかもしれません。 残像を表示するには、 フラッシュに 残像表示 という名前のSEが設定されているアニメを、 残像をつけたいキャラクターに表示してください。 以降は残像が維持されます。 1フレームのアニメに、フラッシュ[残像表示]だけで構いません。 残像を解放するには、 フラッシュに 残像解放 という名前のSE設定されているアニメを、 残像を解放したいキャラクターに表示してください 残像の色はフラッシュの色がそのまま適用されます。 発生する残像の数はフラッシュの時間を使用します。 ただし、あまり多くすると重くなるので、 6程度を目安にしてください。 =end #============================================================================== # ☆ MINTO #------------------------------------------------------------------------------ # 様々なフラグを扱うメインモジュールです。 #============================================================================== module MINTO # 残像スクリプトVXを有効化 ( true で有効 / false で無効 ) RGSS["残像スクリプトVX"] = true end # 残像スクリプトVXが有効な場合に以降の処理を実行する if MINTO::RGSS["残像スクリプトVX"] == true then #============================================================================== # ■ Sprite #------------------------------------------------------------------------------ #  スプライト表示を扱う組み込みクラスです。 #============================================================================== class Sprite #-------------------------------------------------------------------------- # ● 残像用の複製の作成 #-------------------------------------------------------------------------- def blink # 各データをコピー sprite = Sprite.new(self.viewport) sprite.bitmap = self.bitmap.dup if self.bitmap sprite.x = self.x sprite.y = self.y sprite.z = self.z - 1 sprite.visible = false sprite.ox = self.ox sprite.oy = self.oy sprite.angle = self.angle sprite.mirror = self.mirror sprite.opacity = self.opacity * 160 / 255 sprite.blend_type = 1 sprite.color = self.color.dup sprite.src_rect = self.src_rect.dup sprite.zoom_x = self.zoom_x sprite.zoom_y = self.zoom_y return sprite end #-------------------------------------------------------------------------- # ● データの取得 #-------------------------------------------------------------------------- def data_copy(data) return if data.disposed? or self.disposed? # 各データをコピー self.x = data.x self.y = data.y self.z = data.z - 1 self.visible = data.visible self.ox = data.ox self.oy = data.oy self.angle = data.angle self.mirror = data.mirror self.src_rect = data.src_rect self.zoom_x = data.zoom_x self.zoom_y = data.zoom_y end end #============================================================================== # ■ Blink_Sprite #------------------------------------------------------------------------------ #  残像スプライト表示を扱う組み込みクラスです。 #============================================================================== class Blink_Sprite #-------------------------------------------------------------------------- # ● オブジェクト初期化 # sprite : オリジナルの画像 #-------------------------------------------------------------------------- def initialize(sprite, size) @dx = $game_map.display_x / 8 @dy = $game_map.display_y / 8 # 残像のサイズを取得 @size = size # 残像用の配列を作成 @blink = [] # ループ処理 (0...@size).each do |i| # 残像スプライトを作成 @blink[i] = sprite.blink end end #-------------------------------------------------------------------------- # ● 可視状態の変更 # flag : 新しい可視状態 #-------------------------------------------------------------------------- def visible=(flag) # ループ処理 for sprite in @blink do # 可視状態を変更 sprite.visible = flag end end #-------------------------------------------------------------------------- # ● 残像カラーの変更 # color : 新しいカラー #-------------------------------------------------------------------------- def color_set(color) # ループ処理 for sprite in @blink do # 残像カラーを変更 sprite.color = color.dup end end #-------------------------------------------------------------------------- # ● 解放 #-------------------------------------------------------------------------- def dispose # ループ処理 for sprite in @blink do # 残像スプライトが存在する場合 unless sprite.nil? then # 残像スプライトが未解放の場合 unless sprite.disposed? then # 残像スプライトを解放 sprite.dispose end end end end #-------------------------------------------------------------------------- # ● フレーム更新 # sprite : オリジナルの画像 #-------------------------------------------------------------------------- def update(sprite) # 残像が可視状態でない場合 if @blink[0].visible == false then # メソッドを返す return end # ループ処理 (0...@size).each do |i| s = @blink[(@size - 1) - i] # 前の残像データを渡す s.data_copy(@blink[(@size - 1) - (i + 1)]) s.ox = s.ox + $game_map.display_x / 8 - @dx s.oy = s.oy + $game_map.display_y / 8 - @dy end @dx = $game_map.display_x / 8 @dy = $game_map.display_y / 8 # 残像データを更新 @blink[0].data_copy(sprite) end end #============================================================================== # ☆ MINTO_Sprite_Battler_02 #------------------------------------------------------------------------------ # Sprite_Battlerクラスの強化システムモジュールです。 #============================================================================== module MINTO_Sprite_Battler_02 #-------------------------------------------------------------------------- # ● 解放 #-------------------------------------------------------------------------- def dispose # 残像の解放 dispose_blink # 継承先の処理に移行 super end #-------------------------------------------------------------------------- # ● 残像の解放 #-------------------------------------------------------------------------- def dispose_blink # 残像データが有効な場合 unless @blink_anime.nil? then # 残像を解放 @blink_anime.dispose @blink_anime = nil end end #-------------------------------------------------------------------------- # ● アニメーション・プロセスタイミング # timing : SEなどのデータ #-------------------------------------------------------------------------- def animation_process_timing(timing) # SE "残像表示" が設定されている場合 if timing.se.name == "残像表示" then # 残像の解放 dispose_blink # 残像用のデータを定義 @blink_anime = Blink_Sprite.new(self, timing.flash_duration) # 残像を可視状態にする @blink_anime.visible = true # 残像のカラーを定義 @blink_anime.color_set(timing.flash_color) # メソッドを返す return # SE "残像解放" が設定されている場合 elsif timing.se.name == "残像解放" then # 残像の解放 dispose_blink # メソッドを返す return end # 継承先の処理に移行 super(timing) end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update # 残像データが有効な場合 unless @blink_anime.nil? then # 残像を更新 @blink_anime.update(self) end # 継承先の処理に移行 super end end #============================================================================== # ■ Sprite_Character #------------------------------------------------------------------------------ #  キャラクター表示用のスプライトです。Game_Character クラスのインスタンスを # 監視し、スプライトの状態を自動的に変化させます。 #============================================================================== class Sprite_Character < Sprite_Base #-------------------------------------------------------------------------- # ● システムインクルード #-------------------------------------------------------------------------- include MINTO_Sprite_Battler_02 # みんとスプライトバトラー end end