Boutique en jeu

Maintenant que nous avons vu comment créer des lootboxes et mettre en place une monnaie, nous pouvons créer la boutique.

Avant-propos

Dans cet article nous allons voir comment mettre en place une boutique en jeu. Nous pourrons vendre des lootboxes et des livres pour débloquer des recettes personnalisées. Le tout, payable avec la monnaie du serveur. Il est donc nécessaire d’avoir lu les articles sur la création de lootboxes et la mise en place d’une monnaie virtuelle avant de poursuivre.

Exemple du coffre de démarrage

Sur notre serveur un coffre de démarrage est offert à la première connexion d’un joueur et il n’est pas possible de s’en procurer par la suite. Toutefois, pour l’exemple de cet article, nous allons mettre en place la vente de ce coffre dans la boutique en jeu. Il sera disponible pour 10 Crédits.

Nous avons mis en place dans les articles précédents les fonctions qui nous seront utiles. Comme précédemment, nous allons créer une fonction pour permettre l’achat de ce coffre. Commençons par créer un dossier shop pour les fonctions. Je créé également un dossier buy qui contiendra les fonctions relatives aux achats. Enfin je créé un dossier boxes pour la vente des coffres et le fichier starter.mcfunction qui contiendra les commandes. Le chemin complet du fichier est donc : data/mangarmor/functions/shop/buy/boxes/starter.mcfunction

Mise en place de l’achat

Tout d’abord, nous allons exécuter la fonction boxes/starter qui donne une boite au joueur, en précisant en condition qu’il doit avoir au moins 10 Crédits en banque (c’est le coût du coffre).

execute if score @s bank matches 10.. run function mangarmor:boxes/starter

Il nous reste plus qu’à exécuter la fonction pour enlever 10 Crédits au joueur. Là encore nous mettons la condition de 10 Crédits. En effet, sans cette condition, dans le cas où le joueur a moins de 10 Crédits, il ne peut pas obtenir son coffre et ses Crédits passent en négatif.

execute if score @s bank matches 10.. run function mangarmor:bank/remove/10

Nous pouvons ensuite envoyer un message au joueur pour lui confirmer son achat, toujours avec la condition des 10 Crédits.

execute if score @s bank matches 10.. run tellraw @s ["",{"text":"BOUTIQUE :","color":"gold"}," Tu as acheté 1 ",{"text":"Coffre de démarrage","color":"black","hoverEvent":{"action":"show_text","value":"Boite contenant des objets aléatoires"}},"."]

Quand le joueur ne peut pas payer

Il nous reste plus qu’à prendre en compte le cas où le joueur n’a pas assez de crédit. Nous allons créer une nouvelle fonction pour indiquer au joueur qu’il ne peut pas effectuer l’achat. Pour cela, je créé le fichier data/mangarmor/functions/shop/buy/cant.mcfunction

tellraw @s ["",{"text":"BOUTIQUE :","color":"gold"}," Tu n'a pas assez de ",{"text":"Crédits","color":"gold","hoverEvent":{"action":"show_text","value":"Monnaie du serveur"}}," pour cet achat."]
function mangarmor:bank/balance

La fonction se content d’informer le joueur qu’il n’a pas assez de Crédits puis lui rappelle son solde.

Nous pouvons maintenant ajouter une condition dans la fonction d’achat créée précédement. Elle appellera la fonction pour prévenir le joueur qu’il n’a pas assez de Crédits si celui-ci possède 9 Crédits ou moins, le coffre coûtant 10 crédits.

execute if score @s bank matches ..9 run function mangarmor:shop/buy/cant

Interagir avec un panneau

Le moyen le plus simple que j’ai trouvé pour permettre aux joueurs d’acheter des objets en jeu, c’est d’utiliser des panneaux. Chaque panneau indique l’objet disponible et son prix. Un clic droit dessus permet d’acheter l’objet. En fait, ça exécute la fonction gérant l’achat. Pour simplifier la création du panneau, j’utilise Minecraft Tools.

Création d'un panneau sur Minecraft Tools

J’obtiens ainsi le code pour générer le panneau. Je peux utiliser cette commande directement en jeu ou créer une fonction qui permettra d’obtenir le panneau en l’appelant.

/give @s minecraft:oak_sign{BlockEntityTag:{Text1:'{"text":"Coffre de démarrage","clickEvent":{"action":"run_command","value":"function mangarmor:shop/buy/starter"}}',Text2:'{"text":""}',Text3:'{"text":"10 Crédits","color":"yellow"}'},display:{Name:'{"text":"Coffre de d\\u00e9marrage"}'}}

Objet flotant

Afin de permettre aux joueurs de voir immédiatement se qu’ils s’apprêtent à acheter, il est possible de laisser flotter des objets. Attention toutefois, cette technique est source de lag. J’invoque donc l’objet avec un age négatif et un délais pour le ramasser de 32767. Ainsi, l’objet restera au sol indéfiniment et il sera impossible de le ramasser.

/summon minecraft:item ~ ~ ~ {Item:{id:"minecraft:black_shulker_box",Count:1b},Age:-32768,PickupDelay:32767}

Il me suffit maintenant d’exécuter cette fonction à l’endroit où je veux voir la boite flotter. Il est également possible de l’enregistrer dans une fonction. Lors de la saison 2 du serveur, tous les objets étaient invoqués dans la fonction init de la boutique.

Téléchargement

Le datapack reprend les fonctions de la banque et des lootboxes. Il contient également une fonction mangarmor:shop/signs/buy-starter pour obtenir le panneau d’achat et une fonction mangarmor:shop/items/starter pour l’objet flottant.

Sommaire

Partager

Partager sur facebook
Facebook
Partager sur twitter
Twitter

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.