Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

Hacer que el juego no pueda ser cerrado mediante la X [RMXP]

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP Hacer que el juego no pueda ser cerrado mediante la X [RMXP]

Mensaje por Peaverin el 2012-09-09, 22:58

Buenas pues llevo inactivo unos meses pero hace poco volví y este es mi primer post despues de mi vuelta.
El caso es que para mi juego online me iria muy bien que alguien que supiera del tema consiguiera que el game.exe no se pudiera cerrar mediante la X.
Desearia que modificara este game.exe en concreto http://dl.dropbox.com/u/56100890/RPGMakerRandom/Game.exe
ya que es uno modificado para que el juego continue activo al minimizar la ventana, pero se sigue pudiendo cerrar por la X, lo cual me causa problemas con el server.

Muchas gracias a el que lo consiga!!
avatar
Peaverin
Soñador
Soñador

0/3

Créditos 182

Gracias : 3

Volver arriba Ir abajo

RPG Maker XP Re: Hacer que el juego no pueda ser cerrado mediante la X [RMXP]

Mensaje por newold el 2012-10-03, 22:22

casi un mes después pero bueno, te he hecho este miniscript que elimina los botones de la ventana del maker. A ver si te sirve

Código:
#==============================================================================
# Script Creado por Newold
# Fecha: 04-10-2012
# Qué hace este script: Hace que la ventana del juego aparezca sin los botones
#                      cerrar/minimizar/maximizar
#==============================================================================

module NoCloseButtonWindowStyle
  #--------------------------------------------------------------------------
  GWL_STYLE = -16
  # más estilos en
  # http://msdn.microsoft.com/en-us/library/windows/desktop/ms632600(v=vs.85).aspx
  WS_SYSMENU = 0x80000
  Readini = Win32API.new('kernel32', 'GetPrivateProfileStringA', 'pppplp', 'l')
  Findwindow = Win32API.new('user32', 'FindWindow', 'pp', 'l')
  GetWindowLong = Win32API.new('user32', 'GetWindowLong', 'll', 'l')
  SetWindowLong = Win32API.new('user32', 'SetWindowLong', 'lll', 'l')
  #--------------------------------------------------------------------------
  def NoCloseButtonWindowStyle.hwnd
    game_name = "\0" * 256
    Readini.call('Game','Title','',game_name,255,".//Game.ini")
    game_name.delete!("\0")
    return Findwindow.call('RGSS Player',game_name)
  end
  #--------------------------------------------------------------------------
  def NoCloseButtonWindowStyle.change_style
    hwnd = NoCloseButtonWindowStyle.hwnd
    style = GetWindowLong.call(hwnd, GWL_STYLE) & ~WS_SYSMENU
    SetWindowLong.call(hwnd, GWL_STYLE, style)
  end
  #--------------------------------------------------------------------------
end

NoCloseButtonWindowStyle.change_style
avatar
newold
Principiante
Principiante

0/3

Créditos 1279

Gracias : 138

Volver arriba Ir abajo

RPG Maker XP Re: Hacer que el juego no pueda ser cerrado mediante la X [RMXP]

Mensaje por Wecoc el 2012-10-04, 13:28

Spoiler:
¿VRWinComponent? ¿WStyle? Todo esto es tan desconocido para mí... xD Aunque curiosamente al link que hay dentro del script yo ya había entrado una vez hace un mes o dos. Me gusta curiosear por ahí estas cosas.
Este script es muy interesante, pero tiene un error. Verás, es cierto que inactiva los botones pero siguen viéndose a no ser que salga de la ventana y luego vuelva a entrar en ella. Además creo que sería mejor que esto solo lo hiciera si en juego no está en $DEBUG (sé que esto segundo es solo un unless pero... ya sabes xD)
avatar
Wecoc
Administrador
Administrador



Créditos 12314

Gracias : 655

Volver arriba Ir abajo

RPG Maker XP Re: Hacer que el juego no pueda ser cerrado mediante la X [RMXP]

Mensaje por newold el 2012-10-04, 21:19

a mi se me quitan las botones nada mas ponerlo (uso windows 7 ultimate 64bits). Los botones se ven momentáneamente mientras se abre el juego pero una vez carga el script los botones desaparecen. es conveniente poner el script el primero de la lista para que lo cargue cuanto antes.
Para hacer que no se active en modo $DEBUG es cierto que solo se haría poniendo un unless, habría que editar la última línea del scrip y cambiarla por esta otra:
Código:
NoCloseButtonWindowStyle.change_style unless $DEBUG or $TEST
avatar
newold
Principiante
Principiante

