Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.
Conectarse

Recuperar mi contraseña

Temas importantes
----------------------------------------
Páginas con recursos RPG Maker
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Afiliados
Estadísticas
Tenemos 3821 miembros registrados.
El último usuario registrado es MikeWasauski.

Nuestros miembros han publicado un total de 86310 mensajes en 12305 argumentos.

[Taller] ¡Modificaciones sencillas de scripts!

Ver el tema anterior Ver el tema siguiente Ir abajo

[Taller] ¡Modificaciones sencillas de scripts!

Mensaje por Wecoc el 2015-01-24, 01:12

Puesto que mi taller de creación de scripts está cerrado y ésta sección del foro está fatal, abro éste taller un poco más ameno. Dentro de poco estaré más ausente otra vez pero mientras tanto creo que será útil.

Éste taller es para pedir ediciones de scripts ya existentes. He visto las mismas barras por defecto del MOG (entre otras) en miles de juegos de RPG maker distintos y eso queda feo, por lo tanto creo que vale la pena que si usáis cosas de éstas me pidáis modificaciones.

Acepto éste tipo de trabajos, aunque no os puedo dar la garantía de que sabré enfrentarme a todos.

- Personalizar un script existente; añadir y quitarle cosas o cambiar el aspecto o posición de otras.
- Hacer compatibles dos scripts incompatibles, hasta donde sea posible.
- Pasar scripts de un maker a otro (atención, eso no se puede hacer con todos).
- Arreglar bugs.

En definitiva, modificaciones a scripts ya existentes.

REGLAS PARA EL TALLER:

- Valen pedidos de XP, VX o Ace, pero estoy mucho más familiarizado con XP, así que según qué pidais de VX o Ace diré que no (por desconocimiento, no por descaro)

- Pasadme el script a editar o una demo con éste y por favor tendréis que ser muy explícitos con cómo queréis las cosas. Un esquema aunque sea con el paint ayuda mucho.

- Las modificaciones són de código, con los gráficos ya os apañaréis por otro lado.

- No lo hagais por diversión o por amor al arte ajeno. Tiene que ser un edit que queráis para vuestro proyecto, si no, no tiene sentido.

- Si el autor del script no permite modificaciones o no permite usar su código no me pidáis cosas de ese, solo faltaría que me metiérais en algún marrón xD

- No más de 3 comandas simultáneas. Normalmente soy rápido pero tened paciencia porque a veces simplemente no puedo con todo.

- No acepto cosas relacionadas con el XAS. En pocas palabras; si queréis originalidad en vuestro juego, no uséis el XAS.

- Si a algún otro scripter le gusta tanto la idea que quiere unirse a la causa, adelante.


Animaos, que no os cobro y en pocos sitios encontraréis un scripter con éstos precios xDD (?)
avatar
Wecoc
Administrador
Administrador



Créditos 12105

Gracias : 522

Volver arriba Ir abajo

Re: [Taller] ¡Modificaciones sencillas de scripts!

Mensaje por Dariel Lopez el 2015-01-24, 01:58

Muy buena esta opción que nos das a los que no sabemos nada de scripts Wecoc, así que te doy las gracias de antemano por tu cordial servicio de ayuda, y en cuanto ordene algo que tengo que ordenar te pediré ayuda con uno o dos scripts de Ace que tengo por ahí y que necesito modificarles unas cosas.
Gracias de nuevo.
avatar
Dariel Lopez
Veterano
Veterano

0/3

Créditos 586

Gracias : 30

Volver arriba Ir abajo

Re: [Taller] ¡Modificaciones sencillas de scripts!

Mensaje por Wecoc el 2015-01-26, 18:50

Estoy sin internet en mi casa por motivos climatológicos (y por culpa de unos chapuzas de campeonato, porque ya me dirán qué daños pueden causar cuatro gotas), por lo que cerraré ésto hasta nuevo aviso.

Disculpad las moléstias.
avatar
Wecoc
Administrador
Administrador



Créditos 12105

Gracias : 522

Volver arriba Ir abajo

Re: [Taller] ¡Modificaciones sencillas de scripts!

Mensaje por Wecoc el 2015-01-31, 00:34

Parece que puedo volver a ponerme a ello pero habrá que ir con pies de plomo por si acaso. No iré comunicando porque casi parece spam xD Si véis que lo vuelvo a cerrar ya sabéis por qué.

De momento comunico a errd que puede hacerme el pedido que quería hacerme aquí siempre y cuando especifique bien lo que mencioné en las reglas del topic.

También a Dariel Lopez, que por pedir no pierde nada.

Y los demás... creo que "asusté" un poco a los de VX/Ace cuando dije que mi maker por defecto es el XP, pero los pedidos que me hagáis, intentarlos los intentaré hacer igual xD
avatar
Wecoc
Administrador
Administrador



Créditos 12105

Gracias : 522

Volver arriba Ir abajo

Re: [Taller] ¡Modificaciones sencillas de scripts!

Mensaje por Dorvin el 2015-02-05, 23:01

Hola wecoc. Aprovechando que has reabierto esto... Podrías hacerme un script o editarme la base para que el cursor de los mensajes no haga fade in y fade out? Es decir que se quede con la opacidad a 255 punto? Uso un script pero creo que es un tema de base aunque si necesitas el script es este:
Código:
#===============================================================================
# Hand Cursor
# Author game_guy
# Version 1.0
#-------------------------------------------------------------------------------
# Intro:
# Tired of the boring, rectangle cursor you use for your window selection?
# This nifty script makes it so it uses an actual cursor like a hand or an
# arrow and displays it next to the choice.
#
# Features:
# Use Windows With or Without Hand Cursors
#
# Instructions:
# To use windowskins with cursor, place this in the windowskins filename.
# $cur then the system will detect it and use a hand cursor instead of a
# rectangle cursor. This way if you want you can still use normal rectangle
# cursors as well.
# Example: 001-Blue01$cur
#
# You can also change the X and Y offset, go down to begin config, and change
# the numbers.
# X_OFFSET ~ X coordinate for the cursor
# Y_OFFSET ~ Y coordinate for the cursor
# Its recommended to leave it as is for its at a pretty good setting.
#
# Compatability:
# Not tested with SDK.
# Should not conflict with anything.
#
# Credits:
# game_guy ~ For making it
# Chaze007 ~ For windowskin in screenshots
# Some RPG's ~ For having a hand cursor
#===============================================================================
module GameGuy
  X_OFFSET = -16
  Y_OFFSET = 0
end
class Window_Base
  def check_hand_cursor
    text = @windowskin_name
    text.gsub!(/\$cur/) do
      return true
    end
    return false
  end
end
class Window_Selectable < Window_Base
  alias gg_update_cursor_rect_lat update_cursor_rect
  def update_cursor_rect
    if !check_hand_cursor
      return gg_update_cursor_rect_lat
    end
    if @index < 0
      self.cursor_rect.empty
      return
    end
    row = @index / @column_max
    if row < self.top_row
      self.top_row = row
    end
    if row > self.top_row + (self.page_row_max - 1)
      self.top_row = row - (self.page_row_max - 1)
    end
    cursor_width = self.width / @column_max - 32
    x = @index % @column_max * (cursor_width + 32)
    y = @index / @column_max * 32 - self.oy
    self.cursor_rect.set(x + GameGuy::X_OFFSET, y + GameGuy::Y_OFFSET, 32, 32)
  end
end
 
class Window_MenuStatus < Window_Selectable
  alias gg_update_cursor_rect_status_lat update_cursor_rect
  def update_cursor_rect
    if !check_hand_cursor
      return gg_update_cursor_rect_status_lat
    end
    if @index < 0
      self.cursor_rect.empty
    else
      self.cursor_rect.set(0 + GameGuy::X_OFFSET,
        @index * 116 + GameGuy::Y_OFFSET, 32, 32)
    end
  end
end
 
class Window_Target < Window_Selectable
  alias gg_update_cursor_rect_target_lat update_cursor_rect
  def update_cursor_rect
    if !check_hand_cursor
      return gg_update_cursor_rect_target_lat
    end
    if @index <= -2
      self.cursor_rect.set(0, (@index + 10) * 116, 32, 32)
    elsif @index == -1
      self.cursor_rect.set(0, 0, 32, 32)
    else
      self.cursor_rect.set(0 + GameGuy::X_OFFSET,
        @index * 116 + GameGuy::Y_OFFSET, 32, 32)
    end
  end
end
class Window_Message < Window_Selectable
  alias gg_update_cursor_rect_message_lat update_cursor_rect
  def update_cursor_rect
    if !check_hand_cursor
      return gg_update_cursor_rect_message_lat
    end
    if @index >= 0
      n = $game_temp.choice_start + @index
      self.cursor_rect.set(8 + GameGuy::X_OFFSET, n * 32, @cursor_width, 32)
    else
      self.cursor_rect.empty
    end
  end
end
class Window_PartyCommand < Window_Selectable
  alias gg_update_cursor_rect_partycmd_lat update_cursor_rect
  def update_cursor_rect
    if !check_hand_cursor
      return gg_update_cursor_rect_partycmd_lat
    end
    self.cursor_rect.set(160 + index * 160 + GameGuy::X_OFFSET,
      0 + GameGuy::Y_OFFSET, 32, 32)
  end
end
class Window_SaveFile < Window_Base
  alias gg_update_cursor_rect_savefile_lat update_cursor_rect
  def update_cursor_rect
    if !check_hand_cursor
      return gg_update_cursor_rect_savefile_lat
    end
    if @selected
      self.cursor_rect.set(0 + GameGuy::X_OFFSET, 0 + GameGuy::Y_OFFSET, 32, 32)
    else
      self.cursor_rect.empty
    end
  end
end

He encontrado como hacer el back de la window opaco pero no encuentro como hacerlo con el cursor.

Muchas gracias!! :D

PD: Lo necesito para XP!


Última edición por Dorvin el 2015-02-05, 23:02, editado 1 vez (Razón : Olvidé especificar el Maker! TT)
avatar
Dorvin
Veterano
Veterano

0/3

Créditos 475

Gracias : 22

Volver arriba Ir abajo

Re: [Taller] ¡Modificaciones sencillas de scripts!

Mensaje por Wecoc el 2015-02-06, 00:22

Para eso necesitas un script que reescriba Window. Conozco dos, el de Poccil y el de Selwyn. Lo que pides se puede hacer en ámbos así que lo hice con el de Selwyn.

A ver si te sirve.
Código:
#==============================================================================
# ? Window - Hidden RGSS Class
#------------------------------------------------------------------------------
# ?by Selwyn
#==============================================================================

#==============================================================================
# ? Bitmap
#==============================================================================

class Bitmap
  #--------------------------------------------------------------------------
  # ? erase
  #--------------------------------------------------------------------------
  def erase(*args)
    if args.size == 1
      rect = args[0]
    elsif args.size == 4
      rect = Rect.new(*args)
    end
    fill_rect(rect, Color.new(0, 0, 0, 0))
  end
end

#==============================================================================
# ? Skin
#==============================================================================

