Nom du tutoriel : Comment créer des balises de niveau intermédiaire dans Windows_MessageAuteur : Miraino HikariNotre objectif : Apprendre à faire de nouvelles fonctionnalité avec Windows_Message pour les balises utilisez dans les messages.Description du tutoriel : Vous n'aurez besoin que de l'éditeur de script. L'idée étant de faire une balise un peu plus avancée. Ce tutoriel suppose que vous savez déjà faire vos propres balise de base et que vous maîtrisez la surcharge ou la modification des scripts. Si ce n'est pas le cas, référé vous au tutoriel précédent.Tutoriel : Bon, maintenant que vous savez faire des balises de bases pour vos messages, voyons voir des balises plus complexes, soit qu'elles comportes plus d'un arguments, soit qu'elles exécutent un code.
Dans la classe Window_Message, localiser ou surcharger convert_special_characters. Normalement vous avez des substitutions qui ressemble à celles-ci
- Code:
-
@text.gsub!(/\\NS\[(\d+)\]/i) { $data_skills[$1.to_i].name } # Skill Name
@text.gsub!(/\\IS\[(\d+)\]/i) { "\x98[#{$data_skills[$1.to_i].icon_index}]" } # Skill Icon
@text.gsub! (/\\BLN\[(\d+,\d+)\]/i) { "\x96[#{$1.to_s}]" } # Balloon
Ces substitutions sont des substitutions normales comme nous l'avons appris au tutoriel précédent. La première est une substitution directe pour un texte d'une variable (dans l'exemple, c'est le nom d'une habileté du jeu) et les deux suivantes sont des substitution qui nécessite la participation de update_message.
Voyons maintenant comment exécuter un code directement depuis une de ces substitutions. Il est important de savoir qu'en ruby, on peu faire des sépareteurs de commandes avec le point-virgule. Le ; sera interprété comme un retour de ligne. Ainsi, il est possible de faire un bloc de code d'un seul trait. Il est toutefois possible de le faire aussi avec les saut de lignes standards. C'est un choix du concepteur.
Supposons donc que vous voulez changer la musique dans un message. Si vous voulez le faire à un moment précis du message, vous utiliserez la méthode du update_message, puisque cela arrivera que lorsque votre balise arrivera. Cependant, si dès que le message s'affiche, vous voulez que votre code prenne effet, et ce indépendemment de l'endroit où il se trouve dans votre texte, vous pouvez lancer la commande directement depuis convert_special_character comme ceci :
- Code:
-
@text.gsub!(/\\ME\[(.*?)\]/) {begin; (RPG::ME.new($1)).play; rescue; end}
Cela aura pour effet de changer l'effet musical dès que le message s'affichera. Comme indiquer précédemment, si vous voulez plus de précision, vous utiliserez la méthode du update_message avec, par exemple, un \x80.
Maintenant, supposons que vous désirez mettre plus d'un paramètre. Pour cela, vous devez faire votre structure selon les paramètres et la forme que vous voulez. Pour cet exemple, disons que nous voulons afficher 2 noms de personnages.
- Code:
-
@text.gsub!(/\\TE\[(\d+),(\d+)\]/i) { $game_party.members[$1.to_i].name + " et " + $game_party.members[$2.to_i].name }
J'ai appeler ma balise TE. Voyez la structure. Vous devez impérativement respecter cette structure lorsque vous écrirez dans le message. Donc ici, pour afficher les deux premier membre de l'équipe, nous écririons dans le message \TE[0,1], ce qui serait remplacer, par exemple, par "Ralph et Oscar" si ce sont les deux premiers personnages de l'équipe. Il ne devra pas y avoir d'espace. Si un espace peut être envisageable, changer votre structure par celle-ci :
- Code:
-
@text.gsub!(/\\TE\[(\d+),(\s*\d+)\]/i) {...}
De cette façon, que vous écriviez \TE[0,1] ou \TE[0, 1], le résultat sera le même. Si vous désirez faire avec double crochets, c'est aussi possible, avec cette structure.
- Code:
-
@text.gsub!(/\\TE\[(\d+)\]\[(\d+)\]/i) { ... }
Cette structure permettra d'utiliser \TE[0][1] pour obtenir le même résultat. Il est aussi possible d'accepter les 2 types de structure. Pour ce faire, redéfinissez la même balise. Si l'une des deux structures est détectée, elle sera modifiée. Votre code ressemblerait alors à ceci :
- Code:
-
@text.gsub!(/\\TE\[(\d+),(\s*\d+)\]/i) { $game_party.members[$1.to_i].name + " et " + $game_party.members[$2.to_i].name }
@text.gsub!(/\\TE\[(\d+)\]\[(\d+)\]/i) { $game_party.members[$1.to_i].name + " et " + $game_party.members[$2.to_i].name }
En inscrivant ainsi, \TE[0,1], \TE[0, 1] et \TE[0][1] seront tous détecté et auront le même comportement, à savoir, dans cet exemple, d'afficher les deux premiers membres de l'équipe.
J'espère que ce tutoriel vous permettra de faire des balises intéressantes pour vos projet.