❤ 0 Crafter depuis le menu
Pour VX Ace
Bonjour et bienvenue
Je vous présente un petit tuto qui permet de créer un système simple en event pour crafter des objets. (il est prévu pour fonctionner sur RMVXAce mais
en fin de tuto je vous filerai les modif a réaliser pour l'adapter sur RMXP et RMVX).
Prérequis
- Autant d'objet que d'ingrédients.
- 1 Objet clé par recette disponible
- 1 Événement commun par recette
- 7 Variables dédiées (1 compteur pour le nombre d'objets, 5 variables texte et 1 compteur d'objet ok)
1 - Création des ingrédients
Pour faire un système de craft il nous faut les ingrédients. J'ai choisi des items non consommables mais vous faites comme vous voulez.
Voici les proprités pour un de mes objets fabricable :
Citation: Nom : Fleur de vie
Icone : icone de fleur
Description : Fleur au pétales écarlate, permet de guérir les blessures. [ingrédient] # Ici, je mets un texte d'ambiance et un indice sur son utilisation
Type : Normal
Prix : 60 # Mettez ce que vous voulez
Consommable : Oui
Cible : Personne
Disponibilité : Jamais |
Le reste je touche pas, mais si vous voulez un effet en consommant l'ingrédient (comme skyrim) :
Citation: Cible : Un allié
Disponibilité : Partout
Effets : Recupération PV 5% |
2 - Création de la recette
Une fois tous vos ingrédients crées, il faut créer les recettes de vos objets.
Toujours dans l'onglet Objet, je crée un "objet clé" utilisable sur "personne" et "non consommable."
Lorsque le joueur l'utilise cela appelle l'évenement commun associé.
L'objet recette n'est pas achetable dans mon jeu, mais plus important encore c'est un objet clé, il est donc séparé des ingrédients qui se situent dans l'onglet objet du menu. Comme ça le joueur ne perd pas 20 minutes a dérouler le menu objet pour trouver la recette.
Citation: Nom : Recette de Potion
Icone : icone de livre
Description : Crée une potion avec les ingrédients suivants : 1 Cube de slime, 1 Fleur de vie, 1 Fiole d'eau. # Ici je mets un texte bref et la liste des ingrédients utilisés.
Type : Objet clé
Prix : 0 # Mettez ce que vous voulez
Consommable : Non
Cible : Personne
Disponibilité : Depuis le menu
Effets : Événement commun [Recette de potion] |
3 - Création de l'événement commun
J'ai déjà choisi l'événement commun dans l'objet recette, mais vous devrez le créer et le paramétrer. Justement on y vient, comment on le fait cet événement commun ?
On le nomme pareil que l'objet clé recette associé (dans l'exemple il s'agit de Recette de potion.)
Dans l'onglet Événement communn que he nomme "Recette de Potion" (par exemple), avec pour déclenchement Aucun, j'entre les commandes suivantes :
1
2
3
4
5
6
7
8
9
10
11
| Script : $game_variables[5]=""
$game_variables[6]=""
$game_variables[7]=""
$game_variables[8]=""
$game_variables[9]="" # On force les variables réservés 5 à 9 de contenir un texte vide.
Variable : [004 : Résultat] = 0 # On reset la variable résultat
Variable : [003 : Quantité objet] = nombre d'objet [fleur de vie] possédés # On récupère le nombre de fleur de vie dans l'inventaire.
Condition : Variable [003 : Quantité objet] supérieur ou égal a 1 # La recette utilise 1 fleur.
Variable : [004 : Résultat] += 1 # On ajoute 1 à la variable résultat
sinon
Script : $game_variables[5]="#{1-$game_variables[3]} Fleur de vie" |
Temps mort, que signifie ce truc ? Le spoiler est ici pour expliquer sinon on continue.
Spoiler (cliquez pour afficher) Pas de panique je vais vous expliquer :
Les variables 5 à 9 sont réservés pour l'ensemble des recettes. Chacune représente l'un des 5 ingrédients différent possibles pour chaque recette parmi l'ensemble de ceux que vous avez crées.
Donc ici on utilise la variable 5 (que l'on a vidé au début) et on la rend égale a un string, du texte si vous préférez. c'est pour cela que j'ai utilisé des guillemets après le =
#{ } (dièse suivi d'accolades) c'est utilisé pour effectuer un calcul (ici 1 - variable n°3) et inclure le résultat dans le string/texte.
Pour l'expliquer autrement, cela revient a faire :
variable 5 égale à (1 - valeur de la variable 3) + "texte"
Au final la variable 5 vaut "1 Fleur de vie" si la variable 003 : Quantité objet est inférieure à 1
On continue :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| Fin de condition # On a fait 1 objet, il faut vérifier les 2 autres.
Variable : [003 : Quantité objet] = nombre d'objet [Cube de slime] possédés # On récupère le nombre de cube de slime dans l'inventaire.
Condition : Variable [003 : Quantité objet] supérieur ou égal a 1 # La recette utilise 1 cube.
Variable : [004 : Résultat] += 1 # On ajoute 1 à la variable résultat
sinon
Script : $game_variables[6]="#{1-$game_variables[3]} Cube de slime " # Vous l'avez compris, on utilise la variable 6 pour le 2e ingrédient de la recette.
Fin de condition
Variable : [003 : Quantité objet] = nombre d'objet [Fiole d'eau] possédés # On récupère le nombre de fioles d'eau dans l'inventaire.
Condition : Variable [003 : Quantité objet] supérieur ou égal a 1 # La recette utilise 1 fiole.
Variable : [004 : Résultat] += 1 # On ajoute 1 à la variable résultat
sinon
Script : $game_variables[7]="#{1-$game_variables[3]} Fiole d'eau " # Vous avez compris on utilise la variable 7 pour le 3e ingrédient de la recette.
Fin de condition
Condition : Variable [004 : Resultat] est égale a 3 # Si les 3 objets nécessaires sont présents en bonne quantité alors le résultat vaut 3.
Modifier les objets : [Fleur de vie] - 1 # On retire les ingrédients et ajoute l'objet crafté.
Modifier les objets : [Cube de slime] - 1
Modifier les objets : [Fiole d'eau] - 1
Modifier les objets : [Potion] + 1
Afficher un message : Aucun portrait, sombre, centre
Résultat :
+1 \i[216] Potion # J'utilise l'affichage d'icone n°216 qui correspond a l'icone de potion.
Script : SceneManager.call(Scene_Item) # Par défaut l'utilisation d'un objet fait sortir du menu donc je ré-ouvre le menu objet pour crafter un autre objet plus facilement.
sinon
Afficher un message : Aucun portrait, sombre, centre
Il manque :
\v[5]\v[6]\v[7]\v[8]\v[9] # Seules les variables non vides qui correspondent aux objets et leurs quantités manquantes s'affichent dans le dialogue.
Script : SceneManager.call(Scene_Item)
Fin de condition
Variable : [003..009] = 0 # On oublie pas de reset toutes les variables utilisés. |
4 - Et ensuite ?
C'est tout pour la recette. Maintenant ce qu'il faut savoir pour créer une autre recette.
Il faut copier coller l'événement commun et changer les valeurs dans les blocs de condition et la ligne variable avant chaque bloc.
- XXXXX nom de l'objet a utiliser dans la recette
- Y quantité de cet objet
- Z numéro de la variable associé au numéro de l'ingrédient (1er objet = 5, 2e objet = 6, ... 5e objet = 9)
Au besoin on peut aussi ajouter un 4e ingrédient et utiliser la variable 8 dans l'appel script
1
| $game_variables[8]="#{Y-$game_variables[3]} nom de l'ingrédient " |
voire un 5e et utiliser la dernière variable dédiée (9) dans l'appel script.
1
2
3
4
5
6
| Variable : [003 : Quantité objet] = nombre d'objet [XXXXXX] possédés # Choisir l'objet ingrédient XXXXX de son choix
Condition : Variable [003 : Quantité objet] supérieur ou égal a Y # Si il faut 3 écorces d'arbre on met 3 a la place du Y
Variable : [004 : Résultat] += 1
sinon
Script : $game_variables[Z]="#{Y-$game_variables[3]} XXXXXX " # Ecrire le nom de l'objet à la place des XXXXXX.
Fin de condition |
On pense aussi à adapter la condition de fin, si la recette n'a que 2 ingrédients, le résultat vaut 2 et on a utilisé les variables 5 et 6 dans les appels script.
Enfin on vérifie de supprimer et ajouter le bon nombre d'objets dans l'inventaire.
Vous avez toutes les cartes pour créer votre propre système de craft dans vos jeux.
5 - Et les autres logiciels ?
Si vous n'utilisez pas RMVXAce, il est possible d'adapter ce tuto.
Les appels de script fonctionnent quelque soit le logiciel a l'exception de l'appel du menu objet.
Sous RMXP c'est : $scene=Scene_Item.new
Sous VX, il me semble que c'est comme dans VX Ace (à confirmer).
Les affichages de messages sont différents dans XP, vous n'aurez pas accès a l'affichage d'icone (sans script externe) mais vous pouvez faire sans.
Autre "défaut" de XP c'est que les objet n'ont pas de catégorie tout sera mélangé. C'est un peu chiant mais les événements ont leur limite.
Bon tuto et bon making à tous
|