domingo, 11 de agosto de 2013

Lección 3: Script de sonido de globos

 Buenas a todos los que estan leyendo, hoy les traigo un poco más claro como usar las cosas y palabras claves, con un script hecho por Diamondandplatinum (abajo el video en ingles), gracias a él es que estamos aprendiendo de ruby, espero que sigamos porque se viene cada vez mejor

 Como comentario les digo que cada vez se me hace más fácil (espero tambien a ustedes) intentar hacer los scripts que él hace de ejemplos, y espero que sigamos así.... Vamos mas o menos en la mitad del conocimiento, ya llevamos muchos conceptos aprendidos y seguiremos porque esto no para



 Sin nada más que decir nos meteremos de fondo a este script, que es bastante sencillo. Pienso yo que lo más dificil es buscar el script correcto para poder editarlo y agregarle cosas, pero para saber bien es simple, porque el script que haremos es editar los globos animados del maker, tal que para que cuando salga un zzz suene un ruido asi de sueño (o el que quieran), sin estar haciendolo con engines (que chevere XD )

 Para encontrar el script correcto, apretaremos buscar (click derecho sobre los script) y buscaremos "balloon", apretamos y buscaremos el que necesitamos, pero que rayos si hay muchos... no se preocupen piensen un poco con logica, los globos donde salen, en la cabeza de cada personaje, es por esto que debe ser alguno que dice sprite_character, asi que lo demas quedan fuera... ahora bien, siguen quedando muchos, pues aun mas, necesitamos que cuando aparezca el globo salga el sonido, entonces buscaremos alguno que diga "start" .... ooooh casualmente hay uno que dice def start balloon.... BINGO! ese es el sector que estamos buscando para editar...

 Una vez que tenemos esto, copiamos la clase y el metodo que buscamos (def start_balloon) y lo pegamos ambos en un script.

 Como ya tenemos lo necesario y editaremos lo que ya tenemos, tenemos que generar un alias , este alias puede ser como ya lo vimos como una quiera (el mio seria mono_sonidoburbuja_spritecharacter_startballoon) luego el metodo al lado del alias y listo

 Una vez hecho esto, borramos lo que tiene dentro el metodo y ponemos nuestro alias sin el metodo al lado (si no sabes como, ver la leccion 2), una vez hecho esto, lo demás es un poco mas fácil.

 Como queremos que ponga un sonido para cada globo, estos datos serán constantes y como ya vimos en conceptos anteriores, para hacer cosas constantes utilizaremos un module , este module tendra todos los sonidos para todos los globos... entonces haremos el module antes de la class y le pondremos el nombre que queramos (recuerden la inicial mayuscula), luego de esto, pondremos una variable local con el nombre, Sonido_globo1, o como quieran llamarle y le pondremos el sonido, asi como:

              Sonido_esclamacion = ["Heal1",100,100]

y luego al otro globo, etc, etc. hasta tener los 10, sería asi mas o menos:

module Balloon_sounds
 
  Sonido_esclamacion = ["Heal1",100,100]
  Sonido_pregunta    = ["Heal2",100,200]
  Sonido_musical     = ["Heal3",100,200]
  Sonido_corazon     = ["Attack1",100,200]
  Sonido_enojo       = ["Attack2",100,200]
  Sonido_sudor       = ["Attack3",100,200]
  Sonido_desgranado  = ["Buzzer1",100,200]
  Sonido_silencio    = ["Ice1",100,200]
  Sonido_bombilla    = [  nil ,100,200]
  Sonido_dormido     = ["Ice3",100,200]
 
end

 Luego de esto que ya tenemos nuestros sonidos, hay que ponerlos en la class, de que manera, pues, en el script de los globos para identificar cada uno, llama a una variable de clase llamada @balloon_id , entonces esta es la que dice que si es 1, tiene que salir de imagen el de la exclamacion, si es 2, el de la pregunta y asi...

 Es por eso que dentro del metodo def start_balloon, pondremos un case, para cada numero del ID, entonces ponemos debajo del alias, el case @balloon_id y debajo , when 1 y debajo de este llamaremos al module, para ponerle la musica dentro de este, lo haremos como el anexo II , desde el juego, pero dentro del parentesis le pondremos un * y luego llamaremos al module, de esta manera:

RPG::SE.new(*Balloon_sounds::Sonido_esclamacion).play

 ¿porque el * ?, primero porque es un array y como el array, tiene strings (palabras) y valores, para ejecutarlo nos tirara error sin el * , mayormente no podria explicar bien el *, si alguien lo sabe seria de gran ayuda, pero por el momento se que no se pueden ejecutar en un array a la vez los strings y valores en conjunto.

 Luego que tenemos esto, lo repetiremos las diez veces, con cada caso:

case @balloon_id
    when 1
      RPG::SE.new(*Balloon_sounds::Sonido_esclamacion).play
    when 2
      RPG::SE.new(*Balloon_sounds::Sonido_pregunta).play
    when 3
      RPG::SE.new(*Balloon_sounds::Sonido_musical).play
    when 4
      RPG::SE.new(*Balloon_sounds::Sonido_corazon).play
    when 5
      RPG::SE.new(*Balloon_sounds::Sonido_enojo).play
    when 6
      RPG::SE.new(*Balloon_sounds::Sonido_sudor).play
    when 7
      RPG::SE.new(*Balloon_sounds::Sonido_desgranado).play
    when 8
      RPG::SE.new(*Balloon_sounds::Sonido_silencio).play
    when 9
      RPG::SE.new(*Balloon_sounds::Sonido_bombilla).play
    when 10
      RPG::SE.new(*Balloon_sounds::Sonido_dormido).play
end

Luego de esto terminamos jajaja.... simple no? , pues no terminamos tal cual, porque siempre hay que ponerse en el caso, que hay personas bieeeeen especiales y que siempre pondran cosas que no deben por error o porque son muy inteligentes (ironico), en el caso que no le pongan sonido a algun globo, nos tirara a un error, porque no sabe leer los vacios el script

 para esto pondremos un if a cada uno de los casos para que se ejecute si no hay nada,, entonces al lado de cada  RPG:: bla bla bla, le pondremos esto de aca:

if Balloon_sounds::Sonido_esclamacion[0]

 y con eso estaria arreglado el problema :))

 Lo último que euda y es una opcion, es para que el usuario que lo ocupe, pueda desactivar el script en caso de no quererlo, puede ser inmediato en el script o a traves de variables del juego

 Si queremos que se desactive en el script, ponemos una Switch = true y dentro del modulo, ponemos if Balloon_sounds::Switch == true en el metodo y listo

 Si queremos que sea mediante interruptores del juego, ponemos en el modulo Switch = 99 (o el que quieran) y luego en el metodo ponemos, $game.switches[numero del interruptor] y listo, pero recuerden hacer un evento en donde el numero del interruptor este activo o sino no funcionara ;)

 Les dejo el script completo por si les salta alguna duda:

#-------------------------------------------------------------------------------
#-----------------------     MODULE     ----------------------------------------
#-------------------------------------------------------------------------------


module Balloon_sounds
 
  # si se quiere activar (true) o no (false) los sonidos
 
  Activacion = true
 
  # aqui se cambian los sonidos para cada globo de animacion:
 
  Sonido_esclamacion = ["Heal1",100,100]
  Sonido_pregunta    = ["Heal2",100,200]
  Sonido_musical     = ["Heal3",100,200]
  Sonido_corazon     = ["Attack1",100,200]
  Sonido_enojo       = ["Attack2",100,200]
  Sonido_sudor       = ["Attack3",100,200]
  Sonido_desgranado  = ["Buzzer1",100,200]
  Sonido_silencio    = ["Ice1",100,200]
  Sonido_bombilla    = [  nil ,100,200]
  Sonido_dormido     = ["Ice3",100,200]
 
end

#-------------------------------------------------------------------------------
#-----------------------     SCRIPT     ----------------------------------------
#-------------------------------------------------------------------------------


class Sprite_Character < Sprite_Base
#-----------------------     ALIAS     ----------------------------------------
  alias mono_sonidoburbuja_spritecharacter_startballoon  start_balloon
  def start_balloon
    #-----------------------     SONIDOS     ----------------------------------
    if Balloon_sounds::Activacion
    mono_sonidoburbuja_spritecharacter_startballoon()
    case @balloon_id
    when 1
      RPG::SE.new(*Balloon_sounds::Sonido_esclamacion).play if Balloon_sounds::Sonido_esclamacion[0]
    when 2
      RPG::SE.new(*Balloon_sounds::Sonido_pregunta).play if Balloon_sounds::Sonido_esclamacion[0]
    when 3
      RPG::SE.new(*Balloon_sounds::Sonido_musical).play if Balloon_sounds::Sonido_esclamacion[0]
    when 4
      RPG::SE.new(*Balloon_sounds::Sonido_corazon).play if Balloon_sounds::Sonido_esclamacion[0]
    when 5
      RPG::SE.new(*Balloon_sounds::Sonido_enojo).play if Balloon_sounds::Sonido_esclamacion[0]
    when 6
      RPG::SE.new(*Balloon_sounds::Sonido_sudor).play if Balloon_sounds::Sonido_esclamacion[0]
    when 7
      RPG::SE.new(*Balloon_sounds::Sonido_desgranado).play if Balloon_sounds::Sonido_esclamacion[0]
    when 8
      RPG::SE.new(*Balloon_sounds::Sonido_silencio).play if Balloon_sounds::Sonido_esclamacion[0]
    when 9
      RPG::SE.new(*Balloon_sounds::Sonido_bombilla).play if Balloon_sounds::Sonido_esclamacion[0]
    when 10
      RPG::SE.new(*Balloon_sounds::Sonido_dormido).play if Balloon_sounds::Sonido_esclamacion[0]
    end
    end
  end
end


 Eso es todo por ahora, espero le haya gustado y nos veremos en otro tutorial, recuerden que cualquier duda, pregunten y no se queden con la duda :)), por ahora solo queda decir...





No hay comentarios:

Publicar un comentario