¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.
Conectarse

Recuperar mi contraseña

Temas importantes
----------------------------------------
Páginas con recursos RPG Maker
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Afiliados
Estadísticas
Tenemos 3399 miembros registrados.
El último usuario registrado es agapitovillaporca_803.

Nuestros miembros han publicado un total de 79814 mensajes en 11259 argumentos.
Navega con Google Chrome
[DESCARGA]

[XP] Print to Clipboard

 :: RPG Maker :: Scripts

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [XP] Print to Clipboard

Mensaje por Wecoc el 2016-08-25, 06:59

Éste script modifica la ventana que sale cuando compruebas un código usando p o print.

Para los que no saben de qué hablo:
Los métodos p y print abren una ventana a parte del proyecto que muestra una string (es decir un texto) de lo que le indiques.

Por ejemplo si llamas un script desde un evento y le pones esto:

p "Hola"

Te sale una ventana así:



No hay que confundirlo con la ventana de error que sale cuando algo falla. Ésta a diferencia de la de error no cierra el proyecto, solo sirve para comprobar todo tipo de variables a tiempo real (es una herramienta de scripters)

Lo que hace el script es añadir la opción de copiar su contenido al portafolios, como si hicieras Ctrl + C.
En vez de [ Aceptar ] sale lo siguiente:

Copiar al portapapeles:
Sí   [ No ]

Por defecto sale No así que irá básicamente como siempre, pero si le das a Sí se copia el contenido al portapapeles y luego ya puedes pegarlo donde quieras.

Es compatible con todos los demás scripts excepto con los de consola externa (Console Support), puesto que esos quitan esa ventana para mostrar el texto en la consola negra directamente.

No requiere créditos.
Pegadlo encima de main.

Código:
#==============================================================================
# ** [XP] Print to Clipboard v1.0
#------------------------------------------------------------------------------
#  Permite copiar el p/print actual al portapapeles, usando MessageBox
#  Autor: Wecoc (no requiere créditos)
#==============================================================================
# * Para más info sobre MessageBox:
# https://msdn.microsoft.com/en-us/library/windows/desktop/ms645505(v=vs.85).aspx
#==============================================================================

module Kernel
 
  PRINT_CUSTOM = true  # Activa el script
  LINK_WINDOW = false  # Enlazar el popup con la ventana del proyecto
 
  unless $@
    alias mdtype_print print
    alias mdtype_p p
  end
 
  GPPSA = Win32API.new('kernel32', 'GetPrivateProfileStringA', 'PPPPLP', 'L')
 
  OpenClipboard = Win32API.new('user32', 'OpenClipboard', 'L', 'L')
  EmptyClipboard = Win32API.new('user32', 'EmptyClipboard', '', 'L')
  SetClipboardData = Win32API.new('user32', 'SetClipboardData', 'LL', 'L')
  CloseClipboard = Win32API.new('user32', 'CloseClipboard', '', 'L')
 
  GlobalAlloc = Win32API.new('kernel32', 'GlobalAlloc', 'LL', 'L')
  GlobalSize = Win32API.new('kernel32', 'GlobalSize', 'L', 'L')
  GlobalLock = Win32API.new('kernel32', 'GlobalLock', 'L', 'L')
  GlobalUnlock = Win32API.new('kernel32', 'GlobalUnlock', 'L', '')
   
  begin
    Memcpy = Win32API.new('ntdll', 'memcpy', 'PPL', 'L')
  rescue
    Memcpy = Win32API.new('crtdll', 'memcpy', 'PPL', 'L')
  end
 
  def get_string(id, tag = 'Game', file = '.\\Game.ini')
    buffer = "\0" * 255
    GPPSA.call(tag, id, '', buffer, 255, file)
    buffer.delete!("\0")
  end
 
  def game_title
    get_string('Title')
  end

  def game_library
    get_string('Library')
  end
 
  FindWindowA = Win32API.new('user32', 'FindWindowA', 'pp', 'l')
  HWND = FindWindowA.call('RGSS Player', game_title)
 
  def print(*args)
    if !PRINT_CUSTOM
      mdtype_print(*args)
      return
    end
    for i in 0...args.size
      text = args[i].inspect
      dialog = Win32API.new('user32', 'MessageBox', 'LPPL', 'I')
     
      mb_options = 0x00000004  #  Yes | No
      mb_icon    = 0x00000000  #  None
      mb_style  = 0x00020000  #  Avoid Enter loop (0x00000000 para desactivar)
      mb_default = 0x00000100  #  Default: No      (0x00000000 para 'Yes')

      mbid = LINK_WINDOW ? HWND : 0
     
      mbtype = mb_options | mb_icon | mb_style | mb_default
      mbtext = text + "\n\nCopiar al portapapeles:"
      result = dialog.call(mbid, mbtext, game_title, mbtype)
      if result == 6 # Yes
        clipboard_write(text)
      end
    end
    return
  end
 
  def clipboard_write(data)
    OpenClipboard.call(0)
    EmptyClipboard.call
    set_data = GlobalAlloc.call(66, data.length + 1)
    len = [data.size + 1, GlobalSize.call(set_data)].min
    lp = GlobalLock.call(set_data)
    Memcpy.call(lp, "#{data}", len)
    GlobalUnlock.call(set_data)
    SetClipboardData.call(7, set_data)
    CloseClipboard.call
  end
 
  def p(*args)
    if !PRINT_CUSTOM
      mdtype_p(*args)
      return
    end
    print(*args)
  end
end

PD.- Soy un poco negado con Win32API, si alguien ve algún modo de mejorarlo comentadlo por favor.

Wecoc
Administrador
Administrador



Créditos 8272

Gracias : 372

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 :: RPG Maker :: Scripts

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