Accueil du SiteAccueil du Site  AccueilAccueil  Dernières imagesDernières images  RechercherRechercher  ConnexionConnexion  S'enregistrerS'enregistrer  



-67%
Le deal à ne pas rater :
Carte Fnac+ à 4,99€ au lieu de 14,99€ (nouveaux clients / ...
4.99 € 14.99 €
Voir le deal

Partagez
 

 Commandes de messages disponibles partout

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
trucbidule
Modératrice
Modératrice
trucbidule

Féminin
Messages postés : 1758
Date d'inscription : 28/04/2013
Jauge LPC :
Commandes de messages disponibles partout 891527140075 / 10075 / 100Commandes de messages disponibles partout 8915271400

Commandes de messages disponibles partout Partag10
Commandes de messages disponibles partout Membre10
Commandes de messages disponibles partout Testeu10
Commandes de messages disponibles partout Promot10
Commandes de messages disponibles partout Collec10
Commandes de messages disponibles partout Collec11
Commandes de messages disponibles partout Collec12
Commandes de messages disponibles partout Collec13
Commandes de messages disponibles partout Cookie10


Commandes de messages disponibles partout Empty
MessageSujet: Commandes de messages disponibles partout   Commandes de messages disponibles partout EmptyDim 17 Aoû 2014 - 2:10

Ce script permet d'utiliser les commandes de messages (comme \P[x] ou \I[x]) dans toutes les fenêtres, et non uniquement dans les fenêtres de messages. On peut par exemple ajouter une icône à côté des commandes dans le menu, ou afficher la valeur d'une variable dans une fenêtre de choix.

Il suffit de copier le script dans l'éditeur de script, au-dessus de Main et sous Materials. Si le script n'est pas réglé sur le mode automatique - on peut régler ça à la ligne 51 -, il faut mettre un \* quelque part dans le texte. Par exemple, pour ajouter une couleur à l'objet "Hache", il ne suffit pas de mettre \c[5]Hache\c[0], il faut mettre \*\c[5]Hache\c[0]. En mode automatique, les commandes sont reconnues sans \*.

L'auteur est modern algebra, et le topic original se trouve ici.

Code:
#==============================================================================
#    Global Text Codes [VXA]
#    Version: 1.0a
#    Author: modern algebra (rmrk.net)
#    Date: April 5, 2012
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Description:
#
#    This script allows you to use special message codes in any window, not
#   just message windows and help windows. Want to add an icon next to the
#   menu commands? With this script you can do that and more.
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Instructions:
#
#    Simply paste this script into its own slot above Main and below Materials
#   and other custom scripts.
#
#    There are two settings for this script - automatic and manual. If set to
#   automatic, then all you will need to do is put any of the special message
#   codes in anything and they will automatically work. If set to manual, then
#   you will also need to type the following code somewhere in the text field
#   to activate it: \*
#
#    The following default codes are available:
#
# \c[n] - Set the colour of the text being drawn to the nth colour of the
#     Windowskin palette. 0 is the normal color and 16 is the system color.
# \i[n] - Draw icon with index n.
# \p[n] - Draw the name of the actor in the xth position in the party. 1 is
#     the party leader, 2 is the second member, etc.
# \n[n] - Draw the name of the actor with ID n
# \v[n] - Draw the value of variable with ID n.
# \g - Draws the unit of currency.
#
#    Depending on whether you are using any custom message script, you may have
#   additional message codes at your disposal. This script is mostly compatible
#   with my ATS and every code except \x and ones related to message control
#   will work.
#==============================================================================

$imported = {} unless $imported
$imported[:MAGlobalTextCodes] = true
#\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
#  Editable Region
#||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#  MAGTC_MANUAL_CODES - If this is true, then you must put a \* code in any
# field that you want to have codes interpreted in. Otherwise, codes will
# always automatically be interpreted. The recommended value for this is true,
# as the process for drawing text with codes is much slower than the process
# for drawing text without codes.
MAGTC_MANUAL_CODES = true
#  MAGTC RCODES - This feature is designed to overcome the space limitations in
# much of the database - since codes take so much of that space, it might be
# difficult to write everything you want into one of those fields. This feature
# permits you to write the term you want in to the following array, and then
# access it in the database with the code \r[n], where n is the ID you assign
# to the phrase in the following way:
#
#    n => "replacement",
#
# Please note that: it is =>, not =; the replacement must be within quotation
# marks; and there must be a comma after every line. If using double quotation
# marks ("", not ''), then you need to use two backslashes to access codes
# instead of one (\\c[1], not \c[1]).
#
#  EXAMPLE:
#   0 => "\\i[112]\\c[14]New Game\\c[0]",
#
#  Under the New Game field in the Terms of the Database, all I would then need
# to put is:
#    \*\r[0]
#  and it would be the same as if I had put:
#    \*\i[112]\c[14]New Game\c[0]
MAGTC_RCODES = { # <- Do not touch
  0 => "\\i[112]\\c[14]New Game\\c[0]", # Example
  1 => "", # You can make as many of these as you want
  2 => "\\i[40]Blood Hound",
#||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#  END Editable Region
#//////////////////////////////////////////////////////////////////////////////
}
MAGTC_RCODES.default = ""

#==============================================================================
# ** Window_Base
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    aliased methods - draw_text; convert_escape_characters; process_new_line;
#      reset_font_settings
#    new methods - magtc_align_x; magtc_test_process_escape_character;
#      magtc_calc_line_width
#==============================================================================

class Window_Base
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Draw Text
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias ma_gtc_drwtxt_3fs1 draw_text
  def draw_text(*args, &block)
    # Get the arguments
    if args[0].is_a?(Rect)
        x, y, w, h = args[0].x, args[0].y, args[0].width, args[0].height
        text, align = *args[1, 2]
      else
        x, y, w, h, text, align = *args[0, 6]
      end
    align = 0 unless align
    #  Draw normally if text is not a string, draw normally if the text is not
    # long enough to hold a code, and draw normally when the script is set to
    # manual and \* is included in the text
      if !text.is_a?(String) || text.size < 2 || (MAGTC_MANUAL_CODES && text[/\\\*/].nil?)
        ma_gtc_drwtxt_3fs1(*args, &block) # Run Original Method
      else
      @magtc_reset_font = contents.font.dup # Do not automatically reset font
      @magtc_rect, @magtc_align = Rect.new(x, y, w, h), align
      # Get first line of the text to test for alignment
      @magtc_test_line = convert_escape_characters(text[/.*/])
      y += [(h - calc_line_height(@magtc_test_line)) / 2, 0].max
      # Draw text with message codes
        draw_text_ex(magtc_align_x(x), y, text)
      @magtc_reset_font = nil # Do not automatically reset font
      @magtc_rect, @magtc_align = nil, nil # Reset Rect and Alignment
      end
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Convert Escape Characters
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias ma_gtc_convescchar_5tk9 convert_escape_characters
  def convert_escape_characters(text, *args, &block)
    # Remove \* codes
    new_text = text.gsub(/\\\*/, "")
    # Substitute for the R Codes
    new_text.gsub!(/\\[Rr]\[(\d+)\]/) { MAGTC_RCODES[$1.to_i].to_s }
    ma_gtc_convescchar_5tk9(new_text, *args, &block) # Call Original Method
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Reset Font Settings
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias magtc_resetfonts_4ga5 reset_font_settings
  def reset_font_settings(*args, &block)
    magtc_resetfonts_4ga5(*args, &block) # Call Original Method
    contents.font = @magtc_reset_font if @magtc_reset_font
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Process New Line
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias magtc_prcsnewl_5gn9 process_new_line
  def process_new_line(text, pos, *args, &block)
    magtc_prcsnewl_5gn9(text, pos, *args, &block) # Run Original Method
    if @magtc_align && @magtc_rext
      @magtc_test_line = text[/.*/] # Get new line
      pos[:x] = magtc_align_x       # Get the correct x, depending on alignment
    end
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Get Alignment X
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def magtc_align_x(start_x = @magtc_rect.x)
    return start_x unless (@magtc_rect && @magtc_align && @magtc_test_line) || @magtc_align != 0
    tw = magtc_calc_line_width(@magtc_test_line)
    case @magtc_align
    when 1 then return start_x + ((@magtc_rect.width - tw) / 2)
    when 2 then return start_x + (@magtc_rect.width - tw)
    end
    start_x
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Calc Line Width
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def magtc_calc_line_width(line)
    # Remove all escape codes
    line = line.clone
    line.gsub!(/[\n\r\f]/, "")
    real_contents = contents # Preserve Real Contents
    # Create a dummy contents
    self.contents = Bitmap.new(@magtc_rect.width, @magtc_rect.height)
    reset_font_settings
    pos = {x: 0, y: 0, new_x: 0, height: calc_line_height(line)}
    tw = 0
    while line[/^(.*?)\e(.*)/]
      tw += text_size($1).width
      line = $2
      # Remove all ancillaries to the code, like parameters
      code = obtain_escape_code(line)
      magtc_test_process_escape_character(code, line, pos)
    end
    #  Add width of remaining text, as well as the value of pos[:x] under the
    # assumption that any additions to it are because the special code is
    # replaced by something which requires space (like icons)
    tw += text_size(line).width + pos[:x]
    self.contents.dispose # Dispose dummy contents
    self.contents = real_contents # Restore real contents
    return tw
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Test Process Escape Character
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def magtc_test_process_escape_character(code, text, pos)
    if $imported[:ATS_SpecialMessageCodes] && ['X', 'HL'].include?(code.upcase)
      obtain_escape_param(text)
      return
    end
    process_escape_character(code, text, pos)
  end
end
Revenir en haut Aller en bas
http://trucbidulebond.deviantart.com/
Elekami
Fondateur
Fondateur
Elekami

Masculin
Messages postés : 19071
Date d'inscription : 19/07/2008
Jauge LPC :
Commandes de messages disponibles partout 8915271400100 / 100100 / 100Commandes de messages disponibles partout 8915271400

Commandes de messages disponibles partout Pater_10
Commandes de messages disponibles partout Staffe10
Commandes de messages disponibles partout Mythe_10
Commandes de messages disponibles partout Membre11
Commandes de messages disponibles partout Doyen10
Commandes de messages disponibles partout Scanar10
Commandes de messages disponibles partout Compos10
Commandes de messages disponibles partout Testeu10
Commandes de messages disponibles partout Membre15
Commandes de messages disponibles partout Partag10
Commandes de messages disponibles partout Projet10
Commandes de messages disponibles partout Projet16
Commandes de messages disponibles partout Riche_10
Commandes de messages disponibles partout Travai10
Commandes de messages disponibles partout Collec10
Commandes de messages disponibles partout Collec11
Commandes de messages disponibles partout Collec12
Commandes de messages disponibles partout Collec13
Commandes de messages disponibles partout Connar10


Commandes de messages disponibles partout Empty
MessageSujet: Re: Commandes de messages disponibles partout   Commandes de messages disponibles partout EmptyDim 17 Aoû 2014 - 11:37

Merci du partage !
Revenir en haut Aller en bas
https://www.ledijonshow.fr https://twitter.com/EleKoptes
City Hunter
Administrateur
Administrateur
City Hunter

Masculin
Messages postés : 6524
Date d'inscription : 25/05/2011
Jauge LPC :
Commandes de messages disponibles partout 891527140040 / 10040 / 100Commandes de messages disponibles partout 8915271400

Commandes de messages disponibles partout Staffe10
Commandes de messages disponibles partout Mappeu10
Commandes de messages disponibles partout Membre15
Commandes de messages disponibles partout Testeu10
Commandes de messages disponibles partout Promot10
Commandes de messages disponibles partout Projet10
Commandes de messages disponibles partout Projet16
Commandes de messages disponibles partout Riche_10
Commandes de messages disponibles partout Travai10
Commandes de messages disponibles partout Collec10
Commandes de messages disponibles partout Collec11
Commandes de messages disponibles partout Collec12
Commandes de messages disponibles partout Collec13
Commandes de messages disponibles partout Pandac10
Commandes de messages disponibles partout 10000011


Commandes de messages disponibles partout Empty
MessageSujet: Re: Commandes de messages disponibles partout   Commandes de messages disponibles partout EmptyJeu 21 Aoû 2014 - 14:18

Merci tructruc ^^
Revenir en haut Aller en bas
Contenu sponsorisé




Commandes de messages disponibles partout Empty
MessageSujet: Re: Commandes de messages disponibles partout   Commandes de messages disponibles partout Empty

Revenir en haut Aller en bas
 
Commandes de messages disponibles partout
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Export messages text
» [XP] Commandes individuelles
» Permissions chiées : Personnage qui passe partout, oui, comme le nain.
» [VX]Icons dans les Commandes.
» Explications des principale commandes event

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Le Palais Créatif :: ~ PARTAGE ~ :: Scripts et plugins :: RPG Maker VXAce :: Autres-
Sauter vers: