❤ 0 Vous connaissez par coeur les balises dans RPG Maker XP, et vous vous sentez limité ? Passons maintenant à quelque chose de plus intéressant!!
Pour commencer un truc simple : Créer de nouvelles couleur!!!
Pour ça, on va tatouillé un peu les scripts, mais ne vous inquiétez pas, c'est super simple!! Et je vous guiderais ^^.
Alors pour commencer, on ouvre son éditeur de script (raccourci : F11)
On va commencer par créer notre nouvelle couleur! Pour ça allons dans le script "Window_Base" et cherchons la fonction appelée "text_color(n)"
(Appuyez simultanément sur ctrl + f et entrez le nom de la fonction dans la recherche).
Voilà la tronche de la fonction :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| case n
when 0
return Color.new(255, 255, 255, 255)
when 1
return Color.new(128, 128, 255, 255)
when 2
return Color.new(255, 128, 128, 255)
when 3
return Color.new(128, 255, 128, 255)
when 4
return Color.new(128, 255, 255, 255)
when 5
return Color.new(255, 128, 255, 255)
when 6
return Color.new(255, 255, 128, 255)
when 7
return Color.new(192, 192, 192, 255)
else
normal_color
end |
On va considérer que " n " est la valeur que vous entrerez dans vos crochets avec la fonction \c[n] . On voit que pour chacune des valeurs de n de 0 à 7, on a un return Color.new(w, x, y, z).
Vous aurez peut-être compris que Color.new permet de créer une nouvelle couleur et que ce qu'il y a entre parenthèse représente la couleur en question.
Cette couleur est codé en RVB (Rouge, Vert, Bleu, Transparence). Avec tout logiciel graphique, il vous est possible de connaitre la valeur d'une couleur en RVB (avec paint par exemple, il faut faire Couleurs < Modifier les couleurs... puis cliquer sur "Définir les couleurs personnalisées >>".
Pour l'ajout d'une nouvelle couleur (la couleur n°8 qui sera le noir), le code sera :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| case n
when 0
return Color.new(255, 255, 255, 255)
when 1
return Color.new(128, 128, 255, 255)
when 2
return Color.new(255, 128, 128, 255)
when 3
return Color.new(128, 255, 128, 255)
when 4
return Color.new(128, 255, 255, 255)
when 5
return Color.new(255, 128, 255, 255)
when 6
return Color.new(255, 255, 128, 255)
when 7
return Color.new(192, 192, 192, 255)
when 8
return Color.new(0, 0, 0, 255)
else
normal_color
end |
OK c'est bon?
Mais c'est hélas pas fini encore ^^.
On va maintenant faire un petit tour dans le script "Window_Message" un peu plus bas et se rendre à la ligne 106. On doit normalement avoir cette ligne :
1
| if color >= 0 and color <= 7 |
(PS : Si vous ne l'avez pas, faites une recherche avec ctrl + f)
Et comme dorénavant nous avons 9 couleurs, on va remplacer le 7 par un 8 et le tour est joué!!
Vous pouvez tester dans une boite de dialogue d'écrire "\c[8] et le texte qui suivra sera noir. GENIAL NON???
[Pour les plus initié au Ruby]
Mais bon voilà... Pour vous, tout ces outils ne sont pas encore suffisant, il y en a que vous aimeriez bien créer de vos propres mains (comme afficher le nom d'une arme avec son ID par exemple ; c'est pas forcement utile mais ça servira d'exemple ^^).
Alors, tout se passe dans le script "Window_Message". Vers les lignes 82-86 où on a cette chose :
1
2
3
4
5
6
7
8
| 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
|
On clone la boite de texte et on test des expressions que l'on remplacera par d'autre (ça c'est en très gros ^^)
Voilà en gros comment ça marche :
text.gsub!(expr1) { expr2 }
ou
text.gsub!(expr1) do
[bloc qui déterminera expr2]
on remplacera expr1 par expr2.
Ensuite vous avez surement remarqué qu'en pratique l'expr1 est assez bizarre... En fait, ce sont des expressions rationnelles (complement d'information : http://fr.wikipedia.org/wiki/Expressions_rationnelles) qui sera capable de retrouver un texte variable dans une expression. On sait qu'on utilise cette méthode lorsque l'expression est entre slash (ils servent comme des guillemets)
Voilà en quelques mot ce qu'il faut savoir (Puise dans ses souvenirs...):
des caractères entre crochet => "ou" entre chaque caractère
des caractères entre parenthèse => priorité forcé
tiret entre 2 caractères => tout les caractères du premier ou dernier compris (en code ASCII)
* (généralement après un caractère ou un groupe de caractère (entre parenthèse) => Tant que ce ou ces caractères apparaissent de 0 à un infinité de fois
+ => Comme l'étoile mais c'est de 1 à une infinité de fois
\ : Annule le caractère spécial d'un caractère.
\\ => "\"
Bon là normalement, vous n'avez rien pigé (sinon je vous félicite ^^) donc on va essayé de mieux expliqué ça en décomposant une des expressions:
1
| span style="color:#7cc4f5;"> !(/\\[Vv]\[([0-9]+)\]/) |
=> Code pour déterminer la variable (\v[41886])
Le slash de début et de fin annonce qu'on utilise une expression rationnelle.
Le premier antislash signale que le caractère suivant est à considéré comme un caractère dans le texte, donc l'antislash.
Donc pour le moment on cherche dans le texte ce qui ressemble à :
"\"
Il nous reste : [Vv]\[([0-9]+)\]
[Vv] => On cherche soit le caractère V, soit le caractère v.
Donc pour le moment on cherche dans le texte ce qui ressemble à :
"\v" ou "\V".
Il nous reste \[([0-9]+)\]
L'antislash indique que le caractère suivant (qui est un caractère spécial, on vient de le voir) n'est pas à considéré comme spécial
On cherche dans le texte ce qui ressemble à : "\v[" ou "\V[".
Il nous reste ([0-9]+)\]
Entre parenthèse, on à cette séquence :
[0-9]+
[0-9] => Tout les caractères de 0 à 9 compris
[0-9]+ => On cherche des caractères de 0 à 9 qui se suivent (avec au moins 1 de ces caractères ce qui signifie que \v[] ne sera pas reconnu au même titre que \v[ojoh] car ojoh contient au moins un caractère qui n'est pas compris entre 0 et 9.
On cherche dans le texte ce qui ressemble à : "\v[suite de caractère de 0 à 9" ou "\V[suite de caractère de 0 à 9".
Il nous reste \]
lui vous devez commencez à comprendre ^^ On ne considère pas le ] comme un caractère spécial
Au final on recherche : "\v[suite de caractère de 0 à 9]" ou "\V[suite de caractère de 0 à 9]".
Et c'est exactement ce à quoi correspond le \v[ID de variable]!! C'est fou non !!!!
Maintenant que vous connaissez la base des expressions rationnelles, vous pouvez déterminez vos codes de message GENIALISSIME!!!
Ensuite, il vous faudra codé votre expr2 afin d'avoir une chaine de caractère correspondant à ce que vous chercher.
IMPORTANT : Chaque groupe de caractère variable reconnu par le langage est enregistré dans des variables $1 jusqu'à $x en fonction de leur position dans l'expression rationnelle.
par exemple :
code : ([a-z]*)([1-9]+)
message : aaa885
$1 = aaa
$2 = 885 )
Savoir ça est très utile pour l'affichage du héros en fonction de son ID par exemple (on récupère la valeur entre les crochets et on cherche le nom du héros avec l'ID correspondant).
Maintenant, si vous avez à peu près compris le principe, à vous de faire des merveilles !!
Et si vous avez des questions (je pense que oui, car c'est vraiment pas facile ), n'hésitez pas !!!
Mis à jour le 22 janvier 2021.
|