Aller au contenu
  • 0

loop all items in player's inventory: ne loop que les cases ?


Question

Posté(e)

J'ai édité le post qui n'était pas clair

Salut:

Voici mon code:

command /banque [<text>] [<number>]:
   trigger:
       if arg 1 isn't set:
           send "/banque add nombre: Ajoute vos émeraudes à la banque" to player
       else if arg 1 is "add":
           if arg 2 isn't set:
               send "Vous devez préciser un certain nombre d'émeraudes" to player
           else:
               set {_add.%player%} to arg 2
               loop all items in player's inventory:
                   if loop-item is emerald:
                       add 1 to {_invent.%player%}
               if {_invent.%player%} is greater than or equal to {_add.%player%}:
                   loop {_add.%player%} times:
                       remove 1 emerald from the player
                   add {_add.%player%} to {emerald.%player%}
                   send "Vous avez ajouté %{_add.%player%}% émeraudes dans votre banque !" to player
               else:
                   send "Vous n'avez pas assez d'émeraudes dans votre inventaire" to player

Ce code va dans le cas du /balance add ajouter des émeraudes a une banque virtuelle.

Ca marche mais il y a un probleme.

loop all items in player's inventory:
                   if loop-item is emerald:
                       add 1 to {_invent.%player%}

J'ai remarqué que ici, au lieu d'ajouter 1 a {_invent.%player%} pour chaques émeraudes de l'inventaire, ca ajoute 1 pour chaques slot de l'inventaire contenant des émeraudes !

C'est a dire que si j'ai 64 émeraudes sur un slot (un stack), le skript va en détecter 1 :/

Comment régler cela ?

10 réponses à cette question

Messages recommandés

  • 0
Posté(e)

               set {_slot} to 0
               loop 36 times:
                   là tu met tes truc muches to slot {_slot} of player's inventory
                   Ici tu peut metre un if {_slot} contains emerald bala bla bla...
                   add 1 to {_slot}
                   wait 1 ticks

bref si je veut êtres sûr de loop tout l'inventaire du joueur

je fait un loop 36 times puisque l'inventaire fait 36 slots

  • 0
Posté(e)
               set {_slot} to 0
               loop 36 times:
                   là tu met tes truc muches to slot {_slot} of player's inventory
                   Ici tu peut metre un if {_slot} contains emerald bala bla bla...
                   add 1 to {_slot}
                   wait 1 ticks

bref si je veut êtres sûr de loop tout l'inventaire du joueur

je fait un loop 36 times puisque l'inventaire fait 36 slots

Et ca refera exactement le meme probleme x) moi je veux loop tous les items de l'inventaire et le

loop all items in player's inventory:

loop que les cases

  • 0
Posté(e)

if... avec if tu peaufine

tu a essayer un truc comme çà :

loop-item to {_slot}:
   loop item is emerald
   bla bla bla

place le juste à la place du if que je t'ai proposé

 

j'vai pas t'écrire le Skript quant même :p

  • 0
Posté(e)
Tu peux t'aider ici :

http://dev.bukkit.org/bukkit-plugins/skript/forum/tutorials/71969-how-to-save-an-inventory-of-a-player/

si tu comprends pas l'anglais, tu peux me demander des précisions :')

Vous arrivez pas a comprendre x)

Avec ca, on va save les items cases par cases (slot par slot)

Moi je veux juste loop TOUS les items (chaques items des stacks !)

Parce que pour le moment si je veux que mon skript détecte que j'ai 2 diamants, je dois poser comme ca |63| |1| et moi je veux que ca détecte comme ca |64| |0|

:p

  • 0
Posté(e)

Ok je refais le post:

Salut:

Voici mon code:

command /banque [<text>] [<number>]:
   trigger:
       if arg 1 isn't set:
           send "/banque add nombre: Ajoute vos émeraudes à la banque" to player
       else if arg 1 is "add":
           if arg 2 isn't set:
               send "Vous devez préciser un certain nombre d'émeraudes" to player
           else:
               set {_add.%player%} to arg 2
               loop all items in player's inventory:
                   if loop-item is emerald:
                       add 1 to {_invent.%player%}
               if {_invent.%player%} is greater than or equal to {_add.%player%}:
                   loop {_add.%player%} times:
                       remove 1 emerald from the player
                   add {_add.%player%} to {emerald.%player%}
                   send "Vous avez ajouté %{_add.%player%}% émeraudes dans votre banque !" to player
               else:
                   send "Vous n'avez pas assez d'émeraudes dans votre inventaire" to player

Ce code va dans le cas du /balance add ajouter des émeraudes a une banque virtuelle.

Ca marche mais il y a un probleme.

loop all items in player's inventory:
                   if loop-item is emerald:
                       add 1 to {_invent.%player%}

J'ai remarqué que ici, au lieu d'ajouter 1 a {_invent.%player%} pour chaques émeraudes de l'inventaire, ca ajoute 1 pour chaques slot de l'inventaire contenant des émeraudes !

C'est a dire que si j'ai 64 émeraudes sur un slot (un stack), le skript va en détecter 1 :/

Comment régler cela ?

  • J'aime 1
  • 0
Posté(e)

Ah j'ai compris ! Essaie de remplacer par ça

set {_add.%player%} to arg 2
       set {_invent.%player%} to amount of emerald in player's inventory
               if {_invent.%player%} is greater than or equal to {_add.%player%}:
                   loop {_add.%player%} times:
                       remove 1 emerald from the player
                   add {_add.%player%} to {emerald.%player%}
                   send "Vous avez ajouté %{_add.%player%}% émeraudes dans votre banque !" to player
               else:
                   send "Vous n'avez pas assez d'émeraudes dans votre inventaire" to player

Faut juste régler les problèmes de tabulation ^^ je suis sur téléphone désolé

  • 0
Posté(e)
Ah j'ai compris ! Essaie de remplacer par ça

set {_add.%player%} to arg 2
       set {_invent.%player%} to amount of emerald in player's inventory
               if {_invent.%player%} is greater than or equal to {_add.%player%}:
                   loop {_add.%player%} times:
                       remove 1 emerald from the player
                   add {_add.%player%} to {emerald.%player%}
                   send "Vous avez ajouté %{_add.%player%}% émeraudes dans votre banque !" to player
               else:
                   send "Vous n'avez pas assez d'émeraudes dans votre inventaire" to player

Faut juste régler les problèmes de tabulation ^^ je suis sur téléphone désolé

Merci !

Résolu !

×
×
  • 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.