#============================================================================== # +++ 「+ふきだし表示」VX +++ # by パラ犬  http://2d6.parasite.jp/ # × # row http://xms.rdy.jp/ # # publish 2010/ 3/ 2 # update - # #------------------------------------------------------------------------------ #  ほぼどんなメッセージウィンドウに対しても後付け可能な「ふきだし表示」です。 #  また、テール部分のみの自動追尾機能を持ちます。 #   ふきだし表示をするには、 #  テール用画像「Window-top」「Window-under」を #  「Graphics/System」フォルダにインポートしておく必要があります。 #============================================================================== # ■ Window_Message #============================================================================== class Window_Message < Window_Selectable #-------------------------------------------------------------------------- # ● メッセージの開始 #-------------------------------------------------------------------------- alias parashelf_start_message start_message def start_message parashelf_start_message update_tail end #-------------------------------------------------------------------------- # クローズ [オーバーライド] #-------------------------------------------------------------------------- def close super del_tail end #-------------------------------------------------------------------------- # ● 特殊文字の変換 #-------------------------------------------------------------------------- alias parashelf_convert_special_characters convert_special_characters def convert_special_characters parashelf_convert_special_characters set_tail end #-------------------------------------------------------------------------- # ● 背景スプライトの更新 #-------------------------------------------------------------------------- alias parashelf_update_back_sprite update_back_sprite def update_back_sprite parashelf_update_back_sprite update_tail end #-------------------------------------------------------------------------- # ○ フレーム更新 (ふきだしテール) #-------------------------------------------------------------------------- def update_tail # ふきだしモードではイベントの動きに追従 if $mes_id != nil and @tail != nil tale_pos = get_tale_pos @tail.x = tale_pos[0] @tail.y = tale_pos[1] skin = "Window" case @position when 0 # 上 @tail.bitmap = Cache.system(skin + "-top") when 2 # 下 @tail.bitmap = Cache.system(skin + "-under") end # 可視状態 @tail.visible = self.openness == 255 end end #-------------------------------------------------------------------------- # ○ ふきだしテールを表示 #-------------------------------------------------------------------------- def set_tail del_tail # $mes_id が空のときと戦闘中はふきだしを表示しない if $mes_id != nil and not $game_temp.in_battle # ふきだしのテールを描画 skin = "Window" if @background == 0 # 位置を取得 tale_pos = get_tale_pos @tail = Sprite.new case @position when 0 # 上 @tail.bitmap = Cache.system(skin + "-top") @tail.x = tale_pos[0] @tail.y = tale_pos[1] @tail.z = self.z + 1 when 1 # 中 @tail.dispose @tail = nil when 2 # 下 @tail.bitmap = Cache.system(skin + "-under") @tail.x = tale_pos[0] @tail.y = tale_pos[1] @tail.z = self.z + 1 end # エクストラスプライトに登録 @extra_sprites = [] if @extra_sprites.nil? @extra_sprites.push(@tail) if @tail != nil # 更新 update_tail end end end #-------------------------------------------------------------------------- # ○ テールの位置を計算 #-------------------------------------------------------------------------- def get_tale_pos character = get_character($mes_id) x = [[character.screen_x - 16, self.x].max, self.x + self.width - 32].min case @position when 0 y = self.y + self.height - 16 #24 #16 else y = self.y - 16 #8 #16 end return [x, y] end #-------------------------------------------------------------------------- # ○ ふきだしを破棄 #-------------------------------------------------------------------------- def del_tail if @tail != nil @tail.dispose @tail = nil end end end # # ▼▲▼ XRXS 9拡張CO-X. ふきだし自動設定 ▼▲▼ #============================================================================== # ■ Window_Message #============================================================================== class Window_Message < Window_Selectable #-------------------------------------------------------------------------- # ○ ポップキャラクターの設定 #-------------------------------------------------------------------------- def pop_character=(character_id) @pop_character = character_id $mes_id = character_id end end