[RPG Maker XP / VX] HUD Dragón

Ver el tema anterior Ver el tema siguiente Ir abajo

[RPG Maker XP / VX] HUD Dragón

Mensaje por D.A.C. el Sáb Abr 30, 2011 6:30 pm

Nombre: HUD Dragón
Autor: Br_lemes
Versión: Desconocida

Este script crea una HUD para un solo personaje que muestra los PV, PM, los puntos de Exp., el equipamiento y los objetos. Es totalmente personalizable (cambio de imagen o de opacidad) y compatible tanto para RMXP como para RMVX.

Script:

Código:
=begin
  Dragon HUD
  Autor: Br_lemes
  Traducción: D.A.C.

  Se permite copiar, modificar o distribuir este script siempre y cuando este
  mensaje se mantenga. No hay garantía, úsalo bajo tu propia responsabilidad.
=end

######################################################################
# CONFIGURACIONES - Modificar libremente, pero con cuidado.
######################################################################

$RMVX = $TEST != nil

$DHUD_DRAGON1 = true # mostrar dragón 1
$DHUD_DRAGON2 = true # mostrar dragón 2
 
# Lista con las ID de 4 (VX) o 6 (XP) objetos que se mostrarán
# Usar el número 0 para no mostrar nada.
$DHUD_ITEMS = [1, 4, 7, 9, 12, 13]

# Estado inicial del HUD
$DHUD_DEFAULT = true # true (verdadero) visible, false (falso) no visible.
$DHUD_SWITCH  = 1    # interruptor que activa o desactiva el HUD.
 
$DHUD_OPACITY = 215 # Opacidad de las imágenes.
 
$DHUD_Y = $RMVX ? 382 : 446 # Coordenada 'Y' de referencia.

#--------------------------------------------------------------------------
# SOLO XP - Colores de la barra PV / PM / Exp.
# 0 = Rojo
# 1 = Azul
# 2 = Verde
# 3 = Rosa
# 4 = Azul claro
# 5 = Amarillo
# 6 = Blanco
#--------------------------------------------------------------------------
$DHUD_HP_COLOR  = 0
$DHUD_SP_COLOR  = 1
$DHUD_EXP_COLOR = 2

######################################################################
# FIN DE LA CONFIGURACIÓN - No modificar nada a partir de aquí a menos que tengas
# conocimientos de RGSS / RGSS2.
######################################################################

$dhud_eq_needrefresh = true
$dhud_it_needrefresh = true

class Game_Actor < Game_Battler
  def now_exp
    return @exp - @exp_list[@level]
  end
  def next_exp
    return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
  end
  if $RMVX
    alias dhud_change_equip change_equip
    def change_equip(equip_type, item, test = false)
      dhud_change_equip(equip_type, item, test)
      $dhud_eq_needrefresh = true
    end
  else
    alias dhud_equip equip
    def equip(equip_type, item)
      dhud_equip(equip_type, item)
      $dhud_eq_needrefresh = true
    end
  end
end

class Game_Party
  alias dhud_gain_item gain_item
  def gain_item(item, n, include_equip = false)
    $RMVX ? dhud_gain_item(item, n, include_equip) : dhud_gain_item(item, n)
    $dhud_it_needrefresh = true
  end
end

