#=========================================================================== # ◆ A1 Scripts ◆ # イベントに影・イベント高度(RGSS3) # # バージョン : 1.00 (2012/01/04) # 作者 : A1 # URL     : http://a1tktk.web.fc2.com/ #--------------------------------------------------------------------------- # 機能: # ・ジャンプ時にイベントに影をつけます # ・イベントを浮かせて影をつけます #--------------------------------------------------------------------------- # 更新履歴   :2011/12/31 Ver1.00 リリース #--------------------------------------------------------------------------- # 設置場所 #  特になし # (通行設定「□」拡張段差より下) #  # 必要スクリプト # なし #--------------------------------------------------------------------------- # 使い方 # イベントの名前に記述します # #  イベント名[FLY pno] #  pno:ページNo # #  pnoで指定したページのグラフィックを浮かせて影をつけます # 高さはプライオリティタイプに準じます #============================================================================== $imported ||= {} $imported["A1_EventShadow"] = true #============================================================================== # ■ RPG::Event::Page #============================================================================== class RPG::Event::Page #-------------------------------------------------------------------------- # ○ 飛行設定 #-------------------------------------------------------------------------- def fly_type @fly_type = false if @fly_type == nil return @fly_type end #-------------------------------------------------------------------------- # ○ 飛行設定 #-------------------------------------------------------------------------- def fly_type=(flag) @fly_type = flag end end #============================================================================== # ■ RPG::Event #============================================================================== class RPG::Event #-------------------------------------------------------------------------- # ○ 飛行イベントの設定 #-------------------------------------------------------------------------- def setup_fly_type @name.scan(/\[FLY[ ](\d+)\]/).each {|info| page_no = info[0].to_i return change_all_fly_type if page_no == 0 change_fly_type(@pages[page_no - 1]) } end #-------------------------------------------------------------------------- # ○ 全ての飛行設定を変更 #-------------------------------------------------------------------------- def change_all_fly_type @pages.each {|page| change_fly_type(page) } end #-------------------------------------------------------------------------- # ○ 飛行設定を変更 #-------------------------------------------------------------------------- def change_fly_type(page) return if page == nil page.fly_type = true end end #============================================================================== # ■ Game_CharacterBase #------------------------------------------------------------------------------ #  キャラクターを扱う基本のクラスです。全てのキャラクターに共通する、座標やグ # ラフィックなどの基本的な情報を保持します。 #============================================================================== class Game_CharacterBase #-------------------------------------------------------------------------- # ☆ 画面 Y 座標の取得 #-------------------------------------------------------------------------- alias a1_event_shadow_gcb_screen_y screen_y def screen_y a1_event_shadow_gcb_screen_y - character_altitude end #-------------------------------------------------------------------------- # ○ ジャンプ中影の画面座標 #-------------------------------------------------------------------------- def shadow_screen_y screen_y + jump_height end #-------------------------------------------------------------------------- # ○ キャラクターの高度 #-------------------------------------------------------------------------- def character_altitude @character_altitude ||= 0 return @character_altitude end #-------------------------------------------------------------------------- # ○ キャラクターの高度 #-------------------------------------------------------------------------- def character_altitude=(value) @character_altitude = value end end #============================================================================== # ■ Game_Event #------------------------------------------------------------------------------ #  イベントを扱うクラスです。条件判定によるイベントページ切り替えや、並列処理 # イベント実行などの機能を持っており、Game_Map クラスの内部で使用されます。 #============================================================================== class Game_Event < Game_Character #-------------------------------------------------------------------------- # ☆ オブジェクト初期化 # event : RPG::Event #-------------------------------------------------------------------------- alias a1_event_shadow_ge_initialize initialize def initialize(map_id, event) event.setup_fly_type a1_event_shadow_ge_initialize(map_id, event) end #-------------------------------------------------------------------------- # ☆ イベントページの設定をセットアップ #-------------------------------------------------------------------------- alias a1_event_shadow_ge_setup_page_settings setup_page_settings def setup_page_settings a1_event_shadow_ge_setup_page_settings return unless @page.fly_type @character_altitude = @priority_type * 16 end end #============================================================================== # ■ Sprite_Character #------------------------------------------------------------------------------ #  キャラクター表示用のスプライトです。Game_Character クラスのインスタンスを # 監視し、スプライトの状態を自動的に変化させます。 #============================================================================== class Sprite_Character < Sprite_Base #-------------------------------------------------------------------------- # ☆ オブジェクト初期化 # character : Game_Character #-------------------------------------------------------------------------- alias a1_event_shadow_sc_initialize initialize def initialize(viewport, character = nil) a1_event_shadow_sc_initialize(viewport, character) create_event_shadow if character.character_altitude > 0 end #-------------------------------------------------------------------------- # ○ イベントの影スプライトの作成 #-------------------------------------------------------------------------- def create_event_shadow @shadow_sprite = Sprite.new(@viewport1) @shadow_sprite.bitmap = Cache.system("Shadow") @shadow_sprite.ox = @shadow_sprite.bitmap.width / 2 @shadow_sprite.oy = @shadow_sprite.bitmap.height @shadow_sprite.z = @character.priority_type * 100 - 20 end #-------------------------------------------------------------------------- # ☆ 解放 #-------------------------------------------------------------------------- alias a1_event_shadow_sc_dispose dispose def dispose dispose_shadow a1_event_shadow_sc_dispose end #-------------------------------------------------------------------------- # ○ イベントの影スプライトの解放 #-------------------------------------------------------------------------- def dispose_shadow @shadow_sprite.dispose if @shadow_sprite end #-------------------------------------------------------------------------- # ☆ フレーム更新 #-------------------------------------------------------------------------- alias a1_event_shadow_sc_update update def update a1_event_shadow_sc_update update_event_shadow end #-------------------------------------------------------------------------- # ○ イベントの影スプライトの更新 #-------------------------------------------------------------------------- def update_event_shadow return update_jump_shadow if @character.jumping? return unless @shadow_sprite @shadow_sprite.x = @character.screen_x @shadow_sprite.y = @character.screen_y + @character.character_altitude @shadow_sprite.opacity = @character.character_altitude * 8 @shadow_sprite.update end #-------------------------------------------------------------------------- # ○ ジャンプ中の影スプライトの更新 #-------------------------------------------------------------------------- def update_jump_shadow return show_jump_shadow if @character.jumping? @shadow_sprite.dispose if @shadow_sprite && @character.character_altitude == 0 end #-------------------------------------------------------------------------- # ○ ジャンプ中の影スプライトの表示 #-------------------------------------------------------------------------- def show_jump_shadow create_event_shadow if @shadow_sprite == nil @shadow_sprite.x = @character.screen_x @shadow_sprite.y = @character.shadow_screen_y @shadow_sprite.opacity = 255 @shadow_sprite.update end end