Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

[XP/VX/Ace] Prevenir desactivación de ventana

Ver el tema anterior Ver el tema siguiente Ir abajo

[XP/VX/Ace] Prevenir desactivación de ventana

Mensaje por orochii el 2018-04-11, 19:31

Prevenir desactivación de ventana

Autor: ForeverZer0, versión 1.1 (para todos los RGSS)


Introducción

No me pregunten porqué (?) pero andaba viendo como por 3789374 vez el Pokémon Essentials, me encontré con un tal Universal Plugin Importer (? que es un tema para otro día ._.), y aparte de muchas otras cosas me pareció curioso que la ventanita no sufría de congelarse al perder el foco. Como el resto de juegos de errepegemeiquer pre-MV.
Me puse a investigar y aparentemente existe esto. Es para eso, para que el juego no se congele al perder el foco la ventana. Ideal para, por ejemplo, si tienes una maldita escena de algo que está sincronizada con la música, el jugador sale de la ventana, y whoops! todo está desincronizado. En teoría se podría ir un paso más allá xD, recibir un evento "fuera de foco" y poner pausa a todo, pero MEH.

Instrucciones

Lo primero a hacer es descargar el archivo incluido en la parte de "descargas" de este post (o en el tema original también incluido). El archivo "NoDeactivate.dll" debes ponerlo junto al Game.exe, osea en la carpeta raíz.

Luego de eso La forma más sencilla de implementar esta cuestión es reemplazar el Main por uno de estos dependiendo del RPG Maker en uso. O usar esto como referencia y aplicar los cambios al tuyo si sabes qué estás haciendo (?).
RMXP:
Código:
#==============================================================================
# ** Main
#------------------------------------------------------------------------------
#  After defining each class, actual processing begins here.
#==============================================================================

begin
  Win32API.new('NoDeactivate.dll', 'BeginMonitor', '', '').call
  # Prepare for transition
  Graphics.freeze
  # Make scene object (title screen)
  $scene = Scene_Title.new
  # Call main method as long as $scene is effective
  while $scene != nil
    $scene.main
  end
  # Fade out
  Graphics.transition(20)
rescue Errno::ENOENT
  # Supplement Errno::ENOENT exception
  # If unable to open file, display message and end
  filename = $!.message.sub("No such file or directory - ", "")
  print("Unable to find file #{filename}.")
ensure
  Win32API.new('NoDeactivate.dll', 'EndMonitor', '', '').call
end
RMVX
RMVX:
Código:
#==============================================================================
# ** Main
#------------------------------------------------------------------------------
#  After defining each class, actual processing begins here.
#==============================================================================

begin
  Win32API.new('NoDeactivate.dll', 'BeginMonitor', '', '').call
  Graphics.freeze
  $scene = Scene_Title.new
  $scene.main while $scene != nil
  Graphics.transition(30)
rescue Errno::ENOENT
  filename = $!.message.sub("No such file or directory - ", "")
  print("Unable to find file #{filename}.")
ensure
  Win32API.new('NoDeactivate.dll', 'EndMonitor', '', '').call
end
RMVXAce:
Código:
#==============================================================================
# ** Main
#------------------------------------------------------------------------------
#  This processing is executed after module and class definition is finished.
#==============================================================================

Win32API.new('NoDeactivate.dll', 'BeginMonitor', '', '').call

rgss_main { SceneManager.run }

Win32API.new('NoDeactivate.dll', 'EndMonitor', '', '').call

Descarga

https://sourceforge.net/projects/rmxpnodeactivate/files/latest/download
Es mejor que vean el tema original porque es un poco peculiar para ponerse en uso.
http://forum.chaos-project.com/index.php?topic=14347.0

FAQ

Ver tema original incluido arriba.

Notas random (?)

A veces revivo because WHY NOT.
Tengo una duda aún y es que el DLL incluido en el Universal Plugin Installer pesa más de 100Kb, mientras este son poco más de 10Kb. No he tenido forma (?) de compararlos, pero si alguien quiere darse a la tarea, ver si es que tiene más funcionalidades o algo. Y si es uno basado en el otro, digo, puedes ver el código en SourceForge para este, así que es posible que LukaSJ se haya basado en el código de ForeverZer0. ANYWAY, back to death. baaaaiiiiiiiiiiiiiiiiiiiiiiitetas ;^D

¡Saludos!
avatar
orochii
Reportero

0/3

Créditos 7614

Gracias : 415

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.