Skocz do zawartości
  • 0

Wykrywanie nazwy minecarta


Usunięty#10777

Pytanie

Witam. Próbowałem napisać skrypt, który wysyła tekst do gracza po kliknięciu prawym/wejściu do wagonika (minecarta), ale tylko jeśli minecart ma daną nazwę.

on rightclick on minecart:
	if name of clicked entity is "nazwa":
		send "tekst" to player

Niestety nie działa, nie pokazuje żadnych błędów. Tekst się nie pokazuje.

Po usunięciu warunku z nazwą działa, ale dla każdego minecarta, a nie tylko dla tego z nazwą.

Odnośnik do komentarza
Udostępnij na innych stronach

16 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
on rightclick on minecart:
	set {_nazwa} to event-entity's name
	send "%{_nazwa}%" to player

Nie wiem czy dobrze to robię, w każdym razie po kliknięciu pokazuje <none>, mimo że minecart na pewno ma nazwę. Zespawnowany komendą /summon MinecartRideable ~ ~ ~ {CustomName:"nazwa"}

(jestem na 1.8 dlatego komenda jest inna niż aktualnie)

 

EDIT: komenda /tp @e[type=MinecartRideable,name=nazwa] @p też potwierdza, że minecart ma nazwę.

 

EDIT 2: Okazuje się, że oryginalny skrypt działa dla zombie (na innych mobach nie testowałem)

Dlaczego nie działa dla minecarta? Może Skript nie obsługuje nazw dla minecartów?

Spróbowałem też dla łodzi, nie działa tak samo jak dla minecarta.

Edytowane przez Aberforth
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
{Motion:[0:-0.0d,1:0.0d,2:-0.0d],UUIDLeast:-5580616107160294051L,Bukkit.updateLevel:2,Invulnerable:0b,Air:0s,OnGround:1b,Dimension:0,PortalCooldown:0,Rotation:[0:76.8289f,1:0.0f],FallDistance:0.0f,UUIDMost:4290488971311204703L,CustomName:"CrownVictoria",Pos:[0:1853.0404978810147d,1:36.0d,2:-738.4666325994679d],WorldUUIDMost:5398773407413256890L,Fire:-1s,Spigot.ticksLived:4120,WorldUUIDLeast:-6340987565457688896L,CustomNameVisible:0b}

Otrzymałem taki NBT. Zawiera CustomName:"CrownVictoria". (To się zgadza z pierwotnym skryptem, tam wpisałem "nazwa" jako przykład.)

Do uzyskania NBT użyłem:

on rightclick on minecart:
	set {_nbt} to nbt tag of event-entity
	send "%{_nbt}%" to player

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

No i teraz możesz szukać w dokumentacji efektu który wyciągnie ci z tego json'a nazwę (coś w stylu yaml), albo oddzielić ręcznie nazwę od tekstu, np tak:

set {_split::*} to "%{_nbt}%" split at "CustomName:"""
set {_return::*} to {_split::2} split at """"

send {_return::1}

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
3 godziny temu, Aberforth napisał:

No dobra, z tym, że to nie rozwiązuje pierwotnego problemu.


on rightclick on minecart:
	if name of clicked entity is "CrownVictoria":
		send "tekst" to player

Ten skrypt dalej nie działa, mimo, że nazwa minecarta jest na pewno poprawna.

Ale tego kodu co dostałeś ciężko było podpiąć do skryptu? Grrrr

on rightclick on minecart:
	set {_split::*} to "%nbt tag of event-entity%" split at "CustomName:"""
	set {_return::*} to {_split::2} split at """"

	if {_return::1} = "CrownVictoria":
		send "Twój kod działa, nazwa poprawna"


 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
on rightclick on minecart:
	set {_nbt} to nbt of event-entity
	set {_split::*} to "%{_nbt}%" split at "CustomName:"""
	set {_return::*} to {_split::2} split at """"

	if {_return::1} = "CrownVictoria":
		send "Twój kod działa, nazwa poprawna"

Nie wiem jak to działa ale można też tak spróbować:

on rightclick on minecart:
	set {_nbt} to nbt of event-entity
	set {_name} to nbt tag "CustomName" of {_nbt}
	if {_name} = "CrownVictoria":
		send "Twój kod działa, nazwa poprawna"

 

Edytowane przez ZiemniaQ
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
5 minut temu, ZiemniaQ napisał:

on rightclick on minecart:
	set {_nbt} to nbt of event-entity
	set {_split::*} to "%{_nbt}%" split at "CustomName:"""
	set {_return::*} to {_split::2} split at """"

	if {_return::1} = "CrownVictoria":
		send "Twój kod działa, nazwa poprawna"

 

Zwraca błąd,

'"%{_nbt}%" split at "CustomName:"""' is not a number,

tak samo jak przy wcześniejszej próbie

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
27 minut temu, ZiemniaQ napisał:

A drugi kod?

Drugi nie zwraca żadnych błędów, ale nie działa. (Tekst się nie wyswietla po kliknięciu).

19 minut temu, ZiemniaQ napisał:

Dobra walić to bo za dużo z tym roboty, zrobimy tak jak oni zaczęli:


on rightclick on minecart:
	set {_nbt} to nbt tag of event-entity
	if "%{_nbt}%" contains "CrownVictoria":
		send "Kod działa, nazwa poprawna."

 

Dobra, poszło nareszcie jak należy, działa, dzięki wszystkim.

HeezQ

Łączę posty

Notatka dodana przez HeezQ

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
Teraz, Aberforth napisał:

Drugi nie zwraca żadnych błędów, ale nie działa. (Tekst się nie wyswietla po kliknięciu).

Dobra walić to bo za dużo z tym roboty, zrobimy tak jak oni zaczęli:

on rightclick on minecart:
	set {_nbt} to nbt tag of event-entity
	if "%{_nbt}%" contains "CrownVictoria":
		send "Kod działa, nazwa poprawna."

 

Odnośnik do komentarza
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...