Terra RPGXP
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.


Bienvenue dans la Terre du RPG Making!
 
AccueilRechercherDernières imagesS'enregistrerStatsConnexion
Le deal à ne pas rater :
Réassort du coffret Pokémon 151 Électhor-ex : où l’acheter ?
Voir le deal

 

 Advanced Message Script - R4

Aller en bas 
AuteurMessage
Invité
Invité
avatar



Advanced Message Script - R4 Empty
MessageSujet: Advanced Message Script - R4   Advanced Message Script - R4 Icon_minitimeMer 13 Déc - 22:11

Manuel d'utilisation

Chacune de ces commande est à utiliser dans les messages.

Change temporairement la couleur du texte (ColorID)
Citation :
\c[ColorID]
A mettre l'ID de la couleur de votre choix. Toutes les couleurs sont codées dans le script Window_Base , dès la ligne #39, 0 est blanc.


Changer la couleur du texte temporairement (Hexadecimal)
Citation :
\c[#000000]
Entrer un code couleur en Hexadécimal comme en HTML. Par exemple:
#000000 = noir
#FFFFFF = blanc


Montre la fenêtre affichant l'argent possédé
Citation :
\G
Cela montre une fenêtre dans le coin haut droit de l'écran, avec la quantité d'argent que le joueur possède.


Montrer le nom d'un héros
Citation :
\n[HeroID]
Utiliser l'ID d'un héros pour le nom que vous voulez afficher dans la boite de message.


Montrer le nom d'un monstre
Citation :
\m[MonsterID]
Utiliser l'ID du monstre pour afficher son nom dans la boite de message.


Montrer le prix d'un objet
Citation :
\Price[ItemID]
Servez vous de l'ID de l'objet dont vous voulez affichez le prix dans la boite de dialogue.


Montrer le nom de la map actuelle
Citation :
\Map
Cela montrera le nom de la map sur laquelle vous êtes actuellement.


Montrer une image de visage, dans le message
Citation :
\f[FaceName]
FaceName doit être le nom du fichier image, se trouvant dans le dossier "Graphics\Pictures" de votre projet RPG Maker XP. Le fichier doit être un PNG de 96X96 pixels. Vous n'avez pas besoin d'écrire l'extension du fichier.


Montrer le nom de classe du personnage
Citation :
\Class[HeroID]
Utiliser l'ID du héros dont vous voulez afficher la classe.


Montrer les noms des variables, des objets, des armes, des armures ou des techniques
Citation :
\v[xID]
Vous devez remplacer le x par la première lettre de ce que vous voulez afficher, comme ceci:
Variable = Rien à écrire, utiliser simplement: \v[VariableID] ( \v[50] affiche le nom de la variable n°50)
Items = i + itemID --> \v[iID] ( \v[i50] affiche le nom de l'objet n°50)
Armors = a + armorID --> \v[aID] ( \v[a50] affiche le nom de l'armure n°50)
Weapons = w + weaponID --> \v[wID] ( \v[w50] affiche le nom de l'arme n°50)
Skills = s + skillID --> \v[sID] ( \v[s50] affiche le nom de la technique n°50)


Montrer le nom ou d'autre info dans une boite de nom
Citation :
\Name[text]
Utilisez ceci pour afficher une boite de nom, au-dessus de la boite de message, qui contiendra le texte spécifié. Vous pouvez aussi utiliser des variables ou d'autres commandes comme "montrer le nom du héros" dans la boite de nom. Soient les exemples suivant:
\Name[\v[12]] --> Montrera la valeur de la variable d'ID# 12 dans la boite de nom.
\Name[Corwin] --> Affichera "Corwin" dans la boite de nom.
\Name[\n[1]] --> Affichera le nom du héros d'ID# 1 dans la boite de nom.


Modifier l'opacité du texte
Citation :
\o[Opacité]
Utiliser ceci pour modifier l'opacité du texte affiché dans la boite de dialogue. Entrer un nombre entre 0 et 255, où 255 est complètement opaque, et 0 complètement transparent.


Modifier la vitesse d'affichage du texte
Citation :
\s[vitesse]
A utiliser pour modifier la vitesse d'affichage du texte dans la boite de dialogue. Entrer un nombre entre 1 et 19, où 19 est la plus lente.


Modifier la taille du texte
Citation :
\h[taille]
Utiliser ceci pour modifier la taille du texte dans la boite de message. Entrer un nombre entre 6 et 32, où 32 est la plus grande.


Montrer la boite de message au dessus du joueur, ou d'évènement
Citation :
\p[Option]
Utiliser ceci pour afficher la boite de message au dessus du héros ou d'un évènement présent sur la map. Utiliser les options suivantes:

\p[Event ID]
\P[0]
\p[-1]

En utilisant "\p[Event ID]" cela affichera la fenêtre au dessus de l'évènement spécifié par son ID.
Utiliser "\p[0]" affichera la fenêtre au dessus du joueur.
Et "\p[-1]" créera une fenêtre sans fond ni bord (donc complètement transparente).


Ajouter des pauses et autres commandes similaires
Citation :
\| --> Pause d'une seconde
\. --> Pause d'un quart de seconde
\~ --> Ferme la fenêtre automatiquement à la dernière lettre affichée
\! --> Pause en attente d'un appui sur une touche
\\ --> Affichera le caractère 'back slash' -> \



Régler l'affichage lettre par lettre sur ON ou OFF temporairement
Citation :
\< --> ON -> actif
\> --> OFF -> inactif



Changer la police dans un dialogue (permanent)
Citation :
\t[NomPolice]
NomPolice doit être un .TTF du dossier Windows\Fonts et doit être sensible à la casse (Majuscule et minuscule). Ce changement est permanent. Donc rappelez vous d'utiliser une autre commande pour changer ce que vous voulez.


Jouer un son quand les lettres sont affichées (permanent)
Citation :
\a[NomDuFichierSon]
Le fichier doit se trouver dans le dossier Audio\SE. Souvenez vous de régler cet effet sur OFF quand vous n'en aurez plus besoin avec ceci \a[] Laisser les crochets vide, ou sinon un autre son sera joué dans toutes les fenêtres.


Montrer du texte en exposant
Citation :
\[First]second
Le "FIRST" sera à une taille normal, et "SECOND" sera en petit,un peu plus haut sur la ligne, exemple 3² = \[3]2 .


Activer/Désactiver le bouton d'affichage rapide (permanent)
Citation :
\%
Utiliser cette commande pour changer sur activé ou désactivé, l'affichage rapide. C'est utile si vous voulez contrôler le flux de certaines histoire et que vous ne voulez pas que le joueur puisse zapper les message par lui même. Attention, cela est permanent, ce qui signifie, qu'une fois désactivé, cela restera comme çà. Donc penser à le refaire une fois pour la réactiver pour le reste du jeu.


Modifier la couleur des boites de nom (permanent)
Citation :
\z[CouleurID]
Comme la commande normale \c[ColorID] - Mais cette fois cela définira la couleur utilisée dans la boite de nom; et cela de manière permanente. Donc pensez à la refaire pour revenir à la couleur d'origine.


Changer la couleur des textes dans la boite de dialogue (permanent)
Citation :
\Color[ColorID]


Modifications des autres aspects du script


Dans les premières lignes du scripts, il peut être modifié plusieurs choses
Revenir en haut Aller en bas
Invité
Invité
avatar



Advanced Message Script - R4 Empty
MessageSujet: Re: Advanced Message Script - R4   Advanced Message Script - R4 Icon_minitimeMer 13 Déc - 22:44

Voici le script:

Code:
#===================================================
# ■ AMS - Advanced Message Script - R4 [Update #2]
#===================================================
# For more infos and update, visit:
# www.dubealex.com (Creation Asylum)
#
# Edited, Fixed and Enhanced by: Dubealex
# Original Script Core by: XRXS Scripter (Jap Dudes)
# HTML Hexadecimal color feature from: Phylomorphis
#
# Special Thanks:
# Rabu: For enabling the Show Face feature in an encrypted project
#
# To found all my new features, search the following:  #NEW
# To configure the button to skip the dialog, search:  #SKIP_TEXT_CODE
#
# May 18, 2005

=begin
www.dubealex.com (Creation Asylum)

Instruction Manual:

Each of those "commands" are to be used in your message events.

 Change the text color temporarly (Default):

\c[ColorID]

Insert the color ID of your choice. All colors are coded in Window_Base starting at line #39, 0 is white.

 Change the text color temporarly (Hexadecimal):

\c[#000000]

Enter an Hexadecimal color code as in HTML in there. For example:

#000000 = black
#FFFFFF = white

 Show the gold window:

\G

This will show a gold window in the top-right corner of the screen, with the amount of gold the player have in possesion.

 Show the hero's name:

\n[HeroID]

Use the hero ID of the hero's name you want to display in the message box.

 Show the monter's name:

\m[MonsterID]

Use the monster ID of the monster's name you want to display in the message box. This function was added by Dubealex.

 Show an item's price:

\Price[ItemID]

Use the item ID of the item's price you want to display in the message box. This function was added by Dubealex.

 Show the current map name:

\Map

This will show the name of the map you are currently on. This function was added by Dubealex.

 Show a face graphic in your message box:

\f[FaceName]

FaceName must be the filename of a graphic file found in the directoyr Graphics\Pictures of your RPG Maker XP project. The file must be a PNG of 96X96 pixels. You do not need to write the file extention.

 Show the class name of a character:

\Class[HeroID]

Use the hero ID of the hero's class name you want to display in the message box. This function was added by Dubealex.

 Show variables, items, weapons, armor and skill names:

\v[xID]

You must replace the x by the first lettter of what you want to modify, it goes as follows:

Variable = Do not write anything, use the standard \v[VariableID]
Items = i + itemID --> \v[iID]
Armors = a + armorID --> \v[aID]
Weapons = w + weaponID --> \v[wID]
Skills = s + skillID --> \v[sID]

 Show a name or other info in a name box:

\Name[text]

Use this to show a name box above the message box that will contains the text you specified. You can also use variable and other commands such as "Show hero name" in that name box. As the following example:

\Name[\v[12]] --> Will show the value of variable ID# 12 in the name box.
\Name[Dubealex] --> Will show "Dubealex" in the name box.
\Name[\n[1]] --> Will show the name of hero ID# 1 in the name box.

 Modify the text opacity:

\o[Opacity]

Use this to modify the opacity of the text in the message box. Enter a number between 0 and 255, where 255 is fully opaque and 0 is fully transparent.

 Modify the text speed:

\s[Speed]

Use this to modify the speed of the text in the message box. Enter a number between 1 and 19, where 19 is the slowest.

 Modify the text size:

\h[Size]

Use this to modify the size of the text in the message box. Enter a number between 6 and 32, where 32 is the biggest.

 Show the message box above player or events:

\p[Option]

Use this to set the window to appear whether above the player or any event present in your map. Use the following options:

\p[Event ID]
\P[0]
\p[-1]

Using "\p[Event ID]" will put the window on top of the specified event ID.
Using "\p[0]" will put the window on top of the player.
Using "\p[-1]" will make a window without background and without borders.

 Add wait in message and other commands like that:

\| --> Wait for 1 second
\. --> Wait for .25 second
\~ --> Auto close window at last letter
\! --> Wait for key input from the player
\\ --> Will show the backslash \ character

 Set the letter by letter ON/OFF temporarly:

\< --> Will set it ON
\> --> Will set it OFF

 Change the font in a message box (permanent):

\t[FontName]

FontName must be a .TTF found in Windows\Fonts and must be case sensitive. The changes made to the font will be permanent. So remember to do another command to revert it to anything you want. This script now works with the parenthesis, new in R3... So no worry about that ! It's safe now. This feature was added by Dubealex.

 Play an SE as the letter are shown (permanent):

\a[FileName]

File must be in directory Audio\SE
Remember to set that effect OFF when you dont need it anymore using \a[] Leaving the brackets empty, or else the SE will be heard on all window from this point on.

 Display text as a superscript:

\[First]second

The "FIRST" will be at normal size, and "SECOND" will be a little bit higher on the line, as a superscript.

 Allow / Disallow Text Skip button (permanent):

\%

Use this command to toggle the text skip button to whether enabled or disabled. It's useful if you want to control the flow of some stories and you don't want the player to be able to skip the text by himself. Remember that the changes are permanent, meaning that if you use it once to disable the text skip, it will stay like that. Remember to do it once again to revert the text skip to enabled for the rest of the game. Feature added by Dubealex.

 Modify the text color of the name box (permanent):

\z[ColorID]

Use this as you use the normal color command \c[ColorID] - But this time it will set the color used in the name box; and the changes will be permanent. So remember to do it once again to change the color back. Feature added by Dubealex.

 Change the color of the text in message box permanentatly:

\Color[ColorID]

Use this as you use the normal color command \c[ColorID] - But this time it will set the color used in the message box permanently; meaning you wont have to use a color command on each message event from now on. Remember to do another command like this to revert the color to something you want. Feature added by Dubealex.

 Customize other aspects of the AMS:

In the first lines of the AMS, you can customize things.

Those lines help you configure the default you will use in the AMS; so you can now specify the font name and size for both message box and name box independatly, and set their windowskin; which will not affect any other windows as the menus.

You can also set the position and size of the name box, just play with the values and test it. The default are written in the comments aside each line so you cannot "mess" the script up.

I also created an object named $ams that hold all those values for you, and it saves them in your save files, and load them when you load a game. This means that if you changed the font in the middle of your game, save the game, and reload the game, the font will still be the one you specified in the middle of your game -- This would not have worked in any other message script.

You can also access those settings to read or write to them in your game using the ATTR_ACCESSOR I created.

=end


#===================================================

LETTER_BY_LETTER_MODE = true  #Set the letter by letter mode ON/OFF       

#===================================================
# ▼ CLASS AMS Begins
#===================================================
class AMS
 
 attr_accessor :name_box_x_offset
 attr_accessor :name_box_y_offset
 attr_accessor :font_type
 attr_accessor :name_font_type
 attr_accessor :font_size
 attr_accessor :name_font_size
 attr_accessor :message_box_opacity
 attr_accessor :name_box_skin
 attr_accessor :name_box_text_color
 attr_accessor :message_box_text_color
 attr_accessor :message_box_skin
 attr_accessor :name_box_width
 attr_accessor :name_box_height
 attr_accessor :message_width
 attr_accessor :message_height
 attr_accessor :message_x
 attr_accessor :message_y_bottom
 attr_accessor :message_y_middle
 attr_accessor :message_y_top
 attr_accessor :event_message_x_ofset
 attr_accessor :event_message_y_ofset
 
def initialize
 
 @name_box_x_offset = 0      #Choose the X axis offset of the name bos. default= 0
 @name_box_y_offset = -10    #Choose the Y axis offset of the name bos. default= -10
 @name_box_width = 8          #Choose the width of the Name Box. default= 8
 @name_box_height = 26        #Choose the height of the Name Box. default= 26
 
 @font_type = "Arial"          #Choose the Font Name (Case Sensitive) for message box
 @name_font_type = "Arial" #Choose the Font Name (Case Sensitive) for Name Box
 @font_size = 24                      #Choose the default Font Size for message box text
 @name_font_size = 24            #Choose the deafault Font Size for Name Box text
 @name_box_text_color=0        #Choose the Text Color of the Name Box
 @message_box_text_color=0  #Choose the Text Color of the Message Box
 
 @message_box_opacity = 160            #Choose the opacity of the message window. Default=160
 @message_box_skin = "001-Blue01"  #Choose the WindowSkin for the Message Box
 @name_box_skin = "001-Blue01"      #Choose the WindowSkin for the Name Box
 
 @message_width = 420          #Choose the width size of the message box. Default=480
 @message_height = 160        #Choose the height size of the message box. Default=160
 @message_x = 120                  #Choose the X position of the message box. Default=80
 @message_y_bottom = 304    #Choose the Y bottom position of the message box. Default=304
 @message_y_middle = 160    #Choose the Y middle position of the message box. Default=160
 @message_y_top = 16          #Choose the Y top position of the message box. Default=16
 
 @event_message_x_ofset = 0  #Choose the X position offset of the event message. Default=0
 @event_message_y_ofset = 48  #Choose the Y position offset of the event message. Default=48
 
end
end
#===================================================
# ▲ CLASS AMS Ends
#===================================================


#===================================================
# ▼ Class Window_Message Begins
#===================================================
class Window_Message < Window_Selectable 

alias xrxs9_initialize initialize

def initialize

@alex_skip = false

xrxs9_initialize

if $soundname_on_speak == nil then
  $soundname_on_speak = ""
end

$gaiji_file = "./Graphics/Gaiji/sample.png"

if FileTest.exist?($gaiji_file)
  @gaiji_cache = Bitmap.new($gaiji_file)
else
  @gaigi_cache = nil
end
@opacity_text_buf = Bitmap.new(32, 32)
end


#--------------------------------------------------------------------------

alias xrxs9_terminate_message terminate_message

def terminate_message
 
if @name_window_frame != nil
  @name_window_frame.dispose
  @name_window_frame = nil
end

if @name_window_text  != nil
  @name_window_text.dispose
  @name_window_text  = nil
end
xrxs9_terminate_message
end

Revenir en haut Aller en bas
Invité
Invité
avatar



Advanced Message Script - R4 Empty
MessageSujet: Re: Advanced Message Script - R4   Advanced Message Script - R4 Icon_minitimeMer 13 Déc - 22:46

La suite de ce script:
Code:

#--------------------------------------------------------------------------

def refresh
 
self.contents.clear
self.contents.font.color = text_color($ams.message_box_text_color)
self.contents.font.name = $ams.font_type
self.contents.font.size = $ams.font_size
self.windowskin = RPG::Cache.windowskin($ams.message_box_skin)
@x = @y = @max_x = @max_y = @indent = @lines = 0
@face_indent = 0
@opacity = 255
@cursor_width = 0
@write_speed = 0
@write_wait = 0
@mid_stop = false
@face_file = nil
@popchar = -2

if $game_temp.choice_start == 0
  @x = 8
end

if $game_temp.message_text != nil
  @now_text = $game_temp.message_text
  if (/\A\\[Ff]\[(.+?)\]/.match(@now_text))!=nil then
    @face_file = $1 + ".png"
    @x = @face_indent = 128
    if FileTest.exist?("Graphics/Pictures/" + $1 + ".png")
      self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))
    end
    @now_text.gsub!(/\\[Ff]\[(.*?)\]/) { "" }
  end

  begin
  last_text = @now_text.clone
  @now_text.gsub!(/\\[Vv]\[([IiWwAaSs]?)([0-9]+)\]/) { convart_value($1, $2.to_i) }
  end until @now_text == last_text
  @now_text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
    $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
  end
 
  #NEW
  #Dubealex's Stop Skip Text ON-OFF
  @now_text.gsub!(/\\[%]/) { "\100" }
  #End new command
 
  #NEW
  #Dubealex's Show Monster Name Feature
  @now_text.gsub!(/\\[Mm]\[([0-9]+)\]/) do
  $data_enemies[$1.to_i] != nil ? $data_enemies[$1.to_i].name : ""
  end
  #End new command
 
  #NEW
  #Dubealex's Show Item Price Feature
  @now_text.gsub!(/\\[Pp]rice\[([0-9]+)\]/) do
  $data_items[$1.to_i] != nil ? $data_items[$1.to_i].price : ""
  end
  #End new command
 
  #NEW
  #Dubealex's Show Hero Class Name Feature
  @now_text.gsub!(/\\[Cc]lass\[([0-9]+)\]/) do
  $data_classes[$data_actors[$1.to_i].class_id] != nil ? $data_classes[$data_actors[$1.to_i].class_id].name : ""
  end
  #End new command
 
  #NEW
  #Dubealex's Show Current Map Name Feature
  @now_text.gsub!(/\\[Mm]ap/) do
  $game_map.name    != nil ? $game_map.name    : ""
  end
  #End new command
 
  #NEW
  #Dubealex's Choose Name Box Text Color
  @now_text.gsub!(/\\[Zz]\[([0-9]+)\]/) do
  $ams.name_box_text_color=$1.to_i
  @now_text.sub!(/\\[Zz]\[([0-9]+)\]/) { "" }
  end
  #End new command
 
  name_window_set = false
  if (/\\[Nn]ame\[(.+?)\]/.match(@now_text)) != nil
    name_window_set = true
    name_text = $1
    @now_text.sub!(/\\[Nn]ame\[(.*?)\]/) { "" }
  end

  if (/\\[Pp]\[([-1,0-9]+)\]/.match(@now_text))!=nil then
    @popchar = $1.to_i
    if @popchar == -1
      @x = @indent = 48
      @y = 4
    end
    @now_text.gsub!(/\\[Pp]\[([-1,0-9]+)\]/) { "" }
  end

  @max_choice_x = 0
  if @popchar >= 0
    @text_save = @now_text.clone
    @max_x = 0
    @max_y = 4
    for i in 0..3
      line = @now_text.split(/\n/)[3-i]
      @max_y -= 1 if line == nil and @max_y <= 4-i
      next if line == nil
      line.gsub!(/\\\w\[(\w+)\]/) { "" }
      cx = contents.text_size(line).width
      @max_x = cx if cx > @max_x
      if i >= $game_temp.choice_start
        @max_choice_x = cx if cx > @max_choice_x
      end
    end
    self.width = @max_x + 32 + @face_indent
    self.height = (@max_y - 1) * 32 + 64
    @max_choice_x -= 68
    @max_choice_x -= @face_indent*216/128
  else
    @max_x = self.width - 32 - @face_indent
    for i in 0..3
      line = @now_text.split(/\n/)[i]
      next if line == nil
      line.gsub!(/\\\w\[(\w+)\]/) { "" }
      cx = contents.text_size(line).width
      if i >= $game_temp.choice_start
        @max_choice_x = cx if cx > @max_choice_x
      end
    end
    @max_choice_x += 8
  end
  @cursor_width = 0
  @now_text.gsub!(/\\\\/) { "\000" }
  @now_text.gsub!(/\\[Cc]\[([0123456789ABCDEF#]+)\]/) { "\001[#{$1}]" }
  @now_text.gsub!(/\\[Gg]/) { "\002" }
  @now_text.gsub!(/\\[Ss]\[([0-9]+)\]/) { "\003[#{$1}]" }
  @now_text.gsub!(/\\[Aa]\[(.*?)\]/) { "\004[#{$1}]" }
 
  #NEW
  #Dubealex's Permanent Color Change
  @now_text.gsub!(/\\[Cc]olor\[([0-9]+)\]/) do
    $ams.message_box_text_color= $1.to_i
    @now_text.sub!(/\\[Cc]\[([0-9]+)\]/) { "" }
    end
  #End of new command
 
  #NEW
  #Dubealex's Font Change Feature
    @now_text.gsub(/\\[Tt]\[(.*?)\]/) do
    buftxt = $1.to_s
    $ams.font_type = buftxt
    @now_text.sub!(/\\[Tt]\[(.*?)\]/) { "" }
    end
  #End of new command
 
  @now_text.gsub!(/\\[.]/) { "\005" }
  @now_text.gsub!(/\\[|]/) { "\006" }
  @now_text.gsub!(/\\[>]/) { "\016" }
  @now_text.gsub!(/\\[<]/) { "\017" }
  @now_text.gsub!(/\\[!]/) { "\020" }
  @now_text.gsub!(/\\[~]/) { "\021" }
  @now_text.gsub!(/\\[Ee]\[([0-9]+)\]/) { "\022[#{$1}]" }
  @now_text.gsub!(/\\[Ii]/) { "\023" }
  @now_text.gsub!(/\\[Oo]\[([0-9]+)\]/) { "\024[#{$1}]" }
  @now_text.gsub!(/\\[Hh]\[([0-9]+)\]/) { "\025[#{$1}]" }
  @now_text.gsub!(/\\[Bb]\[([0-9]+)\]/) { "\026[#{$1}]" }
  @now_text.gsub!(/\\[Rr]\[(.*?)\]/) { "\027[#{$1}]" }
 
  reset_window
 
  if name_window_set
    color=$ams.name_box_text_color
    off_x =  $ams.name_box_x_offset
    off_y =  $ams.name_box_y_offset
    #space = 2
    space = 20
    x = self.x + off_x - space / 2
    y = self.y + off_y - space / 2
    w = self.contents.text_size(name_text).width + $ams.name_box_width + space + 20 #+20
    h = $ams.name_box_height + space
    @name_window_frame = Window_Frame.new(x, y, w, h)
    @name_window_frame.z = self.z + 1
    x = self.x + off_x + 4 +6 # +6
    y = self.y + off_y
    @name_window_text  = Air_Text.new(x, y, name_text, color)
    @name_window_text.z = self.z + 2
  end
end

reset_window

if $game_temp.choice_max > 0
  @item_max = $game_temp.choice_max
  self.active = true
  self.index = 0
end

if $game_temp.num_input_variable_id > 0
  digits_max = $game_temp.num_input_digits_max
  number = $game_variables[$game_temp.num_input_variable_id]
  @input_number_window = Window_InputNumber.new(digits_max)
  @input_number_window.number = number
  @input_number_window.x = self.x + 8
  @input_number_window.y = self.y + $game_temp.num_input_start * 32
end
end
#--------------------------------------------------------------------------

def update
 
super

if @fade_in
  self.contents_opacity += 24
  if @input_number_window != nil
    @input_number_window.contents_opacity += 24
  end
  if self.contents_opacity == 255
    @fade_in = false
  end
  return
end
@now_text = nil if @now_text == ""

if @now_text != nil and @mid_stop == false
  if @write_wait > 0
    @write_wait -= 1
    return
  end
  text_not_skip = LETTER_BY_LETTER_MODE
  while true
    @max_x = @x if @max_x < @x
    @max_y = @y if @max_y < @y
    if (c = @now_text.slice!(/./m)) != nil
      if c == "\000"
        c = "\\"
      end
   
      if c == "\001"
        @now_text.sub!(/\[([0123456789ABCDEF#]+)\]/, "")
        temp_color = $1
        color = temp_color.to_i
        leading_x = temp_color.to_s.slice!(/./m)
        if leading_x == "#"
          self.contents.font.color = hex_color(temp_color)
          next
        end
        if color >= 0 and color <= 7
          self.contents.font.color = text_color(color)
        end
        next
      end

      if c == "\002"
        if @gold_window == nil and @popchar <= 0
          @gold_window = Window_Gold.new
          @gold_window.x = 560 - @gold_window.width
          if $game_temp.in_battle
            @gold_window.y = 192
          else
            @gold_window.y = self.y >= 128 ? 32 : 384
          end
          @gold_window.opacity = self.opacity
          @gold_window.back_opacity = self.back_opacity
        end
        c = ""
      end

      if c == "\003"
        @now_text.sub!(/\[([0-9]+)\]/, "")
        speed = $1.to_i
        if speed >= 0 and speed <= 19
          @write_speed = speed
        end
        c = ""
      end

      if c == "\004"
        @now_text.sub!(/\[(.*?)\]/, "")
        buftxt = $1.dup.to_s
        if buftxt.match(/\//) == nil and buftxt != "" then
          $soundname_on_speak = "Audio/SE/" + buftxt
        else
          $soundname_on_speak = buftxt.dup
        end
        c = ""
      elsif c == "\004"
        c = ""
      end
   
      if c == "\005"
        @write_wait += 5
        c = ""
      end
   
      if c == "\006"
        @write_wait += 20
        c = ""
      end
   
      if c == "\016"
        text_not_skip = false
        c = ""
      end
   
      if c == "\017"
        text_not_skip = true
        c = ""
      end
   
      if c == "\020"
        @mid_stop = true
        c = ""
      end
   
      if c == "\021"
        terminate_message
        return
      end
   
      if c == "\023"
        @indent = @x
        c = ""
      end

      if c == "\024"
        @now_text.sub!(/\[([0-9]+)\]/, "")
        @opacity = $1.to_i
        color = self.contents.font.color
        self.contents.font.name = $ams.font_type
        self.contents.font.size = $ams.font_size
        self.contents.font.color = Color.new(color.red, color.green, color.blue, color.alpha * @opacity / 255)
        c = ""
      end

      if c == "\025"
        @now_text.sub!(/\[([0-9]+)\]/, "")
        self.contents.font.size = [[$1.to_i, 6].max, 32].min
        c = ""
      end

      if c == "\026"
        @now_text.sub!(/\[([0-9]+)\]/, "")
        @x += $1.to_i
        c = ""
      end
   
      if c == "\027"
        @now_text.sub!(/\[(.*?)\]/, "")
        @x += ruby_draw_text(self.contents, @x, @y * line_height + (line_height - self.contents.font.size), $1, @opacity)
        if $soundname_on_speak != ""
          Audio.se_play($soundname_on_speak)
        end
      c = ""
      end

      if c == "\030"
        @now_text.sub!(/\[(.*?)\]/, "")
        self.contents.blt(@x , @y * line_height + 8, RPG::Cache.icon($1), Rect.new(0, 0, 24, 24))
        if $soundname_on_speak != ""
          Audio.se_play($soundname_on_speak)
        end
        @x += 24
        c = ""
      end

      if c == "\n"
        @lines += 1
        @y += 1
        @x = 0 + @indent + @face_indent
        if @lines >= $game_temp.choice_start
          @x = 8 + @indent + @face_indent
          @cursor_width = @max_choice_x
        end
        c = ""
      end
   
      if c == "\022"
        @now_text.sub!(/\[([0-9]+)\]/, "")
        @x += gaiji_draw(4 + @x, @y * line_height + (line_height - self.contents.font.size), $1.to_i)
        c = ""
      end
   
      #NEW
      #Dubealex's Text Skip On/OFF Command
      if c == "\100"
          if @alex_skip==false
            @alex_skip=true
          else
            @alex_skip=false
          end
        c = ""
      end
      #end of new command
                                 
      if c != ""
        self.contents.draw_text(0+@x, 32 * @y, 40, 32, c)
        @x += self.contents.text_size(c).width
        if $soundname_on_speak != "" then
          Audio.se_play($soundname_on_speak)
        end
      end
   
#SKIP_TEXT_CODE

# B = Escape, 0 (On The NumPad), X
# C = Enter, Space Bar and C
# A = Shift, Z

  if Input.press?(Input::C) # <-- Change the value on that line
    if @alex_skip==false   
    text_not_skip = false
    end
      end
    else
      text_not_skip = true
      break
    end
 
    if text_not_skip
      break
    end
  end
  @write_wait += @write_speed
  return
end

if @input_number_window != nil
  @input_number_window.update
  if Input.trigger?(Input::C)
    $game_system.se_play($data_system.decision_se)
    $game_variables[$game_temp.num_input_variable_id] =
      @input_number_window.number
    $game_map.need_refresh = true
    @input_number_window.dispose
    @input_number_window = nil
    terminate_message
  end
  return
end

if @contents_showing
  if $game_temp.choice_max == 0
    self.pause = true
  end
 
  if Input.trigger?(Input::B)
    if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
      $game_system.se_play($data_system.cancel_se)
      $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
      terminate_message
    end
  end
 
  if Input.trigger?(Input::C)
    if $game_temp.choice_max > 0
      $game_system.se_play($data_system.decision_se)
      $game_temp.choice_proc.call(self.index)
    end
    if @mid_stop
      @mid_stop = false
      return
    else
      terminate_message
    end
  end
  return
end

if @fade_out == false and $game_temp.message_text != nil
  @contents_showing = true
  $game_temp.message_window_showing = true
  refresh
  Graphics.frame_reset
  self.visible = true
  self.contents_opacity = 0
  if @input_number_window != nil
    @input_number_window.contents_opacity = 0
  end
  @fade_in = true
  return
end

if self.visible
  @fade_out = true
  self.opacity -= 48
  if self.opacity == 0
    self.visible = false
    @fade_out = false
    $game_temp.message_window_showing = false
  end
  return
end
end

Revenir en haut Aller en bas
Invité
Invité
avatar



Advanced Message Script - R4 Empty
MessageSujet: Re: Advanced Message Script - R4   Advanced Message Script - R4 Icon_minitimeMer 13 Déc - 22:50

Et pour finir...la fin:

Code:
#--------------------------------------------------------------------------

def get_character(parameter)

case parameter
when 0
  return $game_player
else
  events = $game_map.events
  return events == nil ? nil : events[parameter]
end
end

#--------------------------------------------------------------------------

def reset_window

#MESSAGE_SIZE
#MESSAGE_POSITION

if @popchar >= 0
  events = $game_map.events
  if events != nil
    character = get_character(@popchar)
    x = [[character.screen_x -  $ams.event_message_x_ofset - self.width / 2, 4].max, 636 - self.width].min
    y = [[character.screen_y - $ams.event_message_y_ofset - self.height, 4].max, 476 - self.height].min
    self.x = x
    self.y = y
  end
elsif @popchar == -1
  self.x = -4
  self.y = -4
  self.width = 648
  self.height = 488
else
  if $game_temp.in_battle
    self.y = 16
  else
    case $game_system.message_position
    when 0
      self.y = $ams.message_y_top
    when 1
      self.y = $ams.message_y_middle
    when 2
      self.y = $ams.message_y_bottom
    end
    self.x = $ams.message_x
    if @face_file == nil
      self.width = $ams.message_width
      self.x = $ams.message_x
    else
      if self.width <= 600
#23.12        self.width = 600
        self.width = 530
        self.x -=60
      end
    end
    self.height = $ams.message_height
  end
end
self.contents = Bitmap.new(self.width - 32, self.height - 32)

self.contents.font.color = text_color($ams.message_box_text_color)
self.contents.font.name = $ams.font_type
 self.contents.font.size = $ams.font_size
if @face_file != nil
  self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))
end
if @popchar == -1
  self.opacity = 255
  self.back_opacity = 0
elsif $game_system.message_frame == 0
  self.opacity = 255
  self.back_opacity = $ams.message_box_opacity
else
  self.opacity = 0
  self.back_opacity = $ams.message_box_opacity
end
end

#--------------------------------------------------------------------------

def gaiji_draw(x, y, num)

if @gaiji_cache == nil
  return 0
else
  if @gaiji_cache.width < num * 24
    return 0
  end

  if self.contents.font.size >= 20 and self.contents.font.size <= 24
    size = 24
  else
    size = self.contents.font.size * 100 * 24 / 2200
  end

  self.contents.stretch_blt(Rect.new(x, y, size, size), @gaiji_cache, Rect.new(num * 24, 0, 24, 24))

  if $soundname_on_speak != "" then
    Audio.se_play($soundname_on_speak)
  end
  return size
end
end

#--------------------------------------------------------------------------

def line_height
return 32

if self.contents.font.size >= 20 and self.contents.font.size <= 24
  return 32
else
  return self.contents.font.size * 15 / 10
end
end

#--------------------------------------------------------------------------

def ruby_draw_text(target, x, y, str,opacity)

sizeback = target.font.size
target.font.size * 3 / 2 > 32 ? rubysize = 32 - target.font.size : rubysize = target.font.size / 2
rubysize = [rubysize, 6].max
opacity = [[opacity, 0].max, 255].min
split_s = str.split(/,/)
split_s[0] == nil ? split_s[0] = "" : nil
split_s[1] == nil ? split_s[1] = "" : nil

height = sizeback + rubysize
width  = target.text_size(split_s[0]).width

target.font.size = rubysize
ruby_width = target.text_size(split_s[1]).width
target.font.size = sizeback

buf_width = [target.text_size(split_s[0]).width, ruby_width].max

width - ruby_width != 0 ? sub_x = (width - ruby_width) / 2 : sub_x = 0

if opacity == 255
  target.font.size = rubysize
  target.draw_text(x + sub_x, y - target.font.size, target.text_size(split_s[1]).width, target.font.size, split_s[1])
  target.font.size = sizeback
  target.draw_text(x, y, width, target.font.size, split_s[0])
  return width
else
  if @opacity_text_buf.width < buf_width or @opacity_text_buf.height < height
    @opacity_text_buf.dispose
    @opacity_text_buf = Bitmap.new(buf_width, height)
  else
    @opacity_text_buf.clear
  end
  @opacity_text_buf.font.size = rubysize
  @opacity_text_buf.draw_text(0 , 0, buf_width, rubysize, split_s[1], 1)
  @opacity_text_buf.font.size = sizeback
  @opacity_text_buf.draw_text(0 , rubysize, buf_width, sizeback, split_s[0], 1)
  if sub_x >= 0
    target.blt(x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity)
  else
    target.blt(x + sub_x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity)
  end
  return width
end
end

#--------------------------------------------------------------------------

def convart_value(option, index)
option == nil ? option = "" : nil
option.downcase!

case option
when "i"
  unless $data_items[index].name == nil
    r = sprintf("\030[%s]%s", $data_items[index].icon_name, $data_items[index].name)
  end
when "w"
  unless $data_weapons[index].name == nil
    r = sprintf("\030[%s]%s", $data_weapons[index].icon_name, $data_weapons[index].name)
  end
when "a"
  unless $data_armors[index].name == nil
    r = sprintf("\030[%s]%s", $data_armors[index].icon_name, $data_armors[index].name)
  end
when "s"
  unless $data_skills[index].name == nil
    r = sprintf("\030[%s]%s", $data_skills[index].icon_name, $data_skills[index].name)
  end
else
  r = $game_variables[index]
end

r == nil ? r = "" : nil
return r
end

#--------------------------------------------------------------------------

def dispose
terminate_message

if @gaiji_cache != nil
  unless @gaiji_cache.disposed?
    @gaiji_cache.dispose
  end
end

unless @opacity_text_buf.disposed?
  @opacity_text_buf.dispose
end

$game_temp.message_window_showing = false
if @input_number_window != nil
  @input_number_window.dispose
end
super
end

#--------------------------------------------------------------------------

def update_cursor_rect
if @index >= 0
  n = $game_temp.choice_start + @index
  self.cursor_rect.set(8 + @indent + @face_indent, n * 32, @cursor_width, 32)
else
  self.cursor_rect.empty
end
end
end
#=========================================
# ▲ CLASS Window_Message Ends
#=========================================


#=========================================
# ▼ Class Window_Frame Begins
#=========================================
class Window_Frame < Window_Base

def initialize(x, y, width, height)
super(x, y, width, height)
self.windowskin = RPG::Cache.windowskin($ams.name_box_skin)
self.contents = nil
end

#--------------------------------------------------------------------------

def dispose
super
end
end
#=========================================
# ▲ CLASS Window_Frame Ends
#=========================================


#=========================================
# ▼ CLASS Game_Map Additional Code Begins
#=========================================
class Game_Map

#Dubealex's Addition (from XRXS) to show Map Name on screen
def name
 $map_infos[@map_id]
end
end
#=========================================
# ▲ CLASS Game_Map Additional Code Ends
#=========================================


#=========================================
# ▼ CLASS Scene_Title Additional Code Begins
#=========================================
class Scene_Title

#Dubealex's Addition (from XRXS) to show Map Name on screen
 $map_infos = load_data("Data/MapInfos.rxdata")
 for key in $map_infos.keys
  $map_infos[key] = $map_infos[key].name
 end
 
 #Dubealex's addition to save data from the AMS in the save files
 $ams = AMS.new
 
end
#=========================================
# ▲ CLASS Scene_Title Additional Code Ends
#=========================================


#=========================================
# ▼ CLASS Window_Base Additional Code Begins
#=========================================
class Window_Base < Window

#Dubealex Addition (from Phylomorphis) to use HTML Hex Code Colors
def hex_color(string)
  red = 0
  green = 0
  blue = 0
  if string.size != 6
    print("Hex strings must be six characters long.")
    print("White text will be used.")
    return Color.new(255, 255, 255, 255)
  end
  for i in 1..6
    s = string.slice!(/./m)
    if s == "#"
      print("Hex color string may not contain the \"#\" character.")
      print("White text will be used.")
      return Color.new(255, 255, 255, 255)
    end
    value = hex_convert(s)
    if value == -1
      print("Error converting hex value.")
      print("White text will be used.")
      return Color.new(255, 255, 255, 255)
    end
    case i
    when 1
      red += value * 16
    when 2
      red += value
    when 3
      green += value * 16
    when 4
      green += value
    when 5
      blue += value * 16
    when 6
      blue += value
    end
  end
  return Color.new(red, green, blue, 255)
end

#--------------------------------------------------------------------------

def hex_convert(character)
  case character
  when "0"
    return 0
  when "1"
    return 1
  when "2"
    return 2
  when "3"
    return 3
  when "4"
    return 4
  when "5"
    return 5
  when "6"
    return 6
  when "7"
    return 7
  when "8"
    return 8
  when "9"
    return 9
  when "A"
    return 10
  when "B"
    return 11
  when "C"
    return 12
  when "D"
    return 13
  when "E"
    return 14
  when "F"
    return 15
  end
  return -1
end
end
#=========================================
# ▲ CLASS Window_Base Additional Code Ends
#=========================================


#=========================================
# ▼ Class Air_Text Begins
#=========================================
class Air_Text < Window_Base

def initialize(x, y, designate_text, color=0)
 
super(x-16, y-16, 32 + designate_text.size * 12, 56)
self.opacity      = 0
self.back_opacity = 0
self.contents = Bitmap.new(self.width - 32, self.height - 32)
w = self.contents.width
h = self.contents.height
self.contents.font.name = $ams.name_font_type
self.contents.font.size = $ams.name_font_size
self.contents.font.color = text_color(color)
self.contents.draw_text(0, 0, w, h, designate_text)
end

#--------------------------------------------------------------------------

def dispose
self.contents.clear
super
end
end
#==========================================
# ▲ CLASS Air_Text  Ends
#==========================================


#===================================================
# ▼ CLASS Scene_Save Additional Code Begins
#===================================================
class Scene_Save < Scene_File
 
 alias ams_original_write_save_data write_save_data
 
 def write_save_data(file)
  ams_original_write_save_data(file)
  Marshal.dump($ams, file)
 end
 
end
#===================================================
# ▲ CLASS Scene_Save Additional Code Ends
#===================================================


#===================================================
# ▼ CLASS Scene_Load Additional Code Begins
#===================================================
class Scene_Load < Scene_File
 
 alias ams_original_read_save_data read_save_data
 
 def read_save_data(file)
  ams_original_read_save_data(file)
  $ams      = Marshal.load(file)
 end
 
end
#===================================================
# ▲ CLASS Scene_Load Additional Code Ends
#==================================
Revenir en haut Aller en bas
Contenu sponsorisé





Advanced Message Script - R4 Empty
MessageSujet: Re: Advanced Message Script - R4   Advanced Message Script - R4 Icon_minitime

Revenir en haut Aller en bas
 
Advanced Message Script - R4
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Terra RPGXP :: Boîte à Outils :: Les Scripts-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser