Project1
标题:
請幫我修改這個戰鬥顯血腳本的一點小功能,謝謝!
[打印本页]
作者:
冷徹心扉
时间:
2012-10-8 12:49
标题:
請幫我修改這個戰鬥顯血腳本的一點小功能,謝謝!
本帖最后由 冷徹心扉 于 2012-11-26 13:29 编辑
這是橫版戰鬥顯示敵方血條的自定腳本
但預設功能是攻擊敵人後在敵人腳下顯示血條、過一段時間消失
我希望能改成
1.開始戰鬥就顯示血條(可略)
2.血條隨著敵人死亡而消失,而不會留著一個空槽在場上
3.血條中顯示被削減的傷害區塊,類似格鬥遊戲那樣
4.能更改為自定義圖片更好
非常需要這樣的功能,希望各位高手協助修改一下,感激不盡!
腳本如下
class Sprite_Battler < Sprite_Base
# Word used in enemy Notes field to hide HP gauge
GAUGE_M = "HIDEHP"
# 背景色 [邊框顏色, 內部顏色]
GAUGE_BC = [Color.new(0,0,0,255), Color.new(20,0,0,240)] #155.205.155
# 面層色(漸變效果) [左端, 右端]
GAUGE_GC = [Color.new(130,0,0), Color.new(210,30,30)]
#
GAUGE_W = 82 # 寬度 140
GAUGE_H = 4 # 高度 5.5
GAUGE_S = 17 # 扣減速度(超過2)30 越小越快
GAUGE_T = 30000 # 顯示幀數 1秒3000 10秒30000 30秒90000 60秒180000
GAUGE_O = 16 # 不透明度16
#
GAUGE_V = false # 當光標出現可疑損壞。需要STRxx光標。
#--------------------------------------------------------------------------
# ● 繪畫血條
#--------------------------------------------------------------------------
def create_enhpgauge
g_width = GAUGE_W # 長
g_height = GAUGE_H # 高
f_color = GAUGE_BC # 背景色
g_color = GAUGE_GC # 面層色
# 圖畫繪製
bitmap = Bitmap.new(g_width, g_height * 2)
# 上半部分:圖畫定義,背景色
bitmap.fill_rect(0, 0, g_width, g_height, f_color[0]) # 外框
bitmap.fill_rect(1, 1, g_width - 2, g_height - 2, f_color[1]) # 內部
# 上半部分:圖畫定義,面層色
bitmap.gradient_fill_rect(1, g_height + 1, g_width - 2, g_height - 2,
g_color[0], g_color[1]) # 層次
# 血條建立 # [0] = 背景色 ; [1] = 面層色
@hp_gauge = [Sprite.new, Sprite.new]
for i in 0..1
sprite = @hp_gauge
sprite.viewport = self.viewport
sprite.bitmap = bitmap
sprite.src_rect.set(0, 0, g_width, g_height)
sprite.src_rect.y = g_height if i == 1
if $back_attack && N01::BACK_ATTACK && N01::BACK_ATTACK_NON_BACK_MIRROR
sprite.x = Graphics.width - @battler.screen_x
else
#----------------------------------------------------------------------------------------------------------------------------------------------------
sprite.x = @battler.screen_x #直接打數字固定在左上,用後面語法跟隨圖片
end
#~ sprite.y = @battler.screen_y + 10 #血條的高低 8
#~ sprite.y = @battler.screen_y + 19 #血條的高低 5+14
sprite.y = @battler.screen_y + 15 #血條的高低 5+14
#----------------------------------------------------------------------------------------------------------------------------------------------------
sprite.ox = g_width / 2
sprite.oy = g_height / 2
sprite.z = 200
sprite.z += 20 if i == 1
sprite.opacity = 0
end
# 各種
@enid = @battler.enemy_id
@hp = @battler.hp
@gauge_width = GAUGE_W + 1
@gauge_opacity = 0
end
#----------------------------------------------------------------------------------------------------------------------------------------------------
# ● 血條更新
#--------------------------------------------------------------------------
def enhpgauge_update
# 如果對應ID敵人被傷害的時候需要顯示
if @enid != @battler.enemy_id
@enid = @battler.enemy_id
@gauge_visible = true
#~ ## @gauge_visible = false if $data_enemies[@enid].note.include?(GAUGE_M)
#~ ## for i in @hp_gauge do i.visible = @gauge_visible end
end
return unless @gauge_visible
# 計算更新
if @hp != @battler.hp
g_width = (@battler.hp / (@battler.maxhp * 1.0))
@gauge_width = ((GAUGE_W * g_width) + 1).truncate
@gauge_opacity = GAUGE_T
@hp = @battler.hp
end
# 長
g_width = @hp_gauge[1].src_rect.width
speed = GAUGE_S
rect = @hp_gauge[1].src_rect
rect.width = (@gauge_width + (g_width * (speed - 1))) / speed
if rect.width != @gauge_width
if rect.width > @gauge_width
rect.width -= 1
else
rect.width += 1
end
end
rect.width = 2 if rect.width <= 1 and @hp > 0
# 透明度
if GAUGE_V and @battler.cursor_flash
@gauge_opacity += GAUGE_O * 2 if @gauge_opacity <= GAUGE_T / 2
else
@gauge_opacity -= GAUGE_O if @gauge_opacity > 0
end
# 透明度適用
for i in @hp_gauge do i.opacity = @gauge_opacity end
end
#--------------------------------------------------------------------------
# ● 對象初始化
#--------------------------------------------------------------------------
alias initialize_str15 initialize
def initialize(viewport, battler = nil)
initialize_str15(viewport, battler)
if @battler.is_a?(Game_Enemy)
create_enhpgauge
@gauge_visible = true
#~ ## @gauge_visible = false if $data_enemies[@enid].note.include?(GAUGE_M)
#~ ## for i in @hp_gauge do i.visible = @gauge_visible end
end
end
#--------------------------------------------------------------------------
# ● 解放(dispose)
#--------------------------------------------------------------------------
alias dispose_str15 dispose
def dispose
dispose_str15
if @battler.is_a?(Game_Enemy)
@hp_gauge[0].bitmap.dispose
@hp_gauge[0].dispose
@hp_gauge[1].dispose
end
end
#--------------------------------------------------------------------------
# ● 幀更新
#--------------------------------------------------------------------------
alias update_str15 update
def update
update_str15
enhpgauge_update if @battler.is_a?(Game_Enemy)
end
end
#
end
复制代码
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1