Aller au contenu
  • 0

Nombre d'item dans un gui


Question

Posté(e)

Bonjour à vous,

 

Une aide me serait précieuse pour la suite de mon skript :') Vous pourrez voir plus de détails sur ce post devenu inactif 

on inventory window close:
	if inventory name of player's current inventory contains "&0Poubelle":
		send "test" to player
		loop all items in player's current inventory:
			message "%{size of loop item}%"

Ce qu'il me faudrait ici, c'est de me faire sortir le nombre d'item déposé dans l'inventaire nommé "&0Poubelle" qui est un virtual chest ouvert avec une commande.

 

Version Spigot : 1.11.2

Version Skript : 2.2-dev30b

Addons : SkQuery, SkRayfall, Skellet, Tuske

 

Cordialement,

BoBsmil3Y

13 réponses à cette question

Messages recommandés

  • 0
Posté(e)

bah tu créer une variable {_s} que tu met à 0,

à chaque fois que sa loop tu rajoute 1 à {_s}

et du coup à la fin tu as ton nombre

sinon tu as 6 version de retard ^^

  • 0
Posté(e)
Il y a 2 heures, uiytt a dit :

sinon tu as 6 version de retard ^^

Je sais mdr tu me l'as déjà dit ! x)

Mais il y a pas plus simple ? comme une boucle pour avoir le nombre d'item avec sa taille %{size of NameOfLoop}% 

  • 0
Posté(e)
il y a une heure, BoBsmil3Y a dit :

Je sais mdr tu me l'as déjà dit ! x)

Mais il y a pas plus simple ? comme une boucle pour avoir le nombre d'item avec sa taille %{size of NameOfLoop}% 

bah t'as toujours pas changer donc je répète xD

et je pense pas que ça va marcher mais essaye

set {_test} to size of all items in player's current inventory

mais bon j'ai peux d'espoir

  • 0
Posté(e) (modifié)

Ca marche, mais pas comme je voulais, en gros j'ai ce code

on inventory window close:
	if inventory name of player's current inventory contains "&0Poubelle":
		send "&6&lGG &7&lTu as fermé la poubail" to player
		loop all items in player's current inventory:
			set {_test} to size of all items in player's current inventory
		message "%{_test}%"

Et le problème c'est qu'il me faut le nombre d'item pas, le nombre de case prise par un item

 

EDIT 

on inventory window close:
	if inventory name of player's current inventory contains "Poubelle":
		set {_s} to 0
		send "test" to player
		loop all items in player's current inventory:
			add 1 to {_s}
			set {_test} to size of all items in player's current inventory
		message "%{_test}%"
		message "%{_s}%"

Les deux variables renvoient les mêmes valeurs ?

 

Upupupup

Modifié par BoBsmil3Y
up
  • 0
Posté(e)

J'ai refait ton code en mieux, car il était cracra. Mon code est en pur skript et est 100% fonctionnel car je l'ai testé.

Testé en version: spigot 1.12.2
Version de Skript: 2.2-dev36

on inventory close:
    if name of event-inventory contains "Poubelle":
        set {_items::*} to items in inventory event-inventory #Tout les items dans l'inventaire
        set {_nombre_item_depose} to amount of {_items::*} #Le nombre d'items dans l'inventaire
        send "&bItems: %{_items::*}% ; &dNombre d'item: %{_nombre_item_depose}%"
 
command /test:
    trigger:
        open chest inventory with 6 row with name "Poubelle" to player
  • J'aime 1
  • 0
Posté(e)
Le 07/07/2018 à 14:40, BoBsmil3Y a dit :

Ok presque parfait !

  Révéler le contenu masqué

J'obtiens bien le nombre d'item mais avec leur sorte derrière (Coal, cobble ...) et le problème c'est que je veux donner une somme (ex : 3$) pour chaque item, pas stack. Du coup je pourrais faire ça ? 

Anyone can help me please ? ? 

J'avais pas vu que la conversation avait continué ^^ déso

et j'ai pas bien compris ? tu veux juste que ça donne un montant différent en fonction de l'item ?

  • 0
Posté(e) (modifié)

Hello ! J'ai fait un nouveau code (inspiré de ci-dessus) et ça fonctionne ! Après, libre à toi de faire ce que tu veux avec ma nouvelle variable {_nbitems} qui contient le nombre d'items déposés dans la poubelle ! Voici le code commenté pour que tu comprennes ce que j'ai fais de nouveau. (J'ai bien espacé pour montrer ce que j'ai rajouté.)

on inventory close:
	if name of event-inventory is "Poubelle":
		set {_items::*} to items in inventory event-inventory #Tous les items dans l'inventaire

		loop {_items::*}: # On va faire une boucle pour tous les items du coup.
			set {_vartemp::*} to "%loop-value%" split by " " parsed as text # {_vartemp::1} c'est le chiffre sinon l'objet (si unique)
			set {_vartemp::1} to {_vartemp::1} parsed as number # C'était du texte, donc on met en chiffre. Si juste texte: on obtient <none>
			if {_vartemp::1} isn't an integer: # On regarde si il y avait plusieurs objets ou non. Si non: ça veut dire que la variable n'est pas définie comme un nombre
				set {_vartemp::1} to 1 # Donc ça veut dire qu'il faut qu'on compte l'objet comme étant unique.
			add {_vartemp::1} to {_nbitems} # On rajoute le nombre d'objet compté à la variable nbitems.

		send "&bItems: %{_items::*}% ; &dNombre de slots utilisés: %amount of all items in inventory event-inventory% ; &6Nombre d'items total: %{_nbitems}%"
 
command /poubelle:
    trigger:
        open chest inventory with 6 row with name "Poubelle" to player

À savoir:

Si tu ne sais pas ce qu'est "split by [...] parsed as text", cela permet de découper n'importe quelle variable qui est du texte en ce que tu veux, pour pouvoir modifier comme bon te sembles la variable plus facilement. Dans ce cas précis, quand je l'utilise par exemple avec 32 terres, ça va me donner:

"%{_vartemp::1}%" --> 32

"%{_vartemp::2}%" --> dirt

Modifié par Wafoux
  • J'aime 1
  • 0
Posté(e)

@Wafoux Merci !!!!! Tu mérites un gros bisou.

Euh, juste comment on passe en résolu ? :3 sinon ils ont géré leur nouveau fofo

J'ai fini le code comme ça :

		set {_money} to {_nbitems} * 3
		make console execute "eco give %player% %{_money}%"
		message "&6Bin &7» Tu récupères &a%{_money}%$ &7en recyclant tes items !"

Le problème c'est que ça me mets 2 messages (avec celui d'essentials...), possible de passer par un truc du style :

set %money% to %money% + {_money}

Je sais que ça fonctionne pas ?

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

Alors mon cher, si tu veux me remercier n'hésites pas à cliquer sur le petit coeur en bas à droite de mon message ?

Par ailleurs:

set %money% to %money% + {_money}

Et bah c'est presque ça comme code ! En modifiant légèrement:

add {_money} to money of player

PS: Moi non plus je sais pas passer en résolu x)

 

Modifié par Wafoux
  • J'aime 1
  • 0
Posté(e)
il y a 13 minutes, BoBsmil3Y a dit :

Euh, juste comment on passe en résolu ? :3 sinon ils ont géré leur nouveau fofo

 

 

il y a 7 minutes, Wafoux a dit :

PS: Moi non plus je sais pas passer en résolu x)

 

A moi non plus je sais pas comment vous pouvez faire ? 

Mais bon je mets en résolu

Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.
×
×
  • 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.