Skocz do zawartości
  • 0

Status Kliknięcia Button(Przycisku)


Pytanie

2 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
W dniu 26.05.2024 o 02:32, danielo535 napisał:

Nie widziałem by na necie była informacja o tym jak zrobić żeby kod aktywował się tylko w tedy kiedy przycisk jest dopiero kliknięty

Jak najbardziej można to sprawdzić, ale rozwiązanie jest zależne od wersji serwera lub Skripta, na której Pan działa.

Dla wersji Skripta 2.5 i nowszych:

Najprostszym rozwiązaniem będzie sprawdzenie obecnej mocy przycisku. Jeżeli jest ona równa 15, przycisk jest wciśnięty. Należy tutaj uważać na jeden szczególny przypadek - przycisk nie może być jakkolwiek zasilany, to on musi być źródłem zasilania. Jeżeli na przykład dźwignia będzie włączona i redstone od niej zostanie poprowadzony do tego przycisku, skrypt nie zadziała poprawnie.

if redstone power of clicked block is 15:
	send "Przycisk jest wciśnięty." to player

Istnieją jeszcze dwa rozwiązania. Wybór jednego z nich zależy od wersji serwera.

Dla wersji serwera 1.13 i nowszych:

Należy sprawdzić 'block data' bloku.

if clicked block is dark oak button[facing:up;powered=true]:
	send "Przycisk jest wciśnięty." to player

Powyższy kod sprawdza czy przycisk jest aktywnym przyciskiem wykonanym z ciemnego dębu zwróconym w górę. Prawdę mówiąc, nie mam pewności czy zdefiniowanie jedynie stanu 'powered' zadziałałoby, wymaga to przetestowania.

Można również spróbować wyświetlić 'block data' bloku na czacie i zobaczyć co ono zawiera. Można też spróbować zapisać je do zmiennej i próbować jakoś modyfikować, nie wiem. Niestety w tym przypadku dokumentacja Skripta jest zbyt uboga i nie zagłębia się w ten temat, więc musi Pan to przetestować na własną rękę.

Dla wersji serwera starszych niż 1.13:

Tutaj trzeba skorzystać z 'data value' bloku, które jest de facto maską bitową, choć nie widać tego na pierwszy rzut oka. Niestety w Skript, ani w skript-reflect nie ma możliwości skorzystania z operatorów bitowych, a definiowanie ich na nowo nie ma sensu, więc można skorzystać z dodatku Bitshift.

Czym jest maska bitowa? Najprościej jest ją zinterpretować jako pewną liczbę, która przechowuje w sobie kilka mniejszych liczb. W ten sposób Minecraft do wersji 1.12.2 przechowywał przeróżne informacje o bloku w postaci jednej liczby.
W naszym przypadku chcemy sprawdzić czy 'data value' bloku zawiera liczbę '8', która oznacza, że przycisk (dla dźwigni również zadziała, dla innych przełączników prawdopodobnie też) został wciśnięty.

Skoro już wiemy, że 'data value' jest maską bitową, możemy użyć koniunkcji bitowej (&), aby wydobyć z niej informację o tym czy blok jest uruchomiony, czy też nie.

# 8 odpowiada 0x8 w systemie szesnastkowym, wpisanie samej liczby 8 również by zadziałało
if ((data value of clicked block) & 0x8) > 0:
	send "Przycisk jest wciśnięty." to player

No, to właściwie tyle. Mam nadzieję, że pomogłem.

Pozdrawiam.

Odnośnik do komentarza
https://skript.pl/temat/57555-status-klikni%C4%99cia-buttonprzycisku/#findComment-344190
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ę...