Aller au contenu
  • 0

Restaurer un inventaire


Question

Posté(e)

Bonjour à vous,

 

Skript : 2.2-dev13

SkQuery : 3.5.1 / 3.21.4

 

Je viens vers vous après multiple recherche infructueuse.

Je tente désespérément de restaurer un inventaire avec l'expression

%inventory%'s serialized contents

de SkQuery mais rien y fait.

J'ai essayé toutes les solutions proposés dans les autres topic concernant ça mais toujours le même resultat.

 

command /test:
  trigger:
    set {Inv.%player%} to serialized contents of player's current inventory
    set {Inv.helmet.%player%} to player's helmet
    set {Inv.chestplate.%player%} to player's chestplate
    set {Inv.leggings.%player%} to player's leggings
    set {Inv.boots.%player%} to player's boots
    message "Inventaire retiré"
    clear player's inventory
    wait 40 ticks
    message "Inventaire donné"
    set player's helmet to {Inv.helmet.%player%}
    set player's chestplate to {Inv.chestplate.%player%}
    set player's leggings to {Inv.leggings.%player%}
    set player's boots to {Inv.boots.%player%}
    set player's inventory's serialized contents to {Inv.%player%}

 

Mon problème étant qu'il sauvegarde bel et bien des données dans la variable, mais lorsque je veux restauré l'inventaire il n'y a que l'armure qui vient pas le reste.

 

Auriez-vous une solution a me proposé ?

17 réponses à cette question

Messages recommandés

  • 0
Posté(e)
Il faut une list donc

{Inv.%player%::*}

Déjà tenté, mais j'otiens l'erreur suivante :

the inventory serial of the inventory of the player can only be set to one text, not more <test.sk, line 16: set player's inventory's serialized contents to {Inv.%player%::*}'>

 

 

Par ailleurs j'ai même fait un vulgaire paste de skunity

set {savedinventory::%player%} to serialized contents of player's current inventory

Mais j'obtiens toujours le même résultat, qui est de ne pas recevoir les items.

  • 0
Posté(e)

[20:17:42] [server thread/ERROR]: #!#!

[20:17:42] [server thread/ERROR]: #!#! [skript] Severe Error:

[20:17:42] [server thread/ERROR]: #!#!

[20:17:42] [server thread/ERROR]: #!#! If you're developing an add-on for Skript this likely means that you have done something wrong.

[20:17:42] [server thread/ERROR]: #!#! If you're a server admin however please go to http://dev.bukkit.org/server-mods/skript/tickets/

[20:17:42] [server thread/ERROR]: #!#! and check whether this error has already been reported.

[20:17:42] [server thread/ERROR]: #!#! If not please create a new ticket with a meaningful title, copy & paste this whole error into it,

[20:17:42] [server thread/ERROR]: #!#! and describe what you did before it happened and/or what you think caused the error.

[20:17:42] [server thread/ERROR]: #!#! If you think that it's a trigger that's causing the error please post the trigger as well.

[20:17:42] [server thread/ERROR]: #!#! By following this guide fixing the error should be easy and done fast.

[20:17:42] [server thread/ERROR]: #!#!

[20:17:42] [server thread/ERROR]: #!#! Stack trace:

[20:17:42] [server thread/ERROR]: #!#! java.lang.IllegalArgumentException: Chests must have a size that is a multiple of 9!

[20:17:42] [server thread/ERROR]: #!#! at org.apache.commons.lang.Validate.isTrue(Validate.java:136)

[20:17:42] [server thread/ERROR]: #!#! at org.bukkit.craftbukkit.v1_10_R1.CraftServer.createInventory(CraftServer.java:1526)

[20:17:42] [server thread/ERROR]: #!#! at com.w00tmast3r.skquery.util.serialization.InventorySerialUtils.fromBase64(InventorySerialUtils.java:34)

[20:17:42] [server thread/ERROR]: #!#! at com.w00tmast3r.skquery.elements.effects.EffDeserializeReturn.execute(EffDeserializeReturn.java:28)

[20:17:42] [server thread/ERROR]: #!#! at ch.njol.skript.lang.Effect.run(Effect.java:54)

[20:17:42] [server thread/ERROR]: #!#! at ch.njol.skript.lang.TriggerItem.walk(TriggerItem.java:63)

