Aller au contenu
  • 0

Coffre virtuels sauvegardés selon la location


Question

Posté(e)

Version de Minecraft : 1.20.1
Version de Skript : 2.6.4

Addons utilisés: skelett, skript-gui, skRayFall, SkQuery, SkBee, Ersatz.

Type du skript : Des coffres virtuels lorsque l'on clique sur un bloc particulier, avec l'inventaire du coffre sauvegardé selon la localisation

Description du script :

Bonjour à tous !

Premier poste pour moi, soyez indulgent ahah 🙂

Je vous explique mon problème: 

Sur mon serveur Minecraft je souhaite faire un système de coffres forts quand on clique sur un bloc particulier (ici end stone pour commencer). Il y aura tout un système d'accès pour certains joueurs à qui appartiennent le coffre et de non-accès pour le autres joueurs avec des systèmes de déblocage. Voici pour le contexte. Cependant, pour commencer, je n'arrive pas à faire en sorte de créer ces coffres virtuels, je ne sais pas comment sauvegarder les inventaires. J'avais pensé jouer avec des variables de localisation (car les coffres forts une fois posés ne pourront plus être déplacé, mais ce que j'ai fait ne fonctionne pas. Je vous joins le code (qui est peut être faux de A à Z. Si vous pouviez m'orienter ça serait super ! Merci d'avance 🙂 

 

options:
  Coffre1: Coffre niveau 1

function restoreCoffre(inv: inventory, player: player, loc: location):
	loop chest size of {_inv} times:
		set slot loop-number -1 of {_inv} to {Coffre::p::%{_player}%::%{_loc}%::Items::%loop-number%}
	clear {Coffre::p::%{_player}%::%{_loc}%::Items::*}

function saveCoffre(inv: inventory, player: player, loc: location):
	clear {Coffre::p::%{_player}%::%{_loc}%::Items::*}
	loop chest size of {_inv} times:
		add slot loop-number -1 of {_inv} to {Coffre::p::%{_player}%::%{_loc}%::Items::*}
	clear {Coffre::p::%{_player}%::loc::Inv}

on inventory close:
	set {_inv} to event-inventory
	set {_loc} to event-location
	if {_inv} is {Coffre::p::%player%::%event-location%::Inv}:
		saveCoffre({_inv}, player, {_loc})

        
on right click on end stone:	
	set {_inv} to chest with 1 row named "{@Coffre1}"
	set {_loc} to event-location
	set {Coffre::p::%player%::loc::Inv} to {_inv}
	restoreCoffre({_inv}, player, {_loc})
	open {_inv} for player    

 

3 réponses à cette question

Messages recommandés

  • 1
Posté(e)

Bonjour,

Quand tu fermes ton inventaire, il faudrait que tu sauvegardes le contenu de celui-ci dans une variable liste. Je sais pas si tu veux absolument garder le slot exact pour ton item.

function saveCoffre(p:player,inv:inventory):
    clear {chest::%{_p}%::items::*}
    loop all items in {_inv}:
        add loop-item to {chest::%{_p}%::items::*}

Pour ma part, je te suggère de juste rajouter les items dans une liste sans prendre en compte le slot.

On la clear à chaque fois, puis on la remplit de nouveau.

 

Ensuite, pour ajouter tous tes items dans un inventaire virtuel, tu vérifies si ta variable liste est bien set : ici, la variable est {chest::%player%::items::*}

function restoreCoffre(p:player,inv:inventory):
    set {_slot} to 0
    loop {chest::%{_p}%::items::*}:
        set slot {_slot} of {_inv} to loop-value
        add 1 to {_slot}

 

Après, il te suffit d'appeler la fonction saveCoffre à chaque fois que tu fermes l'inventaire du coffre virtuel, et appeler la méthode restoreCoffre quand tu cliques sur une endstone définie en tant que coffre virtuel.

 

Si tu as des questions, ou besoin d'un coup de main pour la suite, hésite pas ! 😄

++

  • J'aime 1
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.