class Skin
  #--------------------------------------------------------------------------
  # ? instances settings
  #--------------------------------------------------------------------------
  attr_reader  :margin
  attr_accessor :bitmap
  #--------------------------------------------------------------------------
  # ? initialize
  #--------------------------------------------------------------------------
  def initialize
    @bitmap = nil
    @values = {}
    @values['bg'] = Rect.new(0, 0, 128, 128)
    @values['pause0'] = Rect.new(160, 64, 16, 16)
    @values['pause1'] = Rect.new(176, 64, 16, 16)
    @values['pause2'] = Rect.new(160, 80, 16, 16)
    @values['pause3'] = Rect.new(176, 80, 16, 16)
    @values['arrow_up'] = Rect.new(152, 16, 16, 8)
    @values['arrow_down'] = Rect.new(152, 40, 16, 8)
    @values['arrow_left'] = Rect.new(144, 24, 8, 16)
    @values['arrow_right'] = Rect.new(168, 24, 8, 16)
    self.margin = 16
  end
  #--------------------------------------------------------------------------
  # ? width
  #--------------------------------------------------------------------------
  def margin=(width)
    @margin = width
    set_values
  end
  #--------------------------------------------------------------------------
  # ? set_values
  #--------------------------------------------------------------------------
  def set_values
    w = @margin
    @values['ul_corner'] = Rect.new(128, 0, w, w)
    @values['ur_corner'] = Rect.new(192-w, 0, w, w)
    @values['dl_corner'] = Rect.new(128, 64-w, w, w)
    @values['dr_corner'] = Rect.new(192-w, 64-w, w, w)
    @values['up'] = Rect.new(128+w, 0, 64-2*w, w)
    @values['down'] = Rect.new(128+w, 64-w, 64-2*w, w)
    @values['left'] = Rect.new(128, w, w, 64-2*w)
    @values['right'] = Rect.new(192-w, w, w, 64-2*w)
  end
  #--------------------------------------------------------------------------
  # ? []
  #--------------------------------------------------------------------------
  def [](value)
    return @values[value]
  end
end


#==============================================================================
# ? Cursor_Rect
#==============================================================================

class Cursor_Rect < ::Sprite
  #--------------------------------------------------------------------------
  # ? instances settings
  #--------------------------------------------------------------------------
  attr_reader  :height, :width, :skin, :margin
  #--------------------------------------------------------------------------
  # ? initialize
  #--------------------------------------------------------------------------
  def initialize(viewport)
    super(viewport)
    @width = 0
    @height = 0
    @skin = nil
    @margin = 0
    @rect = {}
    @rect['cursor_up'] = Rect.new(129, 64, 30, 1)
    @rect['cursor_down'] = Rect.new(129, 95, 30, 1)
    @rect['cursor_left'] = Rect.new(128, 65, 1, 30)
    @rect['cursor_right'] = Rect.new(159, 65, 1, 30)
    @rect['upleft'] = Rect.new(128, 64, 1, 1)
    @rect['upright'] = Rect.new(159, 64, 1, 1)
    @rect['downleft'] = Rect.new(128, 95, 1, 1)
    @rect['downright'] = Rect.new(159, 95, 1, 1)
    @rect['bg'] = Rect.new(129, 65, 30, 30)
  end
  #--------------------------------------------------------------------------
  # ? margin=
  #--------------------------------------------------------------------------
  def margin=(margin)
    @margin = margin
    set(x, y, width, height)
  end
  #--------------------------------------------------------------------------
  # ? skin=
  #--------------------------------------------------------------------------
  def skin=(skin)
    @skin = skin
    draw_rect
  end
  #--------------------------------------------------------------------------
  # ? width=
  #--------------------------------------------------------------------------
  def width=(width)
    return if @width == width
    @width = width
    if @width == 0 and self.bitmap != nil
      self.bitmap.dispose
      self.bitmap = nil
    end
    draw_rect
  end
  #--------------------------------------------------------------------------
  # ? height=
  #--------------------------------------------------------------------------
  def height=(height)
    return if @height == height
    @height = height
    if @height == 0 and self.bitmap != nil
      self.bitmap.dispose
      self.bitmap = nil
    end
    draw_rect
  end
  #--------------------------------------------------------------------------
  # ? set
  #--------------------------------------------------------------------------
  def set(x, y, width, height)
    self.x = x + @margin
    self.y = y + @margin
    if @width != width or @height != height
      @width = width
      @height = height
      if width > 0 and height > 0
        draw_rect
      end
    end
  end
  #--------------------------------------------------------------------------
  # ? empty
  #--------------------------------------------------------------------------
  def empty
    self.x = 0
    self.y = 0
    self.width = 0
    self.height = 0
  end
  #--------------------------------------------------------------------------
  # ? draw_rect
  #--------------------------------------------------------------------------
  def draw_rect
    return if @skin == nil
    if @width > 0 and @height > 0
      self.bitmap = Bitmap.new(@width, @height)
      rect = Rect.new(1, 1, @width - 2, @height - 2)
      self.bitmap.stretch_blt(rect, @skin, @rect['bg'])
      self.bitmap.blt(0, 0, @skin, @rect['upleft'])
      self.bitmap.blt(@width-1, 0, @skin, @rect['upright'])
      self.bitmap.blt(0, @height-1, @skin, @rect['downright'])
      self.bitmap.blt(@width-1, @height-1, @skin, @rect['downleft'])
      rect = Rect.new(1, 0, @width - 2, 1)
      self.bitmap.stretch_blt(rect, @skin, @rect['cursor_up'])
      rect = Rect.new(0, 1, 1, @height - 2)
      self.bitmap.stretch_blt(rect, @skin, @rect['cursor_left'])
      rect = Rect.new(1, @height-1, @width - 2, 1)
      self.bitmap.stretch_blt(rect, @skin, @rect['cursor_down'])
      rect = Rect.new(@width - 1, 1, 1, @height - 2)
      self.bitmap.stretch_blt(rect, @skin, @rect['cursor_right'])
    end
  end
end

#==============================================================================
# ? Window
#==============================================================================

class Window
  #--------------------------------------------------------------------------
  # ? set instances variables
  #--------------------------------------------------------------------------
  attr_reader(:x, :y, :z, :width, :height, :ox, :oy, :opacity, :back_opacity,
              :stretch, :contents_opacity, :visible, :pause)
  attr_accessor :active
  #--------------------------------------------------------------------------
  # ? initialize
  #--------------------------------------------------------------------------
  def initialize()
    @skin = Skin.new
    @viewport = Viewport.new(0, 0, 0, 0)
    @cr_vport = Viewport.new(0, 0, 0, 0)
    @width = 0
    @height = 0
    @ox = 0
    @oy = 0
    @opacity = 255
    @back_opacity = 255
    @contents_opacity = 255
    @frame  = Sprite.new()
    @bg      = Sprite.new()
    @window  = Sprite.new(@viewport)
    @pause_s = Sprite.new()
    @arrows = []
    for i in 0...4
      @arrows.push(Sprite.new(@cr_vport))
      @arrows[i].bitmap = Bitmap.new(16, 16)
      @arrows[i].visible = false
    end
    @cursor_rect = Cursor_Rect.new(@cr_vport)
    @cursor_rect.margin = @skin.margin
    @cursor_fade = true
    @pause_s.visible = false
    @pause = false
    @active = true
    @stretch = true
    @visible = true
    self.x = 0
    self.y = 0
    self.z = 100
    self.windowskin = RPG::Cache.windowskin($game_system.windowskin_name)
  end
  #--------------------------------------------------------------------------
  # ? contents=
  #--------------------------------------------------------------------------
  def contents=(bmp)
    @window.bitmap = bmp
    if bmp != nil
      if bmp.width > @viewport.rect.width
        bmp.height > @viewport.rect.height
        draw_arrows
      end
    end
  end
  #--------------------------------------------------------------------------
  # ? contents
  #--------------------------------------------------------------------------
  def contents
    return @window.bitmap
  end
  #--------------------------------------------------------------------------
  # ? dispose
  #--------------------------------------------------------------------------
  def dispose
    @bg.dispose
    @frame.dispose
    @window.dispose
    @cursor_rect.dispose
    @viewport.dispose
    @pause_s.dispose
    @cr_vport.dispose
    for arrow in @arrows
      arrow.dispose
    end
  end
  #--------------------------------------------------------------------------
  # ? update
  #--------------------------------------------------------------------------
  def update
    @window.update
    @cursor_rect.update
    @viewport.update
    @cr_vport.update
    @pause_s.src_rect = @skin["pause#{(Graphics.frame_count / 8) % 4}"]
    @pause_s.update
    update_visible
    update_arrows
    # Wecoc Edit
    if self.active == true
      @cursor_rect.opacity = 255
    else
      @cursor_rect.opacity = 128
    end
    #if @cursor_fade
    #  @cursor_rect.opacity -= 10
    #  @cursor_fade = false if @cursor_rect.opacity <= 100
    #else
    #  @cursor_rect.opacity += 10
    #  @cursor_fade = true if @cursor_rect.opacity >= 255
    #end
  end
  #--------------------------------------------------------------------------
  # ? update_visible
  #--------------------------------------------------------------------------
  def update_visible
    @frame.visible = @visible
    @bg.visible = @visible
    @window.visible = @visible
    @cursor_rect.visible = @visible
    if @pause
      @pause_s.visible = @visible
    else
      @pause_s.visible = false
    end
  end
  #--------------------------------------------------------------------------
  # ? pause=
  #--------------------------------------------------------------------------
  def pause=(pause)
    @pause = pause
    update_visible
  end
  #--------------------------------------------------------------------------
  # ? update_arrows
  #--------------------------------------------------------------------------
  def update_arrows
    if @window.bitmap == nil or @visible == false
      for arrow in @arrows
        arrow.visible = false
      end
    else
      @arrows[0].visible = @oy > 0
      @arrows[1].visible = @ox > 0
      @arrows[2].visible = (@window.bitmap.width - @ox) > @viewport.rect.width
      @arrows[3].visible = (@window.bitmap.height - @oy) > @viewport.rect.height
    end
  end
  #--------------------------------------------------------------------------
  # ? visible=
  #--------------------------------------------------------------------------
  def visible=(visible)
    @visible = visible
    update_visible
    update_arrows
  end
  #--------------------------------------------------------------------------
  # ? x=
  #--------------------------------------------------------------------------
  def x=(x)
    @x = x
    @bg.x = x + 2
    @frame.x = x
    @viewport.rect.x = x + @skin.margin
    @cr_vport.rect.x = x
    @pause_s.x = x + (@width / 2) - 8
    set_arrows
  end
  #--------------------------------------------------------------------------
  # ? y=
  #--------------------------------------------------------------------------
  def y=(y)
    @y = y
    @bg.y = y + 2
    @frame.y = y
    @viewport.rect.y = y + @skin.margin
    @cr_vport.rect.y = y
    @pause_s.y = y + @height - @skin.margin
    set_arrows
  end
  #--------------------------------------------------------------------------
  # ? z=
  #--------------------------------------------------------------------------
  def z=(z)
    @z = z
    @bg.z = z
    @frame.z = z + 1
    @cr_vport.z = z + 2
    @viewport.z = z + 3
    @pause_s.z = z + 4
  end
  #--------------------------------------------------------------------------
  # ? ox=
  #--------------------------------------------------------------------------
  def ox=(ox)
    return if @ox == ox
    @ox = ox
    @viewport.ox = ox
    update_arrows
  end
  #--------------------------------------------------------------------------
  # ? oy=
  #--------------------------------------------------------------------------
  def oy=(oy)
    return if @oy == oy
    @oy = oy
    @viewport.oy = oy
    update_arrows
  end
  #--------------------------------------------------------------------------
  # ? width=
  #--------------------------------------------------------------------------
  def width=(width)
    @width = width
    @viewport.rect.width = width - @skin.margin * 2
    @cr_vport.rect.width = width
    if @width > 0 and @height > 0
      @frame.bitmap = Bitmap.new(@width, @height)
      @bg.bitmap = Bitmap.new(@width - 4, @height - 4)
      draw_window
    end
    self.x = @x
    self.y = @y
  end
  #--------------------------------------------------------------------------
  # ? height=
  #--------------------------------------------------------------------------
  def height=(height)
    @height = height
    @viewport.rect.height = height - @skin.margin * 2
    @cr_vport.rect.height = height
    if @height > 0 and @width > 0
      @frame.bitmap = Bitmap.new(@width, @height)
      @bg.bitmap = Bitmap.new(@width - 4, @height - 4)
      draw_window
    end
    self.x = @x
    self.y = @y
  end
  #--------------------------------------------------------------------------
  # ? opacity=
  #--------------------------------------------------------------------------
  def opacity=(opacity)
    value = [[opacity, 255].min, 0].max
    @opacity = value
    @contents_opacity = value
    @back_opacity = value
    @frame.opacity = value
    @bg.opacity = value
    @window.opacity = value
  end
  #--------------------------------------------------------------------------
  # ? back_opacity=
  #--------------------------------------------------------------------------
  def back_opacity=(opacity)
    value = [[opacity, 255].min, 0].max
    @back_opacity = value
    @bg.opacity = value
  end
  #--------------------------------------------------------------------------
  # ? contents_opacity=
  #--------------------------------------------------------------------------
  def contents_opacity=(opacity)
    value = [[opacity, 255].min, 0].max
    @contents_opacity = value
    @window.opacity = value
  end
  #--------------------------------------------------------------------------
  # ? cursor_rect
  #--------------------------------------------------------------------------
  def cursor_rect
    return @cursor_rect
  end
  #--------------------------------------------------------------------------
  # ? cursor_rect=
  #--------------------------------------------------------------------------
  def cursor_rect=(rect)
    @cursor_rect.x = rect.x
    @cursor_rect.y = rect.y
    if @cursor_rect.width != rect.width or @cursor_rect.height != rect.height
      @cursor_rect.set(@cursor_rect.x, @cursor_rect.y, rect.width, rect.height)
    end
  end
  #--------------------------------------------------------------------------
  # ? windowskin
  #--------------------------------------------------------------------------
  def windowskin
    return @skin.bitmap
  end
  #--------------------------------------------------------------------------
  # ? windowskin=
  #--------------------------------------------------------------------------
  def windowskin=(windowskin)
    return if windowskin == nil
    if @skin.bitmap != windowskin
      @pause_s.bitmap = windowskin
      @pause_s.src_rect = @skin['pause0']
      @skin.bitmap = windowskin
      @cursor_rect.skin = windowskin
      draw_window
      draw_arrows
    end
  end
  #--------------------------------------------------------------------------
  # ? margin=
  #--------------------------------------------------------------------------
  def margin=(margin)
    if @skin.margin != margin
      @skin.margin = margin
      self.x = @x
      self.y = @y
      temp = @height
      self.height = 0
      self.width = @width
      self.height = temp
      @cursor_rect.margin = margin
      set_arrows
    end
  end
  #--------------------------------------------------------------------------
  # ? stretch=
  #--------------------------------------------------------------------------
  def stretch=(bool)
    if @stretch != bool
      @stretch = bool
      draw_window
    end
  end
  #--------------------------------------------------------------------------
  # ? set_arrows
  #--------------------------------------------------------------------------
  def set_arrows
    @arrows[0].x = @width / 2 - 8
    @arrows[0].y = 8
    @arrows[1].x = 8
    @arrows[1].y = @height / 2 - 8
    @arrows[2].x = @width - 16
    @arrows[2].y = @height / 2 - 8
    @arrows[3].x = @width / 2 - 8
    @arrows[3].y = @height - 16
  end
  #--------------------------------------------------------------------------
  # ? draw_arrows
  #--------------------------------------------------------------------------
  def draw_arrows
    return if @skin.bitmap == nil
    @arrows[0].bitmap.blt(0, 0, @skin.bitmap, @skin['arrow_up'])
    @arrows[1].bitmap.blt(0, 0, @skin.bitmap, @skin['arrow_left'])
    @arrows[2].bitmap.blt(0, 0, @skin.bitmap, @skin['arrow_right'])
    @arrows[3].bitmap.blt(0, 0, @skin.bitmap, @skin['arrow_down'])
    update_arrows
  end
  #--------------------------------------------------------------------------
  # ? draw_window
  #--------------------------------------------------------------------------
  def draw_window
    return if @skin.bitmap == nil
    return if @width == 0 or @height == 0
    m = @skin.margin
    if @frame.bitmap.nil?
      @frame.bitmap = Bitmap.new(@width, @height)
      @bg.bitmap = Bitmap.new(@width - 4, @height - 4)
    end
    @frame.bitmap.clear
    @bg.bitmap.clear
    if @stretch
      dest_rect = Rect.new(0, 0, @width-4, @height-4)
      @bg.bitmap.stretch_blt(dest_rect, @skin.bitmap, @skin['bg'])
    else
      bgw = Integer((@width-4) / 128) + 1
      bgh = Integer((@height-4) / 128) + 1
      for x in 0..bgw
        for y in 0..bgh
          @bg.bitmap.blt(x * 128, y * 128, @skin.bitmap, @skin['bg'])
        end
      end
    end
    bx = Integer((@width - m*2) / @skin['up'].width) + 1
    by = Integer((@height - m*2) / @skin['left'].height) + 1
    for x in 0..bx
      w = @skin['up'].width
      @frame.bitmap.blt(x * w + m, 0, @skin.bitmap, @skin['up'])
      @frame.bitmap.blt(x * w + m, @height - m, @skin.bitmap, @skin['down'])
    end
    for y in 0..by
      h = @skin['left'].height
      @frame.bitmap.blt(0, y * h + m, @skin.bitmap, @skin['left'])
      @frame.bitmap.blt(@width - m, y * h + m, @skin.bitmap, @skin['right'])
    end
    @frame.bitmap.erase(@width - m, 0, m, m)
    @frame.bitmap.erase(0, @height - m, m, m)
    @frame.bitmap.erase(@width - m, @height - m, m, m)
    @frame.bitmap.blt(0, 0, @skin.bitmap, @skin['ul_corner'])
    @frame.bitmap.blt(@width - m, 0, @skin.bitmap, @skin['ur_corner'])
    @frame.bitmap.blt(0, @height - m, @skin.bitmap, @skin['dl_corner'])
    @frame.bitmap.blt(@width - m, @height - m, @skin.bitmap, @skin['dr_corner'])
  end
end

Ponlo encima de main y te recomiendo colocarlo encima de los demás scripts personalizados.
avatar
Wecoc
Administrador
Administrador



Créditos 12105

Gracias : 522

Volver arriba Ir abajo

Re: [Taller] ¡Modificaciones sencillas de scripts!

Mensaje por MarstonMuere el 2015-02-06, 06:45

Hola Wecoc, es tu propio script. Me gustaria que dependiendo del actor que lleves de lider se active una fase. Por ejemplo si llevas al actor 7 que se active la fase 7.

EDIT; Ya lo he logrado con un Evento commun, gracias de todas formas! (si lo ibas a hacer y sino tambien xD)

Código:
#==============================================================================
# ** Formación (Leader Select)
#------------------------------------------------------------------------------
#  Autor: Wecoc
#==============================================================================

module RPG
  class Actor
    attr_accessor :leadership
    def leadership
      if @leadership == nil
        @leadership = true
      end
      return @leadership
    end
  end
end

class Game_Actor < Game_Battler
  def leadership
    $data_actors[@actor_id].leadership
  end
 
  def leadership=(value)
    $data_actors[@actor_id].leadership = value
  end
end

class Game_Party
  attr_accessor :actors
end

class Spriteset_Map
  attr_accessor :viewport1
end

class Window_LeaderSelect < Window_Base
  def initialize(width, height)
    x = $game_player.screen_x - (width / 2)
    y = $game_player.screen_y - 16 - (height / 2)
    x = [[x, 0].max, 640 - width].min
    y = [[y, 0].max, 480 - height].min
    super(x, y, width, height)
    self.contents = Bitmap.new(width - 32, height - 32)
    @actor_sprites = []
    self.opacity = 0
    refresh
  end
 
  def dispose
    super
    @actor_sprites.each{|x| x.dispose}
    @actor_sprites = []
  end

  def draw_actor_graphic(actor, x, y, color=Color.new(0, 0, 0, 0), opacity=255)
    direction = 2
    bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
    @actor_sprites.push(Sprite.new(@viewport1))
    sprite = @actor_sprites[@actor_sprites.size - 1]
    sprite.bitmap = bitmap.clone
    rect_x = bitmap.width / 4
    rect_y = 0
    rect_w = 3 * bitmap.width / 4
    rect_h = bitmap.height
    rect_color = Color.new(0, 0, 0, 0)
    sprite.bitmap.fill_rect(rect_x, rect_y, rect_w, rect_h, rect_color)
    d_array = [2, 4, 6, 8]
    for i in d_array
      next if direction == i
      rect_x = 0
      rect_y = d_array.index(i) * bitmap.height / 4
      rect_w = bitmap.width / 4
      rect_h = bitmap.height / 4
      rect_color = Color.new(0, 0, 0, 0)
      sprite.bitmap.fill_rect(rect_x, rect_y, rect_w, rect_h, rect_color)
    end
    dy = d_array.index(direction) * bitmap.height / 4
    sprite.x = x + self.x
    sprite.y = y + self.y - 32 - dy
    sprite.z = 128
    sprite.color = color
    sprite.opacity = opacity
  end
 
  def refresh
    actors = $game_party.actors.clone
    actors.sort!{|a, b| a.id <=> b.id}
    color = Color.new(0, 0, 0, 0)
    disabled = Color.new(60, 0, 0, 160)
    opacity = 180
    disabled_opacity = 160
    w = self.width - 32
    h = self.height
    if actors[0] != nil
      unless actors[0].leadership
        color = disabled
        opacity = disabled_opacity
      end
      draw_actor_graphic(actors[0], w / 2, 32, color, opacity)
    end
    if actors[1] != nil
      unless actors[1].leadership
        color = disabled
        opacity = disabled_opacity
      end
      draw_actor_graphic(actors[1], 16, h / 2, color, opacity)
    end
    if actors[2] != nil
      unless actors[2].leadership
        color = disabled
        opacity = disabled_opacity
      end
      draw_actor_graphic(actors[2], w - 16, h / 2, color, opacity)
    end
    if actors[3] != nil
      unless actors[3].leadership
        color = disabled
        opacity = disabled_opacity
      end
      draw_actor_graphic(actors[3], w / 2, h - 32, color, opacity)
    end
  end
end

class Scene_LeaderSelect
  def main
    @spriteset = Spriteset_Map.new
    back_color = Color.new(0, 0, 0, 0)
    @spriteset.viewport1.color = back_color
    @select_window = Window_LeaderSelect.new(160, 160)
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @select_window.dispose
    @spriteset.dispose
  end
 
  def update
    @select_window.update
    @spriteset.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new
      return
    end
    if Input.trigger?(Input::UP)
      actors = $game_party.actors.clone
      actors.sort!{|a, b| a.id <=> b.id}
      if actors[0] == nil
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      if actors[0].leadership == false
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      $game_party.actors.replace(actors)
      $game_player.refresh
      $scene = Scene_Map.new
      return
    end
    if Input.trigger?(Input::LEFT)
      actors = $game_party.actors.clone
      actors.sort!{|a, b| a.id <=> b.id}
      if actors[1] == nil
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      if actors[1].leadership == false
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      $game_party.actors.replace(actors)
      $game_party.actors[0] = actors[1]
      $game_party.actors[1] = actors[0]
      $game_player.refresh
      $scene = Scene_Map.new
      return
    end
    if Input.trigger?(Input::RIGHT)
      actors = $game_party.actors.clone
      actors.sort!{|a, b| a.id <=> b.id}
      if actors[2] == nil
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      if actors[2].leadership == false
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      $game_party.actors.replace(actors)
      $game_party.actors[0] = actors[2]
      $game_party.actors[2] = actors[0]
      $game_player.refresh
      $scene = Scene_Map.new
      return
    end
    if Input.trigger?(Input::DOWN)
      actors = $game_party.actors.clone
      actors.sort!{|a, b| a.id <=> b.id}
      if actors[3] == nil
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      if actors[3].leadership == false
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      $game_party.actors.replace(actors)
      $game_party.actors[0] = actors[3]
      $game_party.actors[3] = actors[0]
      $game_player.refresh
      $scene = Scene_Map.new
      return
    end
  end