[20:17:42] [server thread/ERROR]: #!#! at ch.njol.skript.lang.TriggerItem.walk(TriggerItem.java:91)

[20:17:42] [server thread/ERROR]: #!#! at ch.njol.skript.effects.Delay$1.run(Delay.java:84)

[20:17:42] [server thread/ERROR]: #!#! at org.bukkit.craftbukkit.v1_10_R1.scheduler.CraftTask.run(CraftTask.java:71)

[20:17:42] [server thread/ERROR]: #!#! at org.bukkit.craftbukkit.v1_10_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:353)

[20:17:42] [server thread/ERROR]: #!#! at net.minecraft.server.v1_10_R1.MinecraftServer.D(MinecraftServer.java:723)

[20:17:42] [server thread/ERROR]: #!#! at net.minecraft.server.v1_10_R1.DedicatedServer.D(DedicatedServer.java:400)

[20:17:42] [server thread/ERROR]: #!#! at net.minecraft.server.v1_10_R1.MinecraftServer.C(MinecraftServer.java:668)

[20:17:42] [server thread/ERROR]: #!#! at net.minecraft.server.v1_10_R1.MinecraftServer.run(MinecraftServer.java:567)

[20:17:42] [server thread/ERROR]: #!#! at java.lang.Thread.run(Unknown Source)

[20:17:42] [server thread/ERROR]: #!#!

[20:17:42] [server thread/ERROR]: #!#! Version Information:

[20:17:42] [server thread/ERROR]: #!#! Skript: 2.2-dev13

[20:17:42] [server thread/ERROR]: #!#! Bukkit: 1.10.2-R0.1-SNAPSHOT

[20:17:42] [server thread/ERROR]: #!#! Minecraft: 1.10.2

[20:17:42] [server thread/ERROR]: #!#! Java: 1.8.0_121 (Java HotSpot 64-Bit Server VM 25.121-b13)

[20:17:42] [server thread/ERROR]: #!#! OS: Windows 7 amd64 6.1

[20:17:42] [server thread/ERROR]: #!#!

[20:17:42] [server thread/ERROR]: #!#! Running CraftBukkit: false

[20:17:42] [server thread/ERROR]: #!#!

[20:17:42] [server thread/ERROR]: #!#! Current node: null

[20:17:42] [server thread/ERROR]: #!#! Current item: deserialize return

[20:17:42] [server thread/ERROR]: #!#!

[20:17:42] [server thread/ERROR]: #!#! Thread: Server thread

[20:17:42] [server thread/ERROR]: #!#!

[20:17:42] [server thread/ERROR]: #!#! End of Error.

[20:17:42] [server thread/ERROR]: #!#!

 

 

EDIT: J'ai tenté de changer ma version de skript 2.2-dev13 vers 2.2-fixes-v9b et toujours le même problème ^^

  • 0
Posté(e)

Bon @WeBer_Le_Pecheur je vais peut-être avoir l'air de faire de la pub pour mes ressources, mais le meilleur moyen à mon avis et de stocker toutes les infos dans des fichiers yml... Chose possible avec mon addon Sketch. Pour te donner une idée, voici un exemple d'item sauvegardé:

itemexemple:
 ==: org.bukkit.inventory.ItemStack
 type: DIAMOND_SWORD
 meta:
   ==: ItemMeta
   meta-type: UNSPECIFIC
   display-name: The Best
   enchants:
     DAMAGE_ALL: 3

[spoiler=Patterns]

Sauvegarder

(save|store) [item[[ ]stack]] %itemstack% (at|to) [section] %string% (in|to) [[y[a]ml ]file ]%string%

Charger

[get[ted]] [item[[ ]stack]] (in|from) [[y[a]ml ]file ]%string% (at|where) [section] %string%

 

========================================================================

 

 

Si tu veux que je te code le skript (gratuit :)), contacte moi par mp , ou sinon, voici un exemple de deux functions pour un skript de kits qui sauvegarde les inventaires:

