Últimos temas
» [VX/Ace]PersonajesEscolares
por mdk3dd Hoy a las 3:30 pm

» Chaos of Destiny - The Origin
por mdk3dd Ayer a las 9:24 pm

» Laminación [VXACE] [NUEVO LAVADO DE CARA!]
por Pocari Ayer a las 8:22 pm

» [Avance] Chaos of Destiny - The origin
por IvalteK_Dev Ayer a las 7:11 pm

» Proyecto: "En busca del biberón perdido"
por IvalteK_Dev Ayer a las 6:59 pm

» Muz-taller: Charas
por Ruben_modder Ayer a las 2:30 pm

» 2 Dudas: Compatibilidad maker PC y Android
por Ruben_modder Ayer a las 1:36 pm

» Duda Bases Maker MV
por Ruben_modder Ayer a las 11:46 am

» [MV] Precognition
por JapoZero Sáb Dic 08, 2018 8:06 am

» ("TCG") Que RPG Maker es el recomendado?
por JKLmaster Vie Dic 07, 2018 7:48 pm

» Problema con los charas
por mdk3dd Dom Dic 02, 2018 5:55 pm

» Heartland | IGMC 2018
por InvariableZ Dom Dic 02, 2018 11:20 am


menu de game over

Ir abajo

menu de game over

Mensaje por conor el Mar Oct 17, 2017 6:35 pm

Tengo mi propio menú de gameover se los dejo por si alguien lo quiere usar.
Este es solo para el vx ace
Esto es necesario para que el menu funcione:
class Window_TitleCommand2 < Window_Command
Código:
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0)
update_placement
select_symbol(:continue) if continue_enabled
self.openness = 0
open
end
#--------------------------------------------------------------------------
# * Get Window Width
#--------------------------------------------------------------------------
def window_width
return 160
end
#--------------------------------------------------------------------------
# * Update Window Position
#--------------------------------------------------------------------------
def update_placement
self.x = (Graphics.width - width) / 2
self.y = (Graphics.height * 1.6 - height) / 2
end
#--------------------------------------------------------------------------
# * Create Command List
#--------------------------------------------------------------------------
def make_command_list
add_command(Vocab::continue, :continue, continue_enabled)
add_command(Vocab::to_title, :to_title)
add_command(Vocab::shutdown, :shutdown)
end
#--------------------------------------------------------------------------
# * Get Activation State of Continue
#--------------------------------------------------------------------------
def continue_enabled
DataManager.save_file_exists?
end
end



Esta es la por defecto con los agregados necesarios para que el menu funcione
gameover
Código:
#==============================================================================
# ** Scene_Gameover
#------------------------------------------------------------------------------
# This class performs game over screen processing.
#==============================================================================

class Scene_Gameover < Scene_Base
#--------------------------------------------------------------------------
# * Start Processing
#--------------------------------------------------------------------------
def start
super
play_gameover_music
fadeout_frozen_graphics
create_background
create_command_window
end
#--------------------------------------------------------------------------
# * Termination Processing
#--------------------------------------------------------------------------
def terminate
super
SceneManager.snapshot_for_background
dispose_background
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
goto_title if Input.trigger?(:C)
end
#--------------------------------------------------------------------------
# * Execute Transition
#--------------------------------------------------------------------------
def perform_transition
Graphics.transition(fadein_speed)
end
#--------------------------------------------------------------------------
# * Play Music on Game Over Screen
#--------------------------------------------------------------------------
def play_gameover_music
RPG::BGM.stop
RPG::BGS.stop
$data_system.gameover_me.play
end
#--------------------------------------------------------------------------
# * Fade Out Frozen Graphics
#--------------------------------------------------------------------------
def fadeout_frozen_graphics
Graphics.transition(fadeout_speed)
Graphics.freeze
end
#--------------------------------------------------------------------------
# * Create Background
#--------------------------------------------------------------------------
def create_background
@sprite = Sprite.new
@sprite.bitmap = Cache.system("GameOver")
end
#--------------------------------------------------------------------------
# * Free Background
#--------------------------------------------------------------------------
def dispose_background
@sprite.bitmap.dispose
@sprite.dispose
end
#--------------------------------------------------------------------------
# * Get Fade Out Speed
#--------------------------------------------------------------------------
def fadeout_speed
return 60
end
#--------------------------------------------------------------------------
# * Get Fade In Speed
#--------------------------------------------------------------------------
def fadein_speed
return 120
end
#--------------------------------------------------------------------------
# * Transition to Title Screen
#--------------------------------------------------------------------------
def goto_title

