赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 5 |
经验 | 14487 |
最后登录 | 2024-10-31 |
在线时间 | 350 小时 |
Lv2.观梦者
- 梦石
- 0
- 星屑
- 521
- 在线时间
- 350 小时
- 注册时间
- 2015-10-19
- 帖子
- 87
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 约约v看看 于 2015-12-20 13:54 编辑
#==============================================================================
# *删除MP显示相关
#==============================================================================
# 功能:战斗中显示敌人血和蓝于敌人脚下
# 适用:RMVX Ace
# 作者:殇殃 2012.3.10
# 使用方法:复制整个脚本插入到Main之前
# 注意:由于血条是显示在敌人脚下,所以敌群的位置不能太靠底部,不然会被挡住。
# 可以自行更改坐标修改显示位置、血条的颜色等。
#==============================================================================
# ■ Window_Base
#------------------------------------------------------------------------------
# 游戏中全部窗口的超级类。
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# ● 描绘敌人HP
#--------------------------------------------------------------------------
def draw_enemy_hp(enemy, x, y, width = 80)
draw_gauge(x, y, width, enemy.hp_rate, hp_gauge_color1, hp_gauge_color2)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 30, line_height, Vocab::hp_a)
self.contents.font.color = hp_color(enemy)
self.contents.draw_text(x + width - 64, y, 64, line_height, enemy.hp, 2)
#一个数字占16像素
end
end
#==============================================================================
# ■ Sprite_Battler
#------------------------------------------------------------------------------
# 战斗显示用活动块。Game_Battler 类的实例监视、
# 活动块的状态的监视、活动块状态自动变化。
#==============================================================================
class Sprite_Battler < Sprite_Base
#--------------------------------------------------------------------------
# ● 初始化对象
# viewport : 视区
# battler : 战斗者 (Game_Battler)
#--------------------------------------------------------------------------
def initialize(viewport, battler = nil)
super(viewport)
@battler = battler
@battler_visible = false
@effect_type = nil
@effect_duration = 0
if @battler.is_a?(Game_Enemy)
width = 24 + 80 #边距12*2+血条的长度(在draw_enemy_hp中定义)
height = 24 + 24*2 #边距12*2+line_height*2
x = @battler.screen_x - width/2 #screen_x是怪物图片水平方向上的中点位置
y = @battler.screen_y - 12 #边距12,显示HP/MP的窗口无边框
@enemy_hpmp_window = Window_Base.new(x, y, width, height)
@enemy_hpmp_window.opacity = 0
@enemy_hpmp_window.contents = Bitmap.new(width - 24, height - 24)#位图比窗口小24像素取消边框
@enemy_hpmp_window.draw_enemy_hp(@battler, 0, 0)
@old_hp = -1
end
end
#--------------------------------------------------------------------------
# ● 释放
#--------------------------------------------------------------------------
def dispose
if self.bitmap != nil
self.bitmap.dispose
@enemy_hpmp_window.dispose
end
super
end
#--------------------------------------------------------------------------
# ● 更新画面
#--------------------------------------------------------------------------
def update
super
if @battler == nil
self.bitmap = nil
else
@use_sprite = @battler.use_sprite?
if @use_sprite
update_bitmap
update_origin
update_position
end
setup_new_effect
setup_new_animation
update_effect
if @enemy_hpmp_window != nil and @old_hp != @battler.hp
if @battler.hp == 0
@enemy_hpmp_window.hide
else
@enemy_hpmp_window.contents.clear
@enemy_hpmp_window.draw_enemy_hp(@battler, 0, 0)
@old_hp = @battler.hp
@enemy_hpmp_window.show #怪物死后再被复活
end #if battler.hp == 0
end
end #if @battler == nil
end
end
和
#=====================================================================
=========
# ■ Game_Actor
#=====================================================================
=========
class Game_Actor < Game_Battler
#---------------------------------------------------------------------
-----
# ● 是否使用精灵
#---------------------------------------------------------------------
-----
def use_sprite?
true
end
#---------------------------------------------------------------------
-----
# ● 战斗画面 X 坐标
#---------------------------------------------------------------------
-----
def screen_x
Graphics.width / 2
end
#---------------------------------------------------------------------
-----
# ● 战斗画面 Y 坐标
#---------------------------------------------------------------------
-----
def screen_y
Graphics.height
end
#---------------------------------------------------------------------
-----
# ● 战斗画面 Z 坐标
#---------------------------------------------------------------------
-----
def screen_z
return 100
end
end
#=====================================================================
=========
# ■ Sprite_Battler
#=====================================================================
=========
class Sprite_Battler < Sprite_Base
#---------------------------------------------------------------------
-----
# ● 设置动画的原点
#---------------------------------------------------------------------
-----
def set_animation_origin
if @animation.position == 3
# 数据库中设定的动画基础位置是 [画面] 时的坐标变更
@ani_ox = viewport.rect.width / 2
yy = viewport.rect.height / 5
@ani_oy = @battler.actor? ? (yy * 4) : (yy * 2.5)
else
@ani_ox = x - ox + width / 2
@ani_oy = y - oy + height / 2
if @animation.position == 0
@ani_oy -= height / 2
elsif @animation.position == 2
@ani_oy += height / 2
end
end
end
end |
-
捕获.PNG
(4.85 KB, 下载次数: 30)
帖子第一个脚本会这样
|