end


Última edición por MarstonMuere el 2015-02-07, 22:37, editado 1 vez
avatar
MarstonMuere
Iniciado
Iniciado

0/3

Créditos 25

Gracias : 5

Volver arriba Ir abajo

Re: [Taller] ¡Modificaciones sencillas de scripts!

Mensaje por Dorvin el 2015-02-06, 09:27

Me ha servido perfectamente, muchas gracias Wecoc!! :D
avatar
Dorvin
Veterano
Veterano

0/3

Créditos 475

Gracias : 22

Volver arriba Ir abajo

Re: [Taller] ¡Modificaciones sencillas de scripts!

Mensaje por errd el 2015-02-06, 17:44

hola quisiera saber si puedes modificar este script para que quede haci:
antes:


haci lo quiero:


que solo se mire el chara del personaje y el medidor de corazones
y que tambien muestre la lozalizacion

y que en donde dice FILE aparesca el nombre del personaje (en el caso de la imagen se llama Errd)

y que las otras ranuras se minimisen si no estan seleccionadas y que se pueda copiar y pegar

si no puedes entonces solo agregale el medidor de corazon:



Código:
#_______________________________________________________________________________
# MOG Scene File Ayumi V1.2          
#_______________________________________________________________________________
# By Moghunter  
# http://www.atelier-rgss.com
#_______________________________________________________________________________
module MOG
#Transition Time.
MSVT = 30
#Transition Type.
MSVTT = "006-Stripe02"
end
$mogscript = {} if $mogscript == nil
$mogscript["menu_ayumi"] = true
###############
# Window_Base #
###############
class Window_Base < Window
def drw_win_file(x,y)
dwf = RPG::Cache.picture("Win_File")
cw = dwf.width
ch = dwf.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch, dwf, src_rect)    
end  
def nada
face = RPG::Cache.picture("")
end  
def draw_heroface3(actor,x,y)
face = RPG::Cache.picture(actor.name + "_fc3") rescue nada
cw = face.width
ch = face.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch, face, src_rect)    
end  
def draw_actor_level6(actor, x, y)
self.contents.font.color = Color.new(0,0,0,255)
self.contents.draw_text(x + 1, y + 1, 32, 32, "Lv")  
self.contents.font.color = system_color
self.contents.draw_text(x, y, 32, 32, "Lv")
self.contents.font.color = Color.new(0,0,0,255)
self.contents.draw_text(x + 17, y + 1, 24, 32, actor.level.to_s, 2)
self.contents.font.color = Color.new(255,255,255,255)
self.contents.draw_text(x + 16, y, 24, 32, actor.level.to_s, 2)
end
def draw_actor_name6(actor, x, y)
self.contents.font.color = Color.new(0,0,0,255)
self.contents.draw_text(x + 1, y + 1, 100, 32, actor.name,1)  
self.contents.font.color = normal_color
self.contents.draw_text(x, y, 100, 32, actor.name,1)
end
end
############
# Game_Map #
############
class Game_Map
def map_name
@mapinfo = load_data("Data/MapInfos.rxdata") if @mapinfo == nil
return @mapinfo[@map_id].name
end
end
###################
# Window_SaveFile #
###################
class Window_SaveFile < Window_Base
  attr_reader   :filename                
  attr_reader   :selected                
  def initialize(file_index, filename)
    super(0, 64 + file_index * 138, 640, 240)    
    self.contents = Bitmap.new(width - 32, height - 32)  
    self.opacity = 0
    @file_index = file_index
    @filename = "Save#{@file_index + 1}.rxdata"
    @time_stamp = Time.at(0)
    @file_exist = FileTest.exist?(@filename)
    if @file_exist
      file = File.open(@filename, "r")
      @time_stamp = file.mtime
      @characters = Marshal.load(file)
      @frame_count = Marshal.load(file)
      @game_system = Marshal.load(file)
      @game_switches = Marshal.load(file)
      @game_variables = Marshal.load(file)
      @game_self_switches = Marshal.load(file)
      @game_screen = Marshal.load(file)
      @game_actors = Marshal.load(file)
      @game_party = Marshal.load(file)
      @game_troop = Marshal.load(file)
      @game_map = Marshal.load(file)
      @total_sec = @frame_count / Graphics.frame_rate
      file.close
    end
    @wiref = 0
    refresh
    @selected = false
  end  
  def refresh
    self.contents.clear
    self.contents.font.name = "Georgia"
    drw_win_file(0,190)
    name = "#{@file_index + 1}"
    self.contents.font.color = Color.new(0,0,0,255)
    self.contents.draw_text(161, 41, 600, 32, name)
    self.contents.font.color = Color.new(255,255,255,255)
    self.contents.draw_text(160, 40, 600, 32, name)    
    @name_width = contents.text_size(name).width
    if @file_exist
      for i in 0...@characters.size
        bitmap = RPG::Cache.character(@characters[i][0], @characters[i][1])
        cw = bitmap.rect.width / 4
        ch = bitmap.rect.height / 4
        src_rect = Rect.new(cw * @wiref + 1 , 0, cw, ch)
        x = 300 - @characters.size + i * 64 - cw / 4
        self.contents.blt(x - 10, 150 - ch, bitmap, src_rect)
        x = 116
        actors = @game_party.actors
        for i in 0...[actors.size, 4].min
        x     = i * 60
        actor = actors[i]        
        self.contents.font.size = 20
        draw_actor_level6(actor, x + 280, 140)
        actor = actors[0]    
        draw_heroface3(actor,160,180)    
        self.contents.font.size = 22
        end          
      end      
      hour = @total_sec / 60 / 60
      min = @total_sec / 60 % 60
      sec = @total_sec % 60
      time_string = sprintf("%02d:%02d:%02d", hour, min, sec)
      self.contents.font.color = Color.new(0,0,0,255)
      self.contents.draw_text(5, 41, 450, 32, time_string, 2)
      self.contents.draw_text(41 , 141, 120 , 32, @game_map.map_name.to_s)
      self.contents.font.color = Color.new(255,255,255,255)
      self.contents.draw_text(40 , 140, 120 , 32, @game_map.map_name.to_s)  
      self.contents.draw_text(4, 40, 450, 32, time_string, 2)  
   end
  end
  def selected=(selected)
    @selected = selected
  end
end
##############
# Scene_File #
##############
class Scene_File
  def initialize(help_text)
    @help_text = help_text
  end
  def main
    @mnback = Plane.new
    @mnback.bitmap = RPG::Cache.picture("MN_BK")
    @mnback.z = 1
    @mnlay = Sprite.new
    @mnlay.bitmap = RPG::Cache.picture("Lay_File.PNG")
    @mnlay.z = 2
    @help_window = Window_Help.new
    @help_window.set_text(@help_text)
    @help_window.opacity = 0
    @savefile_windows = []
    for i in 0..2
      @savefile_windows.push(Window_SaveFile.new(i, make_filename(i)))
    end
    @savefile_windows[0]
    @file_index = $game_temp.last_file_index
    @savefile_windows[@file_index].selected = true
    @savefile_windows[0].y = 40    
    @savefile_windows[1].y= 140
    @savefile_windows[2].y= 240    
    @win_move_time = 0
    @win_move = 0
    @win_dire = 0
    @win_opac = 255
    @win1_y = 0
    @win2_y = 0
    @win3_y = 0
    Graphics.transition(MOG::MSVT, "Graphics/Transitions/" + MOG::MSVTT)
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    for i in 0..50
    @mnback.ox += 1
    @savefile_windows[0].x += 10    
    @savefile_windows[1].x -= 10
    @savefile_windows[2].x += 10
    for i in @savefile_windows
    i.contents_opacity -= 5
    end  
    Graphics.update  
    end      
    Graphics.freeze
    @help_window.dispose
    @mnback.dispose
    @mnlay.dispose
    for i in @savefile_windows
      i.dispose
    end
  end
  def update
    @mnback.ox += 1
    @win_opac += 3
    @win_move_time += 1    
    if @win_opac > 254
       @win_opac = 150
    end        
    if @win_move_time > 60
    @win_dire += 1
    @win_move_time = 0    
    end
    if @win_dire > 1
       @win_dire = 0
    end
    if @win_dire == 0
       @win_move += 1
    else  
       @win_move -= 1
    end        
    if @file_index == 0
    @savefile_windows[0].z = 2  
    @savefile_windows[1].z = 1
    @savefile_windows[2].z = 0  
    @savefile_windows[0].x = @win_move
    @savefile_windows[1].x = 0
    @savefile_windows[1].x= 0
    @savefile_windows[2].x = 0    
    @savefile_windows[0].contents_opacity = @win_opac
    @savefile_windows[1].contents_opacity = 130
    @savefile_windows[2].contents_opacity =  130    
    elsif @file_index == 1
    @savefile_windows[0].z = 1  
    @savefile_windows[1].z = 2
    @savefile_windows[2].z = 1    
    @savefile_windows[0].x = 0
    @savefile_windows[1].x = @win_move
    @savefile_windows[2].x = 0    
    @savefile_windows[0].contents_opacity =  130
    @savefile_windows[1].contents_opacity = @win_opac
    @savefile_windows[2].contents_opacity =  130
    else
    @savefile_windows[0].z = 0  
    @savefile_windows[1].z = 1
    @savefile_windows[2].z = 2      
    @savefile_windows[0].x = 0
    @savefile_windows[1].x = 0
    @savefile_windows[2].x = @win_move  
    @savefile_windows[0].contents_opacity = 130
    @savefile_windows[1].contents_opacity = 130
    @savefile_windows[2].contents_opacity = @win_opac    
    end    
    @help_window.update    
    for i in @savefile_windows
      i.update
    end
    if Input.trigger?(Input::C)
      on_decision(make_filename(@file_index))
      $game_temp.last_file_index = @file_index
      return
    end
    if Input.trigger?(Input::B)
      on_cancel
      return
    end
    if Input.repeat?(Input::DOWN)
      if Input.trigger?(Input::DOWN) or @file_index < 3
        $game_system.se_play($data_system.cursor_se)
        @savefile_windows[@file_index].selected = false
        @file_index = (@file_index + 1) % 3
        @savefile_windows[@file_index].selected = true
        return
      end
    end
    if Input.repeat?(Input::UP)
      if Input.trigger?(Input::UP) or @file_index > 0
        $game_system.se_play($data_system.cursor_se)
        @savefile_windows[@file_index].selected = false
        @file_index = (@file_index - 1) % 3
        @savefile_windows[@file_index].selected = true
        return
      end
    end
  end
  def make_filename(file_index)
    return "Save#{file_index + 1}.rxdata"
  end
end

estos son  los recursos:






no se si me explique bien pero gracias de antemano
avatar
errd
Iniciado
Iniciado

0/3

Créditos 50

Gracias : 3

Volver arriba Ir abajo

Re: [Taller] ¡Modificaciones sencillas de scripts!

Mensaje por Dariel Lopez el 2015-02-19, 22:53

