Skocz do zawartości
  • 0

Dlaczego to nie działa?


Pytanie

6 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0

@melon_PL

Na ten moment do głowy przychodzą mi dwie przyczyny, pierwsza bardziej, druga mniej prawdopodobna.

  1. Bardziej prawdopodobne jest to, że porównywane przedmioty (przedmiot w ręce gracza i zaczep na linkę) nie są takie same. Wszystkie informacje zawarte w przedmiotach muszą być identyczne (typ, nazwa, lore, custom model data, zaklęcia, itd.). Najogólniej mówiąc, NBT obu przedmiotów nie mogą się różnić.
  2. Mniej prawdopodobnym scenariuszem jest istnienie listenera zdarzenia stawiania bloków o wyższym priorytecie, które odwołuje anulowanie zdarzenia.

Pozdrawiam.

Odnośnik do komentarza
https://skript.pl/temat/58602-dlaczego-to-nie-dzia%C5%82a/#findComment-346418
Udostępnij na innych stronach

  • 0
Godzinę temu, Kormic napisał:

@melon_PL

Na ten moment do głowy przychodzą mi dwie przyczyny, pierwsza bardziej, druga mniej prawdopodobna.

  1. Bardziej prawdopodobne jest to, że porównywane przedmioty (przedmiot w ręce gracza i zaczep na linkę) nie są takie same. Wszystkie informacje zawarte w przedmiotach muszą być identyczne (typ, nazwa, lore, custom model data, zaklęcia, itd.). Najogólniej mówiąc, NBT obu przedmiotów nie mogą się różnić.
  2. Mniej prawdopodobnym scenariuszem jest istnienie listenera zdarzenia stawiania bloków o wyższym priorytecie, które odwołuje anulowanie zdarzenia.

Pozdrawiam.

Okej zobaczę

EDIT:

Już wiem, przed postawieniem bloku jego nazwa jest taka sama jak w przedstawionym skrypcie lecz po postawieniu i zniszczeniu do mojego ekwipunku trafia przedmiot z deafultową nazwą "tripwire hook" lub "zaczep na linkę" (w zależności od języka gry).

Wiesz jak to naprawić?

Kormic

Łączę posty. Proszę korzystać z opcji edycji postu, aby nie tworzyć kilku odpowiedzi pod rząd.

Notatka dodana przez Kormic

Odnośnik do komentarza
https://skript.pl/temat/58602-dlaczego-to-nie-dzia%C5%82a/#findComment-346419
Udostępnij na innych stronach

  • 0

@melon_PL

Nie to jest przyczyną. Normalnym zjawiskiem jest utrata informacji o przedmiocie po postawieniu go, ponieważ bloki nie przechowują informacji o przedmiotach.

Zalecam zmodyfikować nieco ten skrypt:

on place:
	set {_item} to tripwire hook named "<#525F9D>&lOkulary Przeciwsłoneczne"
	if player's tool is not {_item}:
		send "Przedmioty nie są takie same." and "Powody:" to player
		if name of player's tool is not name of {_item}:
			send "Nazwy są różne." to player
		if lore of player's tool is not lore of {_item}:
			send "Lore są różne." to player
		if enchantments of player's tool is not enchantments of {_item}:
			send "Zaklęcia są różne." to player
		if model data of player's tool is not model data of {_item}:
			send "CustomModelData są różne." to player
		
		# [...]
		
		# Uwaga: wymagane SkBee!
		send "" to player
		send full nbt of player's tool to player
		send full nbt of {_item} to player
		
		stop
	cancel event

Nie jest to najlepszy sposób, ale w ten sposób można namierzyć co jest powodem.

Pozdrawiam.

Odnośnik do komentarza
https://skript.pl/temat/58602-dlaczego-to-nie-dzia%C5%82a/#findComment-346421
Udostępnij na innych stronach

  • 0
W dniu 6.04.2025 o 14:19, Kormic napisał:

@melon_PL

Nie to jest przyczyną. Normalnym zjawiskiem jest utrata informacji o przedmiocie po postawieniu go, ponieważ bloki nie przechowują informacji o przedmiotach.

Zalecam zmodyfikować nieco ten skrypt:

on place:
	set {_item} to tripwire hook named "<#525F9D>&lOkulary Przeciwsłoneczne"
	if player's tool is not {_item}:
		send "Przedmioty nie są takie same." and "Powody:" to player
		if name of player's tool is not name of {_item}:
			send "Nazwy są różne." to player
		if lore of player's tool is not lore of {_item}:
			send "Lore są różne." to player
		if enchantments of player's tool is not enchantments of {_item}:
			send "Zaklęcia są różne." to player
		if model data of player's tool is not model data of {_item}:
			send "CustomModelData są różne." to player
		
		# [...]
		
		# Uwaga: wymagane SkBee!
		send "" to player
		send full nbt of player's tool to player
		send full nbt of {_item} to player
		
		stop
	cancel event

Nie jest to najlepszy sposób, ale w ten sposób można namierzyć co jest powodem.

Pozdrawiam.

@Kormic

Przedmioty nie są takie same. 
Powody: 
Zaklęcia są różne. 
CustomModelData są różne.

 

 

Dane przedmiotu w mojej łapce

Okulary Przeciwsłoneczne

Enchantments: Unbreaking X

minecraft:tripwire_hook

NBT: 3 tag(s)

Edytowane przez melon_PL
Odnośnik do komentarza
https://skript.pl/temat/58602-dlaczego-to-nie-dzia%C5%82a/#findComment-346427
Udostępnij na innych stronach

  • 0

@melon_PL

No właśnie. To jest źródłem problemu. Wymienię trzy rozwiązania, które przychodzą mi do głowy:

  1. Rozbicie sprawdzanie przedmiotu na sprawdzanie typu i nazwy.
    if:
    	type of player's tool is tripwire hook
    	name of player's tool is "Nazwa"
    then:
    	# Dalszy kod

     

  2. Można przyjąć, że kod będzie sprawdzał tylko jedną z informacji. W przypadku tego wyjścia wykorzystuje się zwykle sprawdzanie nazwy.
    if name of player's tool is "Nazwa":
    	# Dalszy kod

     

  3. Dodanie do NBT przedmiotu jakiegoś tagu, którego obecność i opcjonalnie wartość będą sprawdzane. Wymagany jest tutaj dodatek SkBee.
    if int tag "przykladowyTag" of custom nbt of player's tool is 10:
    	# Dalszy kod

Ponieważ przedmiot nie ma złożonego NBT (nie posiada dużej ilości informacji o nazwie, lore, zaklęciach, itd.), najlepszy pod względem niezawodności i łatwości implementacji będzie sposób nr 1.

Pozdrawiam.

Odnośnik do komentarza
https://skript.pl/temat/58602-dlaczego-to-nie-dzia%C5%82a/#findComment-346444
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Nieaktywny
Odpowiedz na pytanie...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

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