The RPG Maker Resource Kit

RMRK RPG Maker Creation => VX => VX Scripts Database => Topic started by: Grimimi on July 22, 2013, 01:58:17 PM

Title: XP and VX Output Console
Post by: Grimimi on July 22, 2013, 01:58:17 PM
Hi, today i show you my latest script.
It's a Console like RPG Maker VX Ace to show output.

You can use "console.log(object)" or "p object" to display information in the Console !


Code: [Select]
#==============================================================================
# ** Console Support for XP/VX
#------------------------------------------------------------------------------
# By Grim from http://www.biloucorp.com
#==============================================================================
# Function :
#==============================================================================
# Console.log(text)  => display text in console
# console.log(text)  => display text in console
#==============================================================================
# ** Configuration
#------------------------------------------------------------------------------
# Configuration data
#==============================================================================

module Configuration
  #--------------------------------------------------------------------------
  # * Active Console (true=>activate console, false=>unactivate console)
  # * Only for XP and VX
  #--------------------------------------------------------------------------
  ENABLE_CONSOLE = true
end

#==============================================================================
# ** Util
#------------------------------------------------------------------------------
# Usefull tools
#==============================================================================

module Util
  #--------------------------------------------------------------------------
  # * Singleton
  #--------------------------------------------------------------------------
  extend self
  #--------------------------------------------------------------------------
  # * if RPG MAKER XP
  #--------------------------------------------------------------------------
  def rpg_maker_xp?
    defined?(Hangup)
  end
  #--------------------------------------------------------------------------
  # * if RPG MAKER VX
  #--------------------------------------------------------------------------
  def rpg_maker_vx?
    !rpg_maker_xp? && (RUBY_VERSION == '1.8.1')
  end
  #--------------------------------------------------------------------------
  # * if RPG MAKER VXAce
  #--------------------------------------------------------------------------
  def rpg_maker_vxace?
    RUBY_VERSION == '1.9.2'
  end
  #--------------------------------------------------------------------------
  # * alias
  #--------------------------------------------------------------------------
  alias :rmxp?    :rpg_maker_xp?
  alias :rmvx?    :rpg_maker_vx?
  alias :rmvxace? :rpg_maker_vxace?
  #--------------------------------------------------------------------------
  # * Get Screen Object
  #--------------------------------------------------------------------------
  def get_screen
    return $game_map.screen if rpg_maker_vxace?
    $game_screen
  end
  #--------------------------------------------------------------------------
  # * Debug mode
  #--------------------------------------------------------------------------
  def from_editor?
    $TEST || $DEBUG
  end
  #--------------------------------------------------------------------------
  # * Get current Scene
  #--------------------------------------------------------------------------
  def scene
    return SceneManager.scene if rpg_maker_vxace?
    $scene
  end
  #--------------------------------------------------------------------------
  # * Window Handle
  #--------------------------------------------------------------------------
  def handle
    Win32API::FindWindowA.call('RGSS Player', 0)
  end
end

#==============================================================================
# ** Win32API
#------------------------------------------------------------------------------
#  win32/registry is registry accessor library for Win32 platform.
#  It uses dl/import to call Win32 Registry APIs.
#==============================================================================

class Win32API
  #--------------------------------------------------------------------------
  # * Librairy
  #--------------------------------------------------------------------------
  AllocConsole        = self.new('kernel32', 'AllocConsole', 'v', 'l')
  FindWindowA         = self.new('user32', 'FindWindowA', 'pp', 'i')
  SetForegroundWindow = self.new('user32', 'SetForegroundWindow','l','l')
  SetConsoleTitleA    = self.new('kernel32','SetConsoleTitleA','p','s')
  WriteConsoleOutput  = self.new('kernel32', 'WriteConsoleOutput', 'lpllp', 'l' )
end

#==============================================================================
# ** Console
#------------------------------------------------------------------------------
#  VXAce Console Handling
#==============================================================================

module Console
  #--------------------------------------------------------------------------
  # * Singleton
  #--------------------------------------------------------------------------
  extend self
  #--------------------------------------------------------------------------
  # * Initialize
  #--------------------------------------------------------------------------
  def init
    unless Util.rmvxace?
      return unless Util.from_editor?
      Win32API::AllocConsole.call
      Win32API::SetForegroundWindow.call(Util.handle)
      Win32API::SetConsoleTitleA.call("RGSS Console")
      $stdout.reopen('CONOUT$')
    end
  end
  #--------------------------------------------------------------------------
  # * Log
  #--------------------------------------------------------------------------
  def log(*data)
    return unless Util.from_editor?
    if Util.rmvxace?
      p(*data)
      return
    end
    return unless Configuration::ENABLE_CONSOLE
    puts(*data.collect{|d|d.inspect})
  end
end

#==============================================================================
# ** Kernel
#------------------------------------------------------------------------------
#  Object class methods are defined in this module.
#  This ensures compatibility with top-level method redefinition.
#==============================================================================

module Kernel
  #--------------------------------------------------------------------------
  # * Alias for console
  #--------------------------------------------------------------------------
  def console; Console; end
  #--------------------------------------------------------------------------
  # * pretty print
  #--------------------------------------------------------------------------
  if !Util.rmvxace? && Util.from_editor?
    def p(*args)
      console.log(*args)
    end
  end
end

#--------------------------------------------------------------------------
# * Initialize Console
#--------------------------------------------------------------------------
Console.init if Configuration::ENABLE_CONSOLE

And original link here : https://github.com/Funkywork/Scripts-rm/blob/master/Toutes%20versions/XPVXConsole.rb

Title: Re: XP and VX Output Console
Post by: modern algebra on July 22, 2013, 02:01:24 PM
That sounds like it would be really helpful for anyone still scripting in VX or XP. I know that I love the console in Ace. Thanks for sharing!

Also, last script or latest script? If last, then :'(
Title: Re: XP and VX Output Console
Post by: Grimimi on July 22, 2013, 02:06:14 PM
Latest sorry ! I dont have English skill ^^

I'm actually working on the new version of the Event Extender with a lot of Graphical tools :
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fwww.ouplo.com%2Fimg%2FytTBkdjO4TeXEfpnfYinR3nxP.png&hash=14cd2d1f50b7f78e087a949237b0c515abd1e8c8)
Eval RUby in Game, Tone Generator (push the Event command in the Clipboard)

and a new Database, you can make what you want (generate CSV File, and Custom Editor with GUI)
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fwww.ouplo.com%2Fimg%2F8Ts7PCNAkaG6GFsRCR9kEZAO6.png&hash=d06244b0e328bd14766be95c7aeaac6d4860869b)
Title: Re: XP and VX Output Console
Post by: TheoAllen on August 11, 2013, 08:46:17 PM
Hey, this is great script. I'm sure this will be a great help to my Indonesian RPG Maker Community if I repost this topic in my blog. Of course I will put the link to this thread instead of the script.