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



 
AccueilDernières imagesS'enregistrerConnexion
-28%
Le deal à ne pas rater :
-28% Machine à café avec broyeur à grain MELITTA Purista
229.99 € 318.99 €
Voir le deal

Partagez | 
 

 Manipuler vos texte (de l'affichage d'une variable a la creation de vos codes)

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Sacraï
Embryon
Embryon
Sacraï


Masculin Messages : 692
Age : 34
Date d'inscription : 18/04/2008

Caractéristiques du membre
Evolution: Atome
Job: Programmation
XP:
Manipuler vos texte (de l'affichage d'une variable a la creation de vos codes) Left_bar_bleue20/20Manipuler vos texte (de l'affichage d'une variable a la creation de vos codes) Empty_bar_bleue  (20/20)

Manipuler vos texte (de l'affichage d'une variable a la creation de vos codes) Empty
MessageSujet: Manipuler vos texte (de l'affichage d'une variable a la creation de vos codes)   Manipuler vos texte (de l'affichage d'une variable a la creation de vos codes) EmptyJeu 23 Juil 2009 - 18:37

Derrière ce nom bizare (oui désolé, j'ai pas trouvé mieu) je vais en premier lieu vous devoiler tout les "codes" à inserer dans vos messages (avec la commande"Afficher un message" en premier page d'evenement) afin d'avoir divers effet sur celui-ci.
Une fois ceci fait, je vous indiquerais comment ajouter de nouvelles couleurs, puis comment créer vos propres codes (cette dernière partie nécessitera quelques rudiments de script)

Ce qui est en rouge et ce qui ne doit pas changer.

1) L'affichage la valeur d'une variable :
\v[ID de la variable]

L'ID de la variable est le numéro devant le nom de votre variable.

2) L'affichage du nom d'un héros :
\n[ID du héros]
Comme l'ID de la variable, l'ID du héros est la position dans la base de donnée où est placé votre héros (Ce nombre apparait devant le nom de votre héros dans le cadre à gauche dans l'onglet Hros de la Base de Données)

3) Changer la couleur du texte :
\c[Chiffre entre 0 et 7]

0 => Blanc (couleur de base)
1 => Bleu
2 => Rouge
3 => Vert
4 => Cyan
5 => Violet
6 => Jaune
7 => Gris (Bouhouhou il n'y a pas de gris comme couleur de police sur le fofo!!!)

Le changement de couleur ne dure que durant un message (il revient à la couleur normal au prochain message) et il n'est pas impossible de mettre plusieurs couleur dans le même message. De même que si vous ecrivez un long message de plusieurs boite de dialogue avec ctrl+n, le couleur redeviendra normal à la fin de la boite de dialogue ou le \c[x] aura été écrit.

Note : Si vous entrez un nombre non compris entre 0 et 7, la couleur normal s'affichera.

4) Afficher l'or
Il est même possible d'afficher l'or avec la fonction
\G
Cette fonction a certainement était prévu pour faire ses propre systeme de magasin ou d'auberge.

Note : Si pour n'importe quelle raison, vous souhaitez écrire l'un de ces codes dans une boite de dialogue, afficher un "\" en plus avant celui-ci (ce qui fera donc deux antislash).


Mais bon, de toute façon, tout ceci est dans l'aide intégré de RMXP donc j'espère ne rien vous apprendre Smile


Passons maintenant à quelquechose 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 inquietez pas, c'est super simple!! Et je vous guiderais ^^.

Alors pour commencer, on ouvre son editeur 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 simultanement sur ctrl + f et entrez le nom de la fonction dans la recherche).


Voilà le tronche de la fonction :

Code:

    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-etre compris que Color.new permet de créer une nouvelle couleur et que ce qu'il y a entre parenthèse represente 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 :
Code:

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

Code:
          if color >= 0 and color <= 7
(PS : Si vous ne l'avez pas, faites une recherche avec ctrl + f)
Et comme dorenavant nous avons 8 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'una arme avec son ID par exemple ; c'est pas forcement utile mais ça servira d'exemple ^^).

Alors, tout se passedans le script "Window_Message". Vers les lignes 82-86 où on a cette chose :

Code:

      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 determinera expr2]

on remplacera expr1 par expr2.

Ensuite vous avez surement remarqué qu'en pratique l'expr1 est assez bizarre... En fait, c'est de la théorie des langages (je vous passerais le cours dessus^^) qui sera capable de retrouver un texte variable dans une expression. On sait qu'on utilise cette methode lorsque l'expressions est entre slash (ils servent comme des guillemets)

Voilà en quelques mot ce qu'il faut savoir (Puises 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 mieu exepliqué ça en décomposant une des expressions:

Code:

!(/\\[Vv]\[([0-9]+)\]/)
=> Code pour determiner la variable (\v[41886])


le slash de début et de fin annonce qu'on utilise la théorie des langages.
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'antilash 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 sequence :
[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 n'est pas un caractère compris entre 0 à 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 \c[ID de variable]!! C'est fou non !!!!

Maintenant que vous connaissez la base de la théorie des langages (en pratique Smile ) vous pouvez determinez 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 dans par le langage sont enregistré dans des variables $1 jusqu'à $x en fonction de leur position de reconnaissance dans la théorie des langages
(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 recupè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 Wink !!
Et si vous avez des questions (je pense que oui, car c'est vraiment pas facile ^^), n'hésitez pas!!!
Revenir en haut Aller en bas
 

Manipuler vos texte (de l'affichage d'une variable a la creation de vos codes)

Voir le sujet précédent Voir le sujet suivant Revenir en haut 

 Sujets similaires

-
» Codes des messages
» curieu de variable
» tuto pour variable svp
» Tutoriels pour utiliser variable d'apparition de monstres
» Changer le texte
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Zarok RPG Maker :: 

 :: TUTORIELS :: Tutoriels de Programmation
-
Sauter vers: