Le Deal du moment : -25%
PC Portable Gamer 16,1” HP Victus 16 – 16 ...
Voir le deal
749.99 €

Aller en bas
crackerwood
crackerwood
Membre

Nombre de messages : 364
Age : 39
Localisation : Derrière son pc y parait
Distinction : aucune
Date d'inscription : 03/08/2008

RPG Maker VX Ace Chapitre 2 - Le menu objet

Jeu 15 Jan 2015 - 11:00
Bonjour tout le monde. Aujourd'hui je vous fournie le menu objet de mon tutoriel sur le CMS.
Je m'excuse pour la qualité des images.

Le menu objet

Bonjour à toutes et à tous. Nous allons donc voir aujourd'hui le menu objet. Ce menu qui m'en a fais voir beaucoup. Il faudra maîtriser pour cela :
- les variables,
- les conditions,
- les étiquettes,
- les boucles.

Mais avant tout ça :


1 - Révisions

La semaine dernière nous avons le menu principal avec :
- le lieu,
- le temps de jeu,
- l'affichage des facesets,
- l'affichage du niveau, des points de vie et de magie,
- l'argent possédé,
- le déplacement du curseur.

Si vous avez réussi à comprendre la chose correctement vous n'aurez aucun de mal à faire le menu objet (et même les autres sous menus). Pour cette partie nous allons voir :
- l'appel du menu objet par le menu principal,
- l'affichage des facesets,
- l'affichage des objets en votre possessiont et leurs nombres.

Comme vous pouvez le voir, il n'y a pas énormément de différence par rapport à la dernière fois. D'ailleurs le menu entier se ressemblera dans sa fonction principal. Nous ne verrons pas le menu intégralement mais une partie seulement.
Vous allez voir comment savoir quel objet est possédé dans un ordre bien précis et comment utiliser cet objet et pas un autre. Beaucoup de condition vous attendent donc.



2 - Préparation du menu objet

Comme le menu principal nous allons faire nos panoramas pour un, deux ou trois personnes.

/////01 - Panorama/////

Une fois cela fais nous allons devoir faire appel à lui par le menu principal. Vous vous souvenez du code? Je vous montre la partie objet là où vous il y avait un message qui disait chapitre 2.

/////02 - Menu racine_partie objet/////

| >| > Condition : la touche C est pressée
| >| >| > Jouer SE : 'Decision3', Volume : 80, Tempo : 100
| >| >| > Effacer Image : 1
| >| >| > Effacer Image : 2
| >| >| > Effacer Image : 3
| >| >| > Effacer Image : 4
| >| >| > Effacer Image : 5
| >| >| > Effacer Image : 6
| >| >| > Effacer Image : 7
| >| >| > Effacer Image : 8
| >| >| > Effacer Image : 9
| >| >| > Effacer Image : 10
| >| >| > Effacer Image : 11
| >| >| > Effacer Image : 12
| >| >| > Effacer Image : 13
| >| >| > Effacer Image : 14
| >| >| > Effacer Image : 15
| >| >| > Effacer Image : 16
| >| >| > Effacer Image : 17
| >| >| > Effacer Image : 18
| >| >| > Effacer Image : 19
| >| >| > Effacer Image : 20
| >| >| > Opération : Interrupteur [0002:Menu racine_OK] Désactivé
| >| >| > Opération : Interrupteur [0006:Menu objet_OK] Activé
| >| >| > Opération : Interrupteur [0019:Objet courant] Activé
| >| >| > Opération : Interrupteur [0020:Objet rare] Désactivé
| >| >| > Appeler Événement Commun : [ID_Objet]
| >| >| > Appeler Événement Commun : [Nombres d'objets]
| >| >| > Arrêter les évènements
| >| >| >
| >| > Fin - Condition
Spoiler:

Voilà votre menu objet de base est crée et vous pouvez aller dessus. Avant de voir le déplacement dans le menu objet nous allons ajouter les facesets en fonction de votre équipe. Il faudra penser à ajouter (copier-coller) les différents événements pour les niveaux, les HP et les MP.


3 - Affichages des facesets et des zéros

/////03 - Affichage données images/////

Eh oui c'est exactement la même chose que le menu principal alors faites juste un copier-coller.


4 - Quels objets avons nous?

Pour afficher les objets il va déjà falloir savoir lesquels ont a. Pour ça on va faire un événement qui activera une variable par objet. Ces variables serviront à classer les objets obtenus.
Voyons déjà une image :

/////04 - ID_objet//////

| > Condition : l'objet [Potion] est possédé
| >| > Opération : Variable
[0040:ID_potion] = 1

| >| >
| > Sinon
| >| > Opération : Variable
[0040:ID_potion] = 0

| >| >
| > Fin - Condition
Spoiler:

| > Condition : l'objet [Antidote] est possédé
| >| > Opération : Variable

[0041:ID_Antidote] = 2

| >| >
| > Sinon
| >| > Opération : Variable

[0041:ID_Antidote] = 0

| >| >
| > Fin - Condition
Spoiler:
.....
| > Condition : l'objet [Phénix] est possédé
| >| > Opération : Variable

[0044:ID_Phénix] = 4

| >| >
| > Sinon
| >| > Opération : Variable

[0044:ID_Phénix] = 0

| >| >
| > Fin - Condition
Spoiler:

| > Appeler Événement Commun : [Nombres d'objets]
Spoiler:


5 - Combien d'objet avons nous?

Maintenant nous allons voir combien d'objet nous avons en fonction de l'affichage. Je comprends bien que c'est un peu flou pour vous mais tout sera expliqué plus loin.
Il va vous falloir une variable affichage par objet. Une pour l'objet 1, une pour l'objet 2 etc... Si vous avez 30 objets il vous en faut donc 30.

/////05 - Nombre objets/////

| > Condition : Variable [0046:Affichage objet 1] == 0
| >| > Opération : Variable

[0051:Nombre objet 1] = 0

| >| >
| > Fin - Condition
| > Condition : Variable [0046:Affichage objet 1]

== 1

| >| > Opération : Variable

[0051:Nombre objet 1] = [Potion] possédés

| >| >
| > Fin - Condition
| > Condition : Variable [0046:Affichage objet 1]

== 2

| >| > Opération : Variable

[0051:Nombre objet 1] = [Antidote] possédés

| >| >
| > Fin - Condition
| > Condition : Variable [0046:Affichage objet 1]

== 3

| >| > Opération : Variable

[0051:Nombre objet 1] = [Éther] possédés

| >| >
| > Fin - Condition
| > Condition : Variable [0046:Affichage objet 1]

== 4

| >| > Opération : Variable

[0051:Nombre objet 1] = [Elixir] possédés

| >| >
| > Fin - Condition
| > Condition : Variable [0046:Affichage objet 1]

== 5

| >| > Opération : Variable

[0051:Nombre objet 1] = [Phénix] possédés

| >| >
| > Fin - Condition
Spoiler:

Je vous montre une autre partie du code pour l'objet 3 :
| > Condition : Variable [0048:Affichage objet 3]

== 0

| >| > Opération : Variable

[0053:Nombre objet 3] = 0

| >| >
| > Fin - Condition
| > Condition : Variable [0048:Affichage objet 3]

== 1

| >| > Opération : Variable

[0053:Nombre objet 3] = [Potion] possédés

| >| >
| > Fin - Condition
| > Condition : Variable [0048:Affichage objet 3]

== 2

| >| > Opération : Variable

[0053:Nombre objet 3] = [Antidote] possédés

| >| >
| > Fin - Condition
| > Condition : Variable [0048:Affichage objet 3]

== 3

| >| > Opération : Variable

[0053:Nombre objet 3] = [Éther] possédés

| >| >
| > Fin - Condition
| > Condition : Variable [0048:Affichage objet 3]

== 4

| >| > Opération : Variable

[0053:Nombre objet 3] = [Elixir] possédés

| >| >
| > Fin - Condition
| > Condition : Variable [0048:Affichage objet 3]

== 5

| >| > Opération : Variable

[0053:Nombre objet 3] = [Phénix] possédés

| >| >
| > Fin - Condition
Spoiler:

| > Appeler Événement Commun : [Classement objet]

| >
Spoiler:


6 - Classons les objets.

/////06 - Classement objet/////

Je me permet de vous renvoyer vers un de mes tutoriel sur le trie des variables : /////INSERER LIEN TUTO TRIE VARIABLE/////
Détaillons un peu ça :

| > Opération : Variable [0046..0050] = 0
| > Opération : Variable [0056:Objet plus petit] = 1
| > Opération : Variable [0057:Variable rang] = 46
Spoiler:

| > Boucle
| >| > Condition : Variable [0056:Objet plus petit] == Variable [0040:ID_potion]
| >| >| >
Appeler Script : $game_variables[$game_variables[57]] = 1
| >| >| >

Opération : Variable [0057:Variable rang] += 1
| >| >| >
| >| > Fin - Condition
Spoiler:

| >| > Condition : Variable

[0057:Variable rang] > 50

| >| >| >

Sortir de la Boucle
| >| >| >
| >| > Fin - Condition


| >| > Condition : Variable

[0056:Objet plus petit] > 99

| >| >| >

Sortir de la Boucle
| >| >| >
| >| > Fin - Condition


| >| >
| > Fin - Boucle
| >
Spoiler:


7 - Récapitulons

Ces événements ne sont pas simple alors je vais expliquer le fonctionnement en plus simple.
Premièrement on a attribuer une variable pour objet. Dans la démonstration j'ai fais 5 objets. J'ai donc fais 5 variables qui seront égale à l'ID de l'objet si on le possède. Par exemple si on a une potion, sa variable sera égale à 1, si on a un éther sa variable sera égale à 3. Ce qui permettre de classer les objets dans cette ordre si on les possède tous :
- Potion ID 1
- Antidote ID 2
- Ether ID3
- Elixir ID 4
- Phénix ID 5
Une fois que c'est fais, on a crée 5 variables affichages (une pour chaque objet). Si l'affichage objet 1 est égale à 0 le nombre aussi car on a rien. Si l'affichage objet 1 est égale à 1 se sera le nombre de potion, si c'est 2 se sera le nombre d'antidote, etc...
Une fois que l'on sais quel objet l'on a et le nombre de chaque objet on va les classer. Par exemple si l'on a 5 ethers et 3 antidotes dans cet ordre, le classement fera en sorte de mettre l'antidote avant l'éther et attribuer les chiffres 3 et 5.
Si on utilise tous les antidotes, l'éther prendra sa place et le nombre aussi. Tout ça pour éviter d'avoir des trous entre chaque objet si il en manque un.


8 - L'affichage des objets.

Pour ça pas de problème. C'est comme l'affichage des niveaux, HP ou MP du menu principal.

Chapitre 2 - Le menu objet 07_obj10

Chapitre 2 - Le menu objet 08_obj10

Chapitre 2 - Le menu objet 09_obj10

Chapitre 2 - Le menu objet 10_obj10

Chapitre 2 - Le menu objet 11_obj10

Chapitre 2 - Le menu objet 12_obj10

Chapitre 2 - Le menu objet 13_obj10

Pas trop compliqué n'est ce pas? Maintenant attaquons le menu objet.


9 - Le menu objet.

Il va falloir faire le menu en lui même. C'est à dire le déplacement du curseur et faire en sorte que le logiciel sache quel objet est utilisée. Je veux dire par là que si vous avez 1 potion et 1 antidote et que vous utiliser la potion. L'antidote va prendre sa place et donc il faudra savoir qu'il n'y a plus de potion et que l'antidote qui a pris sa place soit bien un antidote et pas une potion.
Je vous montre l'image du code pour commencer.

Chapitre 2 - Le menu objet 14_men10
Chapitre 2 - Le menu objet 15_men10
Chapitre 2 - Le menu objet 16_men10
Chapitre 2 - Le menu objet 17_men10
Chapitre 2 - Le menu objet 18_men10
Chapitre 2 - Le menu objet 19_men10
Chapitre 2 - Le menu objet 20_men10
Chapitre 2 - Le menu objet 21_men10
Chapitre 2 - Le menu objet 22_men10
Chapitre 2 - Le menu objet 23_men10
Chapitre 2 - Le menu objet 24_men10
Chapitre 2 - Le menu objet 25_men10
Chapitre 2 - Le menu objet 26_men10
Chapitre 2 - Le menu objet 27_men10
Chapitre 2 - Le menu objet 28_men10
Chapitre 2 - Le menu objet 29_men10

C'est grand n'est ce pas? Ne vous inquièter pas on ne va tout détailler. Tout simplement parce que sinon je n'en finirais jamais et aussi parce que vous devez apprendre. Je m'excuse mais je ne pourrais pas mettre le code coloré comme d'habitude car le script que j'utilise décide de ne pas fonctionner pour cet événement. Je vais donc devoir le faire moi même et ça risque d'être un peu moins beau.

On commence par se téléporter sur le menu objet qui est une carte à lui seul. Ensuite on va afficher l'image du curseur aux bonnes coordonnées. Normalement vous savez faire tout ça.
Ensuite on va mettre une étiquette [Objet courant]. Dans la boucle créée (comme le menu principal) on va mettre les conditions si la touche droite est pressée on déplacera l'image aux autres coordonnées en activant l'interrupteur [0020:Objet rare] (de l'or dans la démo) et désactiver l'interrupteur [0019:Objet courant].
Si on appuie sur la touche gauche on fera la même chose car on a que deux choix. Par contre si on appuie sur la touche "C" ("espace" du clavier) on va jouer un effet sonore et on va voir ce qui est le premier objet pour savoir quels seront ces effets.
Nous allons donc détailler le premier objet et les suivant fonctionneront de la même façon.
Il y aura donc une autre boucle dans la boucle et encore une pour choisir sur quel personnage on se servira de l'objet.
Après avoir mis l'étiquette [Objet_1] on va continuer par si touche appuie est haut ou bas pour le déplacement du curseur. Si c'est bas on va à l'objet 2 et si c'est haut on va à l'objet 5. Et si on appuie sur "C" on va continuer l'événement à condition que l'on est au moins un objet d'ou la condition : si variable [0046:Affichage objet 1] est égale ou supérieur à 1 (donc au moins un objet), on joue un effet sonore et on affiche une image sur le premier personnage.
A partir de la on va ajouter une étiquette [P1_1] et on va faire une troisième boucle dans les boucles.
On va faire en sorte que si on appuie sur haut ou sur bas, cela fonctionne seulement si on a deux ou trois membres dans l'équipe. Si c'est le cas se sera les étiquettes [P2_1] et [P3_1].
Si on annule on retourne au choix [Objet 1] et si on annule encore on quitte le menu objet pour revenir sur le menu principal.

J'ai un peu passé vite la dessus car si vous avez fais un menu principal, ce genre de boucles n'ont plus de secret pour vous. Maintenant on va voir comment gérer le premier objet en fonction de ce que c'est.
Ensuite si la touche "C" est appuyée on va calculer les HP, HP max, MP et MP max du premier personnage. Je sais que ça a déjà été fais mais ca servira de nouveau de toute façon.
Ensuite va venir toutes les conditions de chaque objet :
- Si la variable [0046:Affichage objet 1] égale 1 (donc potion) et que le premier personnage n'est pas mort et que ses HP sont plus bas que ses HP max, on lui ajoutera 50 HP, on retira une potion et on appelera les événements communs [NIV/HP/MP équipe] pour remettre à jour, [ID_Objet] et [Nombres objets] pour remettre également à jour et [Classement objet] car si c'est la dernière potion l'antidote prendra sa place et les autres objets suivront. Pour finir la condition si la variable [0051:Nombre objet 1] est égale à zéro on reviens au choix de l'objet pour éviter les bugs. Sinon on joue une erreur.
- Si la variable [0046:Affichage objet 1] égale 2 (donc antidote) et que le premier personnage n'est pas mort et qu'il est empoisonné, on le soignera, on retira un antidote et on appelera les événements communs [NIV/HP/MP équipe] pour remettre à jour, [ID_Objet] et [Nombres objets] pour remettre également à jour et [Classement objet] car si c'est le dernier antidote l'éther prendra sa place et les autres objets suivront. Pour finir la condition si la variable [0051:Nombre objet 1] est égale à zéro on reviens au choix de l'objet pour éviter les bugs.

On fera pareil pour chaque objet sachant que la plupart il faut mettre la condition si l'état n'est pas la mort. Si le mettez pas ca le guérira quand même. Bien sur le phénix, lui, fonctionnera.
Pour l'éther on calculera les MP max et MP au lieu des HP max et HP.

Dans le cas on l'on aurait deux ou trois membres dans l'équipe et que l'on appuie sur haut ou sur bas on vérifiera qui est là. Pour cela on jouera avec les mêmes interrupteurs que pour les facesets.
Si le joueur à fais droite on affichera les objets rares comme les niveaux, HP et MP. On ne passe pas par un tri car en général les objets rares sont trouvés ou obtenus dans le bon ordre.

Si on quitte le menu objet complètement on activera l'interrupteur [0002:Menu racine_OK] et on désactivera l'interrupteur [0026:Menu objet_OK]. Puis on effacera toutes les images et on fera [arrêter les événements].


10 - Conclusion

Voilà le tutoriel sur le menu objet touche au but. Je m'excuse encore pour la qualité du dernier événement surtout que c'est le plus important à mes yeux. Il vous suffit d'être logique et je pense honnêtement que vous le comprendrais assez facilement. Tout se joue par des boucles et conditions. Si, bien sûr, quelqu'un ne l'aurait pas compris il ne faut pas hésiter à poser des questions sur le forum. Je ferais de mon mieux pour réexpliquer au mieux.
La prochaine fois on verra le menu magie. Si vous avez bien compris le début du tutoriel vous devriez déjà être prêt.
Je vous dis donc à bientôt et désolé pour la qualité des images que j'ai du réduire suite à leur taille qui posait problème.

Lien : https://mega.nz/#F!rI40BarI!Y2ZwL6elmhc9Nupp2v65xg


Dernière édition par Shamugan le Dim 29 Juil 2018 - 18:19, édité 2 fois (Raison : Mise à jour lien)
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum