Polecenia/execute: Różnice pomiędzy wersjami

Z Minecraft Wiki Polska
Przejdź do nawigacji Przejdź do wyszukiwania
[wersja nieprzejrzana][wersja nieprzejrzana]
Nie podano opisu zmian
Przekierowanie do Execute(komenda)
Linia 1: Linia 1:
Komenda  '''{{Cmd|execute}}''' pozwala na operowanie na zmiennych oraz manipulację warunkami i sposobem wykonania innego polecenia.
#PATRZ [[Execute(komenda)]]
 
== Java Edition ==
 
=== Składnia ===
Polecenie <code>/execute</code> posiada dwanaście instrukcji i każda z nich trzyma się swojej określonej składni. Oto one:
 
* <code>/execute</code> [...]
**<code>… '''align''' <''osie''> -> ''wykon.''</code>
**<code>… '''anchored''' (''eyes|feet'') -> ''wykon.''</code>
**<code>… '''as''' <''cele''> -> ''wykon.''</code>
**<code>… '''at''' <''cele''> -> ''wykon.''</code>
**<code>… '''facing''' (<''poz''>|entity <''cele''> (''eyes|feet'')) -> ''wykon.''</code>
**<code>… '''in''' <wymiar> -> ''wykon.''</code>
**<code>… '''positioned''' (<''poz''>|as <''cele''>) -> ''wykon.''</code>
**<code>… '''rotated''' (<''obr''>|as <''cele''>) -> ''wykon.''</code>
**<code>… '''store''' (''result|success'')</code> [...]
***<code>… block <''pozDocel''> <''ścieżka''> (''byte|short|int|long|float|double'') <''skala''> -> ''wykon.''</code>
***<code>… bossbar <''id''> (''max|value'') -> ''wykon.''</code>
***<code>… entity <''cel''> <''ścieżka''> (''byte|short|int|long|float|double'') <''skala''> -> ''wykon.''</code>
***<code>… score <''targets''> <''objective''> -> ''wykon.''</code>
***<code>… storage <''cel''> <''ścieżka''> (''byte|short|int|long|float|double'') <''skala''> -> ''wykon.''</code>
**<code>… ('''if'''|'''unless'''])</code> [...]
***<code>… block <''poz''> <''blok''> -> [''wykon.'']</code>
***<code>… blocks <''początek''> <''koniec''> <''miejsceDocel''> (''all|masked'') -> [''wykon.'']</code>
***<code>… data</code> [...]
****<code>… block <''pozŹródł''> <''ścieżka''> -> [''wykon.'']</code>
****<code>… entity <''źródło''> <''ścieżka''> -> [''wykon.'']</code>
****<code>… storage <''źródło''> <''ścieżka''> -> [''wykon.'']</code>
***<code>… entity <''byty''> -> [''wykon.'']</code>
***<code>… predicate <''predykat''> -> [''wykon.'']</code>
***<code>… score <''cel''> <''celDocel''></code> [...]
****<code>… (''<|<=|=|>|>='') <''źródło''> <''celŹródł''> -> [''wykon.'']</code>
****<code>… matches <''zasięg''> -> [''wykon.'']</code>
**<code>… '''run''' <''polecenie''></code>
 
<code>-> wykon.</code> oznacza tu kolejną instrukcję komendy <code>execute</code>. Instrukcje mogą łączyć, jedna za drugą, bez ograniczeń, jednak polecenie musi zakończyć się instrukcją <code>run</code>. Wyjątkiem są polecenia <code>if</code> i <code>unless</code> — te pozwalają na nieużycie instrukcji końcowej.
 
=== Objaśnienia ===
Jedenaście komend podlega łączeniu — dziewięć z nich modyfikuje zmienne; pozostałe dwie są poleceniami warunkowymi. Instrukcja <code>run</code> zwieńcza polecenie <code>execute</code> i używana jest do jego realizacji.
 
Instrukcji warunkowych <code>if</code> i <code>unless</code> można użyć w celu policzenia wystąpień spełniających podane w poleceniu warunki. Taka komenda nie potrzebuje instrukcji <code>run</code>. Przykład: <code>/execute if entity @e[name="Steve"]</code>.
 
Instrukcje warunkowe <code>if</code> oraz <code>unless</code> mogą całkowicie uniemożliwić wykonanie polecenia. Wszystkie podane warunki muszą być spełnione, inaczej test zakończy się niepowodzeniem (co zostanie wyświetlone na czacie).
 
==== Instrukcje podlegające łączeniu ====
 
#<code>… <''osie''> -> ''wykon.''</code>
#:Wyrównuje obecne położenie wzdłuż siatki bloków, zaokrąglając w dół.
#:<code><''osie''></code> Podaj jakąkolwiek kombinację osi. Ta sama oś nie może wystąpić więcej niż raz. (Przykładowo: <code>x</code>, <code>xz</code>, <code>zyx</code>, <code>yz</code>).
#:''Przykład:'' Założywszy, że położenie równa się [-1.8, +2.3, +5.9], polecenie <code>/execute align xz run summon zombie ~ ~ ~</code> przywoła zombie przy współrzędnych [-2.0, +2.3, +5.0].
#:''Przykład:'' Założywszy, że położenie równa się [+2.4, -1.1, +3.8], polecenie <code>/execute align yxz run spawnpoint @p ~ ~ ~</code> ustawi miejsce odradzania gracza na [2, -2, 3].
#<code>… (''feet|eyes'') -> ''wykon.''</code>
#:Przechowuje odległość od stóp do oczu bytu wykonującego polecenie w zakotwiczeniu, będącego częścią kontekstu komendy.
#:Zakotwiczenie używane jest tylko w notacji daszkowej (<code>^ΔT ^ΔN ^ΔB</code>) i w instrukcji<code>facing</code> polecenia <code>execute</code>, które zachowują się, jak gdyby pozycja wykonania polecenia została przesunięta w górę o zapisaną wartość.
#<code>… <''cele''> -> ''wykon.''</code>
#:Wykonuje polecenie jako podane cele, ale nie zmienia pozycji.
#:Wpływa na funkcję zmiennej selektora celu (<code>@s</code>).
#<code>… <''target''> -> ''wykon.''</code>
#:Używa pozycji, rotacji i wymiaru celu, ale nie zmienia aktualnego bytu wykonującego (<code>@s</code>).
#:Wpływa na funkcję pozycjonowania <code>~Δx ~Δy ~Δz</code> i <code>^ΔT ^ΔN ^ΔB</code>.
#<code>… (<''poz''>|entity <''cel''> (''eyes|feet'')) -> ''wykon.''</code>
#:Używa pozycji, w której wykonano polecenie. Jest ona skierowana w stronę podanej pozycji lub w stronę oczu, lub stóp bytu docelowego.
#:Wpływa na funkcję pozycjonowania <code>^ΔT ^ΔN ^ΔB</code>.
#<code>… <''wymian''> -> ''wykon.''</code>
#:Wykonuje tak, jakby wykonawca był w podanym wymiarze.
#:Wpływa na wymiar polecenia, ale nie wpływa na pozycje X, Y i Z.
#:<code><''wymiar''></code> — ID słowne dla powierzchni, Netheru i Endu to kolejno: „overworld”, „the_nether” i „the_end”.
#<code>… (<''poz''>|as <''cele''>) -> ''wykon.''</code>
#:Używa albo podanych współrzędnych, albo współrzędnych jednostki docelowej jako ''aktualnej pozycji''.
#:Wpływa na funkcję pozycjonowania <code>^ΔT ^ΔN ^ΔB</code> i <code>~Δx ~Δy ~Δz</code>. Nie zmienia rotacji, wymiaru ani celu <code>@s</code>.
#<code>… (<''rot''>|as <''targets''>) -> ''wykon.''</code>
#:Wykonuje tak, jakby wykonawca był obrócony albo w danym kierunku, albo w tym samym kierunku, w którym znajduje się byt docelowy.
#:Wypływa na rotację komendy.
#<code>… (''result|success'') (''block|bossbar|entity|score|storage'') <''arguments''> -> ''wykon.''</code>
#:Zapisuje wynik lub pomyślność polecenia. Ta instrukcja zastąpiła komendę <code>/stats</code>.
#:<code>result</code> —  zwraca wynik polecenia. (Zastępuje stare statystyki: AffectedBlocks, AffectedEntities, AffectedItems, QueryResult.)
#:<code>success</code> — zwraca ilość pomyślnych wystąpień polecenia. Zazwyczaj zwróci <code>0</code> lub <code>1</code>, ale jeżeli komenda jest podzielona (jako np. „/execute as @a -> ''execute''”) wtedy wynik może wynieść więcej niż <code>1</code>. (Zastępuje starą statystykę SuccessCount.)
#:Po nieudanej próbie „success” i „result” wynoszą <code>0</code>. Wartość zostaje zapisana po pełnym wykonaniu polecenia.
#*<code>… block <''poz''> <''ścieżka''> (''byte|short|int|long|float|double'') <''skala''> -> ''wykon.''</code>
#*:Zapisuje zwracaną wartość danych NBT w danym położeniu bloku.
#*:<code><''ścieżka''></code> — nazwa tagu danych, w którym ma zostać zapisana wartość.
#*<code>… bossbar <''id''> (''value|max'') -> ''wykon.''</code>
#*:Zapisuje zwróconą wartość jako albo obecną wartość, albo maksymalną wartość danego paska bossa.
#*:<code><''id''></code> — ID paska bossa, w którym ma zostać zapisana wartość.
#*:<code>value</code> — określa, że wartość (''value'') ma zostać nadpisana przez zwróconą wartość polecenia.
#*:<code>max</code> — określa, że maksymalna wartość (''max'') ma zostać nadpisana przez zwróconą wartość polecenia.
#*<code>… entity <''cel''> <''ścieżka''> (byte|short|int|long|float|double) <''skala''> -> ''wykon.''</code>
#*:Używa ścieżkę (<code>path</code>) tagu danych jednego bytu docelowego w celu zapisania zwróconej wartości. Zapisuje jako liczbę typu ''byte, short, int, long, float'' lub ''double''.
#*:Podobnie, jak komenda <code>/data</code>, polecenie <code>/execute store <''argumenty''></code> nie może modyfikować tagów NBT gracza.
#*<code>… score <''nazwa''> <''cel''> -> ''wykon.''</code>
#*:Używa tabelę wyników o podanej ''<nazwie>'' i podanym ''<celu>'' w celu zapisania zwróconej wartości.
#*:<''cel''> musi istnieć, ale — w przeciwieństwie do polecenia <code>/stats</code> — nie ma potrzeby wpisywania wartości dla argumentu ''<nazwa>.''
#*<code>… storage <''cel''> <''ścieżka''> (''byte|short|int|long|float|double'') <''skala''> -> ''wykon.''</code>
#*:Używa ''<ścieżkę>'' do docelowego magazynowania (argument ''<ścieżka>'') w celu zapisania wartości.
#*:Tworzy nowy magazyn, jeżeli ten nie istnieje.
#*:<code><''cel''></code> — docelowy kontener magazynu (w przestrzeni nazw).
#*:<code><''ścieżka''></code> ''—'' nazwa tagu danych, w którym gracz chce zapisać zwróconą wartość.
#<code>… '''(if|unless)''' (''block|blocks|data|entity|predicate|score'') <''argumenty''> -> [''wykon.'']</code>
#:Przed przystąpieniem do wykonywania komendy sprawdza, czy spełnione są podane warunki.
#*<code>… block <''poz''> <''blok''> -> [''execute'']</code>
#*:Porównuje blok o danych współrzędnych do podanego ID słownego bloku.
#*<code>… blocks <''początek''> <''koniec''> <''miejsceDocel''> (''all|masked'') -> [''wykon.'']</code>
#*:Porównuje obszar pomiędzy współrzędnymi podanymi w argumentach ''<początek>'' i ''<koniec>'' z drugim obszarem, którego współrzędne podane są w argumencie ''<miejsceDocel>''. Obliczanie obszarów i argument <code>(all|masked)</code> działają tak samo, jak w komendzie {{Cmd|clone}}.
#*<code>… data (block <''poz''>|entity <''cel''>|storage <''źródło''>) <''ścieżka''> -> [''wykon.'']</code>
#*:Wykonuje instrukcję, jeżeli docelowy blok, byt lub magazyn, ma jakiekolwiek dane tagu określonego argumentem ''<ścieżka>'' (dla ''if'').
#*:Nie wykonuje instrukcji, jeżeli docelowy blok, byt lub magazyn, ma jakiekolwiek dane tagu określonego argumentem ''<ścieżka>'' (dla ''unless'').
#*:<code><''ścieżka''></code> — określa tag NBT, którego należy szukać. To łańcuch nadrzędnych nazw tagów Javo-podobnej formy <code>highestTag.child.childsChild…parent.targetDataTag</code>.
#*:''Przykład:'' <code>/execute as @e if data entity @s ArmorItems[0].id</code> sprawdza, czy jakikolwiek byt ma ''id'' przedmiotu umieszczonego w polu (slocie) zbroi przeznaczonym na buty. Należy wziąć pod uwagę, że polecenie zawsze wartość prawdziwą (<code>true</code>) u wszystkich mobów — noszących zbroję czy też nie.
#*<code>… entity <''cele''> -> [''wykon.'']</code>
#*:Wykonuje instrukcję, jeżeli istnieje jeden lub więcej ''<celów>'' (dla ''if'').
#*:Nie wykonuje instrukcji, jeżeli istnieje jeden lub więcej ''<celów>'' (dla ''unless'').
#*<code>… predicate <''predykat''> -> [''wykon.'']</code>
#*:Wykonuje instrukcję, jeżeli predykat otrzyma pomyślny wynik (dla ''if'').
#*:Wykonuje instrukcję,  jeżeli predykat otrzyma wynik zakończony niepowodzeniem''.'' (dla ''unless'').
#*<code>… score <''cel''> <''celDocel''> (''<|<=|=|>=|>'') <''źródło''> <''celŹródł''> -> [''wykon.'']</code>
#*:Wykonuje instrukcję, jeśli wynik bytu docelowego dokładnie odnosi się do wyniku bytu źródłowego, biorąc pod uwagę jakiegoś operatora warunkowego (dla ''if'').
#*:Nie wykonuje instrukcji, jeśli wynik bytu docelowego dokładnie odnosi się do wyniku bytu źródłowego, biorąc pod uwagę jakiegoś operatora warunkowego (dla ''unless'').
#*<code>… score <''cel''> <''celDocel''> matches <''zasięg''> -> [''wykon.'']</code>
#*:Wykonuje instrukcję, jeśli wynik bytu docelowego mieści się w podanym zakresie (dla ''if'').
#*:Wykonuje instrukcję, jeśli wynik bytu docelowego nie mieści się w podanym zakresie (dla ''unless'').
#<code>unless <''argumenty''> -> [''wykon.'']</code>
#:''Patrz: ppkt. 10. —'' <code>(if|unless)</code>
 