end
def create_command_window
@command_window = Window_TitleCommand2.new
@command_window.set_handler(:continue, method(:command_continue))
@command_window.set_handler(:to_title, method(:command_to_title))
@command_window.set_handler(:shutdown, method(:command_shutdown))
end
def close_command_window
@command_window.close
update until @command_window.close?
end
def command_continue
close_command_window
SceneManager.call(Scene_Load)
end
def command_shutdown
close_command_window
fadeout_all
SceneManager.exit
end
def command_to_title
close_command_window
fadeout_all
SceneManager.goto(Scene_Title)
end
end


Si lo quieren usar solo recuerden agregarme en los agradecimientos.
Funciona porque ya lo probé igual cualquier problema me avisan y también cualquier duda.


Última edición por conor el Sáb Oct 21, 2017 11:09 pm, editado 1 vez (Razón : me pidieron que pusiera la script en un codigo)

conor
PJ de Relleno
PJ de Relleno

Masculino
Argentina
RPG Maker : Ace
Mensajes : 24
Monedas : 40
Reputación : 0
Edad : 18

Volver arriba Ir abajo

Re: menu de game over

Mensaje por Turbiosoft.acho el Mar Oct 17, 2017 11:04 pm

Hola, Conor, muchas gracias por el aporte.

Debo pedirte que coloques el script en code, es decir

Código:
Así

De este modo resulta más fácil para los que vayan a tomarlo. 

Copia esto que te pongo aquí debajo:

Código:
[code]Pon tu script aquí[/code]

De nuevo, gracias por tu aporte. Saludos

_________________

¡Apoya PCII colocando esta barrita en tu firma!

Turbiosoft.acho apoya a...:






Y a los juegos de Zoro y Japo (?)


avatar
Turbiosoft.acho
Admin
Admin

Femenino
Rmakercom
RPG Maker : Vx
Mensajes : 1228
Monedas : 4304
Reputación : 179
Localización : En el glorioso y magistral Zulo.

Volver arriba Ir abajo

Re: menu de game over

Mensaje por Chaskarron el Jue Nov 09, 2017 6:35 pm

Hola Conor, de antemano gracias por el aporte, pero en este caso no vengo a agradecer sino a corregir tu aporte para evitar errores a la hora de que alguien pueda usarlo y surja cualquier tipo de incidencia.

En un principio la idea es muy buena pero la tecnica y metodologia puede dar lugar a errores que es posible que no puedas resolver si se diese el caso, ya que he podido hablar contigo en el chat donde me comentaste este aporte sin tener conocimientos de programacion. Espero que te tomes esta correccion como algo positivo que te ayude a mejorar ya que mi intencion es la de evitar que en un futuro alguien tenga algun tipo de incidencia usando tu script y no puedas proporcionarle la ayuda necesaria para encontrar el conflicto y hallar la solucion.

Dentro de la correccion he comentado todas las correcciones realizadas con su correspondiente explicacion para orientarte un poco en el mundo de la programacion y las metodologias que se aplican para poder comprender el codigo en futuras modificiaciones o ampliaciones de su funcionalidad.

Sin mas dilaciones te comparto la optimizacion realizada en tu aporte.

Código:
=begin

 Optimizacion y correcciones por Chaskarron. Con comentarios explicativos.
 
 Como comentario adicional y explicativo, comentarte que es necesario crear
 comentarios explicando las funcionalidades y modificaciones realizadas en el
 codigo. Esto posibilita que cualquier persona comprenda la intencion de dichas
 modificaciones y pueda comprender e incluso optimizarlo si conoce la
 metodologia de programacion.

=end

# class Window_TitleCommand2 < Window_Command
# El nombre de la clase/objeto debe especificar la funcionalidad de este
# un nombre correcto deberia ser Window_GameOverCommand
# los nombres no especificados sirven unicamente para testeos y pruebas
# esto es necesario para facilitar su comprension y permitir modificaciones
# en este caso como el codigo que aportas es una copia modificada del objeto
# Window_TittleCommand es innecesario crear una nueva clase
# ya que se puede usar la existente para hacer lo que deseas
# por lo tanto solo es necesario usar alias para modificar las clases
# ya que si modificas directamente las clases, puede dar lugar a errores y
# conflictos con otros scripts

# Un concepto primordial es poder habilitar o deshabilitar el script para
# recuperar la funcionalidad original del engine, para ello debemos generar
# una forma de poder hacerlo, ya sea mediante un modulo o una constante.
# En este caso para simplificar usare una constante que tome un valor
# a nivel de bit para activar o desactivar la funcionalidad del script
# el nombre determina por abreviacion la funcion del script, el autor, y
# la funcion que desempeña la constante
# CGO = Command Game Over
# CONOR = El autor
# ENABLED = Si esta o no habilitado
# este tipo de nomenclaturas evita conflictos con otros scripts usados

CGO_CONOR_ENABLED = true # true = habilitado / false = deshabilitado

