Aller au contenu
  • 0

Cacher une entité (Armor Stand)


Question

Posté(e)

Version de Minecraft : 1.9.9
Version de Skript : 2.2-dev36

Addons utilisés:

Plugin.JPG.c4b91a76f58aec27b5ca1ecf8153ab99.JPG

 

 

Type du skript : Cacher une entité (Pas un joueur mais par exemple un ArmorStand)

Description du script :

Bonjour la communauté Skript ! Je vous contacte parce que je suis bloqué à un endroit dans mon code, j'aimerai créer un hologram avec les statistiques du joueur et cacher l'armor stand qui contient ses statistiques à tous les joueurs sauf un seul joueur (pour pas que les autres joueurs puisse le voir) J'ai chercher sur internet, pas trouvé, j'ai cherché pour skript mirror (J'ai trouvé mais pas fonctionnel)


Merci d'avance au personne qui m'aideront.

 

7 réponses à cette question

Messages recommandés

  • 0
Posté(e)

Bonsoir,

J'imagine que si vous utilisez un ArmorStand c'est que vous désirez avoir votre propre système et pas un add-on dédié à cela. Dans ce cas, pour répondre à votre question, il faudrait utiliser un packet pour indiquer aux autres joueurs excepté le joueur ciblé que cette entité n'existe plus. Je pourrais m'arrêter là mais dans un soucis de vouloir fournir une solution correcte, le vrai problème est qu'il s'agit d'une mauvaise idée d'utiliser de vrais ArmorStand (j'entends par là des ArmorStands que l'on a fait apparaître via Bukkit; via l'effet spawn de Skript pour faire simple pour ceux qui me lirons.

Tout simplement parce qu'il s'agit de vraies entités que le serveur doit constamment surveiller. Qu'il y ait un ou deux ArmorStand n'est pas un vrai problème, mais dès qu'il y en a aura un nombre conséquent, cela fait des entités à gérer dont on aura pu bien se passer. Ainsi, toujours via un packet, on pourrait faire apparaître uniquement au joueur un ArmorStand avec les propriétés souhaitées dont seul le client (le joueur) aurait la connaissance de l'existence de cette entité.

 

Évidemment, l'emploi des packets n'est pas trivial pour tout le monde, ce n'est pas pour rien que des add-ons existent.

Puisque vous possédez déjà des add-ons permettant leur manipulation à vous de choisir votre camp: un packet simple à manipuler ou l'optimisation absolue 🕵️‍♂️

  • 0
Posté(e) (modifié)

Ah d'accord merci de la réponse ! j'ai crée mon propre système d'hologram sur un skript et les armor stand spawn via skript donc c'est un peu compliqué

 

Et d’ailleurs de ce que j'ai compris je dois utilisé les packets pour pourvoir faire ma demande ? Et si oui quel est le packet ?

(Je suis pas du tout comment et quel packet utilisé)
 

Modifié par LOUDO
  • 0
Posté(e)

Il faut nécessairement utiliser des packets dans tous les cas.

https://wiki.vg/Protocol#Destroy_Entities
pour la première option (juste faire disparaître l'entité du point de vue des autres joueurs)
Et 
https://wiki.vg/Protocol#Spawn_Living_Entity + https://wiki.vg/Protocol#Entity_Metadata
pour la seconde (un ArmorStand qui apparait exclusivement pour le joueur avec ses propriétés nécessaires (Custom Name, Invisible,...))

  • 0
Posté(e)

Je vais pas te le cacher mais je comprend vraiment pas du tout comment faire, j'ai pas vraiment pris le temps d'apprendre les packet et comment les utilisé

  • 0
Posté(e)
import:
	java.lang.Byte

#METHODE 1
command /despawn:
	trigger:
		spawn an armor stand at player
		set {_d} to spawned entity
		set {_r} to {_d}.getEntityId()
		set {_p} to new play_server_entity_destroy packet
		set int array pnum 0 of {_p} to {_r} 
		loop all players where [input isn't player]:
			send loop-value packet {_p}
#METHODE 2
command /spawnentity:
	trigger:
		set {_r} to random integer from 50000 to 100000
		set {_p} to new play_server_spawn_entity_living packet
		set int pnum 0 of {_p} to {_r}
		set int pnum 1 of {_p} to 30
		set int pnum 2 of {_p} to player's x-coord * 32
		set int pnum 3 of {_p} to player's y-coord * 32
		set int pnum 4 of {_p} to player's z-coord * 32
		set byte pnum 0 of {_p} to 0
		set byte pnum 1 of {_p} to 0
		loop 7, 8 and 9 :
			set int pnum loop-value of {_p} to 0
		send player packet {_p}
		set {_p} to new play_server_entity_metadata packet
		set {_v::2} to "§a Texte ArmorStand" 
		set {_v::0} to Byte.valueOf(32) # Invisibilité
		set {_v::3} to Byte.valueOf(1) #Is Custom Name Visible
		set int pnum 0 of {_p} to {_r}
		set {_json} to json from listvar {_v::*}
		set "watchablecollection" pjson 0 of {_p} to {_json}
		send player packet {_p}

Nécessite MundoSK / ThatPacketAddon  + skript-mirror (et ProtocolLib ça va de soi)

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

Merci ça marche niquel, je vais l'adapter à mon skript, merci d'avoir pris ton temps la prochaine fois je vais essayer d'apprendre les syntax MundoSK avec les packet

 

Bon j'ai fini d'adapté mais bon c'est pas truc le plus optimisée ce que j'ai fait mais pas grave du moment que ça marche ça me va !

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.