Auteur: Juss Kineas => Meiguanxi
Ressources: CharSet (RM2K) (Lien mis à jour le 07/06/2013)
Site officiel: http://juss.kineas.free.fr/Site/nk (N'existe plus)
Variables: 4
Connaissances en making: S'y connaitre en variable et comprendre les opérations de base (division, modulo).
L'idée ici, c'est d'afficher, grâce à des
charsets, notamment, des nombres, tels que les points de vie d'un personnage, si vous faîtes un menu à la main ou autrement dit un
Système de Menu Customisé (CMS). Vous aurez probablement besoin de ce genre de module.
Tout d'abord, un petit cours de math:On appelle Nombre entier relatifs, tous nombres
sans décimale.
Exemple : -1, -1578, 100, 14789.
La
division euclidienne est celle effectuée en primaire, celle qu'on pose avec le résultat et le reste. La division de RPGMaker fonctionne comme ceci. 14 / 10 = 1. Et non pas 1,4.
L'opération
modulo (aussi couramment noté %) de RPGMaker permet de récupérer le
reste de la division. 14 modulo 10 = 4.
C'est fini pour le cours de maths. Maintenant abordons le sujet principal.
Ce que l'on cherche à faire, c'est afficher un nombre à 4 chiffres par exemple, mais ceci avec 4 charsets.
On pourrait faire 10 000 charsets mais ce serai long et fastidieux à mettre en place, et très lourd. (Au moins 20 000 commandes)
Ce que l'on va faire ici, c'est décomposer un nombre en 4 parties, les
milliers, les
centaines, les
dizaines et les
unités.
Pour cela on va se servir de la
division euclidienne et du
modulo, deux opérations utilisables sur RPGMaker.
On va prendre un exemple avec un nombre à 4 chiffres différents.
Donc 1289 :1289 / 1000 = 1, on a ici nos milliers.
1289 / 100 = 12, on a ici nos centaines, mais on veut récupérer que le 2.
Pour cela, le modulo est l'instrument magique, le reste de la division par 10 est l'outil parfait pour récupérer les unités d'un nombre.
Continuons donc le calcul : 12 % 10 = 2, on a ici que nos centaines
1289 / 10 = 128, on a ici nos dizaines mais on veut que le 8, même opération:
128 % 10 = 8, on a ici que nos dizaines
1289 / 1 = 1289,
opération inutile1289 % 10 = 9, on récupère les unités, c'est donc fini.
Voici le code RPGMaker correspondant (pour les HPMax du héros) : - Citation :
- <>Variable(s): [0001:Millier] = ,Héros HP Max
<>Variable(s): [0002:Centaine] = ,Héros HP Max
<>Variable(s): [0003:Dizaine] = ,Héros HP Max
<>Variable(s): [0004:Unité] = ,Héros HP Max
<>Variable(s): [0001:Millier] / ,1000
<>Variable(s): [0002:Centaine] / ,100
<>Variable(s): [0002:Centaine] modulo ,10
<>Variable(s): [0003:Dizaine] / ,10
<>Variable(s): [0003:Dizaine] modulo ,10
<>Variable(s): [0004:Unité] modulo ,10
<>
Ici j'ai utilisé les HP Max de Héros, mais bien sûr vous pouvez choisir d'autres statistiques.
De plus si vous n'avez pas de milliers, vous avez juste à enlever le traitement sur les milliers,
et l'opération modulo des centaines deviendra obsolète car par exemple 8 modulo 10 = 8.
Code pour un nombre à 3 chiffres : - Citation :
<>Variable(s): [0002:Centaine] = ,Héros HP Max
<>Variable(s): [0003:Dizaine] = ,Héros HP Max
<>Variable(s): [0004:Unité] = ,Héros HP Max
<>Variable(s): [0002:Centaine] / ,100
<>Variable(s): [0003:Dizaine] / ,10
<>Variable(s): [0003:Dizaine] modulo ,10
<>Variable(s): [0004:Unité] modulo ,10
<>
Maintenant qu'on a les variables, on voudrait afficher les nombres, l'idée ici c'est de faire un événement par variables (chiffre), et chaque variable a 10 onglets, chaque onglet correspondant à une image (0,1,2,3,4,5,6,7,8,9) et une condition sur la valeur de la variable correspondant à cet onglet.
Par exemple, une première page pour les milliers, vous choisissez comme
condition de l'évènement, "la variable [0001:Millier] est égale à 0".
Et en bas vous choisissez une image de 0.
Nb : Votre programme de calcul vu plus haut doit être mis dans un processus parallèle.
Extension du code pour plus de beauté : Si vous avez, par exemple perdu beaucoup de pv, vous êtes à 324 / 1785 pv. Vous aurez comme affichage 0324. Ceci est assez problématique, comment effacer ces 0? Une idée est de mettre une condition, si PV_Du_heros < 1000 [0001:Millier] = -1, si PV_Du_heros < 100 [0002:Centaine] = -1, si PV_Du_heros < 10 [0003:Dizaine] = -1. Comme cela, les conditions de l'événement Millier (par exemple) ne seront pas respectées car Millier attendait les valeurs 0,1,2,3,4,5,6,7,8,9 et non -1 donc il n'affichera rien. Voilà, problème du 0 résolu.
Ceci est une amélioration d'un de mes anciens tutoriels produit en 2006 dont vous pouvez voir la trace ici :