# Modificacion mediante aliasing de la clase Window_TitleCommand
class Window_TitleCommand < Window_Command

  #--------------------------------------------------------------------------
  # * Create Command List
  alias cgo_conor_make_command_list make_command_list # alias o aliasing
  #--------------------------------------------------------------------------
  def make_command_list
    # esta condicion es muy importante ya que indica que el script
    # debe estar activado y la escena debe ser Gameover para que
    # se ejecute, esto impide que se muestre el menu incorrecto
    # en la escena de titulo
    if CGO_CONOR_ENABLED && SceneManager.scene_is?(Scene_Gameover)
      add_command(Vocab::to_title, :to_title)
      add_command(Vocab::continue, :continue, continue_enabled)
      add_command(Vocab::shutdown, :shutdown)
    elsif
      cgo_conor_make_command_list
    end
  end

end

#==============================================================================
# ** Scene_Gameover
#------------------------------------------------------------------------------
# This class performs game over screen processing.
#==============================================================================

class Scene_Gameover < Scene_Base
  #--------------------------------------------------------------------------
  # * Start Processing
  # como puedes observar la forma correcta es la modificacion mediante
  # aliasing, es decir, modificaciones que no afectan a la forma original
  # pero permite implementar nuevas funcionalidades sin modificar el
  # codigo original y evitar posibles errores de compilacion
  alias mgo_conor_start start
  #--------------------------------------------------------------------------
  def start
    mgo_conor_start # llamas al metodo original
    # añades la funcionalidad SOLO si el script esta habilitado
    # esto lo haremos en cada situacion que sea necesaria
    create_command_window if CGO_CONOR_ENABLED
  end

  #--------------------------------------------------------------------------
  # * Frame Update
  alias mgo_conor_update update
  #--------------------------------------------------------------------------
  def update
    # aqui es importante implementar otra condicion en caso de estar inhabilitado
    # determinando que hara si el script se encuentra habilitado
    if CGO_CONOR_ENABLED
      # es necesario llamar a la funcion padre para actualizar correctamente
      # y evitar la llamada al metodo "goto_title if Input.trigger?(:C)"
      # original de la funcion
      super
    elsif
      mgo_conor_update
    end
  end
  
  # Como el resto de metodos no van a ser modificados no es necesario incluirlos
  # ya que solo incluimos mediante aliasing los metodos en los que necesitamos
  # agregar o modificar su funcionalidad
  
  #--------------------------------------------------------------------------
  # * Transition to Title Screen
  # Lo que has hecho con este metodo es un error garrafal, este es el metodo
  # que deberias haber usado para volver a la pantalla de titulo usando la
  # tecnica del aliasing para agregar la funcionalidad de cerrar la ventana
  # de comandos. La siguiente es la forma correcta
  alias cgo_conor_goto_title goto_title
  #--------------------------------------------------------------------------
  def goto_title
    close_command_window if CGO_CONOR_ENABLED # implementas la nueva funcion
    cgo_conor_goto_title # y llamas al metodo original
  end

  def create_command_window
    @command_window = Window_TitleCommand.new
    @command_window.set_handler(:continue, method(:command_continue))
    # la siguiente linea debe ser modificada para usar el metodo
    # original del objeto,ya que no se puede eliminar dicha funcionalidad
    # @command_window.set_handler(:to_title, method(:command_to_title))
    # esta es la forma correcta usando el metodo de la clase
    @command_window.set_handler(:to_title, method(:goto_title))
    @command_window.set_handler(:shutdown, method(:command_shutdown))
  end

  def close_command_window
    @command_window.close
    update until @command_window.close?
  end

  def command_continue
    close_command_window
    SceneManager.call(Scene_Load)
  end
  
  def command_shutdown
    close_command_window
    fadeout_all
    SceneManager.exit
  end
  
  # como ya usamos el metodo original este es innecesario
#~   def command_to_title
#~     close_command_window
#~     fadeout_all
#~     SceneManager.goto(Scene_Title)
#~   end
  
end

Como puedes observar, si eliminamos todos los comentarios explicativos de la optimizacion, el codigo queda muy reducido y no se modifican directamente las clases originales del engine. Espero que esto te sirva para comprender un poco la metodologia de programacion en RGSS3 y obviamente que puedas usar dichos conceptos para programar otros scripts.

Agradeciendo tu esfuerzo me despido hasta otra ocasion. Saludos!!
avatar
Chaskarron
PJ Secundario
PJ Secundario

Masculino
España
RPG Maker : MV
Mensajes : 149
Monedas : 484
Reputación : 27
Edad : 37
Localización : Mordor

Volver arriba Ir abajo

Re: menu de game over

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba

- Temas similares

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