Hola de nuevo Wecoc, aquí estoy de regreso solicitando tu ayuda para ver si puedes modificar este script para que además de lo que ya muestra en pantalla muestre también los estados alterados, la experiencia actual y la experiencia necesaria para subir al siguiente nivel. Lo de los estados alterados lo hice con un engine pero como estoy usando otros engines pues provocan lag y por eso quisiera usar esa opción desde este script para ver si deja de provocar lag.
Y por último pero no menos importante si es posible también hacer que con un botón se puedan usar los items de curación sin tener que entrar al menú del juego.
Este script es para Rpg Maker Vx Ace.
Código:
#                            ~ Akian~RGSS3 ~

# =============================== Español ======================================

# Nombre del script: AR3 ~ Advanced Hud
# Scripter: Akian~RGSS3
# Requiere?: Imagenes del demo
# Versión: 1.0

# Historial:
# 1.0 Comienzo y Finalización del script

# Este script te permite un hud altamente modificable a base de sprites.
# Contiene técnicas de scripteo avanzado (si eres scripter puedes revisarlas
# para enterarte de cómo se logra algo así).
# Puedes cambiar las imágenes (deben mantener el mismo nombre) a tu gusto
# así podrás armar el hud como tu quieras, o simplemente modifica la posición
# de las imágenes por default en la region editable.

# ~ Script call ~
# hud_visible(true)     para activar el hud
# hud_visible(false)    para desactivarlo

#===============================================================================
# Condiciones de uso:
# Puedes usar libremente este script en proyectos comerciales y no comerciales
# Los créditos son requeridos, por el trabajo, el esfuerzo, el sudor, bueno no
# tanto por el sudor.
# Si posteas este script en algún foro debes señalar la página oficial
# http://akianrgss3.wordpress.com/
# También nombrar la página en los créditos si lo usas para un proyecto.
# NO puedes usar las imágenes del demo en un proyecto comercial.
#===============================================================================

# =============================== English ======================================

# Name of the script: AR3 ~ Advanced Hud
# Scripter: Akian~RGSS3
# Need?: Images from the demo
# Versión: 1.0

# Historial:
# 1.0 Start and finish the script

# This script allows a hud on the map with advanced techniques on sprites.
# You can change the images on Graphics/Advanced_Hud folder and the position
# in the editable region below to make your own hud.

# ~ Script call ~
# hud_visible(true)     to enable the hud
# hud_visible(false)    to disable the hud

#===============================================================================
# Terms of use:
# Free to use in comercial and non comercial projects
# Credits are required and the mention of my page  http://akianrgss3.wordpress.com/
# also you has to mention my page if you post this script in other page/blog
# Sry for this, but you are NOT allowed to use the images from the demo
# in a comercial project.
#===============================================================================


$imported = {} if $imported.nil?
$imported["AR3_Advanced_Hud"] = true

module AR3_ADVANCED_HUD
  
#===============================================================================
#
#                         REGION EDITABLE
#
#===============================================================================

#~~~~~~~~~~~~~~~~~~
# Hud
#~~~~~~~~~~~~~~~~~~
# Posición x del hud  | x position
  HUD_POSITION_X    = -45
  
# Posición y del hud  | y position
  HUD_POSITION_Y    = 290
    
# Visible desde el inicio? | initial visible?
# true   = yes
# false  = no
  INITIAL_VISIBLE   = true
  
# Posición z del hud
  HUD_Z             = 70
#~~~~~~~~~~~~~~~~~~
# Face
#~~~~~~~~~~~~~~~~~~

# Mostrar la cara del personaje? true / false
# Para esto se necesitara una imagen en la carpeta Graphics/Advanced_Hud
# con la cara del actor y debe obligadamente tener el siguiente nombre
# ACTOR_ID + _Face
# Ex: Actor1_Face   Actor2_Face  etc

# Show face graphic? true / false
# You will need the face image of the actor and name it ACTOR_ID + _Face
# Ex: Actor1_Face    Actor2_Face  etc
  DRAW_FACE         = true
  
# Posición x de la cara  | x position
  FACE_POSITION_X   = 23
  
# Posición y de la cara  | y position
  FACE_POSITION_Y   = 23

#~~~~~~~~~~~~~~~~~~
#  Hp
#~~~~~~~~~~~~~~~~~~

# Mostrar barra de vida? true / false
# Show hp bar? true / false
  DRAW_HP           = true
  
# Posición x de la barra de vida | x position
  HP_POSITION_X     = 95
  
# Posición y de la barra de vida | y position
  HP_POSITION_Y     = 57
  
#~~~~~~~~~~~~~~~~~~
# Mp
#~~~~~~~~~~~~~~~~~~

# Mostrar barra de mp? true / false
# Show mp bar? true / false
  DRAW_MP           = true
  
# Posición x de la barra de mp | x position
  MP_POSITION_X     = 83
  
# Posición y de la barra de mp | y position
  MP_POSITION_Y     = 78

#~~~~~~~~~~~~~~~~~~
# Level
#~~~~~~~~~~~~~~~~~~

# Mostrar Nivel? true / false
# Show level?  true / false
  LV_SPRITE            = true
  
# Posición x de la capa (layer) | level layer position x
  LV_POSITION_X        = 60

# Posición y de la capa (layer) | level layer position y
  LV_POSITION_Y        = 87
  
# Posición x del número para el nivel | level number position x
  LEVEL_NUMBER_POSITION_X   = 95
  
# Posición y del número para el nivel  | level number position y
  LEVEL_NUMBER_POSITION_Y   = 108
  
#~~~~~~~~~~~~~~~~~~
# Hp Mp
#~~~~~~~~~~~~~~~~~~

# Mostrar gráfico Hp_Mp? true / false
# Show words of Hp_Mp? true / false
  DRAW_WORD              = true
  
# Posición x del Hp_Mp | x position
  WORD_POSITION_X        = 88
  
# Posición x del Hp_Mp | y position                                  
  WORD_POSITION_Y        = 50
  
#~~~~~~~~~~~~~~~~~~
# Nombre
#~~~~~~~~~~~~~~~~~~

# Mostrar nombre del personaje? true / false
# Show name? true / false
  DRAW_NAME              = true

# Posición x del nombre  | x position
  NAME_POSITION_X        = 98
  
# Posición y del nombre  | y position
  NAME_POSITION_Y        = 24
  
# Fuente del nombre  | name font
  NAME_FONT              = "Georgia"
  
# Tamaño de fuente  | font size
  NAME_FONT_SIZE         = 18
  
# Italic a la fuente?   | font italic?
  NAME_FONT_ITALIC       = true
  
# Bold a la fuente?  | font bold?
  NAME_FONT_BOLD         = true
  
# Color de la fuente                rojo  verde  azul  gris  
# Font color
  NAME_FONT_COLOR        = Color.new(255,  255,  255,  255)
  
# Sombra del nombre?
# Name shadow?
  NAME_SHADOW            = true
  
# Color de la sombra?               rojo verde azul gris
# Shadow color
  NAME_SHADOW_FONT_COLOR = Color.new(100,    100,   100,   255)
  
#~~~~~~~~~~~~~~~~~~
# Número Hp
#~~~~~~~~~~~~~~~~~~

# Mostrar número de hp? true / false
# Show hp number? true / false
  DRAW_HP_NUMBER         = true
  
#~~~~~~~~~~~~~~~~~~
# Número Mp
#~~~~~~~~~~~~~~~~~~
  
# Mostrar número de mp? true / false
# Show mp number? true / false
  DRAW_MP_NUMBER        = true

#~~~~~~~~~~~~~~~~~~
# Oro
#~~~~~~~~~~~~~~~~~~  

# Mostrar oro? true / false
# Show gold? true / false
  DRAW_GOLD             = true
  
# Posición x del oro  | x position
  GOLD_POSITION_X       = 372
  
# Posición y del oro  | y position
  GOLD_POSITION_Y       = 350
  
# Posición x del número del oro  | x position of the number
  GOLD_NUMBER_X         = 542
  
# Posición y del número del oro  | y position of the number
  GOLD_NUMBER_Y         = 395
  
#===============================================================================
#
#                      FIN DE LA REGION EDITABLE
#
#===============================================================================
end


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Modulo Cache
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
module Cache
  #--------------------------------------------------------------------------
  # ▼ Cache Advanced_Hud
  #--------------------------------------------------------------------------
  def self.advanced_hud(filename)
    load_bitmap("Graphics/Advanced_Hud/", filename)
  end
end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Seteando acceso a la visibilidad del hud
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class Game_System
  alias akian_advanced_hud_visible_zack        initialize
  
  attr_accessor :hud_visible
  
  def initialize
    akian_advanced_hud_visible_zack
    @hud_visible = AR3_ADVANCED_HUD::INITIAL_VISIBLE
  end
end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Clase para los scripts calls
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class Game_Interpreter
  def hud_visible(valor)
    $game_system.hud_visible = valor
  end
end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Clase Scene_Map donde se ejecuta todo lo relacionado a la escena
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class Spriteset_Map
  alias akian_avanced_hud_start_zack       initialize
  alias akian_advanced_hud_update_zack     update
  alias akian_advanced_hud_dispose_zack    dispose

  #--------------------------------------------------------------------------
  # ▼ Creando el hud en el mapa
  #--------------------------------------------------------------------------  
  def initialize
    create_advanced_hud
    akian_avanced_hud_start_zack
  end
  #--------------------------------------------------------------------------
  # ▼ Dispose
  #--------------------------------------------------------------------------  
  def dispose
    execute_hud_dispose
    akian_advanced_hud_dispose_zack
  end
  #--------------------------------------------------------------------------
  # ▼ Actualización
  #--------------------------------------------------------------------------  
  def update
    advanced_hud_update
    akian_advanced_hud_update_zack
  end
  #--------------------------------------------------------------------------
  # ▼ Creando hud
  #--------------------------------------------------------------------------  
  def create_advanced_hud
    @advanced_hud   = Advanced_Hud.new
  end
  #--------------------------------------------------------------------------
  # ▼ Actualización del hud
  #--------------------------------------------------------------------------  
  def advanced_hud_update
     return if @advanced_hud == nil
    @advanced_hud.update
  end
  #--------------------------------------------------------------------------
  # ▼ Ejecutando el dispose
  #--------------------------------------------------------------------------  
  def execute_hud_dispose
    return if @advanced_hud == nil
    @advanced_hud.dispose
    @advanced_hud = nil
  end
end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Advanced_Hud creación de sprites
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class Advanced_Hud
  include AR3_ADVANCED_HUD
  #--------------------------------------------------------------------------
  # ▼ Inicializando - seteando el hud
  #--------------------------------------------------------------------------  
  def initialize
    setup_start
    create_hud
  end
  #--------------------------------------------------------------------------
  # ▼ Seteando el comienzo
  #--------------------------------------------------------------------------
  def setup_start
    @actor                    = $game_party.members[0]
    @hp_meter_image           = Cache.advanced_hud("Hp_Meter")
    @hp_meter_cw              = @hp_meter_image.width
    @hp_meter_ch              = @hp_meter_image.height
    @mp_meter_image           = Cache.advanced_hud("Mp_Meter")
    @mp_meter_cw              = @mp_meter_image.width
    @mp_meter_ch              = @mp_meter_image.height
    @lv_number_image          = Cache.advanced_hud("Number2")
    @lv_number_cw             = @lv_number_image.width / 10
    @lv_number_ch             = @lv_number_image.height
    @hp_number_image          = Cache.advanced_hud("Number")
    @hp_number_cw             = @hp_number_image.width / 10
    @hp_number_ch             = @hp_number_image.height
    @mp_number_image          = Cache.advanced_hud("Number")
    @mp_number_cw             = @mp_number_image.width / 10
    @mp_number_ch             = @mp_number_image.height    
    @gold_number_image        = Cache.advanced_hud("Gold_Number")
    @gold_number_cw           = @gold_number_image.width / 10
    @gold_number_ch           = @gold_number_image.height
  end
  
  #--------------------------------------------------------------------------
  # ▼ Creando sprites
  #--------------------------------------------------------------------------  
  def create_hud  
    create_hud_initial
    hp_meter
    mp_meter
    create_level_number
    create_face
    create_lv_sprite
    create_word
    create_name
    create_hp_number
    create_mp_number
    create_gold_number
    create_gold
    end
  #--------------------------------------------------------------------------
  # ▼ Visibilidad
  #--------------------------------------------------------------------------  
    def visible?
    return false if $game_system.hud_visible
    return true
  end
