Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

Neo-Damage in Map en el evento que lo llama

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP Neo-Damage in Map en el evento que lo llama

Mensaje por Ledai el Mar 29 Mayo - 8:32

Hola mundo!!

Estoy tratando de lograr que el daño se muestre sobre el mismo evento que a llamado al comando con el: [line]get_character(0)[/line]
pero me da error en la línea 23... necesitaría poder automatizar el uso de la ID del evento que lo llama para no tener que cambiar el ID manualmente; ¿¿Alguien sabe cómo??

Error:

Código:


Aquí el Script:

Código:


#_______________________________________________________________________________​
#-----------------------------Neo-Damage in Map (v1.1)--------------------------
#_______________________________________________________________________________​
#By: Neoking-jaas
#http://neo-sky.firethost.com
#http://makerpalace.forumotion.com
#_______________________________________________________________________________​
#Muestra un popup de daño en el mapa.
#use:
#$game_temp.pop_up_event = [a, b, c, d]
#siendo:
#a = daño
#b = critico (true o false)
#c = evento en que se mostrara, 0 para el heroe
#d = true (siempre debe ser true aqui para poder mostrar el daño)
#_______________________________________________________________________________​

class Spriteset_Map
  def pop_up
    event = $game_temp.pop_up_event[2]
    damage = $game_temp.pop_up_event[0]
    critical = $game_temp.pop_up_event[1]
    @character_sprites[event - 1].damage(damage, critical)
  end
  def damage_effect?
    event = $game_temp.pop_up_event[2]
    return @character_sprites[event - 1].effect?
  end
end
class Game_Temp
  attr_accessor :pop_up_event
  alias popup_ini initialize
  def initialize
    @pop_up_event = [0, false, 0, false]
    popup_ini
  end
end
class Scene_Map
  alias popup_update update
  def update
    if $game_temp.pop_up_event[3]
      @spriteset.pop_up
    if @spriteset.damage_effect?
      $game_temp.pop_up_event[3] = false
    end
  end
  popup_update
end
end
avatar
Ledai
Aventurero
Aventurero

0/3

Créditos 5205

Gracias : 214

Volver arriba Ir abajo

RPG Maker XP Re: Neo-Damage in Map en el evento que lo llama

Mensaje por Ledai el Mar 29 Mayo - 13:40

Bien, encontré la respuesta gracias a Orochii: Solo hay que usar [line]@event_id[/line] y servirá para el propio evento que lo usa.
avatar
Ledai
Aventurero
Aventurero

0/3

Créditos 5205

Gracias : 214

Volver arriba Ir abajo

RPG Maker XP Re: Neo-Damage in Map en el evento que lo llama

Mensaje por Wecoc el Mar 29 Mayo - 18:10

Sí, de hecho get_character(0) es lo mismo que $game_map.events[@event_id], es decir que es el evento actual, no el ID de este evento tal como requiere el script. Pero en verdad, esto tiene el problema que no sirve para el personaje. Además, no puedes mostrar daño a más de un chara a la vez... en general el script está bastante mal planteado en mi opinión.

Hay otros scripts de eso (quizá alguno mejor que el que pondré aquí) pero bueno, he hecho uno en un momento.

Código:
#==============================================================================
# Mostrar pop-up de daño en mapa
#==============================================================================

