Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker

RM 95
RM 2000/2003
RM XP
RM VX/VX Ace
RM MV/MZ

Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

News: / Annonces du mois d'octobre / Jeux: Happiness Adventure / Jeux: Digital Shadow / Sorties: [RMVXACE] Digital Shadow - (...) / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

164 connectés actuellement

11855900 visiteurs
depuis l'ouverture

91 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Hellsoft

Planète Glutko

Le Studio du Chat Vert

RPG Maker VX

Eclipso

RPG Maker - La Communauté

Tous nos partenaires

Devenir
partenaire



[RGSS] Ajouter d'autres codes pour les messages

ce tutorial vous explique dans un premier temps les différentes fonctions que vous pouvez écrire dans vos message (\n[x], etc), puis il vous explique comment creer ses propres codes.

Ecrit par sacrai le 27/12/2009


❤ 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 :

Portion de code : Tout sélectionner

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 :

Portion de code : Tout sélectionner

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 :

Portion de code : Tout sélectionner

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 :

Portion de code : Tout sélectionner

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 : https://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:

Portion de code : Tout sélectionner

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 image !!
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.





Ephy - posté le 27/12/2009 à 23:27:46 (29049 messages postés) - honor -

❤ 0

BIG SHOT

C'est sympa mais deans les codes au début t'as oublié de refermer tous les crochets.
Et dans la partie des couleurs, mettre le code que tu donne n'affiche pas la couleur que tu indique mais la couleur contenue dans l'échantillon de couleur du windowskin correspondant au nombre entré dans le code. Donc pour le premier c'est blanc dans le système de base mais tu peux l'avoir rose bonbon si tu modifie les échantillons de couleur de ton windowskin ;)
Et puis les couleurs ne sont pas limitées de 1 à 7... y'en a beaucoup plus.

Edit: Ah... Mais c'est peut-être un tuto pour XP. Alors dans ce cas, t'as peut-être raison en ce qui concerne les couleurs)
Mais t'aurai du mentionner le log concerné par le tuto.

Power Level: 1 148 355,38|Mystic Slayer (Value!+)|Le monde d'Adélaïde|Reikon no Yume|★ H-Project|Toho Danmaku Arena|Loli versus Ponies|Mes vidéos|Ma galerie|Débuter sur VX:10, 11|Tuto: Importation de ressources|Mapper avec les RTP VX|Touhou|Fan de Omenides|Fan de Estheone|Eph'ille: 14


Sacraï - posté le 28/12/2009 à 19:41:15 (28 messages postés)

❤ 0

Misanthrope humanoïde

En effet j'ai oublié les ] à la fin de chaque message... Etrange...

Et sinon, oui c'est pour XP, mais je n'ai pas jugé utile de le préciser car ce tuto se trouve justement dans la partie tutoriaux de RPG Maker XP. (Ceci dit, c'est vrai que sur la page, c'est indiqué nulle part que l'on est dans cette rubrique..)

https://www.alexdor.info/

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe - Mentions légales

Plan du site

Communauté: Accueil | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts | Ressources | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers