기타

ABS 몬스터 HP 게이지 바

by 백호 posted Feb 22, 2009
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
#--------------------------------------------------------------------------
#HP bars for all ABS enemies
#By Takanuva Hagah
#--------------------------------------------------------------------------
class Window_Enemy < Window_Base
def initialize
super(-16, -16, 672, 640)
self.contents = Bitmap.new(width-32, height-32)
self.opacity = 0
self.contents.font.size = 14
@old_enemy = $ABS.enemies.size
for i in 0...$ABS.enemies.size
event_z = $ABS.enemies.values[i].event_id
@old_x = $game_map.events[event_z].real_x
@old_y = $game_map.events[event_z].real_y
@old_hp = $ABS.enemies.values[i].hp
end
@player_x = $game_player.real_x
@player_y = $game_player.real_y
refresh
end
def refresh
self.contents.clear
self.contents.font.color = system_color
self.contents.draw_text(6, 28, 32, 14, "")
self.contents.font.color = normal_color
for i in 0...$ABS.enemies.size
event_z = $ABS.enemies.values[i].event_id
x = ($game_map.events[event_z].real_x - $game_map.display_x) / 4
y = ($game_map.events[event_z].real_y - $game_map.display_y) / 4
data_id = $ABS.enemies.values[i].id
e2 = $data_enemies[data_id].maxhp
e1 = $ABS.enemies.values[i].hp
self.contents.draw_text(x-10, y-50, 73, 14, $ABS.enemies.values[i].name)
draw_enemy_bar("", x, y+40, 30, 5, Color.new(255, 255, 0), Color.new(204, 204, 0), e1, e2)
end
end
def update
super
if @old_enemy != $ABS.enemies.size
refresh
@old_enemy = $ABS.enemies.size
end
if @player_x != $game_player.real_x or
@player_y != $game_player.real_y
refresh
@player_x = $game_player.real_x
@player_y = $game_player.real_y
end
for i in 0...$ABS.enemies.size
event_z = $ABS.enemies.values[i].event_id
if @old_x != $game_map.events[event_z].real_x or
@old_y != $game_map.events[event_z].real_y or
@old_hp[i] != $ABS.enemies.values[i].hp
refresh
event_z = $ABS.enemies.values[i].event_id
@old_x = $game_map.events[event_z].real_x
@old_y = $game_map.events[event_z].real_y
@old_hp = $ABS.enemies.values[i].hp
end
end
end
def draw_enemy_bar(actor, x, y, length, thick, c1, c2, e1, e2)
width = length
height = thick
self.contents.fill_rect(x-1, y - 1, width+2, height + 3, Color.new(255, 255, 255, 255))
self.contents.fill_rect(x, y, width, height + 1, Color.new(0, 0, 0, 255))
w = width * e1 / e2
for i in 0..height
r = c1.red + (c2.red - c1.red) * (height -i)/height + 0 * i/height
g = c1.green + (c2.green - c1.green) * (height -i)/height + 0 * i/height
b = c1.blue + (c2.blue - c1.blue) * (height -i)/height + 0 * i/height
a = c1.alpha + (c2.alpha - c1.alpha)* (height -i)/height + 255 * i/height
self.contents.fill_rect(x, y+i, w, 1, Color.new(r, g, b, a))
end
end
end
class Scene_Map
alias enemy_scene_map_main main
alias enemy_scene_map_update update
def main
@enemy = Window_Enemy.new
enemy_scene_map_main
@enemy.dispose
end
def update
@enemy.update
enemy_scene_map_update
end
end