MOG - I Hud 1.0
MOG - I Hud 1.0 é um script criado pelo Moghunter para ser usado em um game ou projeto do RPG Maker XP que implementa um sistema de HUD que apresenta o HP e SP em ícones.
MOG – I Hud 1.0 é um script criado pelo Moghunter para ser usado em um game ou projeto do RPG Maker XP que implementa um sistema de HUD que apresenta o HP e SP em ícones.
Este sistema de HUD é no estilo de games como Alundra ou Soul Blazer, jogos no estilo action role-playing game.
O MOG – I Hud 1.0 é uma alternativa similar e mais moderna ao MOG MPW Icon v1.0, que publicamos aqui, mas não conta com a demo nem as figuras prontas para usar.
Screenshot

Utilização
Convém baixar o minigame que já possui todas as imagens exemplos e o script.
Note que as imagens devem ser deixadas na pasta Windowskins.
Script
O script abaixo vai acima do “Main”, na sua parte de scripts do projeto:
#_______________________________________________________________________________
# MOG - I Hud 1.0
#_______________________________________________________________________________
# By Moghunter
# http://www.atelier-rgss.com
#_______________________________________________________________________________
# - Apresenta o HP e SP em icones.
#
# ARQUIVOS NECESSÁRIOS
#
# IHud_HP.png
# IHud_Layout.png
# Ihud_Number.png
# IHud_SP.png
#
# Deixe as imagens na pasta Windowskins
#
# NOTA
# A imagem do ícone sempre será dividido por 2, independente
# do tamanho da imagem.
#_______________________________________________________________________________
module MOG
#Posição geral do HUD.
IHUD_X = 230
IHUD_Y = 10
#Switch que desativa a HUD.
DISABLE_IHUD_SWITCH_ID = 5
#Posição do Layout
IHUD_LAYOUT_X = -15
IHUD_LAYOUT_Y = 0
#HP ------------------------------------
#Posição do ícone de HP.
HP_ICON_X = 30
HP_ICON_Y = 0
#Posição do numero de HP.
H_NUMBER_X = 0
H_NUMBER_Y = 0
#Quantidade maxima de icones de HP.
ICON_HP_MAX = 10
#Espaço entre um icone e o outro.
ICON_HP_SPACE = 14
#Apresentar o HP em numero.
HP_NUMBER_ENABLE = true
#SP -------------------------------------
#Posição do ícone de SP.
SP_ICON_X = 50
SP_ICON_Y = 32
#Posição do numero de SP.
S_NUMBER_X = 30
S_NUMBER_Y = 32
#Quantidade maxima de icones de SP.
ICON_SP_MAX = 10
#Espaço entre um icone e o outro.
ICON_SP_SPACE = 14
#Apresentar o SP em numero.
SP_NUMBER_ENABLE = true
end
#==============================================================================
# Ihud
#==============================================================================
class Ihud < Sprite
include MOG
#--------------------------------------------------------------------------
# * Initialize
#--------------------------------------------------------------------------
def initialize(viewport)
super(viewport)
@actor = $game_party.actors[0]
return if @actor == nil
# Initialize -------------------------------------------------------------
@hp = @actor.hp
@maxhp = @actor.maxhp
@hp_maxicon = ICON_HP_MAX
@hp_iconmax = ICON_HP_MAX
@hp_iconmax = 1 if @hp_iconmax <= 0
@hp2 = @actor.hp / @hp_iconmax
@sp = @actor.sp
@maxsp = @actor.maxsp
@sp_maxicon = ICON_SP_MAX
@sp_iconmax = ICON_SP_MAX
@sp_iconmax = 1 if @sp_iconmax <= 0
@sp2 = @actor.sp / @sp_iconmax
# Layout -------------------------------------------------------------------
@layout_image = RPG::Cache.windowskin("IHud_Layout")
@layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)
@layout_sprite = Sprite.new
@layout_sprite.bitmap = @layout_bitmap
@layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)
@layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)
@layout_sprite.z = 5001
@layout_sprite.x = IHUD_LAYOUT_X + IHUD_X
@layout_sprite.y = IHUD_LAYOUT_Y + IHUD_Y
# HP ---------------------------------------------------------------------
@hp_icon_image = RPG::Cache.windowskin("IHud_HP")
@hp_icon_cw = @hp_icon_image.width / 2
@hp_icon_ch = @hp_icon_image.height
b_width = @hp_icon_cw * @hp_iconmax
@hp_bitmap = Bitmap.new(b_width,@hp_icon_ch)
@hp_icon_sprite = Sprite.new
@hp_icon_sprite.bitmap = @hp_bitmap
@hp_icon_sprite.z = 5002
@hp_icon_sprite.x = HP_ICON_X + IHUD_X
@hp_icon_sprite.y = HP_ICON_Y + IHUD_Y
# HP Number ---------------------------------------------------------------------
@hp_number_image = RPG::Cache.windowskin("Ihud_Number")
@hp_number_bitmap = Bitmap.new(@hp_number_image.width,@hp_number_image.height)
@im_cw = @hp_number_image.width / 10
@im_ch = @hp_number_image.height / 2
@hp_number_sprite = Sprite.new
@hp_number_sprite.bitmap = @hp_number_bitmap
@hp_number_sprite.z = 5003
@hp_number_sprite.x = H_NUMBER_X + IHUD_X
@hp_number_sprite.y = H_NUMBER_Y + IHUD_Y
# SP ---------------------------------------------------------------------
@sp_icon_image = RPG::Cache.windowskin("IHud_SP")
@sp_icon_cw = @sp_icon_image.width / 2
@sp_icon_ch = @sp_icon_image.height
bs_width = @sp_icon_cw * @sp_iconmax
@sp_bitmap = Bitmap.new(bs_width,@sp_icon_ch)
@sp_icon_sprite = Sprite.new
@sp_icon_sprite.bitmap = @sp_bitmap
@sp_icon_sprite.z = 5002
@sp_icon_sprite.x = SP_ICON_X + IHUD_X
@sp_icon_sprite.y = SP_ICON_Y + IHUD_Y
# SP Number ---------------------------------------------------------------------
@sp_number_image = RPG::Cache.windowskin("Ihud_Number")
@sp_number_bitmap = Bitmap.new(@sp_number_image.width,@sp_number_image.height)
@ims_cw = @sp_number_image.width / 10
@ims_ch = @sp_number_image.height / 2
@sp_number_sprite = Sprite.new
@sp_number_sprite.bitmap = @sp_number_bitmap
@sp_number_sprite.z = 5003
@sp_number_sprite.x = S_NUMBER_X + IHUD_X
@sp_number_sprite.y = S_NUMBER_Y + IHUD_Y
hp_refresh
sp_refresh
visible_update
end
#--------------------------------------------------------------------------
# * Dispose
#--------------------------------------------------------------------------
def dispose
return if @actor == nil
#Layout Dispose
@layout_bitmap.dispose
@layout_bitmap = nil
@layout_sprite.bitmap.dispose
@layout_sprite.bitmap = nil
@layout_sprite.dispose
@layout_sprite = nil
#HP Icon Dispose
@hp_bitmap.dispose
@hp_bitmap = nil
@hp_icon_sprite.dispose
@hp_icon_sprite = nil
#Hp Number Dispose
@hp_number_bitmap.dispose
@hp_number_bitmap = nil
@hp_number_sprite.bitmap.dispose
@hp_number_sprite.bitmap = nil
@hp_number_sprite.dispose
@hp_number_sprite = nil
#SP Icon Dispose
@sp_bitmap.dispose
@sp_bitmap = nil
@sp_icon_sprite.dispose
@sp_icon_sprite = nil
#Sp Number Dispose
@sp_number_sprite.bitmap.dispose
@sp_number_sprite.bitmap = nil
@sp_number_sprite.dispose
@sp_number_sprite = nil
@sp_number_bitmap.dispose
@sp_number_bitmap = nil
end
#--------------------------------------------------------------------------
# * Update
#--------------------------------------------------------------------------
def update
return if @actor == nil
if @hp != @actor.hp or
@maxhp != @actor.maxhp
hp_refresh
end
if @sp != @actor.sp or
@maxsp != @actor.maxsp
sp_refresh
end
visible_update
end
#--------------------------------------------------------------------------
# * Visible_on
#--------------------------------------------------------------------------
def visible_update
return if @actor == nil
if $game_switches[MOG::DISABLE_IHUD_SWITCH_ID] == true
@layout_sprite.visible = false
@hp_icon_sprite.visible = false
@hp_number_sprite.visible = false
@sp_icon_sprite.visible = false
@sp_number_sprite.visible = false
else
@hp_icon_sprite.visible = true
@sp_icon_sprite.visible = true
@layout_sprite.visible = true
if HP_NUMBER_ENABLE == true
@hp_number_sprite.visible = true
else
@hp_number_sprite.visible = false
end
if SP_NUMBER_ENABLE == true
@sp_number_sprite.visible = true
else
@sp_number_sprite.visible = false
end
end
end
#--------------------------------------------------------------------------
# * HP Refresh
#--------------------------------------------------------------------------
def hp_refresh
return if @actor == nil
@hp_icon_sprite.bitmap.clear
@hp_number_sprite.bitmap.clear
@hp = @actor.hp
@maxhp = @actor.maxhp
@hp_iconmax = ICON_HP_MAX
@hp_iconmax = 1 if @hp_iconmax <= 0
@hp2 = @actor.hp / @hp_iconmax
@hp3 = @actor.hp - (@hp2 * @hp_iconmax)
#HP Icon -----------------------
for i in 0...@hp_iconmax
@hp_icon_src_rect = Rect.new(0,0, @hp_icon_cw, @hp_icon_ch)
@hp_bitmap.blt(i * ICON_HP_SPACE , 0, @hp_icon_image, @hp_icon_src_rect)
end
@hp2 = @hp2 - 1 if @hp3 == 0 and @actor.hp > 0
@hp3 = @hp_iconmax if @hp3 == 0 and @actor.hp > 0
for i in 0...@hp3
@hp_icon_src_rect = Rect.new(@hp_icon_cw,0, @hp_icon_cw, @hp_icon_ch)
@hp_bitmap.blt(i * ICON_HP_SPACE , 0, @hp_icon_image, @hp_icon_src_rect)
end
#HP Number ------------------
@hp_number_text = @hp2.abs.to_s.split(//)
for r in 0..@hp_number_text.size - 1
@hp_number_abs = @hp_number_text[r].to_i
@hp_src_rect = Rect.new(@im_cw * @hp_number_abs, 0, @im_cw, @im_ch)
@hp_number_bitmap.blt(20 * r, 0, @hp_number_image, @hp_src_rect)
end
end
#--------------------------------------------------------------------------
# * SP Refresh
#--------------------------------------------------------------------------
def sp_refresh
return if @actor == nil
@sp_icon_sprite.bitmap.clear
@sp_number_sprite.bitmap.clear
@sp = @actor.sp
@maxsp = @actor.maxsp
@sp_iconmax = ICON_SP_MAX
@sp_iconmax = 1 if @sp_iconmax <= 0
@sp2 = @actor.sp / @sp_iconmax
@sp3 = @actor.sp - (@sp2 * @sp_iconmax)
#SP Icon -----------------------
for i in 0...@sp_iconmax
@sp_icon_src_rect = Rect.new(0,0, @sp_icon_cw, @sp_icon_ch)
@sp_bitmap.blt(i * ICON_SP_SPACE , 0, @sp_icon_image, @sp_icon_src_rect)
end
@sp2 = @sp2 - 1 if @sp3 == 0 and @actor.sp > 0
@sp3 = @sp_iconmax if @sp3 == 0 and @actor.sp > 0
for i in 0...@sp3
@sp_icon_src_rect = Rect.new(@sp_icon_cw,0, @sp_icon_cw, @sp_icon_ch)
@sp_bitmap.blt(i * ICON_SP_SPACE , 0, @sp_icon_image, @sp_icon_src_rect)
end
#SP Number ------------------
@sp_number_text = @sp2.abs.to_s.split(//)
for r in 0..@sp_number_text.size - 1
@sp_number_abs = @sp_number_text[r].to_i
@sp_src_rect = Rect.new(@im_cw * @sp_number_abs, @ims_ch, @ims_cw, @ims_ch)
@sp_number_bitmap.blt(15 * r, 0, @sp_number_image, @sp_src_rect)
end
end
end
#===============================================================================
# Scene_Map
#===============================================================================
class Scene_Map
alias ihud_main main
#--------------------------------------------------------------------------
# Main
#--------------------------------------------------------------------------
def main
@ic_viewport = Viewport.new(0, 0, 640, 480)
@ic_viewport.z = 9999
@i_hud = Ihud.new(@ic_viewport)
ihud_main
@i_hud.dispose
@i_hud = nil
@ic_viewport.dispose
@ic_viewport = nil
end
#--------------------------------------------------------------------------
# Update
#--------------------------------------------------------------------------
alias ihud_update update
def update
ihud_update
@i_hud.update
end
end
$mog_rgss_ihud = trueMais programação XP
Download e ficha técnica
- Download (clique com o botão esquerdo do mouse ou toque no link)
- Desenvolvedor, publisher e/ou distribuidor: Moghunter
- Sistema(s): Windows 98/98SE/Me/2000/XP/Vista/7
- Tamanho: 872 KB (pacote de instalação e/ou espaço em disco)
- Licença: Grátis
- Categoria: Programação XP
- Tags: HUD, RPG Maker XP
- Adicionado por: LichKing
- Acessos: 82
Observação: se você gostou deste post ou ele lhe foi útil de alguma forma, por favor considere apoiar financeiramente a Gaming Room. Fico feliz só de ajudar, mas a contribuição do visitante é muito importante para que este site continua existindo e para que eu possa continuar provendo este tipo de conteúdo e melhorar cada vez mais. Acesse aqui e saiba como. Obrigado!
Você pode se interessar também por
Deixe um comentário
Você pode criticar, elogiar, corrigir, complementar, reportar links quebrados (o que é muito importante) etc. Você pode até xingar a gente de palavrão se quiser, mas como não queremos ofender as crianças que nos visitam (e evitar choradeira dos frescos de plantão) não aprovaremos comentários com palavras chulas e/ou de baixo calão. Também não aprovaremos spam ou conteúdos ofensivos a outras partes. O seu link só será aprovado se for de algum site que esteja funcionando e não seja spam nem enganação. Dados pessoais, incluindo, mas não limitando-se a telefones, não serão publicados. O conteúdo dos comentários é de inteira responsabilidade de seus autores. Você pode acompanhar os comentários desse post através do feed RSS 2.0.
