Zénith RPG version 1.1

Soaglor, terre de conflits
miniature
de harusame17.

Felicie occis
miniature
de Sunwarrior.

SPZelda: Déclarations
miniature
de Dark8744.

Tutoriaux RGSS (Ruby)

Modifier le message de Level-up


  • Tutorial rédigé par Bahamut 1.2.
  • Aucune démo n'est disponible pour ce tutorial.

Note : Ce tutorial a été rédigé il y a longtemps...J'ai progrssé depuis !! :p

Voilà ce que j'ai appris en bidouillant dans les scripts de RMXP....Essayer de modifier des scripts est le meilleur moyen d'apprendre ! Le tuto est fait pas à pas, en fait j'ai essayé des trucs au fur et à mesure....Enfin bref, ça peut vous guider !

Le message de level-up peut etre modifié dans Window_BattleStatus aux lignes 44 à 47 :

if @level_up_flags[[i]]
self.contents.font.color = normal_color
self.contents.draw_text(actor_x, 96, 120, 32, "Niveau supérieur !")

Vous pouvez donc changer le texte "Niveau supérieur" en quoi que ce soit d'autre, sachant que les valeurs entre parenthèses représentent dans l'ordre : coordonnée x du texte (ici, actor_x), coordonnée y du texte (ici, 96), longueur maximale du texte (120) et hauteur maximale (32), et enfin le texte à afficher ("Niveau supérieur !").

D'abord petite explication à propos des longueur et largeur maximales : par exemple ici la longueur maximale de texte est définie à 120, si le texte est plus long, n'oubliez pas d'augmenter cette valeur où il sera "ecrasé". Malheureusement dans ce cas, ça ne sert à rien (cf. plus bas)

La premiere valeur n'est pas un chiffre mais actor_x, qui représente en fait une variable. Vous pouvez donc remplacer n'importe quel chiffre par une variable, même dans le texte à afficher. Les variables peuvent d'ailleurs contenir des chiffres, mais aussi du texte.
Par exemple vous pouvez mettre ceci :
(actor_x, 96, 120, 32, $game_party.actors[[i]].name + " a gagné un niveau !")
Petite explication tout de même : $game_party.actors[[i]].name sera remplacé par le nom d'un personnage ; il ne faut pas mettre de guillemets sinon le programme considérera ceci comme du texte et non comme une variable et affichera donc mot pour mot ce qui est écrit. Par contre, il faut en mettre à " a gagné un niveau !", sinon le jeu plantera lamentablement, sans oublier de mettre l'espace...N'oubliez pas non plus le + ! Enfin, je ne l'ai pas fait ici, mais il serait bon de changer également le 120 et les coordonnées actor_x (voir à la fin) car le texte affiché sera plus long....

