Aller au contenu
  • 0

Commande de création d'item avec condition


Question

Posté(e)

Version de Minecraft : 1.20.1
Version de Skript : 2.7.1

Type du skript : Commande unique permettant de lancer une commande de console, selon les items que le joueur a dans son inventaire

Description du script :

Le script doit permettre au joueur de lancer une commande console selon le nombre d'un certain item présent dans son inventaire, puis lui retirer ces mêmes items.
L'item en question peut être n'importe quoi tant qu'il a une caractéristique bien précise à savoir recherché ici: Son nom.


Exemple:
Si le joueur a 3 (ou plus) diamants nommé "Diamant chanceux" dans son inventaire:
Alors lui enlève 3 diamants nommé "Diamant chanceux" de son inventaire et exécute une commande console.

ATTENTION! Difficulté en vue:
Impossible d'utiliser un script de la sorte:

command /test:
    trigger:
        set {_diampur} to amount of diamond named "&f&lDiamant épuré" in player's inventory     #Compte les Diams renomés dans l'inventaire du joueur
        set {_diamgive} to {_diampur} - 3                                                       #Rajoute une valeur utile pour plus tard
        if {_diampur} is more than 2:                                                           #Si le joueur a 3 ou plus Diamant rename dans son inv
            remove all diamond named "&f&lDiamant épuré" from player's inventory                #Les lui supprime tous
            make console execute command "/mi give material DIAMANTPLUS %player% %{_diamgive}%" #Lui en rend son nombre initial - 3
            make console execute command "/give %player% diamond_pickaxe 1"                     #Execute la commande finale

Ce script... en soit fonctionne. Il n'y a pas d'erreurs, et en jeu il fonctionne bien et fait exactement ce qu'on lui demande.
Cependant, quand le script cherche les diamants renommés, il ne prend en compte QUE les diamants qui ont PILE ce nom là, je sais que ça paraît stupide comme remarque, mais PILE ça veut dire PILE en INTERNE. 
En gros, si vous avez un plugin d'item, ici MMOItems ou encore MythicMobs, et que le nom de votre diamant est le même que le nom recherché à savoir: "&f&lDiamant épuré" et que vous l'avez généré sur un plugin de la sorte, il ne sera pas pris en compte dans la syntaxe : < .... diamond named "&f&lDiamant épuré" >     ====> Même si les deux noms sont identique !!! <====

J'ai testé de passer par des loops, au plus loin j'ai réussi à trouver les noms FONCTIONNELS des items recherchés mais je me heurte à énormément de problèmes en faisant cela.
1: Je ne peux pas remove les diamants renommés en passant par la loop (Souvenez vous, le named "&f&lDiamant épuré" n'est pas accepté)
2: Je ne peux pas savoir le amount de la loop-value des diamants renommés.

Voilà le plus loin que j'ai pu aller de fonctionnel à 100%, qui prend en compte les items d'autres plugins et de noms identique:

command /test2:
    trigger:
        set {_inv.%player%::*} to items in player's inventory   #Prend tout les items dans l'inventaire du joueur
        loop {_inv.%player%::*}:                                #Loop l'inventaire du joueur
            if name of loop-value is "&f&lDiamant épuré":       #Vérifie le nom de chaque loop jusqu'à trouver le diamant == Là ça marche
                message loop-value to player                    #J'arrive pas à aller plus loin


Et voici en concret ce que j'aimerai atteindre, la syntaxe est fausse et ne fonctionne pas!
Mais l'idée du script demandé est là:

command /test3:
    trigger:
        set {_inv.%player%::*} to items in player's inventory                     #Prend tout les items dans l'inventaire du joueur
        loop {_inv.%player%::*}:                                                  #Loop l'inventaire du joueur
            if name of loop-value is "&f&lDiamant épuré":                         #Trouve les diamants renommés
                if loop-value amount is more than 2:                              #ça marche pas mais vous saisissez, vérifie si y'en a plus que 3    
                    remove 3 diamonds named "loop-value" in player's inventory      #ça marche pas mais vous saisissez, en retire 3  
                    make console execute commande "/ping"                         #commande finale à executer


Voilà voilà, c'est assez technique, je suis moi-même à un niveau très élevé de skript et je sèche sur celui-ci, j'en appelle donc à d'autres scripteurs qui auraient peut-être un moyen de résoudre mon problème fort handicapant ^^'
Bonne journée à tous! 😃

1 réponse à cette question

Messages recommandés

  • 0
Posté(e) (modifié)

Bon, après des mois de tests et avec l'aide d'un des Devs de skript directement, problème résolu.

Je met la solution pour ceux qui auraient le même problème que moi à l'avenir:

 

command /craftpurdp1:
    trigger:
        loop items in player's inventory:
            if:
                name of loop-item is "&f&lDiamant épuré"
                item amount of loop-item > 1
            then:
                set {_diampur.%player%} to 1
            if:
                loop-item is not enchanted
                loop-item is a diamond pickaxe
                custom model data of loop-item is 0
            then:
                set {_item.%player%} to 1
        if {_diampur.%player%} or {_item.%player%} are not 1:
            message "&7&m=====&6 Craft &4ECHEC&6 de &fPioche en diamant épuré &aI &7&m=====" to player
            play sound "block.note_block.bass" with volume 1.0 to player 
        if {_diampur.%player%} is not 1:
            message "&cVous ne disposez pas de &6&l2 &f&lDiamant épuré&c" to player
        if {_item.%player%} is not 1:
            message "&cVous ne disposez pas de &6&l1 &7&lPioche en diamant non enchanté&c" to player
        if {_item.%player%} is 1:
            if {_diampur.%player%} is 1:
                loop items in player's inventory:
                    if:
                        {_item.%player%} is 1
                        name of loop-item is "&f&lDiamant épuré"
                        item amount of loop-item > 1
                    then:
                        set {_item.%player%} to 0
                        remove 2 of loop-item from player
                    if:
                        {_diampur.%player%} is 1
                        loop-item is not enchanted
                        loop-item is a diamond pickaxe
                        custom model data of loop-item is 0
                    then:
                        set {_diampur.%player%} to 0
                        remove 1 of loop-item from player
                message "&c- &6&l2&c Diamant épuré" to player
                message "&c- &6&l1&c Pioche en diamant" to player
                play sound "block.note_block.chime" with volume 1.0 to player 
                make console execute command "/mi give TOOL PIOCHED %player%"

 

Modifié par tiradorus

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.