XP and VX Output Console

0 Members and 1 Guest are viewing this topic.

**
Rep: +0/-0Level 55
RMRK Junior
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

« Last Edit: July 22, 2013, 02:07:53 PM by Grimimi »

*
Rep:
Level 97
2014 Most Unsung Member2014 Best RPG Maker User - Engine2013 Best RPG Maker User (Scripting)2012 Most Mature Member2012 Favorite Staff Member2012 Best RPG Maker User (Scripting)2012 Best MemberSecret Santa 2012 ParticipantProject of the Month winner for July 20092011 Best Use of Avatar and Signature Space2011 Best RPG Maker User (Scripting)2011 Most Mature Member2011 Favourite Staff Member2011 Best Veteran2010 Best RPG Maker User (Scripting)2010 Most Mature Member
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 :'(

**
Rep: +0/-0Level 55
RMRK Junior
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 :

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)

**
Rep:
Level 67
RMIDans ~
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.
« Last Edit: August 11, 2013, 10:45:20 PM by TheoAllen »
My scripts collection :
http://theolized.blogspot.com/
Sorry if I made it in Indonesian

Supporter of :


Make your own party composition based on 20 playable characters :