Le deal à ne pas rater :
Cartes Pokémon 151 : où trouver le coffret Collection Alakazam-ex ?
Voir le deal

Aller en bas
Grimimi
Grimimi
Membre

Nombre de messages : 32
Age : 27
Localisation : Belgique
Distinction : aucune
Date d'inscription : 30/08/2012
http://www.biloucorp.com/BCW/Grim/

Console comme sous VXAce Empty Console comme sous VXAce

Lun 22 Juil 2013 - 16:49
Une des plus grande nouveauté de VXace a été, selon moi, une console pour favoriser le debug :

Console comme sous VXAce 2

Dans laquelle on peut écrire plein de choses !

Console comme sous VXAce 4

Sous XP et VX on subit un affreux Popup qui block le jeu !
J'ai donc écrit un script qui intègre la console sous XP et VX.
C'est un script Biloucorp donc vous pouvez y retrouver une présentation plus fine sur notre site !  (Et ou les Mise à Jours sont maintenues Wink)

Console comme sous VXAce Console


Code:
#==============================================================================
# ** 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
faller-magie
faller-magie
Membre

Nombre de messages : 873
Age : 29
Localisation : Diubdal, France.
Distinction : aucune
Date d'inscription : 20/02/2012

Console comme sous VXAce Empty Re: Console comme sous VXAce

Lun 22 Juil 2013 - 17:43
Comme quoi, nous avons manqué un outil (et peut-être d'autres outils) de developpement dans nos manches...
Finement bien jouer Grimimi et merci pour le script. Smile
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum