Screenshot
(http://imagesload.net/daten_no/1206322235_str15.jpg)
Credits
Anleitung
<Leiste aus> in den Note eines Enemies eintragen, falls von ihn keine HP-Leiste angezeigt werden soll.
Die Farben der Leiste kann man auch ändern. Die Einstellungen dafür findet man in den Konstanten in Sprite_Battler und sehen so aus:Color.new(96,192,160)
Das hier ist jetzt die Farbe, die in der Leiste rechts angezeigt wird. Die 96 ist der Anteil von Rot, 192 der von Grün und 160 von Blau an der Farbe. Mit der Hilfe von z.B. dieser (http://www.farb-tabelle.de/de/farbtabelle.htm) Tabelle kann man sich einen Überblick verschaffen, was man ändern muss, dass es so ausguckt wie man es sich vorstellt.
Andere Einstellungen findet man im Skript und sollten größtenteils durch die Kommentare geklärt sein. Falls nicht besser erkären oder einfach fragen ;)
Skript
#==============================================================================
# ** [STR15] HP-Leiste bei Gegner (von star) (Version 0.9 vom 22. Januar 2008)
#------------------------------------------------------------------------------
# Zeigt die HP vom Gegner in einer Leiste an, wenn er attackiert wird.
#==============================================================================
#==============================================================================
# ** Sprite_Battler
#==============================================================================
class Sprite_Battler < Sprite_Base
#--------------------------------------------------------------------------
# * Konstanten
#--------------------------------------------------------------------------
# Eintrag in den Notes eines Enemies um keine Leiste anzuzeigen
GAUGE_M = "<Leiste aus>"
# Hintergrundfarbe der Leiste [Farbe vom Rand, Farbe vom Inhalt] (Rechteck)
GAUGE_BC = [Color.new(0, 0, 0), Color.new(32, 48, 64)]
# Farbe der Leiste [links, rechts] (Farbverlauf)
GAUGE_GC = [Color.new(64, 128, 96), Color.new(96, 192, 160)]
#
GAUGE_W = 96 # Breite der Leiste
GAUGE_H = 6 # Höhe der Leiste
GAUGE_S = 8 # [[weiß nicht wie ichs beschreiben soll :-) ]]
GAUGE_T = 640 # Anzeigedauer der Leiste
GAUGE_O = 16 # Grad der Transparenz, die beim Erscheinen zu-/abnimmt
#--------------------------------------------------------------------------
# * Initialize
#--------------------------------------------------------------------------
alias initialize_str15 initialize
def initialize(viewport, battler = nil)
initialize_str15(viewport, battler)
@gauge_visible = true
@gauge_visible = (battler.strnote.include?(GAUGE_M)) if @battler.is_a?(Game_Enemy)
unless @gauge_visible
b = GAUGE_BC
c = GAUGE_GC
# Zeichne Leiste
bitmap = Bitmap.new(GAUGE_W, GAUGE_H * 2)
bitmap.fill_rect(0, 0, GAUGE_W, GAUGE_H, b[0])
bitmap.fill_rect(1, 1, GAUGE_W - 2, GAUGE_H - 2, b[1])
bitmap.gradient_fill_rect(1, GAUGE_H + 1, GAUGE_W - 2, GAUGE_H - 2, c[0], c[1])
# Erstelle Sprite für die Leiste
@hp_gauge_a = Sprite.new
s = @hp_gauge_a
s.bitmap = bitmap
s.src_rect.set(0, 0, GAUGE_W, GAUGE_H)
s.viewport = self.viewport
s.x = @battler.screen_x
s.y = @battler.screen_y - 8
s.z += 200
s.ox = GAUGE_W / 2
s.oy = GAUGE_H / 2
s.opacity = 0
@hp_gauge_b = Sprite.new
s = @hp_gauge_b
s.bitmap = bitmap
s.src_rect.set(0, GAUGE_H, GAUGE_W, GAUGE_H)
s.viewport = self.viewport
s.x = @battler.screen_x
s.y = @battler.screen_y - 8
s.z += 220
s.ox = GAUGE_W / 2
s.oy = GAUGE_H / 2
s.opacity = 0
@hp = @battler.hp
@gauge_w = GAUGE_W + 1
@gauge_o = 0
end
end
#--------------------------------------------------------------------------
# * Dispose
#--------------------------------------------------------------------------
alias dispose_str15 dispose
def dispose
# ?????
unless @gauge_visible
@hp_gauge_a.bitmap.dispose
@hp_gauge_a.dispose
@hp_gauge_b.dispose
end
dispose_str15
end
#--------------------------------------------------------------------------
# * Update
#--------------------------------------------------------------------------
alias update_str15 update
def update
update_str15
# Update der Leiste
unless @gauge_visible
if @hp != @battler.hp# and @battler.strgauge_update
@gauge_w = ((GAUGE_W * (@battler.hp / (@battler.maxhp * 1.0))) + 1).truncate
@gauge_o = GAUGE_T
@hp = @battler.hp
@battler.strgauge_update = false
end
# Breite
nw = @hp_gauge_b.src_rect.width
sp = GAUGE_S
sr = @hp_gauge_b.src_rect
sr.width = (@gauge_w + (nw * (sp - 1))) / sp
if sr.width != @gauge_w
if sr.width > @gauge_w
sr.width -= 1
else
sr.width += 1
end
end
sr.width = 2 if sr.width <= 1 and @hp > 0
# Transparenz
@hp_gauge_a.opacity = @gauge_o
@hp_gauge_b.opacity = @gauge_o
@gauge_o -= GAUGE_O
# Koordinaten
#~ s = @hp_gauge_a
#~ s.x = @battler.screen_x
#~ s.y = @battler.screen_y - 8
#~ s.x = s.ox + 2 if s.x < s.ox + 2
#~ s.x = 542 - s.ox if s.x > 542 - s.ox
#~ s = @hp_gauge_b
#~ s.x = @battler.screen_x
#~ s.y = @battler.screen_y - 8
#~ s.x = s.ox + 2 if s.x < s.ox + 2
#~ s.x = 544 - s.ox if s.x > 544 - s.ox
end
end
end
#==============================================================================
# ** Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# * Instanzvariable
#--------------------------------------------------------------------------
attr_accessor :strgauge_update
#--------------------------------------------------------------------------
# * Clear Variable Used for Sprite Communication
#--------------------------------------------------------------------------
alias clear_sprite_effects_str15 clear_sprite_effects
def clear_sprite_effects
clear_sprite_effects_str15
@strgauge_update = false
end
end
#==============================================================================
# ** Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# * Instanzvariable
#--------------------------------------------------------------------------
attr_reader :strnote
#--------------------------------------------------------------------------
# * Initialize
#--------------------------------------------------------------------------
alias initialize_str15 initialize
def initialize(index, enemy_id)
initialize_str15(index, enemy_id)
@strnote = enemy.note
end
end
#==============================================================================
# ** Scene_Battle
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# * Display HP Damage
# target : Ziel
# obj : Skill oder item
#--------------------------------------------------------------------------
alias display_hp_damage_str15 display_hp_damage
def display_hp_damage(target, obj = nil)
target.strgauge_update = true if target.hp_damage != 0
display_hp_damage_str15(target, obj)
end
end
Links
als Textdatei öffnen oder downloaden (http://rpgvx.bplaced.net/scripts/star/15.txt)
star's VX script material (Quelle) (http://strrgssvx.blog.shinobi.jp/Entry/25)