Aller au contenu
  • 0

Récupérer un String avec un GUI d'enclume


Question

Posté(e)

Version de Skript : dev 34

Version du serveur : 1.12

 

Bonjour, comme indiquer dans le titre j'aimerais récupérer le nom de l'item renommé dans un GUI d'enclume.

Actuellement j'ai ça :

function test(p: player):
   close {_p}'s inventory
   open virtual anvil inventory to {_p}
   make a gui slot 0 of {_p} with stone named "TEST"

on anvil rename:
   if event-item's name is equal to "TEST":
       if event-string is a number:
           message "ok" to player

 

Le problème que j'ai c'est que vu que l'item est définis avec Tuske d'est que on fait une modification dessus, l'action est annulé (ex : le bougé, le dropé) et donc quand je le renome l'action s'annule et l'event "on anvil rename:" ne s'active jamais :/

 

Merci pour votre aide ^^

7 réponses à cette question

Messages recommandés

  • 0
Posté(e)

Salut, j'avais trouvé comment faire il y a longtemps sur Internet et je ne le retrouve plus, alors je te donne mon code, je ne saurais pas expliqué le code mais bon voilà quoi x)

 

function packetJson(text: text) :: jsonobject:
   set {_t::*} to {_text} split by ""
   loop {_t::*}:
       if loop-value = """":
           set {_t::%loop-index%} to "\"""
       else if loop-value = "\":
           if {_t::%loop-index parsed as int + 1%} != "n":
               set {_t::%loop-index%} to "\\"
   set {_text} to join {_t::*} by ""
   if {_json} isn't set:
       set {_json} to "{""text"":""%{_text}%"""
   else:
       set {_json} to "%{_json}%,{""text"":""%{_text}%"""
   return json of string "{""extra"":[%{_json}%}],""text"":""""}"     

function renameDog(players: players, defaulttext: string="&bTexte Par Défaut"):
   loop {_players::*}: 
       set {_packet} to new play_server_open_window packet
       set string pinfo 0 of {_packet} to "minecraft:anvil"
       set {ANVILGUI::%loop-value%} to random integer between 1 and 100
       set "chatcomponent" pjson 0 of {_packet} to packetJson({_defaulttext})
       set int pnum 0 of {_packet} to {ANVILGUI::%loop-value%}
       send loop-value packet {_packet}
       set {_packet} to new play_server_set_slot packet
       set int pnum 0 of {_packet} to {ANVILGUI::%loop-value%}
       set int pnum 1 of {_packet} to 0
       set {_item} to "paper" parsed as item
       set name of {_item} to {_defaulttext}
       set "ItemModifier" pinfo 0 of {_packet} to {_item}
       send loop-value packet {_packet}

on packet event play_client_close_window:
   if int pnum 0 of event-packet = {ANVILGUI::%player%}:
       clear {ANVILGUI::%player%}

on packet event play_client_window_click:
   if int pnum 0 of event-packet = {ANVILGUI::%player%}:
       cancel event
       update gui (player's current inventory)
       if int pnum 1 of event-packet = 0:
           set {_packet} to new play_server_set_slot packet
           set int pnum 0 of {_packet} to {ANVILGUI::%player%}
           set int pnum 1 of {_packet} to 0
           set {_item} to "paper" parsed as item
           set name of {_item} to "&bTexte Par Défaut"
           set "ItemModifier" pinfo 0 of {_packet} to {_item}
           send player packet {_packet}
       if int pnum 1 of event-packet = 2:
           set {_final} to "ItemModifier" pinfo 0 of event-packet
           set {_name} to uncolored name of {_final}
           {_name} is set
           if {dog.%player%} is set:
               set metadata value "Name" of {_wolf} to "%{_name}%"
               set {_mode} to metadata value "Mode" of {dog.%player%}
               set {_m} to first character of {_mode}
               set {_food} to metadata value "Food" of {dog.%player%}
               set custom name of {dog.%player%} to "&r%{_name}% (%{_m}%) %{_food}%"
               set action bar of player to "&aVotre chien s'appelle &e%{_name}% &a!"
           else:
               send "&cVous n'avez pas de chien."
           clear {ANVILGUI::%player%}
           close player's inventory
  • 0
Posté(e)
Salut, j'avais trouvé comment faire il y a longtemps sur Internet et je ne le retrouve plus, alors je te donne monde, je ne saurais pas expliqué le code mais bon voilà quoi x)

 

function packetJson(text: text) :: jsonobject:
   set {_t::*} to {_text} split by ""
   loop {_t::*}:
       if loop-value = """":
           set {_t::%loop-index%} to "\"""
       else if loop-value = "\":
           if {_t::%loop-index parsed as int + 1%} != "n":
               set {_t::%loop-index%} to "\\"
   set {_text} to join {_t::*} by ""
   if {_json} isn't set:
       set {_json} to "{""text"":""%{_text}%"""
   else:
       set {_json} to "%{_json}%,{""text"":""%{_text}%"""
   return json of string "{""extra"":[%{_json}%}],""text"":""""}"     

function renameDog(players: players, defaulttext: string="&bTexte Par Défaut"):
   loop {_players::*}: 
       set {_packet} to new play_server_open_window packet
       set string pinfo 0 of {_packet} to "minecraft:anvil"
       set {ANVILGUI::%loop-value%} to random integer between 1 and 100
       set "chatcomponent" pjson 0 of {_packet} to packetJson({_defaulttext})
       set int pnum 0 of {_packet} to {ANVILGUI::%loop-value%}
       send loop-value packet {_packet}
       set {_packet} to new play_server_set_slot packet
       set int pnum 0 of {_packet} to {ANVILGUI::%loop-value%}
       set int pnum 1 of {_packet} to 0
       set {_item} to "paper" parsed as item
       set name of {_item} to {_defaulttext}
       set "ItemModifier" pinfo 0 of {_packet} to {_item}
       send loop-value packet {_packet}

on packet event play_client_close_window:
   if int pnum 0 of event-packet = {ANVILGUI::%player%}:
       clear {ANVILGUI::%player%}

on packet event play_client_window_click:
   if int pnum 0 of event-packet = {ANVILGUI::%player%}:
       cancel event
       update gui (player's current inventory)
       if int pnum 1 of event-packet = 0:
           set {_packet} to new play_server_set_slot packet
           set int pnum 0 of {_packet} to {ANVILGUI::%player%}
           set int pnum 1 of {_packet} to 0
           set {_item} to "paper" parsed as item
           set name of {_item} to "&bTexte Par Défaut"
           set "ItemModifier" pinfo 0 of {_packet} to {_item}
           send player packet {_packet}
       if int pnum 1 of event-packet = 2:
           set {_final} to "ItemModifier" pinfo 0 of event-packet
           set {_name} to uncolored name of {_final}
           {_name} is set
           if {dog.%player%} is set:
               set metadata value "Name" of {_wolf} to "%{_name}%"
               set {_mode} to metadata value "Mode" of {dog.%player%}
               set {_m} to first character of {_mode}
               set {_food} to metadata value "Food" of {dog.%player%}
               set custom name of {dog.%player%} to "&r%{_name}% (%{_m}%) %{_food}%"
               set action bar of player to "&aVotre chien s'appelle &e%{_name}% &a!"
           else:
               send "&cVous n'avez pas de chien."
           clear {ANVILGUI::%player%}
           close player's inventory

 

He bien finalement non car seul MundoSk permet de créer de nouveau packet (Et pas Skellett) or MundoSK ne marche plus à partir de la 1.9 (en tous cas ne marche plus en 1.12) :'c

  • 0
Posté(e)
AH

J'ai fais une requête à LimeGlass (car il a créer un système de packet incomplet avec Skellett) mais bon il faut qu'il accepte et qu'il le code, on en a pour un bout de temps :(

  • J'aime 1
  • 0
Posté(e)
He bien finalement non car seul MundoSk permet de créer de nouveau packet (Et pas Skellett) or MundoSK ne marche plus à partir de la 1.9 (en tous cas ne marche plus en 1.12) :'c

J'adore ta licorne x)

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

Bonsoir,

 

https://skript-mc.fr/forum/threads/recherche-par-anvil.14727/#post-116548

 

Merci d'effectuer des recherches la prochaine fois. :rolleyes:

 

He bien finalement non car seul MundoSk permet de créer de nouveau packet (Et pas Skellett) or MundoSK ne marche plus à partir de la 1.9 (en tous cas ne marche plus en 1.12) :'c

Je t'ai déjà dit de créer une demande d'aide si tu as des problèmes avec MundoSK. ;)

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