¡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
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Últimos temas
» [AYUDA]Hootshot de moghunter
por Rudy_kinneas Hoy a las 01:06

» Necesito Script
por BreinLand entertainment Hoy a las 00:03

» El poder oculto (Segunda entrega)
por alex1633 Ayer a las 23:18

» Holaaa a tod@s!!!
por RiKennedy-Maker Ayer a las 21:53

» Tutorial Interactivo [Uso de interruptores]
por alex1633 Ayer a las 19:39

» Hola mucho gusto
por Hk Diamond Ayer a las 13:49

» SoraDeathss se presenta!
por chronoMxx Ayer a las 07:50

» {AYUDA}Blizz-ABS Script
por chronoMxx Ayer a las 06:45

» las cosas como son...
por Bleuw Ayer a las 04:18

» Busco artistas graficos para proyecto serio
por Rudy_kinneas 2016-12-02, 20:52

Afiliados
Estadísticas
Tenemos 3381 miembros registrados.
El último usuario registrado es Hk Diamond.

Nuestros miembros han publicado un total de 79765 mensajes en 11247 argumentos.
Navega con Google Chrome
[DESCARGA]

Ayuda con varios Scripts

 :: RPG Maker :: Ayuda RPG

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker VX Ayuda con varios Scripts

Mensaje por Malcom el 2013-08-05, 18:08

Tengo algunos problemas con con varias cosas referentes a la api/libreria (si se le puede llamar asi) del rpgmaker VX. A saco:

1 - El primero es con un script que he hecho que pinta una barra de vida (entre otras cosas) encima del evento que le asignes (mas info en el script):

Código:
#==============================================================================
# ■ Barra de Vida de los enemigos
#
#   by Malcom
#
#------------------------------------------------------------------------------
#  Muestra una barra de color rojo encima del evento indicado, para
#   crearla solo hay que poner estas lineas en un comando de script:
#
#       @barravida = BarraVida.new(evento, num)
#       $barravida.push(@barravida)
#
#   Donde evento ha de ser $game_map.events[@event_id] y num el
#   maximo de vida deseado. Ejemplo: quiero que el evento 3 tenga
#   de vida 200, escribimos lo siguiente en un comando de script:
#
#       evento = $game_map.events[3]
#       num = 200
#       @barravida = BarraVida.new(evento, num)
#       $barravida.push(@barravida)
#
#   Hay varias funciones para controlar la vida como son:
#
#       @barravida.restavida(num)  -  Resta el num a la vida actual.
#       @barravida.consulta        -  Retorna la vida actual.
#       @barravida.borrar          -  Elimina la barra de vida.
#       @barravida.mostrar         -  Muestra una vez borrada.
#
#   Para permitir mostrar las barras de vida hay que definir un
#   interruptor unas linias por debajo, por defecto está el 188.
#
#==============================================================================
class BarraVida < Window_Base
  
  attr_reader   :actor
  attr_accessor :var
  
  #interruptor que permite mostrar las barras de vida.
  INTERRUPTOR = 188
  
  def initialize(actor, vidamax)
    @actor = actor
    @vidamax = vidamax
    @vida = vidamax
    @AS = false
    @borrar = false
    super(-32, -32, 544, 416) # (x, y, width, height)
    self.visible = true
    self.opacity = 0
    self.z = 0
    refresh
  end

  def refresh
    if $game_switches[INTERRUPTOR] == true
      if @AS
        self.contents.draw_text( @actor.screen_x, @actor.screen_y - 58, contents.width, WLH*2, "A+S")
      end
      
      ancho = (30 * @vida)/@vidamax
      if ancho<=2 and ancho>0
        ancho = 2
      end
      self.contents.fill_rect( @actor.screen_x,      @actor.screen_y - 23, 32, 5, Color.new(  255,  255,  255, 255))
      self.contents.fill_rect( @actor.screen_x + 1,  @actor.screen_y + 1 -23, 30, 3, Color.new(  0,  0,  0, 255))
      self.contents.fill_rect( @actor.screen_x + 1,  @actor.screen_y + 1 -23, ancho, 3, Color.new(  255,  0,  0, 255))
    end
  end
  
  def update
    super
    self.contents.clear
    return if @actor.nil? or @borrar
    refresh
  end
  
  def restavida(num)
    @vida -= num
  end
  
  def consulta
    return @vida
  end
  
  def ponAS
    @AS = true
  end
  
  def esAS?
    return @AS
  end
  
  def borrar
    @borrar = true
  end
  
  def mostrar
    @borrar = false
  end
  
end

class Scene_Map
  
  alias start_Barra start
  def start
    start_Barra
    $barravida = []
  end

  alias update_Barra update
  def update
    update_Barra
    for i in 0...$barravida.size
      $barravida[i].update
    end
  end
  
end

El problema está que solo se muestra la barra de vida cuando estas en el primer mapa en el que empieza el juego, si cambio de mapa y hago que un evento en ese nuevo mapa muestre una barra de vida no se ve nada. Otro problema (que supongo que vendrá ligado con el primero) es que al abrir cualquier menu se van para siempre las barras de vida como en el caso de cambiar de mapa.

2 - Y mi segundo problema, que viene de una función ya creada del código que mueve el VX:

Código:
class Sprite_Character < Sprite_Base

def update
    super
    update_bitmap
    self.visible = (not @character.transparent)
    update_src_rect
    self.x = @character.screen_x
    self.y = @character.screen_y
    self.z = @character.screen_z
    self.opacity = @character.opacity
    self.blend_type = @character.blend_type
    self.bush_depth = @character.bush_depth
    update_balloon
    if @character.animation_id != 0
      ##########dispose_animation
      animation = $data_animations[@character.animation_id]
      @character.animation_id = 0
      start_animation(animation)
    end
    if @character.balloon_id != 0
      @balloon_id = @character.balloon_id
      start_balloon
      @character.balloon_id = 0
    end
  end

Lo que me gustaría es des-comentar esa linea que "acaba" con la animación anterior antes de iniciar una nueva, el problema es que si está des-comentada, de vez en cuando, cuando una animación se reproduce antes de que acabe la anterior, el rpgmaker "peta" sin dar error (depurador de windows, ...). La función que llama está aquí pero no la entiendo muy bien y no veo lo que puede fallar:

Código:
class Sprite_Base < Sprite

def dispose_animation
    if @animation_bitmap1 != nil
      @@_reference_count[@animation_bitmap1] -= 1
      if @@_reference_count[@animation_bitmap1] == 0
        @animation_bitmap1.dispose
      end
    end
    if @animation_bitmap2 != nil
      @@_reference_count[@animation_bitmap2] -= 1
      if @@_reference_count[@animation_bitmap2] == 0
        @animation_bitmap2.dispose
      end
    end
    if @animation_sprites != nil
      for sprite in @animation_sprites
        sprite.dispose
      end
      @animation_sprites = nil
      @animation = nil
    end
  end

Pues eso es todo... No se si debería haber hecho 2 temas, pero por ahora espero respuesta!

Malcom
Iniciado
Iniciado

0/3

Créditos 50

Gracias : 0

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 :: RPG Maker :: Ayuda RPG

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