end
#===============================================================================
# Creando hud inicial
#===============================================================================
class Advanced_Hud
  
  def create_hud_initial
    @hud_initial         = Sprite.new
    @hud_initial.bitmap  = Cache.advanced_hud("Hud")
    @hud_initial.x       = HUD_POSITION_X
    @hud_initial.y       = HUD_POSITION_Y
    @hud_initial.z       = HUD_Z - 3
    @hud_initial.opacity = 0 if visible?
  end
  
  def refresh_hud_initial
    @hud_initial.opacity -= 5 if visible?
    @hud_initial.opacity += 5 if !visible?
  end
end


#===============================================================================
# Creando Barra de Vida
#===============================================================================
class Advanced_Hud
  
  def hp_meter
    return if !DRAW_HP
      @hp_meter = Sprite.new
      @hp_meter.bitmap = Bitmap.new(@hp_meter_cw,@hp_meter_ch)
      @hp_meter.z = HUD_Z + 4
      @hp_meter.x = HUD_POSITION_X + HP_POSITION_X
      @hp_meter.y = HUD_POSITION_Y + HP_POSITION_Y
      @hp_meter.opacity = 0 if visible?
  end
  #--------------------------------------------------------------------------
  # ▼ Actualizando barra de vida
  #--------------------------------------------------------------------------
  def refresh_hp
    return if !DRAW_HP
      @hp_meter.bitmap.clear
      meter_width = @hp_meter_cw * @actor.hp / @actor.mhp rescue nil
      meter_width = 0 if meter_width == nil
      meter_src_rect = Rect.new(0, 0 , meter_width, @hp_meter_ch)
      @hp_meter.bitmap.blt(0, 0, @hp_meter_image, meter_src_rect)
      @hp_meter.opacity -= 5 if visible?
      @hp_meter.opacity += 5 if !visible?
    end
  end
  
