赞 | 159 |
VIP | 0 |
好人卡 | 0 |
积分 | 263 |
经验 | 0 |
最后登录 | 2024-11-22 |
在线时间 | 5357 小时 |
Lv5.捕梦者
- 梦石
- 0
- 星屑
- 26303
- 在线时间
- 5357 小时
- 注册时间
- 2016-3-8
- 帖子
- 1655
|
本帖最后由 alexncf125 于 2020-8-7 18:49 编辑
- #==============================================================================
- # F08 - 战斗敌人显示血条 - By芙蕾娅
- #------------------------------------------------------------------------------
- # ★ - 新增 ☆ - 修改 ■ - 删除 ● - 无变更
- #==============================================================================
- module Freya
- # 隐藏HP的文本
- HideGaugeText = "Hide_Gauge"
- # 血条颜色
- EnemyHPGaugeColor1 = Color.new(64,128,96)
- EnemyHPGaugeColor2 = Color.new(96,192,160)
- end
- #==============================================================================
- # ■ Sprite_Battler_HP
- #------------------------------------------------------------------------------
- # 显示战斗者的生命在战斗者的精灵下面。
- #==============================================================================
- class Sprite_Battler_HP < Sprite
- #--------------------------------------------------------------------------
- # ● 初始化对象
- #--------------------------------------------------------------------------
- def initialize(viewport,battler = nil)
- super(viewport)
- @battler = battler
- @last_hp = 0
- create_bitmap
- update
- end
- #--------------------------------------------------------------------------
- # ● 释放
- #--------------------------------------------------------------------------
- def dispose
- self.bitmap.dispose
- super
- end
- #--------------------------------------------------------------------------
- # ● 生成位图
- #--------------------------------------------------------------------------
- def create_bitmap
- @last_hp = @battler.hp
- bw = 96
- bh = 6
- self.bitmap = Bitmap.new(bw, bh)
- self.bitmap.fill_rect(0, 0, bw, bh, Color.new(32,32,64))
- if Freya::Gauge_Type.nil? or Freya::Gauge_Type == 0
- hp = ((bw) * @battler.hp_rate).to_i
- self.bitmap.gradient_fill_rect(0, 0, hp, bh, Freya::EnemyHPGaugeColor1, Freya::EnemyHPGaugeColor2)
- elsif Freya::Gauge_Type == 1
- hp = ((width - 2) * @battler.hp_rate).to_i
- self.bitmap.gradient_fill_rect(1, 1, hp, bh - 2, Freya::EnemyHPGaugeColor1, Freya::EnemyHPGaugeColor2)
- elsif Freya::Gauge_Type == 2
- hp = ((width) * @battler.hp_rate).to_i
- self.bitmap.gradient_fill_rect(0, 0, hp / 2, bh, Freya::EnemyHPGaugeColor1, Freya::EnemyHPGaugeColor2)
- self.bitmap.gradient_fill_rect(hp / 2, 0, hp / 2, bh, Freya::EnemyHPGaugeColor2, Freya::EnemyHPGaugeColor1)
- elsif Freya::Gauge_Type == 3
- hp = ((width - 2) * @battler.hp_rate).to_i
- self.bitmap.gradient_fill_rect(1, 1, hp / 2, bh - 2, Freya::EnemyHPGaugeColor1, Freya::EnemyHPGaugeColor2)
- self.bitmap.gradient_fill_rect((hp / 2) + 1, 1, hp / 2, bh - 2, Freya::EnemyHPGaugeColor2, Freya::EnemyHPGaugeColor1)
- end
- end
- #--------------------------------------------------------------------------
- # ● 更新画面
- #--------------------------------------------------------------------------
- def update
- super
- if @battler && [email protected]?
- @use_sprite = @battler.use_sprite?
- if @use_sprite
- update_origin
- update_position
- end
- else
- self.bitmap = nil
- end
- end
- #--------------------------------------------------------------------------
- # ● 原点の更新
- #--------------------------------------------------------------------------
- def update_origin
- if bitmap
- self.ox = bitmap.width / 2
- self.oy = bitmap.height
- end
- end
- #--------------------------------------------------------------------------
- # ● 位置の更新
- #--------------------------------------------------------------------------
- def update_position
- self.x = 72
- self.y = 24 + @battler.index * 24
- self.z = @battler.screen_z + 10
- create_bitmap if @last_hp != @battler.hp
- hide = $data_enemies[@battler.enemy_id].note.include?(Freya::HideGaugeText)
- if @battler.hp == 0 or hide
- self.opacity = 0
- elsif @battler.hp > 0 && !hide
- self.opacity = 255
- end
- end
- end
- class Sprite_Battler_Name < Sprite
- #--------------------------------------------------------------------------
- # ● 初始化对象
- #--------------------------------------------------------------------------
- def initialize(viewport,battler = nil)
- super(viewport)
- @battler = battler
- @name = ""
- create_bitmap
- update
- end
- #--------------------------------------------------------------------------
- # ● 释放
- #--------------------------------------------------------------------------
- def dispose
- self.bitmap.dispose
- super
- end
- #--------------------------------------------------------------------------
- # ● 生成位图
- #--------------------------------------------------------------------------
- def create_bitmap
- @name = @battler.name
- bw = 120
- bh = 24
- self.bitmap = Bitmap.new(bw, bh)
- self.bitmap.draw_text(0, 0, bw, bh, @name, 0)
- end
- #--------------------------------------------------------------------------
- # ● 更新画面
- #--------------------------------------------------------------------------
- def update
- super
- if @battler && [email protected]?
- @use_sprite = @battler.use_sprite?
- if @use_sprite
- update_origin
- update_position
- end
- else
- self.bitmap = nil
- end
- end
- #--------------------------------------------------------------------------
- # ● 原点の更新
- #--------------------------------------------------------------------------
- def update_origin
- if bitmap
- self.ox = bitmap.width / 2
- self.oy = bitmap.height
- end
- end
- #--------------------------------------------------------------------------
- # ● 位置の更新
- #--------------------------------------------------------------------------
- def update_position
- self.x = 72
- self.y = 24 + @battler.index * 24
- self.z = @battler.screen_z + 10
- create_bitmap if @last_hp != @battler.hp
- hide = $data_enemies[@battler.enemy_id].note.include?(Freya::HideGaugeText)
- if @battler.hp == 0 or hide
- self.opacity = 0
- elsif @battler.hp > 0 && !hide
- self.opacity = 255
- end
- end
- end
- #==============================================================================
- # ■ Sprite_Battler
- #------------------------------------------------------------------------------
- # 显示战斗者的精灵。根据 Game_Battler 类的实例自动变化。
- #==============================================================================
- class Sprite_Battler < Sprite_Base
- #--------------------------------------------------------------------------
- # ☆ 初始化对象
- #--------------------------------------------------------------------------
- alias initialize_freya_enemy_hp initialize
- def initialize(viewport, battler = nil)
- initialize_freya_enemy_hp(viewport, battler)
- if @battler.is_a?(Game_Enemy)
- @hp_gauge = Sprite_Battler_HP.new(viewport, battler)
- @name_gauge = Sprite_Battler_Name.new(viewport, battler)
- end
- end
- #--------------------------------------------------------------------------
- # ☆ 释放
- #--------------------------------------------------------------------------
- alias dispose_freya_enemy_hp dispose
- def dispose
- dispose_freya_enemy_hp
- unless @hp_gauge.nil?
- @hp_gauge.dispose
- end
- unless @name_gauge.nil?
- @name_gauge.dispose
- end
- end
- #--------------------------------------------------------------------------
- # ☆ 更新画面
- #--------------------------------------------------------------------------
- alias update_freya_enemy_hp update
- def update
- update_freya_enemy_hp
- @hp_gauge.update unless @hp_gauge.nil?
- @name_gauge.update unless @name_gauge.nil?
- end
- end
复制代码 |
|