class Scene_Map
  alias dhud_main main
  def main
    if $RMVX then @windowskin = Cache.system("Window") end
    @hud_checkex = -1
    @hud_back = Sprite.new
    @hud_back.z += 1
    @hud_back.opacity = $DHUD_OPACITY
    @hud_dragon1 = Sprite.new
    @hud_dragon1.z += 2
    @hud_dragon1.opacity = $DHUD_OPACITY
    @hud_dragon2 = Sprite.new
    @hud_dragon2.z += 2
    @hud_dragon2.mirror = true
    @hud_dragon2.opacity = $DHUD_OPACITY
    @hud_dragon1.visible = $DHUD_DRAGON1
    @hud_dragon2.visible = $DHUD_DRAGON2
    if $RMVX
      @hud_back.bitmap = Cache.system("backVX")
      @hud_back.y = 416 - @hud_back.height
      @hud_dragon1.bitmap = Cache.system("dragon")
      @hud_dragon1.y = 416 - @hud_dragon1.height
      @hud_dragon2.bitmap = Cache.system("dragon")
      @hud_dragon2.x = 544 - @hud_dragon2.width
      @hud_dragon2.y = 416 - @hud_dragon2.height
    else
      @hud_back.bitmap = RPG::Cache.windowskin("backXP")
      @hud_back.y = 480 - @hud_back.bitmap.height
      @hud_dragon1.bitmap = RPG::Cache.windowskin("dragon")
      @hud_dragon1.y = 480 - @hud_dragon1.bitmap.height
      @hud_dragon2.bitmap = RPG::Cache.windowskin("dragon")
      @hud_dragon2.x = 640 - @hud_dragon2.bitmap.width
      @hud_dragon2.y = 480 - @hud_dragon2.bitmap.height
    end
    @hud_hp = Sprite.new
    @hud_hp.x = 70
    @hud_hp.y = $DHUD_Y + 2
    @hud_hp.z += 2
    @hud_hp.bitmap = Bitmap.new(83, 4)
    @hud_mp = Sprite.new
    @hud_mp.x = 70
    @hud_mp.y = $DHUD_Y + 10
    @hud_mp.z += 2
    @hud_mp.bitmap = Bitmap.new(83, 4)
    @hud_ex = Sprite.new
    @hud_ex.x = 70
    @hud_ex.y = $DHUD_Y + 18
    @hud_ex.z += 2
    @hud_ex.bitmap = Bitmap.new(83, 4)
    @hud_eq = Sprite.new
    @hud_eq.x = 186
    @hud_eq.y = $DHUD_Y
    @hud_eq.z += 2
    @hud_eq.bitmap = Bitmap.new(142, 24)
    @hud_it = Sprite.new
    @hud_it.x = 360
    @hud_it.y = $DHUD_Y
    @hud_it.z += 2
    if $RMVX
      @hud_it.bitmap = Bitmap.new(114, 24)
    else
      @hud_it.bitmap = Bitmap.new(172, 24)
    end
    @hud_it.bitmap.font.size = 14
    $dhud_eq_needrefresh = true
    $dhud_it_needrefresh = true
    refresh
    dhud_main
    @hud_back.dispose
    @hud_dragon1.dispose
    @hud_dragon2.dispose
    @hud_hp.dispose
    @hud_mp.dispose
    @hud_ex.dispose
    @hud_eq.dispose
    @hud_it.dispose 
  end
  def refresh
    hudswitch = (($DHUD_DEFAULT && !$game_switches[$DHUD_SWITCH]) or (!$DHUD_DEFAULT && $game_switches[$DHUD_SWITCH]))
    @hud_back.visible = hudswitch
    if hudswitch
      @hud_dragon1.visible = $DHUD_DRAGON1
      @hud_dragon2.visible = $DHUD_DRAGON2
    else
      @hud_dragon1.visible = false
      @hud_dragon2.visible = false
    end
    @hud_hp.visible = hudswitch
    @hud_mp.visible = hudswitch
    @hud_ex.visible = hudswitch
    @hud_eq.visible = hudswitch
    @hud_it.visible = hudswitch
    draw_hp
    draw_mp
    draw_ex
    draw_eq if $dhud_eq_needrefresh
    draw_it if $dhud_it_needrefresh
  end
  if $RMVX
    def text_color(n)
      x = 64 + (n % 8) * 8
      y = 96 + (n / 8) * 8
      return @windowskin.get_pixel(x, y)
    end
  else
    def bar_color(bitmap, x, y, w, color)
      case color
      when 0
        bitmap.fill_rect(x, y + 0, w, 1, Color.new(255, 96, 96, 255))
        bitmap.fill_rect(x, y + 1, w, 1, Color.new(255, 0, 0, 255))
        bitmap.fill_rect(x, y + 2, w, 1, Color.new(192, 0, 0, 255))
        bitmap.fill_rect(x, y + 3, w, 1, Color.new(128, 0, 0, 255))
      when 1
        bitmap.fill_rect(x, y + 0, w, 1, Color.new(96, 96, 255, 255))
        bitmap.fill_rect(x, y + 1, w, 1, Color.new(0, 0, 255, 255))
        bitmap.fill_rect(x, y + 2, w, 1, Color.new(0, 0, 192, 255))
        bitmap.fill_rect(x, y + 3, w, 1, Color.new(0, 0, 128, 255))
      when 2
        bitmap.fill_rect(x, y + 0, w, 1, Color.new(96, 255, 96, 255))
        bitmap.fill_rect(x, y + 1, w, 1, Color.new(0, 255, 0, 255))
        bitmap.fill_rect(x, y + 2, w, 1, Color.new(0, 192, 0, 255))
        bitmap.fill_rect(x, y + 3, w, 1, Color.new(0, 128, 0, 255))
      when 3
        bitmap.fill_rect(x, y + 0, w, 1, Color.new(255, 128, 255, 255))
        bitmap.fill_rect(x, y + 1, w, 1, Color.new(255, 0, 255, 255))
        bitmap.fill_rect(x, y + 2, w, 1, Color.new(192, 0, 192, 255))
        bitmap.fill_rect(x, y + 3, w, 1, Color.new(128, 0, 128, 255))
      when 4
        bitmap.fill_rect(x, y + 0, w, 1, Color.new(128, 255, 255, 255))
        bitmap.fill_rect(x, y + 1, w, 1, Color.new(0, 255, 255, 255))
        bitmap.fill_rect(x, y + 2, w, 1, Color.new(0, 192, 192, 255))
        bitmap.fill_rect(x, y + 3, w, 1, Color.new(0, 128, 128, 255))
      when 5
        bitmap.fill_rect(x, y + 0, w, 1, Color.new(255, 255, 128, 255))
        bitmap.fill_rect(x, y + 1, w, 1, Color.new(255, 255, 0, 255))
        bitmap.fill_rect(x, y + 2, w, 1, Color.new(192, 192, 0, 255))
        bitmap.fill_rect(x, y + 3, w, 1, Color.new(128, 128, 0, 255))
      when 6
        bitmap.fill_rect(x, y + 0, w, 1, Color.new(255, 255, 255, 255))
        bitmap.fill_rect(x, y + 1, w, 1, Color.new(255, 255, 255, 255))
        bitmap.fill_rect(x, y + 2, w, 1, Color.new(192, 192, 192, 255))
        bitmap.fill_rect(x, y + 3, w, 1, Color.new(128, 128, 128, 255))
      end
    end 
  end
  def draw_hp
    if $RMVX
      if @hud_checkhp == $game_party.members[0].hp then return end
      @hud_mp.bitmap.clear
      gw = 83 * $game_party.members[0].hp / $game_party.members[0].maxhp
      @hud_hp.bitmap.gradient_fill_rect(0, 0, gw, 4, text_color(20), text_color(21))
      @hud_checkhp = $game_party.members[0].hp
    else
      if @hud_checkhp == $game_party.actors[0].hp then return end
      @hud_mp.bitmap.clear
      gw = 83 * $game_party.actors[0].hp / $game_party.actors[0].maxhp
      bar_color(@hud_hp.bitmap, 0, 0, gw, $DHUD_HP_COLOR)
      @hud_checkhp = $game_party.actors[0].hp
    end
  end
  def draw_mp 
    if $RMVX
      if @hud_checkmp == $game_party.members[0].mp then return end
      @hud_mp.bitmap.clear
      gw = 83 * $game_party.members[0].mp / $game_party.members[0].maxmp
      @hud_mp.bitmap.gradient_fill_rect(0, 0, gw, 4, text_color(22), text_color(23))
      @hud_checkmp = $game_party.members[0].mp
    else
      if @hud_checkmp == $game_party.actors[0].sp then return end
      @hud_mp.bitmap.clear
      gw = 83 * $game_party.actors[0].sp / $game_party.actors[0].maxsp
      bar_color(@hud_mp.bitmap, 0, 0, gw, $DHUD_SP_COLOR)
      @hud_checkmp = $game_party.actors[0].sp
    end
  end
  def draw_ex
    if $RMVX
      if @hud_checkex == $game_party.members[0].next_exp then return end
      @hud_ex.bitmap.clear
      ex = $game_party.members[0].next_exp != 0 ? ex = $game_party.members[0].now_exp : ex = 1
      gw = 83 * ex / [$game_party.members[0].next_exp, 1].max
      @hud_ex.bitmap.gradient_fill_rect(0, 0, gw, 4, text_color(30), text_color(31))
      @hud_checkex = ex
    else
      if @hud_checkex == $game_party.actors[0].next_exp then return end
      @hud_ex.bitmap.clear
      ex = $game_party.actors[0].next_exp != 0 ? ex = $game_party.actors[0].now_exp : ex = 1
      gw = 83 * ex / [$game_party.actors[0].next_exp, 1].max
      bar_color(@hud_ex.bitmap, 0, 0, gw, $DHUD_EXP_COLOR)
      @hud_checkex = ex
    end
  end
  def draw_icon(contents, icon, x, y, enabled = true)
    if $RMVX
      bitmap = Cache.system("Iconset")
      rect = Rect.new(icon % 16 * 24, icon / 16 * 24, 24, 24)
      contents.blt(x, y, bitmap, rect, enabled ? 255 : 128)
    else
      bitmap = RPG::Cache.icon(icon)
      contents.blt(x, y, bitmap, Rect.new(0, 0, 24, 24), enabled ? 255 : 128)
    end
  end
  def draw_eq
    @hud_eq.bitmap.clear
    if $RMVX
      actor = $game_party.members[0]
      draw_icon(@hud_eq.bitmap, $data_weapons[actor.weapon_id].icon_index, 0, 0, true) if actor.weapon_id != 0
      if actor.armor1_id != 0
        if actor.two_swords_style
          draw_icon(@hud_eq.bitmap, $data_weapons[actor.armor1_id].icon_index, 29, 0, true) if actor.armor1_id != 0
        else
          draw_icon(@hud_eq.bitmap, $data_armors[actor.armor1_id].icon_index, 29, 0, true) if actor.armor1_id != 0
        end
      end
      draw_icon(@hud_eq.bitmap, $data_armors[actor.armor2_id].icon_index, 58, 0, true) if actor.armor2_id != 0
      draw_icon(@hud_eq.bitmap, $data_armors[actor.armor3_id].icon_index, 87, 0, true) if actor.armor3_id != 0
      draw_icon(@hud_eq.bitmap, $data_armors[actor.armor4_id].icon_index, 116, 0, true) if actor.armor4_id != 0
    else
      actor = $game_party.actors[0]
      draw_icon(@hud_eq.bitmap, $data_weapons[actor.weapon_id].icon_name, 0, 0, true) if actor.weapon_id != 0
      draw_icon(@hud_eq.bitmap, $data_armors[actor.armor1_id].icon_name, 29, 0, true) if actor.armor1_id != 0
      draw_icon(@hud_eq.bitmap, $data_armors[actor.armor2_id].icon_name, 58, 0, true) if actor.armor2_id != 0
      draw_icon(@hud_eq.bitmap, $data_armors[actor.armor3_id].icon_name, 87, 0, true) if actor.armor3_id != 0
      draw_icon(@hud_eq.bitmap, $data_armors[actor.armor4_id].icon_name, 116, 0, true) if actor.armor4_id != 0
    end
    $dhud_eq_needrefresh = false
  end
  def draw_it
    @hud_it.bitmap.clear
    x = 0
    n = $RMVX ? 3 : 5
    for i in 0..n
      if $DHUD_ITEMS[i] != 0
        item = $data_items[$DHUD_ITEMS[i]]
        if $RMVX
          if item and $game_party.item_number(item) != 0
            draw_icon(@hud_it.bitmap, item.icon_index, x, 0, true)
            @hud_it.bitmap.draw_text(x + 16, 10, 12, 14, $game_party.item_number(item))
          end
        else
          if item and $game_party.item_number($DHUD_ITEMS[i]) != 0
            draw_icon(@hud_it.bitmap, item.icon_name, x, 0, true)
            @hud_it.bitmap.draw_text(x + 16, 10, 12, 14, $game_party.item_number($DHUD_ITEMS[i]).to_s)
          end
        end
      end
      x += 29
    end
    $dhud_it_needrefresh = false
  end
  alias dhud_update update
  def update
    dhud_update
    refresh
    @hud_back.update
    @hud_dragon1.update
    @hud_dragon2.update
    @hud_hp.update
    @hud_mp.update
    @hud_ex.update
    @hud_eq.update
    @hud_it.update
  end
