# ▽△▽ XRXSv9. BaST-VX.TG1. ターゲットネームプレート ▽△▽ # # publish 2010/ 4/12 # update - /21b # #============================================================================== # --- バトラーグラフィックのサイズ取得機能 --- #============================================================================== class Game_Battler def battler_rect bitmap = (Cache.battler(@battler_name, @battler_hue) rescue nil) if bitmap w = bitmap.width h = bitmap.height else w = 96 h = 96 end return Rect.new(self.screen_x, self.screen_y, w, h) end end #============================================================================== # ターゲットネームウィンドウ #============================================================================== class Window_TargetName < Window_Base def initialize super(0,0,192,36 + 32) self.z = 602 @base_y = 0 @step_count = 0 self.opacity = 0 self.visible = false @base_window = Window_Base.new(16, 16, width - 32, 36) @base_window.z = self.z - 1 @base_window.contents.dispose set_battler(nil) end def set_battler(battler) @battler = battler if @battler self.contents.clear self.contents.draw_text(4, 0, self.width - 40, 36, @battler.name, 1) rect = @battler.battler_rect self.x = [[rect.x - 96, -16].max, Graphics.width - @base_window.width].min self.y = [[rect.y - rect.height - 40, 128].max, 248].min @step_count = 0 @base_y = rect.y self.visible = true else self.visible = false end end def update super @step_count = (@step_count + 1) % 60 case @step_count when 0 self.y -= 2 when 15 self.y += 2 when 30 self.y -= 1 when 45 self.y += 1 end end #-------------------------------------------------------------------------- # 各種連動 #-------------------------------------------------------------------------- def x=(n) super @base_window.x = n + 16 if @base_window end def y=(n) super @base_window.y = n + 16 if @base_window end def visible=(b) super @base_window.visible = b if @base_window end def dispose @base_window.dispose super end end #============================================================================== # ■ Window_TargetEnemy #============================================================================== module XRXSV9TG1_Window def refresh @enemies = self.members @item_max = [@enemies.size, 1].max @column_max = @item_max if self.index >= @item_max self.index = @item_max - 1 end refresh_name end def update super @name_window.update refresh_name if @last_index != self.index end def refresh_name @last_index = self.index @name_window.set_battler(self.enemy) end def dispose @name_window.dispose super end def update_cursor self.cursor_rect.empty end end class Window_TargetEnemy < Window_Command include XRXSV9TG1_Window def initialize @name_window = Window_TargetName.new super(36, [""]) self.contents.clear self.opacity = 0 self.index = 0 refresh end def members $game_troop.existing_members end end class Window_TargetActor < Window_Command include XRXSV9TG1_Window def initialize @name_window = Window_TargetName.new super(36, [""]) self.contents.clear self.opacity = 0 self.index = 0 refresh end def enemy @enemies[self.index] end def members $game_party.members end end