=== Pozostałe ===
 
:Oprócz powyższych jedenastu instrukcji istnieje jeszcze instrukcja <code>run</code>.
:*<code>… run <''polecenie''></code>
:*:Określa wykonywaną komendę, której zmienne mogą być zmodyfikowane przez użyte instrukcje.
:*:''<poleceniem>'' może być każda komenda istniejąca w ''Minecrafcie''.
:*:''Technicznie:'' Resetuje węzeł polecenia, redukując do rdzenia dyspozytora poleceń.
:*::;Modelowanie poleceń jako tekst czatu...
:*:::'''Dyspozytor poleceń''' jest rozpoczynany po wpisaniu przez gracza znaku <code>/</code> (ukośnika).
:*:::'''Węzeł polecenia''' jest konkretnym słowem/wpisem, które jest edytowane przez kursor — albo polecenie, albo argument.
:*:::'''Węzeł główny''' stoi przed pierwszym słowem w twojej komendzie.
 
;Przykłady
 
*<code>/execute at @a anchored eyes run particle smoke ^ ^ ^3</code>
*<code>/execute as @e[type=pig] at @s store success entity @s Saddle byte 1 if entity @p[distance=..5]</code>
*<code>/execute as @a at @s if block ~ ~ ~ water run say Buty mi przemokły!</code>

Wersja z 19:53, 30 gru 2020

Przekierowanie do: