¡Bienvenido a Universo Maker!
¿Es esta la primera vez que visitas el foro? Si es así te recomendamos que te registres para tener completo acceso a todas las áreas y secciones del foro, así también podrás participar activamente en la comunidad. Si ya tienes una cuenta, conectate cuanto antes.
Iniciar Sesión Registrarme

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo Mensaje [Página 1 de 1.]

#1 [RM VX] Night Health Point By ~Night Shade el Mar Mar 25, 2014 7:59 am

Reputación del mensaje :100% (2 votos)

~Night Shade

avatar

Night Heatlh Point
RPG Maker VX
¡Hola U.Maker! Hoy quiero aportar mi primer script de rgss2, obviamente para VX Ópalo Tuerto  
Sobre el Script:
Este script permite recuperar la salud del grupo y salvar el juego al estilo "punto de curacion" mediante imagenes, por ejemplo, cuando en un juego llegas a un cristal que recupera la salud del grupo y a la ves te permite salvar la partida.
Imágenes:
Imagen 1 - Imagen 2
Instrucciones:
♦️ Paso 1: Pegar el script encima del main.
♦️ Paso 2: Colocar las imágenes dentro de la carpeta pictures con sus respectivos nombres:

"Curar"


"Guardar"


Puedes usar tus propias imagenes obviamente, las que puse son una base.

♦️ Paso 3: Para activar el script pon esto en llamar script:

$scene = Night_Health.new

Pueden descargar la demo para observar como funciona el script.
Código:

Descarga la demo haciendo click aqui Ópalo Guiño

Código:
=begin

  - Night Health Point -

Este script permite recuperar la salud del grupo y salvar el juego al estilo
"punto de curacion" mediante imagenes, por ejemplo, cuando en un juego
llegas a un cristal que recupera la salud del grupo y a la ves te permite
salvar la partida.

Instrucciones: Pegar encima del main y tener las imagenes usadas dentro
de la carpeta "pictures" con sus respectivos nombres: "Curar" y "Guardar".
Puedes hacer tus propias imagenes y colocarlas si lo deseas.

Para activar el script pon esto en llamar script:

$scene = Night_Health.new

=end

class Night_Health < Scene_Base
  def start
Audio.se_play('Audio/SE/' + 'Item1')
    create_menu_background
    @sv = Sprite.new    
    @sv.bitmap = Cache.picture("Curar")
    @ld = Sprite.new
    @ld.bitmap = Cache.picture("Guardar")
    @sv.x = 175
    @sv.y = 150
    @ld.x = 175
    @ld.y = 220
    @contador = 0
    @ld.tone = Tone.new(0, 0, 0, 255)
  end

  def update
    @sv.update
    @ld.update
    
    if Input.trigger?(Input::B)
      Audio.se_play('Audio/SE/' + 'Cancel')
      $scene = Scene_Map.new
      
    elsif Input.trigger?(Input::DOWN) and @contador == 0
      Audio.se_play('Audio/SE/' + 'Cursor')
      @contador = 1
      @sv.tone = Tone.new(0, 0, 0, 255)
      @ld.tone = Tone.new(0, 0, 0)
      
    elsif Input.trigger?(Input::UP) and @contador == 1
      Audio.se_play('Audio/SE/' + 'Cursor')
      @contador = 0
      @sv.tone = Tone.new(0, 0, 0)
      @ld.tone = Tone.new(0, 0, 0, 255)
      
    end
    
    
    if Input.trigger?(Input::C)
      
      case @contador
    
      when 0
  
        Audio.se_play('Audio/SE/' + 'Decision1')

        for i in 0...$game_party.members.size
$game_party.members[i].recover_all
end

$scene = Scene_Map.new
$game_player.animation_id = 39

    when 1
      
      Audio.se_play('Audio/SE/' + 'Decision1')
      
    $scene = Scene_File.new(true, false, false)
  
    end
end
    def terminate
    @sv.dispose
    @ld.dispose
  end
  
  end
end
Créditos:
~Night Shade

#2 Re: [RM VX] Night Health Point By ~Night Shade el Mar Mar 25, 2014 8:46 am

SkavenOfDarkness

avatar
Muy bueno el Script es algo en lo que estaba pensando en implementar, si lo consiguieras pasar a RGSS3 para el VX Ace te dejo reputación.

#3 Re: [RM VX] Night Health Point By ~Night Shade el Mar Mar 25, 2014 9:54 am

Reputación del mensaje :100% (1 voto)

youkai

avatar
Bastante bueno el script :)Y bueno, ya que veo que le estas poniendo ganas a la programacion yo voy a empezar a ponerle ganas a las criticas >8D (era broma xD)

Primero que todo me sorprendo como puedes reconocer cual imagen es cual usando como nombre de las variables sv y ld...no tengo idea de que puedan significar las 2 letras esas xD Te recomiendo que uses nombres mas especificos, algo como: heal_sprite y save_sprite; o heal y save; o salvar y curar, no se, como quieras xDDD Pero que uses nombres que sean mas identificables xD

Veo que usaste a contador como un indice para navegar por las opciones y te voy a enseñar un truco para eso Ópalo Guiño
En lugar de hacerlo tan arbitrario:
Código:
if Input.trigger?(Input::DOWN) and @contador == 0
      Audio.se_play('Audio/SE/' + 'Cursor')
      @contador = 1
      @sv.tone = Tone.new(0, 0, 0, 255)
      @ld.tone = Tone.new(0, 0, 0)
      
    elsif Input.trigger?(Input::UP) and @contador == 1
      Audio.se_play('Audio/SE/' + 'Cursor')
      @contador = 0
      @sv.tone = Tone.new(0, 0, 0)
      @ld.tone = Tone.new(0, 0, 0, 255)
      
    end
Puedes usar el operador de resto (%) para manipular los cambios en el indice(al cual le voy a llamar index...me siento raro diciendole indice xDDD)
Por ejemplo:
Código:
if Input.trigger?(Input::DOWN)
      Audio.se_play('Audio/SE/' + 'Cursor')
      @contador = (@contador + 1) % 2
      @sv.tone = Tone.new(0, 0, 0, 255)
      @ld.tone = Tone.new(0, 0, 0)
      
    elsif Input.trigger?(Input::UP)
      Audio.se_play('Audio/SE/' + 'Cursor')
      @contador =  (@contador + 1) % 2
      @sv.tone = Tone.new(0, 0, 0)
      @ld.tone = Tone.new(0, 0, 0, 255)
      
    end
Y si, repeti la misma operacion 2 veces al profeso para que te des cuenta de una cosilla, que hagas lo que hagas siempre volveras a la opcion aterior puesto que son solo 2. Tambien fijate de como use el operador de resto:
Código:
(@contador + 1) % 2
Por que asi? Pues simple:
Al sumarle uno pasas al siguente elemento de la lista y haces la comprobacion con el resto(donde el 2 representa el numero maximo de objetos de la lista) para que cuando llegue al numero maximo el index se desplace al inicio(por eso el index siempre empieza de 0)
Ejemplo:
Código:
(2 + 1) % 4 = 3 % 4 = 3
La division de 3 entre 4 da como resto 3. Pero si fuese:
Código:
(3 + 1) % 4 = 4 % 4 = 0
Por la sencilla razon de que 4 / 4 es una division exacta que genera resto 0.
Sintaxis:
Código:
index = (index + 1) % max_items

Eso es para bajar por la lista, pero cuando quieras subir? Pues nada, usas el mismo procedimiento lo unico que en lugar de sumarle 1, le sumas el numero maximo - 1
Ejemplo:
Código:
(3 + 3) % 4 = 6 % 4 = 2
Sintaxis:
Código:
index = (index + (max_items - 1)) % max_items
Claro que en tu script con insertar este sistema solamente no va a funcionar bien ya que la comprobacion para el cambio de tono de las imagenes no seria por la tecla que apretaste sino por el valor del index.
Pues ahora que me detengo a pensar no se bien que tiene que ver todo lo que dije con tu script pero nada...queria decirlo xDDDD
Espero que toda esta explicacion te haya servido de algo Ópalo Sonriente

Que conste que el script esta perfecto, dije todo eso simplemente para que aprendas un truco para trabajar con listas de elementos mayores.
Saludos,
¥oukai

#4 Re: [RM VX] Night Health Point By ~Night Shade el Mar Mar 25, 2014 7:14 pm

~Night Shade

avatar
youkai escribió:Bastante bueno el script :)Y bueno, ya que veo que le estas poniendo ganas a la programacion yo voy a empezar a ponerle ganas a las criticas >8D (era broma xD)

Primero que todo me sorprendo como puedes reconocer cual imagen es cual usando como nombre de las variables sv y ld...no tengo idea de que puedan significar las 2 letras esas xD Te recomiendo que uses nombres mas especificos, algo como: heal_sprite y save_sprite; o heal y save; o salvar y curar, no se, como quieras xDDD Pero que uses nombres que sean mas identificables xD