Rien ne vous empêche de changer $game_party.actors[[i]].name an autre chose, pour ça voici quelques explications (pour changer) : Le [[i]] désigne le personnage par son ID dans la base de données (par exemple pour un nouveau projet, Arshes a l'ID 1, Basil 2 etc...). Donc vous pouvez mettre un chiffre ou laisser i, ce qui ici est le plus raisonnable puisque ce i désigne simplement le perso qui vient de gagner un niveau. Ensuite vous pouvez changer à votre guise le .name, mais pas en n'importe quoi non plus, il faut que le programme reconnaisse ! Voici quelques exemples (je posterai peut-etre bientot une liste plus exhaustive...) :

.name affiche le nom du perso indiqué entre crochets
.class_name affiche la classe du perso indiqué entre crochets

Voilà pour les variables affichant des chaines de characteres (du texte, quoi), voici maintenant de quoi afficher des nombres (il faut toujours mettre to_s à la fin !) :

.level.to_s affiche le niveau du perso indiqué entre crochets
.maxhp.to_s affiche les HP max du perso indiqué entre crochets
.maxsp.to_s affiche les SP max du perso indiqué entre crochets
.hp.to_s affiche les HP du perso indiqué entre crochets
.sp.to_s affiche les SP du perso indiqué entre crochets
.str.to_s affiche la force du perso indiqué entre crochets
.dex.to_s affiche la dexterité du perso indiqué entre crochets
.agi.to_s affiche l'agilité du perso indiqué entre crochets
.int.to_s affiche l'intelligence du perso indiqué entre crochets
.atk.to_s affiche l'attaque du perso indiqué entre crochets
.pdef.to_s affiche la defense physique du perso indiqué entre crochets
.mdef.to_s affiche la défense magique du perso indiqué entre crochets
.eva.to_s affiche l'esquive du perso indiqué entre crochets

Ouhlà, je crois que j'en ai mis un paquet qui vont servir à rien !
Pour finir voici un exemple concret avec notre ami Arshes :
Alors voilà Arshes après moult combats l'opposant de féroces créatures s'apprète désormais à gagner un niveau ! Le voici à son dernier combat avant le level-up....Imaginons que Arshes veuille savoir son nom, sa classe et le niveau auquel il se trouve....sachant que pour l'instant il est niveau 1 (bouh le nul !). Concrètement on veut que le logiciel affiche Arshes est passé Combattant de niveau 2 !
Si vous avez tout compris, vous devinerez facilement qu'il faut écrire ceci à la ligne 46 de Battle_Status :
self.contents.draw_text(actor_x, 96, 120, 32, $game_party.actors[[i]].name + " est passé " + $game_party.actors[[i]].class_name + " de niveau " + $game_party.actors[[i]].level.to_s)
Maintenant ça marche, le seul soucis est que le texte est un peu long....Si on change la longueur max il sera quand même compressé voire même coupé, car le texte est un peu décalé sur la droite....On peut donc aussi essayer de le déplacer sur la gauche, c'est à dire changer ses coordonnées x, qui sont actuellement contenues dans la variable actor_x. Il n'est pas interdit d'effectuer des calculs sur des variables, puisqu'il s'agit tout de même de chiffres....des chiffres qui varient, mais des chiffres quand même. On pourrait donc mettre sans probleme actor_x - 10. Mais je vous le dit tout de suite, ça marche pas, le texte est coupé...mais on est là pour apprendre^^


Comment faire alors ?? Il suffit d'ecrire en plusieurs lignes, et rassurez-vous c'est extrêmement simple ! Il suffit de répéter self.content.daw_text autant de fois qu'il y a de lignes...Non, non, il ne suffit pas d'ecrire la même chose à chaque fois, non plus ! Par exemple, admettons qu'on veuille diviser notre texte en trois lignes, de cette façon :

Arshes est passé
Combattant
de niveau 2 !


Le but est de réutiliser la commande draw_text en changeant le texte et l'endroit où l'on l'affiche. Le principe consiste donc à utiliser trois lignes de script, la premier servant à afficher Arshes est passé, la deuxième Combattant et la troisième de niveau 2 !...
Si vous avez essayé la méthode précédente vous constaterez qu'il n'y a pas la place de fourrer 2 lignes suplémentaires en dessous....Il va donc falloir jouer sur les coordonnée y (axe des ordonnées, vertical donc) pour caser tout ça ! Il va également falloir réduire la taille de la police...Pour ça, insérer juste avant les draw_text la commande suivante :
self.contents.font.size = 16
Evidemment vous pouvez mettre autre chose que 16, mais ça me semble une bonne taille pour notre exemple... La hauteur maximale passe donc de 32 à 16, il faudra donc changer cette valeur. Pour finir, il faut définir les coordonnées y (les x ne changent pas) de chacune des trois lignes, par exemple 80 pour la premiere ligne, 96 pour la deuxieme et 112 pour la dernière. Voilà le code en entier :

self.contents.font.size = 16
self.contents.draw_text(actor_x, 80, 200, 16, $game_party.actors[[i]].name + " est passé ")
self.contents.draw_text(actor_x, 96, 200, 16, $game_party.actors[[i]].class_name)
self.contents.draw_text(actor_x, 112, 200, 16, "de niveau " + $game_party.actors[[i]].level.to_s)


Voici pour finir en beauté un petit screen du résultat...Bon c'est moche et le texte se confond avec les MP mais c'est pour vous montrer !



Ouf ! C'est fini, j'espère avoir été clair et que vous avez compris.

Concours d'ambiance

Début du concours :
20 Septembre 2007
Fin du concours :
N/A

BattleZone Games Creations
Final Destiny
Island Maker
Légende
Manga Power
Oniromancie
Relite
RPG Making
RPG Sky
RPGMaker FR
RPGSky
RTP Power
Saleth Empire
Terra RPGXP
Terre RPG
World of DBZ