end


Imágenes:

Spoiler:
RPG Maker XP
[Tienes que estar registrado y conectado para ver esa imagen]

RPG Maker VX
[Tienes que estar registrado y conectado para ver esa imagen]


Instrucciones:

  1. Copiar el script encima de 'Main'.
  2. Activar el interruptor número 1.
  3. Modificar el apartado:
    ######################################################################
    # CONFIGURACIONES - Modificar libremente, pero con cuidado.
    ######################################################################

  4. Añadir las siguientes imágenes en su lugar respectivo:
    RPG Maker XP - Carpeta Windowskin.
    Spoiler:
    [Tienes que estar registrado y conectado para ver esa imagen]
    [Tienes que estar registrado y conectado para ver esa imagen]

    RPG Maker VX - Carpeta System.
    Spoiler:
    [Tienes que estar registrado y conectado para ver esa imagen]
    [Tienes que estar registrado y conectado para ver esa imagen]


[Tienes que estar registrado y conectado para ver esa imagen]
Si quieres verlo, haz [Tienes que estar registrado y conectado para ver este vínculo].

D.A.C.
Súper Moderador
Súper Moderador

Makedas: 704

Ver perfil de usuario

Volver arriba Ir abajo

Re: [RPG Maker XP / VX] HUD Dragón

Mensaje por ~Doku el Lun Mayo 02, 2011 6:32 am

Muy buen aporte D.A.C Smile me servirá ahora que eh vuelto al XP (el 2003 fallaba cada rato e_e).

Me pregunto quien te dará makedas si tu eres el que las da xD, bueh espero que el administrador te de 30 por que es un script que nunca había visto.

Saludos ;D

~Doku
Baneado
Baneado


Ver perfil de usuario

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


Permiso de este foro:
No puedes responder a temas en este foro.