Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

[XP] Mensajes por animación

Ver el tema anterior Ver el tema siguiente Ir abajo

[XP] Mensajes por animación

Mensaje por Wecoc el 2014-07-10, 22:34

No tengo ningún ejemplo gráfico para mostraros cómo funciona el script :(
Pero me inspiré en ésto que encontré en Deviantart de un juego llamado Journey to Hammerdale:



Tienes que tener una animación en la base de datos que loopeará hasta que pulses aceptar como un mensaje normal, debe tener un nombre concreto, pongamos por ejemplo "Fish".

Luego puedes crear también una animación llamada Fish_Start y una llamada Fish_End (opcionales)

Y luego en llamar script solo tienes que poner:
call_message("Fish", -1)

Ese -1 es el id de evento;
-1 --> Héroe
0 ---> Evento actual
>0 ---> ID de evento

Y el script hará el resto.

Código:
#==============================================================================
# ** Mensajes por animación
#------------------------------------------------------------------------------
# Sistema de mensajes reducidos a la mínima expresión
#==============================================================================

class Game_Temp
  attr_accessor :emotion_proc
end

class Game_Character
  attr_accessor :loop_animation_id
  alias loop_emotion_ini initialize unless $@
  def initialize
    loop_emotion_ini
    @loop_animation_id = 0
  end
end

class Sprite_Character < RPG::Sprite
  alias loop_emotion_upd update unless $@
  def update
    loop_emotion_upd
    if @character.loop_animation_id != @loop_animation_id
      if @character.loop_animation_id == 0
        dispose_loop_animation
      else
        animation = $data_animations[@character.loop_animation_id]
        loop_animation(animation)
      end
      @loop_animation_id = @character.loop_animation_id
    end
  end
end

class Interpreter
 
  alias clear_default_message clear unless $@
  def clear
    clear_emotions
    clear_default_message
  end
 
  def clear_emotions
    @message_loop = nil
    @message_start = nil
    @message_end = nil
    @emotion_event = nil
    @emotion_waiting = false
  end
 
  def call_message(name, event_id=-1)
    @emotion_event = get_character(event_id)
    for i in 1...$data_animations.size
      if $data_animations[i].name == name
        @message_loop = $data_animations[i]
      end
      if $data_animations[i].name == "#{name}_Start"
        @message_start = $data_animations[i]
      end
      if $data_animations[i].name == "#{name}_End"
        @message_end = $data_animations[i]
      end
    end
    if @message_loop == nil
      $game_temp.emotion_proc = nil
      return
    end
    @emotion_waiting = true
    if @message_start != nil
      @emotion_event.animation_id = @message_start.id
      @wait_count = @message_start.frames.size * 2 - 1
    end
    $game_temp.emotion_proc = Proc.new { @emotion_waiting = false }
  end
 
  alias update_emotions update unless $@
  def update
    if $game_temp.emotion_proc != nil
      if @wait_count != 0
        @wait_count -= 1
        return
      end
      if @emotion_event == nil
        $game_temp.emotion_proc = nil
        return
      end
      if @emotion_event.animation_id == 0
        @emotion_event.loop_animation_id = @message_loop.id
      end
      if Input.trigger?(Input::C)
        $game_temp.emotion_proc.call
        $game_temp.emotion_proc = nil
        @emotion_event.loop_animation_id = 0
        if @message_end != nil
          @emotion_event.animation_id = @message_end.id
        end
        @emotion_event = nil
        clear_emotions
      end
      return
    end
    update_emotions
  end
end


No se requieren créditos.

El sistema de mensajes y todo sigue funcionando como siempre, aunque en realidad el script está pensado para que todos los mensajes sean así de minimalistas.

Spoiler:
De hecho se podrían hacer hasta elecciones con un sistema similar al de Owlboy pero por teclas.
http://bulk2.destructoid.com/ul/156493-owlboy.jpg

Eso ya sería un script más complejo.
avatar
Wecoc
Administrador
Administrador



Créditos 12387

Gracias : 595

Volver arriba Ir abajo

Re: [XP] Mensajes por animación

Mensaje por Usuario Oculto el 2014-07-11, 06:18

Es posible adaptar esto al Ace? Me interesa tal script, porque tengo un juego entremanos pensado para niños, y como no quiero saturarlos con mensajes al viejo estilo rpg, funcionarIa de maravilla como complmento visual, asI, la jugabilidad o interes de los chicos no se verIa mermado.
avatar
Usuario Oculto
Soñador
Soñador

0/3

Créditos 631

Gracias : 14

Volver arriba Ir abajo

Re: [XP] Mensajes por animación

Mensaje por Ledai el 2014-07-11, 15:33

Ohh!!! qué interesante, voy a probarlo y a guardarlo en mi Bd!!!
avatar
Ledai
Aventurero
Aventurero

0/3

Créditos 4844

Gracias : 196

Volver arriba Ir abajo

Re: [XP] Mensajes por animación

Mensaje por azraeldestiny el 2014-07-11, 17:44

Gran aporte, me gustaria ver una demo en el futuro del funcionamiento de dicho script ya que me resulta un poco confuso.
avatar
azraeldestiny
Iniciado
Iniciado

0/3

Créditos 17

Gracias : 6

Volver arriba Ir abajo

Re: [XP] Mensajes por animación

Mensaje por Wecoc el 2014-07-11, 21:49

Usuario Oculto:

No tengo ni idea de como funciona el proc de los mensajes en Ace, lo cambiaron absolutamente todo y aún es un misterio para mí. Solo sé que aunque pasarlo a VX en principio sería fácil, el script sería completamente distinto en Ace. Y por ahora no puedo hacer nada.

Si acaso ya te avisaré si descubro algo.
Por cierto, no haré ningún tutorial de scripting porque no se me da bien explicarlo y muchas veces no estoy seguro de lo que hago, voy a base de prueba y error. Así que te recomiendo buscar tutoriales por ahí, aprenderás mejor.

Leda:

Guachi xD

Azrael:

Te lo explicaré por pasos ;D

1 - Pega el script encima de main

2 - Crea una animación con el nombre que quieras, para poner un ejemplo "Test". Puede tener los frames que quieras pero recuerda que tiene que loopear (repetirse en bucle) bien

IMAGEN

3A - Puedes añadir una animación de aparición, para que la de bucle no salga de golpe (es opcional), con los frames que quieras y en ese caso deberá llamarse "Test_Start" (Siempre el mismo nombre y _Start)

3B - Exactamente igual con una animación de desaparición, es opcional, de los frames que quieras y en ese caso deberá llamarse "Test_End" (El nombre y _End)

4 - Luego solo faltará llamarla con un Llamar script cuando quieras que salga. Ya dije cómo hacerlo antes, si quieres que la haga el evento con el que estas hablando sería call_message("Test", 0)

Puedes mover el evento y todas esas cosas, va exactamente como iba con un mensaje normal. Si mueves el evento la animación lo seguirá perfectamente.

IMAGEN

5 - Puedes hacer tantas como quieras (TestB, TestC... xD) y llamarlas por su nombre.
avatar
Wecoc
Administrador
Administrador



Créditos 12387

Gracias : 595

Volver arriba Ir abajo

Re: [XP] Mensajes por animación

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.