class Interpreter
  #--------------------------------------------------------------------------
  # * get_spriteset_chara
  #--------------------------------------------------------------------------
  def get_spriteset_chara(event_id)
    spriteset = $scene.instance_eval("@spriteset")
    return if spriteset.nil?
    sprites = spriteset.instance_eval("@character_sprites")
    return if sprites.nil?
    if event_id == -1
      sprite = sprites[sprites.size - 1]
    elsif event_id == 0
      sprite = sprites[@event_id - 1]
    else
      sprite = sprites[event_id - 1]
    end
    return sprite
  end
  #--------------------------------------------------------------------------
  # * map_damage
  #--------------------------------------------------------------------------
  # event_id -> -1 (personaje), 0 (evento actual), ID
  # damage -> Valor de daño
  # critical (opcional) -> Crítico true/false
  #--------------------------------------------------------------------------
  def map_damage(event_id, damage, critical=false)
    sprite = get_spriteset_chara(event_id)
    return if sprite.nil?
    sprite.damage(damage, critical)
  end
  #--------------------------------------------------------------------------
  # * map_damage_effect?
  #--------------------------------------------------------------------------
  def map_damage_effect?(event_id)
    sprite = get_spriteset_chara(event_id)
    return false if sprite.nil?
    return sprite.instance_eval("@_damage_duration > 0")
  end
end

Para usarlo en llamada de script:

map_damage(ID Evento, Daño, Crítico)

Si ID Evento vale -1 se aplica al personaje, si vale 0 se aplica al evento actual.
Crítico no hace falta, por defecto vale false.
Ejemplo: [line]map_damage(0, $game_variables[20])[/line]

También puedes comprobar si en un determinado evento tiene el efecto en marcha:
map_damage_effect?(ID Evento)

Hubiera añadido un "Esperar a finalizar efecto damage" pero implica modificar el update de Interpreter sin usar alias así que preferí no hacerlo. Igualmente la mayoría de veces no necesitarás nada de eso.
avatar
Wecoc
Administrador
Administrador



Créditos 12236

Gracias : 638

Volver arriba Ir abajo

RPG Maker XP Re: Neo-Damage in Map en el evento que lo llama

Mensaje por AsFzKakarotto el Miér 30 Mayo - 1:27

Se que puede parecer raro, pero puedes adaptar uno para mostrar daño a los enemigos de batalla (Battlers enemigos) lo pedí hace un tiempo atrás y no hubo respuestas [Ayuda] Damage Message averigüe mucho sobre damage_pop pero no logre hacerlo. Gracias
avatar
AsFzKakarotto
Soñador
Soñador

0/3

Créditos 307

Gracias : 68

Volver arriba Ir abajo

RPG Maker XP Re: Neo-Damage in Map en el evento que lo llama

Mensaje por Ledai el Miér 30 Mayo - 7:48

Ok, gracias por el arreglo, ya los he cambiado y me he dado el "palizón" de sustituir por estas las llamadas que ayer configuré en la batalla (XDD uffff) y lo bueno, Todo parece en orden.


Pero aprovecho el tema para hacer una pregunta que ya noté incluso antes de usar este script:
¿Alguien sabe porqué el pop Up de daño sobre el personaje no aparece a la misma altura que la de los evento siendo incluso del mismo gráfico?? no es algo que importe mucho, pero la verdad es que me molesta que no sea igual... si se puede solucionar lo agradecería.

PD: uso un script que permite editar el aspecto del Pop Up que me pasó Wec, hace mucho tiempo; lo dejo por aquí por si es que tiene que ver con algo:


Edt: Ahh, es verdad, es culpa de incompativilidades entre script... OK, nada de lo dicho, lo siento mucho.  Grito


Última edición por Ledai el Miér 30 Mayo - 11:04, editado 1 vez
avatar
Ledai
Aventurero
Aventurero

0/3

Créditos 5205

Gracias : 214

Volver arriba Ir abajo

RPG Maker XP Re: Neo-Damage in Map en el evento que lo llama

Mensaje por Wecoc el Miér 30 Mayo - 8:16

No, no tiene que ver con ese script, y por defecto no ocurre (lo probé en un proyecto solo con ese script). Tiene que ser por otro que modifica Game_Player o Sprite_Character y causa esa 'incompatibilidad'.
avatar
Wecoc
Administrador
Administrador



Créditos 12236

Gracias : 638

Volver arriba Ir abajo

RPG Maker XP Re: Neo-Damage in Map en el evento que lo llama

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.