Aller au contenu
  • 0

Parsed as item


Question

Posté(e)

Salut !

Encore mon HDE qui pose problème, c'est au niveau des items maintenant, quand je les vends le joueur doit par exemple avoir au moins "{nombreItemPrix} of {itemPrix}", ca marche pas mal sauf avec les item enchanté.

Sachant que je sauvegarde ceci dans une base de donnée, l'item est converti en string, il faut ensuite que je le parse en item mais bon ça marche pas très bien :/

 

Exemple BDD:

id | pseudo_vendeur | miseenechange | item_vente | echange_item | echange_id | echange_nombre | echange_enchantements

30 | Izychiel | 2016-01-25 | 63 | normal wood planks | diamond sword of Knockback 2 and Fire Aspect 2 | 276:4 | 1 | Knockback 2/Fire Aspect 2

 

Et mon code (le problème parvient dès la première condition, n'hésitez pas à me proposer des optimisation):

command /changeIt <player> <integer>:
   executable by: console
   trigger:
       set {_itemP} to the first element out of objects in column "echange_item" from result of query "SELECT echange_item FROM offres_hde WHERE id = '%arg 2%'" and close parsed as item
       set {_itemPi} to "%{_itemP}%" parsed as item
       set {_numbP} to the first element out of objects in column "echange_nombre" from result of query "SELECT echange_nombre FROM offres_hde WHERE id = '%arg 2%'" and close parsed as integer
       set {_itemV} to the first element out of objects in column "item_vente" from result of query "SELECT item_vente FROM offres_hde WHERE id = '%arg 2%'" and close parsed as item
       set {_itemVi} to "%{_itemV }%" parsed as item
       send "%number of {_itemPi} in arg 1's inventory% %{_itemPi}%" to arg 1
       if "%arg 1's inventory%" contains "%{_itemPi}%":
           send "oui" to arg 1
       if number of {_itemP} in arg 1's inventory < {_numbP}:
           set {_msgAnnul} to {@NoSuffItems}
           set {_split::*} to "%{_itemP}%" split at " " parsed as text
           if {_split::1} is "%{_itemP}%":
               set {_itemP} to "%{_numbP}% %{_itemP}%"
           else:
               send "bite" to arg 1
               replace all "%{_split::1}% " in {_itemP} with "%{_numbP}% "
           replace all "[prix]" in {_msgAnnul} with {_itemP}
           annuler(arg 1, {_msgAnnul})
           stop
       remove {_numbP} of {_itemPi} from arg 1's inventory
       give {_itemVi} to arg 1
       annuler(arg 1, {@SuccEchange})
       update "DELETE FROM offres_hde WHERE id = '%arg 2%'"
       actuHde(1)

Si vous ne comprenez pas, dites moi.

Merci.

11 réponses à cette question

Messages recommandés

  • 0
Posté(e)
Salut !

Encore mon HDE qui pose problème, c'est au niveau des items maintenant, quand je les vends le joueur doit par exemple avoir au moins "{nombreItemPrix} of {itemPrix}", ca marche pas mal sauf avec les item enchanté.

Sachant que je sauvegarde ceci dans une base de donnée, l'item est converti en string, il faut ensuite que je le parse en item mais bon ça marche pas très bien :/

 

Exemple BDD:

id | pseudo_vendeur | miseenechange | item_vente | echange_item | echange_id | echange_nombre | echange_enchantements

30 | Izychiel | 2016-01-25 | 63 | normal wood planks | diamond sword of Knockback 2 and Fire Aspect 2 | 276:4 | 1 | Knockback 2/Fire Aspect 2

 

Et mon code (le problème parvient dès la première condition, n'hésitez pas à me proposer des optimisation):

command /changeIt <player> <integer>:
   executable by: console
   trigger:
       set {_itemP} to the first element out of objects in column "echange_item" from result of query "SELECT echange_item FROM offres_hde WHERE id = '%arg 2%'" and close parsed as item
       set {_itemPi} to "%{_itemP}%" parsed as item
       set {_numbP} to the first element out of objects in column "echange_nombre" from result of query "SELECT echange_nombre FROM offres_hde WHERE id = '%arg 2%'" and close parsed as integer
       set {_itemV} to the first element out of objects in column "item_vente" from result of query "SELECT item_vente FROM offres_hde WHERE id = '%arg 2%'" and close parsed as item
       set {_itemVi} to "%{_itemV }%" parsed as item
       send "%number of {_itemPi} in arg 1's inventory% %{_itemPi}%" to arg 1
       if "%arg 1's inventory%" contains "%{_itemPi}%":
           send "oui" to arg 1
       if number of {_itemP} in arg 1's inventory < {_numbP}:
           set {_msgAnnul} to {@NoSuffItems}
           set {_split::*} to "%{_itemP}%" split at " " parsed as text
           if {_split::1} is "%{_itemP}%":
               set {_itemP} to "%{_numbP}% %{_itemP}%"
           else:
               send "bite" to arg 1
               replace all "%{_split::1}% " in {_itemP} with "%{_numbP}% "
           replace all "[prix]" in {_msgAnnul} with {_itemP}
           annuler(arg 1, {_msgAnnul})
           stop
       remove {_numbP} of {_itemPi} from arg 1's inventory
       give {_itemVi} to arg 1
       annuler(arg 1, {@SuccEchange})
       update "DELETE FROM offres_hde WHERE id = '%arg 2%'"
       actuHde(1)

Si vous ne comprenez pas, dites moi.

Merci.

Tu pourrais créer un "script" PHP ou un truc comme ça '-'. Et si ta BDD à un nom de BDD spécifique, il faudrait sélectionner nan?

Voilà la hiérarchie SQL :

Serveur (MySQL en général)

BDD

Colonnes

Tables

Items

 

Il faut tout sélectionner petit à petit (je suis pas très sûr, MEME pour la hiérarchie SQL, à me corriger ^^)

 

Sinon :

Il faudrait que tu me donnes quel résultat ça te donne si à la première condition on enlève le "Parsed as item". (Pour se faire, tu supprimes le "Parsed as item" et tu fais "send : "%_itemP}%"" ^^

  • 0
Posté(e)

Haha merci de m'aider mais je n'ai vraiment aucun problème niveau MySQL :')

Mon problème vient seulement de la vérification de si le mec à l'objet dans son inventaire avec un objet enchanté (peut-être aussi avec un objet renommé), j'ai essayé de plusieurs manière, car cela fonctionne parfaitement pour un item non enchanté :/

Cela marche si l'on ne prend pas de variable, exemple:

set {_tesr} to "diamond sword of Knockback 2 and Fire Aspect 2" parsed as item
send "%number of {_tesr} in arg 1's inventory% %{_itemPi}%" to arg 1
# Cela renvoie 0 tout le temps

send "%number of diamond sword of Knockback 2 and Fire Aspect 2 in arg 1's inventory% %{_itemPi}%" to arg 1
#Par contre cela fonctionne à merveilles :/

  • 0
Posté(e)
Haha merci de m'aider mais je n'ai vraiment aucun problème niveau MySQL :')

Mon problème vient seulement de la vérification de si le mec à l'objet dans son inventaire avec un objet enchanté (peut-être aussi avec un objet renommé), j'ai essayé de plusieurs manière, car cela fonctionne parfaitement pour un item non enchanté :/

Cela marche si l'on ne prend pas de variable, exemple:

set {_tesr} to "diamond sword of Knockback 2 and Fire Aspect 2" parsed as item
send "%number of {_tesr} in arg 1's inventory% %{_itemPi}%" to arg 1
# Cela renvoie 0 tout le temps

send "%number of diamond sword of Knockback 2 and Fire Aspect 2 in arg 1's inventory% %{_itemPi}%" to arg 1
#Par contre cela fonctionne à merveilles :/

Essaie de remplacer {_tesr} par %{_tesr}% ? (Oui, je crois aux miracles xD)

Que à la 2e ligne du 1er code hein ^^.

  • 0
Posté(e)
Essaie de remplacer {_tesr} par %{_tesr}% ? (Oui, je crois aux miracles xD)

Non cela ne marche pas déjà essayé :/

Mais j'ai peut être la solution, si cela marche je partage et je me mange la barbe :'(

  • 0
Posté(e)
Non cela ne marche pas déjà essayé :/

Mais j'ai peut être la solution, si cela marche je partage et je me mange la barbe :'(

Tu en as une? :O.

C'est pas "%number of ""{_tesr}"" in arg-1's inventory" ? :eek:

 

Ou sinon, tu supprimes le Parsed as item je pense xD

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