J'ai comme projet de créer un cour sur le making non pas en partant de zéro mais en s'attardant sur chaque partie afin de l'optimiser à fond!
Commençons sans plus tarder par... (Roulement de tambour...)
Hé oui beaucoup de personnes oublient cet élément important du making!
Les messages!
Déjà, parlons des messages en eux même, autrement dit, les paroles des personnages. Je ne suis pas trés fort la dedans mais...
Un héros se baladant dans une ville avec 250 PNJ aura des envies de meurtres lorsque la 128ème personne lui parlera du temps qu'il fait... Comme les 127 avant elle.
La solution? Déjà mettez un minimum de PNJ, et donnez leur des dialogues crédibles! L'humour est un trés bon substitut. Autre chose : pensez à varier les paroles des PNJ en utilisant les variables.
Mais les héros parlent aussi! Du moins j'espère
Les héros parlent toujours de la même manière, une princesse parlera toujours de manière polie, alors qu'une armoire à glace parlera de manière... moins polie disons.
Pour rajouter une touche d'humour, vous pouvez modifier leurs vocabulaire lors d'un moment important!
Imaginez la princesse en question gueuler des insultes et vous comprendrez.
Ensuite une règle d'or : évitez les fautes d'orthographes!
Maintenant parlons de l'aspect du message. Commencez par changer le skin. Voila une page avec pas mal de windowskins :
http://www.ninesages.org/XP_Album/thumbnails.php?album=76J'ai remarqué que le vert flashy est une trés mauvaise couleur pour les messages... Allez savoir pourquoi!
Et savez vous que vous pouvez modifier la couleur du texte?
Pour tout les textes en modifiant un script, ou pour seulement un bout de texte en utilisant les commandes /c[?]
texte à mettre en couleur/c[0]
Remplacez le point d'interrogation par le numéro de la couleur.
Pour modifier tout les textes, allez dans le script "Window_Base" à la ligne 65.
Modifier les trois 255 (Ce sont les valeurs de rouge, vert et bleu.) pour changer la couleur des messages.
Dés que j'aurai retrouver les chiffres des couleurs j'éditerais.
Voila d'autres commandes :
-\n[
...] -Affiche le nom du perso numéro ...
-\V[
...] -Affiche la valeur de la variable numéro ...
-\\ -Ecrit le caractère \ (Si vous n'écrivez que /, le jeu bugge! Donc écrivez //)
Enfin, grâce à un script, il est possible d'afficher des facesets!
- Spoiler:
#==============================================================================
# Window_Message
#------------------------------------------------------------------------------
#
#==============================================================================
class Window_Message < Window_Selectable
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def initialize
super(80, 304, 480, 160)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font = Font.new("Arial")
self.visible = false
self.z = 9998
@fade_in = false
@fade_out = false
@contents_showing = false
@cursor_width = 0
@pic_width = 96
@pic_height = 96
self.active = false
self.index = -1
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def dispose
terminate_message
$game_temp.message_window_showing = false
if @input_number_window != nil
@input_number_window.dispose
end
super
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def terminate_message
self.active = false
self.pause = false
self.index = -1
self.contents.clear
@contents_showing = false
if $game_temp.message_proc != nil
$game_temp.message_proc.call
end
$game_temp.message_text = nil
$game_temp.message_proc = nil
$game_temp.choice_start = 99
$game_temp.choice_max = 0
$game_temp.choice_cancel_type = 0
$game_temp.choice_proc = nil
$game_temp.num_input_start = 99
$game_temp.num_input_variable_id = 0
$game_temp.num_input_digits_max = 0
if @gold_window != nil
@gold_window.dispose
@gold_window = nil
end
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = normal_color
x = y = 0
@cursor_width = 0
if $game_temp.choice_start == 0
x = 8
end
if $game_temp.message_text != nil
text = $game_temp.message_text
begin
last_text = text.clone
text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
end until text == last_text
text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
$game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
end
text.gsub!(/\\[Ww]\[([0-9]+)\]/) do
@pic_width = $1.to_i
""
end
text.gsub!(/\\[Hh]\[([0-9]+)\]/) do
@pic_height = $1.to_i
""
end
text.gsub!(/\\[Ff]\[([\w]+)\]/) do
temp = RPG::Cache.picture($1)
pic_x = self.contents.width - @pic_width - 10
pic_y = self.contents.height / 2 - @pic_height / 2
dest = Rect.new(pic_x,pic_y,@pic_width, @pic_height)
src = Rect.new(0,0,temp.width, temp.height)
self.contents.stretch_blt(dest, temp, src)
""
end
text.gsub!(/\\\\/) { "\000" }
text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
text.gsub!(/\\[Gg]/) { "\002" }
while ((c = text.slice!(/./m)) != nil)
if c == "\000"
c = "\\"
end
if c == "\001"
text.sub!(/\[([0-9]+)\]/, "")
color = $1.to_i
if color >= 0 and color <= 7
self.contents.font.color = text_color(color)
end
next
end
if c == "\002"
if @gold_window == nil
@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
next
end
if c == "\n"
if y >= $game_temp.choice_start
@cursor_width = [@cursor_width, x].max
end
y += 1
x = 0
if y >= $game_temp.choice_start
x = 8
end
next
end
self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
x += self.contents.text_size(c).width
end
end
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 reset_window
if $game_temp.in_battle
self.y = 16
else
case $game_system.message_position
when 0 # ?
self.y = 16
when 1 # ?
self.y = 160
when 2 # ?
self.y = 304
end
end
if $game_system.message_frame == 0
self.opacity = 255
else
self.opacity = 0
end
self.back_opacity = 160
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
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
terminate_message
end
return
end
if @fade_out == false and $game_temp.message_text != nil
@contents_showing = true
$game_temp.message_window_showing = true
reset_window
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
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def update_cursor_rect
if @index >= 0
n = $game_temp.choice_start + @index
self.cursor_rect.set(8, n * 32, @cursor_width, 32)
else
self.cursor_rect.empty
end
end
end
Pour afficher un faceset, vous devrez d'abord disposer de l'image, qui doit faire 96*96 pixels. Placez celle-ci dans le répertoire "Pictures" de votre projet. Dans votre message, placez ensuite le code \f[nom] où nom est le nom de l'image sans son extension.
Voila! Si je trouve d'autres choses j'éditerais ce message.
A bientôt pour un autre cours! (Je posterais sur ce topic.)
Si vous pouvez laissez des critiques et des commentaire ça me permettrait de m'améliorer...