0/3

Créditos 1279

Gracias : 138

Volver arriba Ir abajo

RPG Maker XP Re: Hacer que el juego no pueda ser cerrado mediante la X [RMXP]

Mensaje por Wecoc el 2013-09-11, 19:12

Vengo a hacer sucio necropost xD para postear un edit que le he hecho al script y que es prácticamente el mismo pero con más opciones de estilos.

Código:
module WindowStyles
  #--------------------------------------------------------------------------
  Readini = Win32API.new('kernel32', 'GetPrivateProfileStringA', 'pppplp', 'l')
  Findwindow = Win32API.new('user32', 'FindWindow', 'pp', 'l')
  GetWindowLong = Win32API.new('user32', 'GetWindowLong', 'll', 'l')
  SetWindowLong = Win32API.new('user32', 'SetWindowLong', 'lll', 'l')
  SetWindowPos = Win32API.new('user32', 'SetWindowPos', 'lllllll', 'l')
  #--------------------------------------------------------------------------
  def self.hwnd
    game_name = "\0" * 256
    Readini.call('Game','Title','',game_name,255,".//Game.ini")
    game_name.delete!("\0")
    return Findwindow.call('RGSS Player',game_name)
  end
  #--------------------------------------------------------------------------
  def self.change_style(st)
    hwnd = WindowStyles.hwnd
    case st
    when 0 # Default
      style = GetWindowLong.call(hwnd, -16) & ~0x00000000
      SetWindowLong.call(hwnd, -16, style)
      SetWindowPos.call(hwnd, -2, 317, 241, 646, 512, 0)
    when 1 # Always on top
      SetWindowPos.call(hwnd, -1, 317, 241, 646, 512, 0)
    when 2 # Only Close Button
      style = GetWindowLong.call(hwnd, -16) & ~0x00020000
      SetWindowLong.call(hwnd, -16, style)
    when 3 # No buttons
      style = GetWindowLong.call(hwnd, -16) & ~0x00080000
      SetWindowLong.call(hwnd, -16, style)
    when 4 # No buttons, no header, thin border
      style = GetWindowLong.call(hwnd, -16) & ~0x00800000
      SetWindowLong.call(hwnd, -16, style)
      SetWindowPos.call(hwnd, -2, 317, 241, 646, 486, 0)
    when 5 # No buttons, no header, no border
      style = GetWindowLong.call(hwnd, -16) & ~0x00400000
      SetWindowLong.call(hwnd, -16, style)
      SetWindowPos.call(hwnd, -2, 317, 241, 642, 482, 0)
    end
  end
  #--------------------------------------------------------------------------
end

WindowStyles.change_style(0) unless $DEBUG
En la última línea cambiar ese 0 por otro número de 1 a 5 por los distintos estilos puestos a continuación:

1 - La ventana siempre se muestra encima de las otras
2 - Solo aparece el botón de cerrar; ni el de maximizar ni el de minimizar
3 - Sin botones (como el de newold)
4 - Sin botones ni header, la ventana solo tiene un bordecillo.
5 - Sin botones, header ni borde.

Yeah.
avatar
Wecoc
Administrador
Administrador



Créditos 12314

Gracias : 655

Volver arriba Ir abajo

RPG Maker XP Re: Hacer que el juego no pueda ser cerrado mediante la X [RMXP]

Mensaje por Peaverin el 2013-09-11, 23:11

Oh, gracias a los dos y la verdad es que me había olvidado completamente de este post y lo veo ahora que has posteado. Perdon por no haber dado las gracias antes :(
Bueno Wecoc, solo por curiosidad, se podría añadir una sexta opción con el borde parecido al de la cuarta pero un poquito mas grande con las opciones de minimizar y cerrar? Lo digo tan solo porque quedaría mejor esteticamente en el juego, y a parte porque el botón de maximizar no tiene ningun uso.
Muchas gracias por todo!
avatar
Peaverin
Soñador
Soñador

0/3

Créditos 182

Gracias : 3

Volver arriba Ir abajo

RPG Maker XP Re: Hacer que el juego no pueda ser cerrado mediante la X [RMXP]

Mensaje por Wecoc el 2013-09-11, 23:32

Esos estilos estan definidos en Win32API y en principio hay los que hay :(( no sé si habrá alguna manera de poner más, pero en teoria puse todas las opciones que funcionan en el programa.
avatar
Wecoc
Administrador
Administrador



Créditos 12314

Gracias : 655

Volver arriba Ir abajo

RPG Maker XP Re: Hacer que el juego no pueda ser cerrado mediante la X [RMXP]

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.