function KitCreate(p: player, kit: text, delay: text):
   ExistenceOfKit({_kit}) is true:
       send "{@Prefix} &cErreur : Ce Kit existe déjà !" to {_p}
   else:
       add {_kit} to {kits::*}
       set {_tool} to "%{_p}'s tool%"
       {_tool} contain "air":
           set {_icon} to "diamond sword"
       else:
           set {_check::*} to groups 0 of {_tool} matched to "[0-9]"
           {_check::*} is set:
               set {_separate::*} to {_tool} split at " "
               set {_icon} to {_separate::2}
       loop integers between 36 and 39:
           slot loop-integer of {_p} is air:
               add air to {_armors::*}
           else:
               add slot loop-integer of {_p} to {_armors::*}
       loop integers between 0 and 35:
           slot loop-integer of {_p} is not air:
               add slot loop-integer of {_p} to {_items::*}
       set yml value "Kits.%{_kit}%.Icon" from file "{@Kits_File}" to {_icon}
       set yml value "Kits.%{_kit}%.Delay" from file "{@Kits_File}" to {_delay}
       set {_armor} to 0
       loop {_armors::*}:
           add 1 to {_armor}
           save itemstack loop-value at "Kits.%{_kit}%.Armors.%{_armor}%" to file "{@Kits_File}"
       set {_item} to 0
       loop {_items::*}:
           add 1 to {_item}
           save itemstack loop-value at "Kits.%{_kit}%.Items.%{_item}%" to file "{@Kits_File}"
       set {_msg} to Replace("{@Prefix} {@Message_Kit_Create}", {_kit}, "")
       send {_msg} to {_p}

function GetKit(p: player, kit: text):
   {_p} does not have permission "kit.%{_kit}%":
       send "{@Prefix} {@Permission_Message}" to {_p}
   else:
       ExistenceOfKit({_kit}) is false:
           send "{@Prefix} &cErreur : Ce Kit n'existe pas !" to {_p}
       else:
           set {_delay} to yml value "Kits.%{_kit}%.Delay" from file "{@Kits_File}"
           set {_delay} to {_delay} parsed as a timespan
           difference between {kit.%{_kit}%.%{_p}%.lastused} and now is less than {_delay}:
               set {_timeleft} to TimeLeft(difference between {kit.%{_kit}%.%{_p}%.lastused} and now, {_delay})
               set {_msg} to Replace("{@Prefix} {@Message_Kit_TimeLeft}", {_kit}, {_timeleft})
               send {_msg} to {_p}
           else:
               set {kit.%{_kit}%.%{_p}%.lastused} to now
               #set {_items::*} to yml list "Kits.%{_kit}%.Items" from file "{@Kits_File}"
               set {_helmet} to get itemstack in file "{@Kits_File}" at "Kits.%{_kit}%.Armors.4"
               set {_chestplate} to get itemstack in file "{@Kits_File}" at "Kits.%{_kit}%.Armors.3"
               set {_leggings} to get itemstack in file "{@Kits_File}" at "Kits.%{_kit}%.Armors.2"
               set {_boots} to get itemstack in file "{@Kits_File}" at "Kits.%{_kit}%.Armors.1"
               if helmet of {_p} is air:
                   set helmet of {_p} to {_helmet}
               else:
                   add {_helmet} to {_items::*}
               if chestplate of {_p} is air:
                   set chestplate of {_p} to {_chestplate}
               else:
                   add {_chestplate} to {_items::*}
               if leggings of {_p} is air:
                   set leggings of {_p} to {_leggings}
               else:
                   add {_leggings} to {_items::*}
               if boots of {_p} is air:
                   set boots of {_p} to {_boots}
               else:
                   add {_boots} to {_items::*}
               set {_item} to 0
               loop 36 times:
                   add 1 to {_item}
                   add get itemstack in file "{@Kits_File}" at "Kits.%{_kit}%.Items.%{_item}%" to {_items::*}
               loop {_items::*}:
                   if {_p} has enough space for loop-value:
                       give loop-value to {_p}
                   else:
                       drop loop-value at {_p}'s location
                       {_full} is not set
                       set {_full} to true
               set {_msg} to Replace("{@Prefix} {@Message_Kit_Use}", {_kit}, "")
               send {_msg} to {_p}
               {_full} is true
               send "{@Prefix} &cLes items restants sont au sol !" to {_p}

[spoiler=Code complet]

 

 

 

  • 0
Posté(e)

@WeBer_Le_Pecheur je sais pas trop si on ta vraiment répondu mais le code à utiliser c'est:

 

# Sauvegarder :   
   set {Tournoi.Kit.%player%} to serialized contents of player's inventory
   set {Tournoi.Kit.%player%.helmet} to the helmet of the player
   set {Tournoi.Kit.%player%.chestplate} to the chestplate of the player
   set {Tournoi.Kit.%player%.leggings} to the leggings of the player
   set {Tournoi.Kit.%player%.boots} to the boots of the player

   # Restaurer :
   set serialized contents of player's inventory to {Tournoi.Kit.%player%}
   set helmet of player to {Tournoi.Kit.%player%.helmet}
   set chestplate of player to {Tournoi.Kit.%player%.chestplate}
   set leggings of player to {Tournoi.Kit.%player%.leggings}
   set boots of player to {Tournoi.Kit.%player%.boots}

  • 0
Posté(e)

Déjà tenter ce code, j'obtiens ceci :

 

[14:34:05] [server thread/ERROR]: #!#!

[14:34:05] [server thread/ERROR]: #!#! [skript] Severe Error:

[14:34:05] [server thread/ERROR]: #!#!

[14:34:05] [server thread/ERROR]: #!#! If you're developing an add-on for Skript this likely means that you have done something wrong.

[14:34:05] [server thread/ERROR]: #!#! If you're a server admin however please go to http://dev.bukkit.org/server-mods/skript/tickets/

[14:34:05] [server thread/ERROR]: #!#! and check whether this error has already been reported.

[14:34:05] [server thread/ERROR]: #!#! If not please create a new ticket with a meaningful title, copy & paste this whole error into it,

[14:34:05] [server thread/ERROR]: #!#! and describe what you did before it happened and/or what you think caused the error.

[14:34:05] [server thread/ERROR]: #!#! If you think that it's a trigger that's causing the error please post the trigger as well.

[14:34:05] [server thread/ERROR]: #!#! By following this guide fixing the error should be easy and done fast.

[14:34:05] [server thread/ERROR]: #!#!

[14:34:05] [server thread/ERROR]: #!#! Stack trace:

[14:34:05] [server thread/ERROR]: #!#! java.lang.IllegalArgumentException: Chests must have a size that is a multiple of 9!

[14:34:05] [server thread/ERROR]: #!#! at org.apache.commons.lang.Validate.isTrue(Validate.java:136)

[14:34:05] [server thread/ERROR]: #!#! at org.bukkit.craftbukkit.v1_10_R1.CraftServer.createInventory(CraftServer.java:1526)

[14:34:05] [server thread/ERROR]: #!#! at com.w00tmast3r.skquery.util.serialization.InventorySerialUtils.fromBase64(InventorySerialUtils.java:34)

[14:34:05] [server thread/ERROR]: #!#! at com.w00tmast3r.skquery.elements.expressions.ExprInventorySerials.change(ExprInventorySerials.java:41)

[14:34:05] [server thread/ERROR]: #!#! at ch.njol.skript.effects.EffChange.execute(EffChange.java:274)

[14:34:05] [server thread/ERROR]: #!#! at ch.njol.skript.lang.Effect.run(Effect.java:54)

[14:34:05] [server thread/ERROR]: #!#! at ch.njol.skript.lang.TriggerItem.walk(TriggerItem.java:63)

[14:34:05] [server thread/ERROR]: #!#! at ch.njol.skript.lang.TriggerItem.walk(TriggerItem.java:91)

[14:34:05] [server thread/ERROR]: #!#! at ch.njol.skript.effects.Delay$1.run(Delay.java:84)

[14:34:05] [server thread/ERROR]: #!#! at org.bukkit.craftbukkit.v1_10_R1.scheduler.CraftTask.run(CraftTask.java:71)

[14:34:05] [server thread/ERROR]: #!#! at org.bukkit.craftbukkit.v1_10_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:353)

[14:34:05] [server thread/ERROR]: #!#! at net.minecraft.server.v1_10_R1.MinecraftServer.D(MinecraftServer.java:723)

[14:34:05] [server thread/ERROR]: #!#! at net.minecraft.server.v1_10_R1.DedicatedServer.D(DedicatedServer.java:400)

[14:34:05] [server thread/ERROR]: #!#! at net.minecraft.server.v1_10_R1.MinecraftServer.C(MinecraftServer.java:668)

[14:34:05] [server thread/ERROR]: #!#! at net.minecraft.server.v1_10_R1.MinecraftServer.run(MinecraftServer.java:567)

[14:34:05] [server thread/ERROR]: #!#! at java.lang.Thread.run(Unknown Source)

[14:34:05] [server thread/ERROR]: #!#!

[14:34:05] [server thread/ERROR]: #!#! Version Information:

[14:34:05] [server thread/ERROR]: #!#! Skript: 2.2-dev13

[14:34:05] [server thread/ERROR]: #!#! Bukkit: 1.10.2-R0.1-SNAPSHOT

[14:34:05] [server thread/ERROR]: #!#! Minecraft: 1.10.2

[14:34:05] [server thread/ERROR]: #!#! Java: 1.8.0_121 (Java HotSpot 64-Bit Server VM 25.121-b13)

[14:34:05] [server thread/ERROR]: #!#! OS: Windows 7 amd64 6.1

[14:34:05] [server thread/ERROR]: #!#!

[14:34:05] [server thread/ERROR]: #!#! Running CraftBukkit: false

[14:34:05] [server thread/ERROR]: #!#!

[14:34:05] [server thread/ERROR]: #!#! Current node: null

[14:34:05] [server thread/ERROR]: #!#! Current item: set the inventory serial of the inventory of the player to {Inv.%the player%}(as java.lang.String)

[14:34:05] [server thread/ERROR]: #!#!

[14:34:05] [server thread/ERROR]: #!#! Thread: Server thread

[14:34:05] [server thread/ERROR]: #!#!

[14:34:05] [server thread/ERROR]: #!#! End of Error.

[14:34:05] [server thread/ERROR]: #!#!

 

J'ai tenté de changer mes versions skript/addons rien y fait :x

  • 0
Posté(e)

@remy29 pas encore essayé, j'étais pas chez moi de la journée. Je vais m'y mettre le plus tôt possible.

 

EDIT: Enfaite, je veux bien un petit skript avec ton addon qui fait l'équivalent du code que j'ai posté en 1er message.

EDIT2: Petite chose que j'ai remarqué, je ne sais pas si ça de l'importance ou non, mais avec ceci :

loop {Inv::%player%::*}:
   message "%loop-value%"

j'obtiens toujours le même message quelque soit l'item que je met dans la variable :

rO0ABXcEAAAABXBwcHBw
  • 0
Posté(e)

ça peut être ?

set {inv.tournament.helmet} to player's helmet
set {inv.tournament.chestplate} to player's chestplate
set {inv.tournament.leggings} to player's leggings
set {inv.tournament.boots} to player's boots
set {_count} to 0
loop 36 times:
   set {inv.tournament.%{_count}%} to slot {_count} of player's inventory
   add 1 to {_count}

et

set the helmet of player to {inv.tournament.helmet}
set the chestplate of player to {inv.tournament.chestplate}
set the leggings of player to {inv.tournament.leggings}
set the boots of player to {inv.tournament.boots}
set {_count} to 0
loop 36 times:
   set slot {_count} of player's inventory to {inv.tournament.%{_count}%}
   add 1 to {_count}

 

Met des %player% si tu veux l'inv par joueur

  • 0
Posté(e)
ça peut être ?

set {inv.tournament.helmet} to player's helmet
set {inv.tournament.chestplate} to player's chestplate
set {inv.tournament.leggings} to player's leggings
set {inv.tournament.boots} to player's boots
set {_count} to 0
loop 36 times:
   set {inv.tournament.%{_count}%} to slot {_count} of player's inventory
   add 1 to {_count}

et

set the helmet of player to {inv.tournament.helmet}
set the chestplate of player to {inv.tournament.chestplate}
set the leggings of player to {inv.tournament.leggings}
set the boots of player to {inv.tournament.boots}
set {_count} to 0
loop 36 times:
   set slot {_count} of player's inventory to {inv.tournament.%{_count}%}
   add 1 to {_count}

 

Met des %player% si tu veux l'inv par joueur

Ha mon avis, c'est dû à sa version des jars ou du jre

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