AccueilAccueil  PortailPortail  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  ConnexionConnexion  




Partagez
 

 [VXace] Console RGSS3 avancée

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
berka
Maire Lv.9
Maire Lv.9
berka


Masculin Age : 32
Inscrit le : 15/10/2008
Messages : 351

[VXace] Console RGSS3 avancée Empty
MessageSujet: [VXace] Console RGSS3 avancée   [VXace] Console RGSS3 avancée Icon_minitimeSam 21 Jan 2012 - 17:17

Bonsoir à tous,

Je pense que l'ajout de la console aura été la plus grande innovation de RMVX Ace. Super pratique pour le débugage des scripts.
Et c'est pourquoi je n'ai pas pu résister à l'envie de personnaliser un peu ce formidable outil.

Grâce à ce script (mon premier sur Ace, faut bien vivre avec son temps) vous aurez la possibilité de colorer les chaines affichées par la consoles.
Cela permet également de faire un rapide outil de coloration syntaxique. Un screenshot parlant mieux de la question que des phrases:
[VXace] Console RGSS3 avancée Sans_t16

Pour ce faire, copiez ce script tout en haut de la liste (Avant Vocab).

Code:
#============================================================
#                    Advanced RGSS3 Console
#  Berka          http://www.rpgmakervx-fr.com
#                  v0.5 VX Ace only. 01-21-12 
#
# Thanks to Azuma-01 for symbols and regexp matching
# Free of use. Please ask me before publishing anywhere.
#
# Add a basic syntax haighlighter to the default RGSS Console
# May cause a slight slowdown in the console display.
#------------------------------------------------------------
# Use Kernel#puts to activate the syntax highlighter.
# Kernel#print stays unchanged.$
# Console#gets extracts the input of the console
#  use: eval(Console.gets) to script while testing.
#------------------------------------------------------------
# Change the color of the console:
#  Console.color(H_RED)      # Set the color of the console
#  print("this text is red")  # Text displayed in red
#  Console.color = nil        # Remove the coloration
#============================================================

module Berka
  module Console
    LINE_NUMBERS = true  # Display line numbers ON/OFF
    BACKGROUND  = true  # Display a white background ON/OFF
    ENABLEPROMPT = true  # Enable the gets command ON/OFF
    PARSE_P      = false # Enable parsing for Kernel#p function /!\
  end
end

module Win32
  GSH ||= Win32API.new('kernel32','GetStdHandle','l','l')
  SCTA||= Win32API.new('kernel32','SetConsoleTextAttribute','ll','l')
end

module Highlighter 
  H_BLACK    = 0x0000 # black
  H_DBLUE    = 0x0001 # dark blue
  H_DGREEN    = 0x0002 # dark green
  H_DCYAN    = 0x0003 # dark cyan
  H_DRED      = 0x0004 # dark red
  H_DPURPLE  = 0x0005 # dark purple
  H_DYELLOW  = 0x0006 # dark yellow
  H_GREY      = 0x0007 # grey
  H_DGREY    = 0x0008 # dark grey
  H_BLUE      = 0x0009 # blue
  H_GREEN    = 0x000a # green
  H_CYAN      = 0x000b # cyan
  H_RED      = 0x000c # red
  H_PURPLE    = 0x000d # purple
  H_YELLOW    = 0x000e # yellow
  H_WHITE    = 0x000f # white
  H_INTENSITY = 0x0080 # background intensity
 
  # Ruby's special words
  H_KWORDS=["alias","begin","BEGIN","break","case","defined","do","else","elsif",
            "end","END","ensure","for","if","in","include","loop","next","raise",
            "redo","rescue","retry","return","super","then","undef","unless",
            "until","when","while","yield","false","nil","self","true","__FILE__",
            "__LINE__","and","not","or","def","class","module","catch","fail",
            "load","throw"]
           
  # Ruby's operators
  H_OPERATORS=["=","+","-","/","*","%",'(',')','[',']','{','}','<','>','&','|',
              ',','!',"?",":",";",'.']
 
  def self.parse(*args)
    args.flatten.each{|l|
      Console.color=nil
      print("#{sprintf("%03d",$consolelines+=1)}:\s")if Berka::Console::LINE_NUMBERS
      l.split(/ /).each{|e|
        case e
        when *H_KWORDS then Console.color=H_BLUE
        when /^\d*[.]?\d+$/ then Console.color=H_DRED
        when /\/.*\/(?:[imx]{,3})/ then Console.color=H_DPURPLE # by Azuma-01
        when /^:.*$/ then Console.color=H_DYELLOW # by Azuma-01
        when /^#.*$/ then Console.color=H_DGREEN # by Azuma-01
        else
          e.split(//).each{|f|
            @s=!@s if r=(f=='"'||f=="'")
            if(@s)||r;Console.color=H_DPURPLE
            elsif f=~/^\d*[.]?\d+$/;Console.color=H_DRED
            else
              Console.color=(H_OPERATORS.include?(f)? H_DCYAN : H_BLACK)
            end
            print(f)
          }
          print(" ")
          next
        end
        print("#{e} ")
      }
    }
    print("\n")
  end
end

include Highlighter

module Console
  $consolelines=0 # Console lines counter
  def self.init
    @outhwnd=Win32::GSH.call(-11)
  end
  def self.color=(c=H_BLACK)
    Win32::SCTA.call(@outhwnd,(c||=H_BLACK)|(Berka::Console::BACKGROUND ? 0x00f0 : 0))# rescue nil
  end
  def self.gets
    $stdin.gets
  end
end
Console.init

# Kernel#puts redefinition
def puts(*a)
  a.each{|n|Highlighter.parse(*n)}
end
#Kernel#p redefinition
def p(*a)
  Berka::Console::PARSE_P ? (a.each{|b|puts b.inspect}) : Kernel.p(*a)
end
# Kernel#gets
def gets
  Console.gets
end

L'utilisation est simple:
- une fonction gets est ajoutée pour extraire la saisie console
- la fonction puts active la coloration syntaxique, faites: puts("[1,2,3]")
- la fonction print est laissée telle quelle.
- pour changer de couleur d'affichage: Console.color = H_RED Vous trouverez les codes couleurs au début du script.

Merci de me demander la permission avant de copier ce script à droite à gauche. Tout simplement pour que je puisse moi-même assurer le support du système.

Berka


Dernière édition par berka le Mar 24 Jan 2012 - 23:42, édité 4 fois
Revenir en haut Aller en bas
http://rpgruby.olympe-network.com
XHTMLBoy
Citadin Lv.7
Citadin Lv.7
XHTMLBoy


Masculin Inscrit le : 15/03/2011
Messages : 167

[VXace] Console RGSS3 avancée Empty
MessageSujet: Re: [VXace] Console RGSS3 avancée   [VXace] Console RGSS3 avancée Icon_minitimeSam 21 Jan 2012 - 18:07

Génial !
Et il code est étonnamment claire Smile
tu as bien SOLUTIONNé ton objectif de rendre cette console plus claire Smile
Merci beaucoup du partage Very Happy

Edit: Juste parce que je suis un petit peu emmerdant. J'appartiens à l'école qui considère qu'un module peut faire 2 offices.
1 => Espace nom
2 => Mixins
Donc je ne suis pas un grand fan des inclusions de modules qui ne jouent pas avec les attributs.
Ce n'est que mon opinion et pas vraiment une critique, mais plutot une interrogation Smile Pourquoi inclure un module qui ne jouent pas avec les attributs (sauf erreur de ma part et dans ce cas ... mea culpa).
Revenir en haut Aller en bas
http://funkywork.blogspot.com/
berka
Maire Lv.9
Maire Lv.9
berka


Masculin Age : 32
Inscrit le : 15/10/2008
Messages : 351

[VXace] Console RGSS3 avancée Empty
MessageSujet: Re: [VXace] Console RGSS3 avancée   [VXace] Console RGSS3 avancée Icon_minitimeSam 21 Jan 2012 - 18:16

Merci pour la critique. J'ai ajouté une rapide fonction gets.

Pour ce qui est de la clarté j'ai fait un petit effort Wink
Pour ce qui est de l'utilisation des modules:
- J'aurais éventuellement pu ouvrir une classe Console plutôt qu'un module. Je ne l'ai pas fait car je ne souhaite pas embrouiller l'utilisation par des instanciations.
- J'ai conservé un module Berka pour les réglages. C'est une convention que je me suis donné. Ca me permet en cas de problème de voir les autres scripts "Berka" utilisés et faire un support.
- J'ai également défini un module Win32 pour éviter la répétition de déclarations Win32API. Parce que ça, c'est mortel.
Revenir en haut Aller en bas
http://rpgruby.olympe-network.com
XHTMLBoy
Citadin Lv.7
Citadin Lv.7
XHTMLBoy


Masculin Inscrit le : 15/03/2011
Messages : 167

[VXace] Console RGSS3 avancée Empty
MessageSujet: Re: [VXace] Console RGSS3 avancée   [VXace] Console RGSS3 avancée Icon_minitimeSam 21 Jan 2012 - 18:18

La question que je me pose principalement est concernant l'inclusion?
Par soucis de rapidité d'écriture de code ?
Revenir en haut Aller en bas
http://funkywork.blogspot.com/
berka
Maire Lv.9
Maire Lv.9
berka


Masculin Age : 32
Inscrit le : 15/10/2008
Messages : 351

[VXace] Console RGSS3 avancée Empty
MessageSujet: Re: [VXace] Console RGSS3 avancée   [VXace] Console RGSS3 avancée Icon_minitimeSam 21 Jan 2012 - 18:20

Oui. Et puis c'est aussi que je suis le seul à nommer les APIs par leurs acronymes plutot qu'en camelcase. Je devrais en effet éviter l'inclusion.
Revenir en haut Aller en bas
http://rpgruby.olympe-network.com
XHTMLBoy
Citadin Lv.7
Citadin Lv.7
XHTMLBoy


Masculin Inscrit le : 15/03/2011
Messages : 167

[VXace] Console RGSS3 avancée Empty
MessageSujet: Re: [VXace] Console RGSS3 avancée   [VXace] Console RGSS3 avancée Icon_minitimeSam 21 Jan 2012 - 18:24