#===============================================================================
# Creando Número Hp
#===============================================================================
class Advanced_Hud
  
  def create_hp_number
    return if !DRAW_HP_NUMBER
    @hp_number            = Sprite.new
    @hp_number.bitmap     = Bitmap.new(@hp_number_cw * 4, @hp_number_ch)
    @hp_number.x          = HUD_POSITION_X + HP_POSITION_X + 103
    @hp_number.y          = HUD_POSITION_Y + HP_POSITION_Y + 5
    @hp_number.z          = HUD_Z + 6
    @hp_number.zoom_y     = 0.7
    @hp_number.opacity    = 0 if visible?
  end
  #--------------------------------------------------------------------------
  # ▼ Actualizando número hp
  #--------------------------------------------------------------------------  
  def refresh_hp_number
    return if !DRAW_HP_NUMBER
    @hp_number.bitmap.clear
    @old_number           = @actor.hp
    number_value          = @actor.hp.to_s.split(//)
    for r in 0..number_value.size - 1
      number_value_abs = number_value[r].to_i
      nsrc_rect        = Rect.new(@hp_number_cw * number_value_abs, 0 , @hp_number_cw, @hp_number_ch)
      @hp_number.bitmap.blt(@hp_number_cw * r, 0, @hp_number_image, nsrc_rect)
    end
    @hp_number.opacity  -= 5 if visible?
    @hp_number.opacity += 5 if !visible?
    @hp_number.x = HUD_POSITION_X + HP_POSITION_X + 103 - (@hp_number_cw * number_value.size)
  end
end

#===============================================================================
# Creando Barra de MP
#===============================================================================  
class Advanced_Hud
    
    def mp_meter
      return if !DRAW_MP
      @mp_meter             = Sprite.new
      @mp_meter.bitmap      = Bitmap.new(@mp_meter_cw, @mp_meter_ch)
      @mp_meter.z           = HUD_Z + 4
      @mp_meter.x           = HUD_POSITION_X + MP_POSITION_X
      @mp_meter.y           = HUD_POSITION_Y + MP_POSITION_Y
      @mp_meter.opacity     = 0 if visible?
    end
  #--------------------------------------------------------------------------
  # ▼ Actualizando barra mp
  #--------------------------------------------------------------------------    
     def refresh_mp
       return if !DRAW_MP
       @mp_meter.bitmap.clear
       meter_width = @mp_meter_cw * @actor.mp / @actor.mmp rescue nil
       meter_width = 0 if meter_width == nil
       meter_src_rect   = Rect.new(0, 0, meter_width, @mp_meter_ch)
       @mp_meter.bitmap.blt(0, 0, @mp_meter_image, meter_src_rect)
       @mp_meter.opacity -= 5 if visible?
       @mp_meter.opacity += 5 if !visible?
     end  
   end
#===============================================================================
# Creando Número Mp
#===============================================================================
class Advanced_Hud
  
  def create_mp_number
    return if !DRAW_MP_NUMBER
    @mp_number            = Sprite.new
    @mp_number.bitmap     = Bitmap.new(@mp_number_cw * 4, @mp_number_ch)
    @mp_number.x          = HUD_POSITION_X + MP_POSITION_X + 113
    @mp_number.y          = HUD_POSITION_Y + MP_POSITION_Y + 5
    @mp_number.z          = HUD_Z + 6
    @mp_number.zoom_y     = 0.7
    @mp_number.opacity    = 0 if visible?
  end
  #--------------------------------------------------------------------------
  # ▼ Actualizando número mp
  #--------------------------------------------------------------------------  
  def refresh_mp_number
    return if !DRAW_MP_NUMBER
    @mp_number.bitmap.clear
    @old_number           = @actor.mp
    number_value          = @actor.mp.to_s.split(//)
    for r in 0..number_value.size - 1
      number_value_abs = number_value[r].to_i
      nsrc_rect        = Rect.new(@mp_number_cw * number_value_abs, 0 , @mp_number_cw, @mp_number_ch)
      @mp_number.bitmap.blt(@mp_number_cw * r, 0, @mp_number_image, nsrc_rect)
    end
      @mp_number.opacity -= 5 if visible?
      @mp_number.opacity += 5 if !visible?
      @mp_number.x   = HUD_POSITION_X + MP_POSITION_X + 113 - (@mp_number_cw * number_value.size)
  end
end

#===============================================================================
# Creando cara del personaje
#===============================================================================
class Advanced_Hud
  
    def create_face
      return if !DRAW_FACE
      @face                = Sprite.new
      @face.bitmap         = Cache.advanced_hud("Actor" + @actor.id.to_s + "_Face")
      @face.z              = HUD_Z + 5
      @face.x              = HUD_POSITION_X + FACE_POSITION_X
      @face.y              = HUD_POSITION_Y + FACE_POSITION_Y
      @face.opacity        = 0 if visible?
    end
  #--------------------------------------------------------------------------
  # ▼ Actualizando cara
  #--------------------------------------------------------------------------    
    def refresh_face
      return if !DRAW_FACE
      @face.bitmap        = Cache.advanced_hud("Actor" + @actor.id.to_s + "_Face")
      @face.opacity -= 5 if visible?
      @face.opacity += 5 if !visible?
    end
  end
  
#===============================================================================
# Creando Layer de Level
#===============================================================================  
class Advanced_Hud
  
    def create_lv_sprite
      return if !LV_SPRITE
      @lv_sprite           = Sprite.new
      @lv_sprite.bitmap    = Cache.advanced_hud("Level")
      @lv_sprite.z         = HUD_Z + 3
      @lv_sprite.x         = HUD_POSITION_X + LV_POSITION_X
      @lv_sprite.y         = HUD_POSITION_Y + LV_POSITION_Y
      @lv_sprite.opacity   = 0 if visible?
    end
  #--------------------------------------------------------------------------
  # ▼ Actualizando level
  #--------------------------------------------------------------------------    
    def refresh_lv_sprite
      return if !LV_SPRITE
      @lv_sprite.opacity -= 5 if visible?
      @lv_sprite.opacity += 5 if !visible?
    end
  end
  
#===============================================================================
# Creando sprite Hp y MP
#===============================================================================    
class Advanced_Hud
  
    def create_word
      return if !DRAW_WORD
      @word                = Sprite.new
      @word.bitmap         = Cache.advanced_hud("Hp_Mp")
      @word.z              = HUD_Z + 6
      @word.x              = HUD_POSITION_X + WORD_POSITION_X
      @word.y              = HUD_POSITION_Y + WORD_POSITION_Y
      @word.opacity        = 0 if visible?
    end
  #--------------------------------------------------------------------------
  # ▼ Actualizando sprite Hp y Mp
  #--------------------------------------------------------------------------    
    def refresh_word
      return if !DRAW_WORD
      @word.opacity -= 5 if visible?
      @word.opacity += 5 if !visible?
    end  
  end
  
#===============================================================================
# Creando número de nivel
#===============================================================================
class Advanced_Hud
  
  def create_level_number
      return if !LV_SPRITE
      @lv_number = Sprite.new
      @lv_number.bitmap = Bitmap.new(@lv_number_cw * 2, @lv_number_ch)
      @lv_number.z = HUD_Z + 4
      @lv_number.x = HUD_POSITION_X + LEVEL_NUMBER_POSITION_X
      @lv_number.y = HUD_POSITION_Y + LEVEL_NUMBER_POSITION_Y
      @lv_number.opacity  = 0 if visible?
      @lv_number.zoom_x   = 0.8
      @lv_number.zoom_y   = 0.8
    end
  #--------------------------------------------------------------------------
  # ▼ Actualizando número de level
  #--------------------------------------------------------------------------    
  def refresh_level_number
    return if !LV_SPRITE
      @lv_number.bitmap.clear    
      number_value = @actor.level.abs.to_s.split(//)
      for r in 0..number_value.size - 1        
         number_value_abs = number_value[r].to_i
         nsrc_rect = Rect.new(@lv_number_cw * number_value_abs, 0, @lv_number_cw, @lv_number_ch)
         @lv_number.bitmap.blt(@lv_number_cw *  r, 0, @lv_number_image, nsrc_rect)
       end      
       @lv_number.opacity -= 5 if visible?
       @lv_number.opacity += 5 if !visible?
       @lv_number.x  = HUD_POSITION_X + LEVEL_NUMBER_POSITION_X - (number_value.size * 5)
     end      
   end
#===============================================================================
# Creando nombre del personaje
#===============================================================================
class Advanced_Hud
  
  def create_name
    return if !DRAW_NAME
    @name                    = Sprite.new
    @name.bitmap             = Bitmap.new(160, 32)
    @name.bitmap.font.name   = NAME_FONT
    @name.bitmap.font.size   = NAME_FONT_SIZE
    @name.bitmap.font.bold   = NAME_FONT_BOLD
    @name.bitmap.font.italic = NAME_FONT_ITALIC
    @name.bitmap.font.color  = NAME_FONT_COLOR
    @name.x                  = HUD_POSITION_X + NAME_POSITION_X
    @name.y                  = HUD_POSITION_Y + NAME_POSITION_Y
    @name.z                  = HUD_Z + 6
    if NAME_SHADOW
      @name.bitmap.font.color = NAME_SHADOW_FONT_COLOR
      @name.bitmap.draw_text(3, 3, 160, 32, @actor.name, 0)
      @name.bitmap.font.color  = NAME_FONT_COLOR
  end
    @name.bitmap.draw_text(0, 0, 160, 32, @actor.name, 0)
    @name.opacity            = 0 if visible?
    refresh_name
  end
  #--------------------------------------------------------------------------
  # ▼ Actualizando nombre
  #--------------------------------------------------------------------------  
  def refresh_name
    return if !DRAW_NAME
    @name.bitmap.clear
    if NAME_SHADOW
      @name.bitmap.font.color = NAME_SHADOW_FONT_COLOR
      @name.bitmap.draw_text(3, 3, 160, 32, @actor.name, 0)
      @name.bitmap.font.color  = NAME_FONT_COLOR
  end
    @name.bitmap.draw_text(0, 0, 160, 32, @actor.name, 0)
    @name.opacity -= 5 if visible?
    @name.opacity += 5 if !visible?
  end
end

#===============================================================================
# Creando oro
#===============================================================================
class Advanced_Hud
  
  def create_gold
    return if !DRAW_GOLD
    @gold_layout           = Sprite.new
    @gold_layout.bitmap    = Cache.advanced_hud("Gold_Layout")
    @gold_layout.x         = GOLD_POSITION_X
    @gold_layout.y         = GOLD_POSITION_Y
    @gold_layout.z         = HUD_Z + 2
    @gold_layout.opacity   = 0 if visible?
  end
  
  def refresh_gold
    return if !DRAW_GOLD
    @gold_layout.opacity  -= 5 if visible?
    @gold_layout.opacity  += 5 if !visible?
  end
  
  
  def create_gold_number
    return if !DRAW_GOLD
    @gold_number           = Sprite.new
    @gold_number.bitmap    = Bitmap.new(@gold_number_cw * 8 , @gold_number_ch)
    @gold_number.x         = GOLD_NUMBER_X
    @gold_number.y         = GOLD_NUMBER_Y
    @gold_number.z         = HUD_Z + 4
    @gold_number.opacity    = 0 if visible?
  end
  
  def refresh_gold_number
    return if !DRAW_GOLD
    @gold_number.bitmap.clear
    number_value = $game_party.gold.abs.to_s.split(//)
    for r in 0..number_value.size - 1
      number_value_abs   = number_value[r].to_i
      nsrc_rect   = Rect.new(@gold_number_cw * number_value_abs, 0, @gold_number_cw, @gold_number_ch)
      @gold_number.bitmap.blt(@gold_number_cw * r, 0, @gold_number_image, nsrc_rect)
    end
      @gold_number.opacity    -= 5 if visible?
      @gold_number.opacity    += 5 if !visible?
      @gold_number.x   =  GOLD_NUMBER_X - (@gold_number_cw * number_value.size)
  end
end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Advanced_Hud update
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class Advanced_Hud  
  
  def update_hud
      refresh_hud_initial
      refresh_hp
      refresh_mp
      refresh_level_number
      refresh_face
      refresh_lv_sprite
      refresh_word
      refresh_name
      refresh_hp_number
      refresh_mp_number
      refresh_gold_number
      refresh_gold
    end    
  #--------------------------------------------------------------------------
  # Actualización de todos los sprites
  #--------------------------------------------------------------------------  
  def update
    update_hud
  end
end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Advanced_Hud Dispose
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class Advanced_Hud
  
    def dispose
      dispose_hp_meter
      dispose_mp_meter
      dispose_face
      dispose_lv_sprite
      dispose_word
      dispose_level_number
      dispose_name
      dispose_hp_number
      dispose_mp_number
      dispose_gold_layout
      dispose_gold_number
  end
  #--------------------------------------------------------------------------
  # ▼ Dispose barra de vida
  #--------------------------------------------------------------------------  
  def dispose_hp_meter
    return if @hp_meter == nil
    @hp_meter.dispose
    @hp_meter.bitmap.dispose
  end
  #--------------------------------------------------------------------------
  # ▼ Dispose barra de mp
  #--------------------------------------------------------------------------    
  def dispose_mp_meter
    return if @mp_meter == nil
    @mp_meter.dispose
    @mp_meter.bitmap.dispose
  end
  #--------------------------------------------------------------------------
  # ▼ Dispose cara
  #--------------------------------------------------------------------------    
  def dispose_face
    return if @face == nil
    @face.dispose
    @face.bitmap.dispose
  end
  #--------------------------------------------------------------------------
  # ▼ Dispose Level layer
  #--------------------------------------------------------------------------    
  def dispose_lv_sprite
    return if @lv_sprite == nil
    @lv_sprite.dispose
    @lv_sprite.bitmap.dispose
  end
  #--------------------------------------------------------------------------
  # ▼ Dispose hp mp gráfico
  #--------------------------------------------------------------------------    
  def dispose_word
    return if @word == nil
    @word.dispose
    @word.bitmap.dispose
  end
  #--------------------------------------------------------------------------
  # ▼ Dispose número del nivel
  #--------------------------------------------------------------------------    
  def dispose_level_number
    return if @lv_number == nil
    @lv_number.dispose
    @lv_number.bitmap.dispose
  end
  #--------------------------------------------------------------------------
  # ▼ Dispose del nombre
  #--------------------------------------------------------------------------    
  def dispose_name
   return if @name == nil
   @name.dispose
   @name.bitmap.dispose
  end
  #--------------------------------------------------------------------------
  # ▼ Dispose número hp
  #--------------------------------------------------------------------------    
  def dispose_hp_number
    return if @hp_number == nil
    @hp_number.dispose
    @hp_number.bitmap.dispose
  end
  #--------------------------------------------------------------------------
  # ▼ Dispose número mp
  #--------------------------------------------------------------------------  
  def dispose_mp_number
    return if @mp_number == nil
    @mp_number.dispose
    @mp_number.bitmap.dispose
  end
  #--------------------------------------------------------------------------
  # ▼ Dispose del layout del oro
  #--------------------------------------------------------------------------    
  def dispose_gold_layout
    return if @gold_layout == nil
    @gold_layout.dispose
    @gold_layout.bitmap.dispose
  end
  #--------------------------------------------------------------------------
  # ▼ Dispose número del oro
  #--------------------------------------------------------------------------    
  def dispose_gold_number
    return if @gold_number == nil
    @gold_number.dispose
    @gold_number.bitmap.dispose
  end
end

#===============================================================================
#
#                     ▼ Fin del mundo, acá se acaba todo ▼
#
#===============================================================================

Abajo de la barra de MP a la derecha de donde aparece el nivel me gustaría que aparezcan las pequeñas imágenes de los estados alterados; de hecho así lo tengo especificado con el engine(son cinco estados alterados pero podrían ser más).
Y justo a la mitad de la pantalla y en la parte de abajo me gustaría que apareciera la experiencia(entre el hud y los números del oro/dinero).
Y el icono de los items de curación(pociones por ejemplo) que aparezcan a la derecha del nombre del personaje arriba de la barra de HP junto con un número pequeño de los items poseídos.
Y sin más que agregar por el momento me despido esperando tu respuesta y agradeciendote de antemano tu atención y tu ayuda.
P.D. Este script lo bajé de esta página y le hice la misma solicitud al que hizo el script pero al parecer allá no hay ninguna actividad desde hace tiempo.
http://akianrgss3.wordpress.com/
avatar
Dariel Lopez
Veterano
Veterano

0/3

Créditos 586

Gracias : 30

Volver arriba Ir abajo

Re: [Taller] ¡Modificaciones sencillas de scripts!

Mensaje por natalie_cuxi el 2015-02-25, 19:21

Tienes 3 pedidos ya? Bueno, yo dejo el mío, así ya estoy en la lista para cuando tengas tiempo! :D

Es una modificación del menú Status de MogHunter, Youkai en su momento ya le hizo modificaciones para que quedase tal y como pedí (y que conste que estoy super contenta y agradecida, desde aquí gracias a Youkai ^^) pero ahora he pensado que en el futuro le cambiaré el aspecto a los personajes (las chicas van en vestidos y hay ciertos contextos en los que no es muy apropiado llevar vestido) entonces me gustaría poder cambiar la imagen que se muestra (no sé si con una llamada al script o como, ni idea).

Actualmente uso una imagen por personaje, con el texto incluído (el fondo negro ese no aparece, se ve así al subir la imagen)  y se llama "nombredelpersonaje_status", creo que en el script aparece como "_status" (para que lo entiendas mejor, no sé si me explico bien) y la idea es tener la opción de un "_status2" y cambiarlo de alguna manera desde una llamada de script desde un evento del juego...

La imagen que uso ahora:


Aquí el script:
Script:

Código:

#_______________________________________________________________________________
# MOG_Scene_Status V1.6          
#_______________________________________________________________________________
# By Moghunter  
# http://www.atelier-rgss.com
#_______________________________________________________________________________
module MOG
  #Transition Time.  
  MST_TT = 10
  #Transition Type(Name).  
  MST_TTT = "004-Blind04"
  # Set Maximum (STR,DEX,AGL,INT)
  MST_ST = 999
  # Set Maximum (ATK,PDEF,MDEF)
  MST_STE = 999
end

module Youkai
  # Caracter que marcara el inicio de una nueva linea en la biografia.
  # Por defecto es "|", sin comillas.
  # Ej:
  # "Fornido guerrero| siempre listo para cualquier enfrentamiento."
  # A la hora de mostrar el texto quedaria:
  # "Fornido guerrero
  # siempre listo para cualquier enfrentamiento."
  #
  # Como ves, lo que hace es marcar el lugar en el cual se saltara a la proxima
  # linea
  Caracter = /\|/
  # Posicion X del bloque de la biografia. Se toma como referencia el punto supe-
  # rior derecho
  Descr_X = 300
  # Posicion Y del bloque de la biografia. Se toma como referencia el punto supe-
  # rior derecho
  Descr_Y = 100
  # Ancho del bloque de escritura de la biografia
  Descr_W = 256
  # Altura de cada linea del bloque de escritura.
  Descr_H = 24
  # Biografia de cada personaje. Como referencia se usa el ID del personaje en la
  # Base de Datos. Todo el texto debe ir obligatoriamente entre comillas tal y como
  # muestro en los ejemplos. Separar cada biografia por coma.
  # Sintaxis:
  # ID del personaje *=>* "(Descripcion)"
  # Lo marcado entre asteriscos(*) es inviolable.
  Descr = { # NO TOCAR ESTA LINEA!!
  1 => "",
  2 => "",
  3 => "",
  4 => "",
  5 => "",
  } # NO TOCAR ESTA LINEA!!
  # Surfijo de la imagen que contendra la imagen del personaje y la de la caja.
  # El nombre final de la imagen seria "nombre_del_personaje + BoxName"
  # Ej. Alexis_status
  BoxName = "_status"
end

#===============================================================================
# Game_Actor
#===============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# Now_Exp
#--------------------------------------------------------------------------  
  def now_exp
    return @exp - @exp_list[@level]
  end
#--------------------------------------------------------------------------
# Next Exp
#--------------------------------------------------------------------------  
  def next_exp
    return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
  end
end

#===============================================================================
# Window_Base
#===============================================================================
class Window_Base < Window  
#--------------------------------------------------------------------------
# Nada2
#--------------------------------------------------------------------------    
  def nada2(actor)
    face = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
  end    
#--------------------------------------------------------------------------
# Draw_heroface4
#--------------------------------------------------------------------------  
  def draw_heroface4(actor,x,y)
    face = RPG::Cache.picture(actor.name + "_fc2") rescue nada2(actor)
    cw = face.width
    ch = face.height
    src_rect = Rect.new(0, 0, cw, ch)
    if face == RPG::Cache.battler(actor.battler_name, actor.battler_hue)
      self.contents.blt(x + 45 , y - ch - 150, face, src_rect)    
    else  
      self.contents.blt(x , y - ch, face, src_rect)    
    end
  end  
#--------------------------------------------------------------------------
# Draw_Actor_Parameter2
#--------------------------------------------------------------------------  
  def draw_actor_parameter2(actor, x, y, type)
    back = RPG::Cache.picture("STBAR_Back")    
    cw = back.width  
    ch = back.height
    src_rect = Rect.new(0, 0, cw, ch)    
    self.contents.blt(x + 50 , y - ch + 20, back, src_rect)  
    meter = RPG::Cache.picture("STBAR.png")    
    case type
      when 0
        parameter_value = actor.atk
        cw = meter.width  * actor.atk / MOG::MST_STE
      when 1
        parameter_value = actor.pdef
        cw = meter.width  * actor.pdef / MOG::MST_STE
      when 2
        parameter_value = actor.mdef
        cw = meter.width  * actor.mdef / MOG::MST_STE
      when 3
        parameter_value = actor.str
        cw = meter.width  * actor.str / MOG::MST_ST
      when 4
        parameter_value = actor.dex
        cw = meter.width  * actor.dex / MOG::MST_ST
      when 5
        parameter_value = actor.agi
        cw = meter.width  * actor.agi / MOG::MST_ST
      when 6
        parameter_value = actor.int
        cw = meter.width  * actor.int / MOG::MST_ST
    end
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 120, y - 2, 36, 32, parameter_value.to_s, 2)
    ch = meter.height
    src_rect = Rect.new(0, 0, cw, ch)
    self.contents.blt(x + 50 , y - ch + 20, meter, src_rect)
  end
#--------------------------------------------------------------------------
# Draw_Maphp5
#--------------------------------------------------------------------------  
  def draw_maphp5(actor, x, y)
    back = RPG::Cache.picture("BAR")    
    cw = back.width  
    ch = back.height
    src_rect = Rect.new(0, 0, cw, ch)    
    self.contents.blt(x + 65, y - ch + 30, back, src_rect)
    meter = RPG::Cache.picture("HP_Bar2")    
    cw = meter.width  * actor.hp / actor.maxhp
    ch = meter.height
    src_rect = Rect.new(0, 0, cw, ch)
    self.contents.blt(x + 65, y - ch + 30, meter, src_rect)
    self.contents.font.color = Color.new(0,0,0,255)
    self.contents.draw_text(x + 66, y - 1, 100, 32, actor.hp.to_s + "/" + actor.maxhp.to_s, 1)  
    self.contents.font.color = Color.new(250,255,255,255)
    self.contents.draw_text(x + 65, y - 2, 100, 32, actor.hp.to_s + "/" + actor.maxhp.to_s, 1)  
  end  
#--------------------------------------------------------------------------
# Draw_Maphs5
#--------------------------------------------------------------------------  
  def draw_mapsp5(actor, x, y)
    back = RPG::Cache.picture("BAR")    
    cw = back.width  
    ch = back.height
    src_rect = Rect.new(0, 0, cw, ch)    
    self.contents.blt(x + 65 , y - ch + 30, back, src_rect)
    meter = RPG::Cache.picture("SP_Bar2")    
    cw = meter.width  * actor.sp / actor.maxsp
    ch = meter.height
    src_rect = Rect.new(0, 0, cw, ch)
    self.contents.blt(x + 65 , y - ch + 30, meter, src_rect)
    self.contents.font.color = Color.new(0,0,0,255)
    self.contents.draw_text(x + 66, y - 1, 100, 32, actor.sp.to_s + "/" + actor.maxsp.to_s, 1)  
    self.contents.font.color = Color.new(250,255,255,255)
    self.contents.draw_text(x + 65, y - 2, 100, 32, actor.sp.to_s + "/" + actor.maxsp.to_s, 1)  
  end
#--------------------------------------------------------------------------
# Draw_Mexp5
#--------------------------------------------------------------------------  
  def draw_mexp5(actor, x, y)
    bitmap2 = RPG::Cache.picture("Exp_Back")
    cw = bitmap2.width
    ch = bitmap2.height
    src_rect = Rect.new(0, 0, cw, ch)
    self.contents.blt(x + 60 , y - ch + 30, bitmap2, src_rect)
    if actor.next_exp != 0
      rate = actor.now_exp.to_f / actor.next_exp
    else
      rate = 1
    end
    bitmap = RPG::Cache.picture("Exp_Meter")
    if actor.level < 99
      cw = bitmap.width * rate
    else
      cw = bitmap.width
    end  
    ch = bitmap.height
    src_rect = Rect.new(0, 0, cw, ch)
    self.contents.blt(x + 60 , y - ch + 30, bitmap, src_rect)
    self.contents.font.color = Color.new(0,0,0,255)
    self.contents.draw_text(x + 51, y , 84, 32, actor.next_rest_exp_s.to_s, 1)    
    self.contents.font.color = Color.new(55,255,55,255)
    self.contents.draw_text(x + 52, y + 1, 84, 32, actor.next_rest_exp_s.to_s, 1)    
    self.contents.font.color = Color.new(0,0,0,255)
    self.contents.draw_text(x + 45, y + 7, 84, 32, "N",0)
    self.contents.font.color = Color.new(55,255,155,255)    
    self.contents.draw_text(x + 44, y + 8, 84, 32, "N",0)
    self.contents.font.color = Color.new(0,0,0,255)
    self.contents.draw_text(x + 10, y + 5, 30, 32, actor.level.to_s, 1)
    self.contents.font.color = Color.new(255,255,255,255)    
    self.contents.draw_text(x + 11, y + 6, 30, 32, actor.level.to_s, 1)    
  end
  
  def draw_text_lines(x, y, text, lwidth = 256, lheight = 32)
    text.gsub!(/\n/) { " " }
    wrd_array = text.split(" ")
    xo = x
    total_width = 0
    wrd_array.each{|word|
    w = self.contents.text_size(word).width
    total_width += w + self.contents.text_size(" ").width
    if total_width > lwidth
      total_width = 0
      total_width += w + self.contents.text_size(" ").width
      x = xo
      y += lheight
    end
    next_line = (word[Youkai::Caracter])
    word.sub!(Youkai::Caracter) {""} if next_line
    self.contents.draw_text(x, y, lwidth, lheight, word)
    x += w + self.contents.text_size(" ").width
    if next_line
      y += lheight
      x = xo
      total_width = 0
      total_width += w + self.contents.text_size(" ").width
    end
    }
  end
end

#===============================================================================
# Window_Status
#===============================================================================
class Window_Status < Window_Base
  include Youkai
#--------------------------------------------------------------------------
# Initialize
#--------------------------------------------------------------------------    
  def initialize(actor)
    super(0, 0, 660, 480)
    self.contents = Bitmap.new(width - 32, height - 32)
    @actor = actor
    self.opacity = 0
    refresh
  end
#--------------------------------------------------------------------------
# Refresh
#--------------------------------------------------------------------------      
  def refresh
    self.contents.clear
    self.contents.font.name = "Georgia"
    self.contents.font.color = system_color
    draw_text_lines(Descr_X, Descr_Y, Descr[@actor.id], Descr_W, Descr_H)
  end
#--------------------------------------------------------------------------
# Dummy
#--------------------------------------------------------------------------      
  def dummy
    self.contents.font.color = system_color
    self.contents.draw_text(320, 112, 96, 32, $data_system.words.weapon)
    self.contents.draw_text(320, 176, 96, 32, $data_system.words.armor1)
    self.contents.draw_text(320, 240, 96, 32, $data_system.words.armor2)
    self.contents.draw_text(320, 304, 96, 32, $data_system.words.armor3)
    self.contents.draw_text(320, 368, 96, 32, $data_system.words.armor4)
    draw_item_name($data_weapons[@actor.weapon_id], 320 + 24, 144)
    draw_item_name($data_armors[@actor.armor1_id], 320 + 24, 208)
    draw_item_name($data_armors[@actor.armor2_id], 320 + 24, 272)
    draw_item_name($data_armors[@actor.armor3_id], 320 + 24, 336)
    draw_item_name($data_armors[@actor.armor4_id], 320 + 24, 400)
  end
end

#===============================================================================
# Window_Face
#===============================================================================
class Window_Face < Window_Base
#--------------------------------------------------------------------------
# Initialize
#--------------------------------------------------------------------------        
def initialize(actor)
  super(0, -20, 300, 520)
  self.contents = Bitmap.new(width - 32, height - 32)
  @actor = actor
  self.opacity = 0
  refresh
end
#--------------------------------------------------------------------------
# Refreh
#--------------------------------------------------------------------------      
def refresh
  self.contents.clear
  draw_heroface4(@actor,10,485)        
end
end

#===============================================================================
# Scene Status
#===============================================================================
class Scene_Status
#--------------------------------------------------------------------------
# Initialize
#--------------------------------------------------------------------------        
  def initialize(actor_index = 0, equip_index = 0)
    @actor_index = actor_index
  end
#--------------------------------------------------------------------------
# Main
#--------------------------------------------------------------------------      
  def main
    @actor = $game_party.actors[@actor_index]
    @status_window = Window_Status.new(@actor)
    @status_window.z = 20
#    @status_face = Window_Face.new(@actor)
#    @status_face.z = 20
#    @status_face.x = -300
#    @status_face.contents_opacity = 0
    @mst_lay = Sprite.new
    @mst_lay.bitmap = RPG::Cache.picture(@actor.name + Youkai::BoxName)
    @mst_back1 = Plane.new
    @mst_back1.bitmap = RPG::Cache.picture("MN_BK") rescue Bitmap.new(1,1)
    @mst_back1.z = -10
    Graphics.transition(MOG::MST_TT, "Graphics/Transitions/" + MOG::MST_TTT)
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    for i in 0..10
#      @status_face.x -= 25  
#      @status_face.contents_opacity -= 20
      Graphics.update
    end  
    Graphics.freeze
    @mst_back1.dispose
    @mst_lay.dispose
#    @status_face.dispose
    @status_window.dispose
  end
  
#--------------------------------------------------------------------------
# Update
#--------------------------------------------------------------------------      
  def update
    @mst_back1.ox += 1
    @mst_back1.oy += 1
#    if @status_face.x < 0
#      @status_face.x += 20
#      @status_face.contents_opacity += 15
#    elsif @status_face.x >= 0  
#      @status_face.x = 0  
#      @status_face.contents_opacity = 255
#    end  
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Menu.new(3)
      return
    end
    if Input.trigger?(Input::R) or Input.trigger?(Input::RIGHT)
      $game_system.se_play($data_system.cursor_se)
      @actor_index += 1
      @actor_index %= $game_party.actors.size
      $scene = Scene_Status.new(@actor_index)
      return
    end
    if Input.trigger?(Input::L) or Input.trigger?(Input::LEFT)
      $game_system.se_play($data_system.cursor_se)
      @actor_index += $game_party.actors.size - 1
      @actor_index %= $game_party.actors.size
      $scene = Scene_Status.new(@actor_index)
      return
    end
  end
end


$mog_rgss_Scene_Status = true

Si no me he explicado bien, dimelo, porque soy un poco bastante torpe con estas cosillas xD

¡Saludos! Cool
avatar
natalie_cuxi
Principiante
Principiante

0/3

Créditos 1072

Gracias : 25

Volver arriba Ir abajo

Re: [Taller] ¡Modificaciones sencillas de scripts!

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


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