danielo535 4 Opublikowano 26 maja 2024 Udostępnij Opublikowano 26 maja 2024 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 Cytuj Odnośnik do komentarza https://skript.pl/temat/57555-status-klikni%C4%99cia-buttonprzycisku/ Udostępnij na innych stronach Więcej opcji udostępniania...
0 Kormic 1951 Opublikowano 25 lipca 2024 Udostępnij Opublikowano 25 lipca 2024 Ten temat został przeniesiony. Cytuj Odnośnik do komentarza https://skript.pl/temat/57555-status-klikni%C4%99cia-buttonprzycisku/#findComment-344187 Udostępnij na innych stronach Więcej opcji udostępniania...
0 Kormic 1951 Opublikowano 25 lipca 2024 Udostępnij Opublikowano 25 lipca 2024 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. Cytuj Odnośnik do komentarza https://skript.pl/temat/57555-status-klikni%C4%99cia-buttonprzycisku/#findComment-344190 Udostępnij na innych stronach Więcej opcji udostępniania...
Pytanie
danielo535 4
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
Odnośnik do komentarza
https://skript.pl/temat/57555-status-klikni%C4%99cia-buttonprzycisku/Udostępnij na innych stronach
2 odpowiedzi na to pytanie
Rekomendowane odpowiedzi
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ą.