L'important reste tout de même que ça fonctionne ! Merci du partage !
Revenir en haut Aller en bas
http://funkywork.blogspot.com/
Zangther
Maître des Duels
Maître des Duels
Zangther


Masculin Age : 30
Inscrit le : 29/07/2009
Messages : 7838

[VXace] Console RGSS3 avancée Empty
MessageSujet: Re: [VXace] Console RGSS3 avancée   [VXace] Console RGSS3 avancée Icon_minitimeSam 21 Jan 2012 - 18:45

J'aime !
Merci du partage !
Revenir en haut Aller en bas
berka
Maire Lv.9
Maire Lv.9
berka


Masculin Age : 32
Inscrit le : 15/10/2008
Messages : 351

[VXace] Console RGSS3 avancée Empty
MessageSujet: Re: [VXace] Console RGSS3 avancée   [VXace] Console RGSS3 avancée Icon_minitimeSam 21 Jan 2012 - 18:50

Merci Zang'
Un problème de balise ? C'est où ? J'ai pas tellement les yeux en face des trous aujourd'hui !

Edit: FIXED Wink
Revenir en haut Aller en bas
http://rpgruby.olympe-network.com
Invité
Invité
avatar



[VXace] Console RGSS3 avancée Empty
MessageSujet: Re: [VXace] Console RGSS3 avancée   [VXace] Console RGSS3 avancée Icon_minitimeSam 21 Jan 2012 - 18:54

Hop, 2 points de participation pour ce script qui peut être bien utile pour les longues séances de debug. Merci du partage !
Revenir en haut Aller en bas
Zangther
Maître des Duels
Maître des Duels
Zangther


Masculin Age : 30
Inscrit le : 29/07/2009
Messages : 7838

[VXace] Console RGSS3 avancée Empty
MessageSujet: Re: [VXace] Console RGSS3 avancée   [VXace] Console RGSS3 avancée Icon_minitimeSam 21 Jan 2012 - 18:58

berka a écrit:
Merci Zang'
Un problème de balise ? C'est où ? J'ai pas tellement les yeux en face des trous aujourd'hui !

Edit: FIXED Wink

Ouais, le temps que je poste le message le problème était réglé ^^
Revenir en haut Aller en bas
berka
Maire Lv.9
Maire Lv.9
berka


Masculin Age : 32
Inscrit le : 15/10/2008
Messages : 351

[VXace] Console RGSS3 avancée Empty
MessageSujet: Re: [VXace] Console RGSS3 avancée   [VXace] Console RGSS3 avancée Icon_minitimeMar 24 Jan 2012 - 22:57

Hop nouvelle version:
- Coloration des regexp
- Coloration des symboles

Merci à Azuma-01 pour les regexp correspondantes.

Dilemme que je me pose: pensez-vous qu'il faille activer la coloration pour Kernel.p ? Ou vaut-il mieux la laisser telle quelle ?

Bonne nuit,

Berka
Revenir en haut Aller en bas
http://rpgruby.olympe-network.com
XHTMLBoy
Citadin Lv.7
Citadin Lv.7
XHTMLBoy


Masculin Inscrit le : 15/03/2011
Messages : 167

[VXace] Console RGSS3 avancée Empty
MessageSujet: Re: [VXace] Console RGSS3 avancée   [VXace] Console RGSS3 avancée Icon_minitimeMar 24 Jan 2012 - 23:07

Je pense qu'il vaut mieux laisser ou alors ajouter un flag Smile
Merci pour ton travail.
Il faudrait qu'on pense, si ça te branche, a plancher ensemble sur un petit script rigolo Smile
Revenir en haut Aller en bas
http://funkywork.blogspot.com/
berka
Maire Lv.9
Maire Lv.9
berka


Masculin Age : 32
Inscrit le : 15/10/2008
Messages : 351

[VXace] Console RGSS3 avancée Empty
MessageSujet: Re: [VXace] Console RGSS3 avancée   [VXace] Console RGSS3 avancée Icon_minitimeMar 24 Jan 2012 - 23:12

Un flag dans des paramètres indéfinis ? Sinon y'a toujours le bool en config, mais c'est pas très utile en fait.

Avec plaisir pour le script.

Berka
Revenir en haut Aller en bas
http://rpgruby.olympe-network.com
Contenu sponsorisé




[VXace] Console RGSS3 avancée Empty
MessageSujet: Re: [VXace] Console RGSS3 avancée   [VXace] Console RGSS3 avancée Icon_minitime

Revenir en haut Aller en bas
 

[VXace] Console RGSS3 avancée

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

 Sujets similaires

-
» Console comme VXAce pour XP et VX
» [VXAce] Conversion du script Credits Vx=>VxAce
» [résolu] A-rpg RGSS3
» [Résolu][RGSS3] Retirer un texte.
» RGSS2->RGSS3 Partie 1 : les Managers

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Maker VX :: Entraide :: Scripts :: Scripts VX.Ace - RGSS3 :: Divers-
Créer un forum | ©phpBB | Forum gratuit d'entraide | Signaler un abus | Forum gratuit