Veo que usaste a contador como un indice para navegar por las opciones y te voy a enseñar un truco para eso Ópalo Guiño
En lugar de hacerlo tan arbitrario:
Código:
if Input.trigger?(Input::DOWN) and @contador == 0
      Audio.se_play('Audio/SE/' + 'Cursor')
      @contador = 1
      @sv.tone = Tone.new(0, 0, 0, 255)
      @ld.tone = Tone.new(0, 0, 0)
      
    elsif Input.trigger?(Input::UP) and @contador == 1
      Audio.se_play('Audio/SE/' + 'Cursor')
      @contador = 0
      @sv.tone = Tone.new(0, 0, 0)
      @ld.tone = Tone.new(0, 0, 0, 255)
      
    end
Puedes usar el operador de resto (%) para manipular los cambios en el indice(al cual le voy a llamar index...me siento raro diciendole indice xDDD)
Por ejemplo:
Código:
if Input.trigger?(Input::DOWN)
      Audio.se_play('Audio/SE/' + 'Cursor')
      @contador = (@contador + 1) % 2
      @sv.tone = Tone.new(0, 0, 0, 255)
      @ld.tone = Tone.new(0, 0, 0)
      
    elsif Input.trigger?(Input::UP)
      Audio.se_play('Audio/SE/' + 'Cursor')
      @contador =  (@contador + 1) % 2
      @sv.tone = Tone.new(0, 0, 0)
      @ld.tone = Tone.new(0, 0, 0, 255)
      
    end
Y si, repeti la misma operacion 2 veces al profeso para que te des cuenta de una cosilla, que hagas lo que hagas siempre volveras a la opcion aterior puesto que son solo 2. Tambien fijate de como use el operador de resto:
Código:
(@contador + 1) % 2
Por que asi? Pues simple:
Al sumarle uno pasas al siguente elemento de la lista y haces la comprobacion con el resto(donde el 2 representa el numero maximo de objetos de la lista) para que cuando llegue al numero maximo el index se desplace al inicio(por eso el index siempre empieza de 0)
Ejemplo:
Código:
(2 + 1) % 4 = 3 % 4 = 3
La division de 3 entre 4 da como resto 3. Pero si fuese:
Código:
(3 + 1) % 4 = 4 % 4 = 0
Por la sencilla razon de que 4 / 4 es una division exacta que genera resto 0.
Sintaxis:
Código:
index = (index + 1) % max_items

Eso es para bajar por la lista, pero cuando quieras subir? Pues nada, usas el mismo procedimiento lo unico que en lugar de sumarle 1, le sumas el numero maximo - 1
Ejemplo:
Código:
(3 + 3) % 4 = 6 % 4 = 2
Sintaxis:
Código:
index = (index + (max_items - 1)) % max_items
Claro que en tu script con insertar este sistema solamente no va a funcionar bien ya que la comprobacion para el cambio de tono de las imagenes no seria por la tecla que apretaste sino por el valor del index.
Pues ahora que me detengo a pensar no se bien que tiene que ver todo lo que dije con tu script pero nada...queria decirlo xDDDD
Espero que toda esta explicacion te haya servido de algo Ópalo Sonriente

Que conste que el script esta perfecto, dije todo eso simplemente para que aprendas un truco para trabajar con listas de elementos mayores.
Saludos,
¥oukai

¡Muchas gracias por la info! Ópalo Contento lo que dijiste me dio algunas ideas para nuevos scripts, aunque fue un poco dificil de entender xD la primera ves que vi el codigo me quede con cara de WTF!? pero despues de ver la explicacion entendi xD.

Bueno, mi sistema usa los contadores sobre todo para saber en que posiscion esta el "cursor" y al dar a enter se cumpla la condicion, daria error sin los contadores ya que es como "seguir bajando el cursor" y seleccionar opciones que no existen.

Por cierto, sv = save y ld = load xD es que al inicio pensaba hacer un script de "quick save and load system" pero cambie de idea xD.

Siempre es agradable ver consejos como lo tuyos, la verdad es que me falta mucho que aprender para llegar a ser un scripter y los consejos de scriptes profesionales me sirven mucho! Asi que gracias de nuevo Ópalo Tuerto

Salu2 y +reputacion!

#5 Re: [RM VX] Night Health Point By ~Night Shade el Miér Mar 26, 2014 12:41 am

Reputación del mensaje :100% (1 voto)

youkai

avatar
Que bueno que lo hayas entendido todo. A veces escribo y me quedo con la inseguridad de si los demas logren comprender xD

Sin una variable que lleve la posicion del index seria todo un lio el script xD Se podria lograr sin usarla pero...nada, mejor hagamos las cosas asi xP

Todo un placer el poder ayudar y sigue asi que vas por buen camino Ópalo Guiño
Saludos,
¥oukai

Contenido patrocinado


Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

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