4. díl - Programování v Minecraftu - Pozicování - část II.

Ostatní jazyky Minecraft Programování v Minecraftu - Pozicování - část II.

V minulé lekci kurzu o programování v Minecraftu jsme se naučili problematiku pozicování a představili si příkazy /tp a /teleport. V dnešním tutoriálu téma dokončíme ukázkou argumentů pro selektory týkající se pozic. Je jich poměrně mnoho - x, y, z, r, rm, rx, rxm, ry, rym, dx, dy, dz. Žádný z těchto selektorů neumožňuje použít "!" předznamenání hodnoty.

Argumenty vzdálenostní - r a rm

Tyto selektory použijete většinou v kombinaci. Selektor r označuje "radius" (rádius, dosah), rm označuje "minimal radius" (minimální rádius, minimální dosah). Používají se pokud hledáte entitu v určité blízkosti k vykonavateli (executorovi) příkazu, zadáváte tedy příslušný počet bloků (vzdálenost). Argument r pátrá po entitách ve specifikovaném dosahu, rm pátrá po entitách mimo specifikovaný dosah.

Na ilustračním obrázku můžete vidět, kde bude oblast hledání obou argumentů - je kruhová. Dále můžete vidět, kam na jednotlivých blocích číselně sahají vzdálenosti - hranice celých čísel je vždy uprostřed bloku v dané vzdálenosti od bloku, kde se nachází executor. Na obrázku jsem použil dřevo, aby byly více patrné blokové hranice.

Ukázka chování vzdálenostních argumentů v Minecraftu

r=3 vybere všechny entity v zelené zóně, rm=3 všechny v modré. Samozřejmě analogický kruh platí i pro osu y.

Nyní si povíme jak kombinovat selektorové argumenty dohromady. Ve složené závorce se oddělují čárkou bez mezer. Selektor poté argumenty bere jako hradlo AND, tedy musí být všechny splněné, aby selektor danou entitu zvolil, tedy například příkaz

/say @e[name=Krepsy3,m=1]

řekne jméno entity pouze, pokud se jmenuje „Krepsy3“ a zároveň má gamemode creative. Této vlastnosti lze nádherně využít třeba pro vybrání entit z určitého pásu, vyzkoušejme si to:

/testfor @e[r=8,rm=3]

Příkaz zareaguje, pokud nalezne entitu alespoň 3 bloky od command bloku, ve kterém je vepsán, ale ne dále, než 8 bloků od něj (tzn. alespoň jedna entita musí v onom pásu být).

Argumenty poziční - x, y a z

Používají se ke hledání podle pozice. Do každého z nich zapíšete souřadnici bloku, který se stane centrem hledání. Je povinné vyplnit všechny 3 souřadnice. Toto centrum se poté bude chovat stejně, jako by se na jeho souřadnicích nacházel command blok s příslušným r (resp. rm) argumentem.

Upozornění - Bývá častou chybou napsat pouze tyto tři argumenty a už neuvést argument pro rádius. Takto to ale nefunguje a selektor bude vždy pozitivní a na změny pozice nebude vůbec reagovat. Chcete-li tedy vybrat entitu nacházející se dva bloky od určité souřadnice, provedete to takto:

/testfor @e[x=-764,y=56,z=309,r=2]

Nechci před vámi nic tajit a proto prozradím, že výše uvedený příkaz lze také zapsat takto:

/testfor @e[-764,56,309,2]

Pokud bezprostředně za "[" otevírací hranatou závorku zapíšete v tomto pořadí argumenty x, y, z, r, můžete poté jejich názvy vynechat. U žádných jiných argumentů se nic takového nedá použít. Já osobně se však většinou vyvaruji tomuto zápisu - ušetříte sice 8 znaků, ale mohlo by se stát, že to v kombinaci s více argumenty nebude fungovat.

Samozřejmě můžete opět použít techniku vybrání entit z kruhového pásu kolem specifikovaného bloku, pomocí rm specifikujete vnitřní obvod, pomocí r vnější obvod:

/testfor @e[x=-764,y=56.z=309,r=5,rm=3]

Argumenty rotační - rx, rxm, ry a rym

Asi jste uhodli, že argumenty označují určitou rotaci hlavy, jmenují se přesně podle os. Písmenko m opět reprezentuje "minimal". Pokud tedy chcete najít entitu, která se dívá "skoro na zem", použijete

/testfor @e[rxm=80]

Nechcete-li ale aby se dívala úplně na zem, doplníte zápis

/testfor @e[rxm=80,rx=89]

Dále si ještě třeba specifikujte světovou stranu, ta má vždy svůj rozsah 90°. Pokud si vyberete sever, budete muset dělat výběr nadvakrát, a to kvůli přechodu mezi ry 180° a -180°. Já zvolím třeba jih, s rozsahem <-45°;45°>, finální příkaz bude:

/testfor @e[rxm=80,rx=89,rym=-45,ry=45]

A tím vybereme entitu, která se dívá na jih a téměř do země.

Vidíte, že vybírání "pásu viditelnosti" je plně analogické s výběrem pozice.

Argumenty prostorové - dx, dy a dz

Tyto argumenty opět využívají centrální blok, kterým je buď executor nebo blok specifikovaný argumenty x, y, z. Tyto argumenty specifikují kvádr, ze kterého entitu vybíráme. Nechová se tedy jako r a rm, kdy entita leží v kouli kolem centrálního bloku. Jako centrální blok působí spodní severozápadní roh tohoto kvádru (má nejnižší x, y i z souřadnici - do těchto argumentů totiž nelze zadat záporné číslo), nazývejme tento blok rohem. Jednotlivými argumenty pak specifikujete jak je kvádr dlouhý (po ose x od rohu - argumentem dx), široký (po ose z od rohu - argumentem dz) a vysoký (po ose y od rohu - argumentem dy). Pro ilustraci tu opět máte obrázek - s popisky os a vzdáleností, také můžete vidět osní kříž dosazený z debug screen. Celá čísla jdou opět mezi středy bloků:

Ukázka chování prostorových argumentů v Minecraft

Použil jsem příkaz

/testfor @e[dx=3,dy=4,dz=6]

, který vybere všechny entity z kvádru 3,5x4,5x6,5 - počínaje od command blocku, který příkaz provádí.

Pozor: Pokud potřebujete dělat výběr prostorovými či radiovými argumenty "přesně na blok", tedy s použitím desetinných čísel, tak vás asi zklamu, protože to nejde. Jedná se bohužel o omezení hry, přes které je třeba se přenést, a vybírat vždy "o ten půlblok navíc".

Procvičení pozicování

Na závěr si procvičíme znalosti z celého třetího dílu:

  • Napište příkaz, který teleportuje každého hráče ven z místnosti o velikosti 5x5x5 bloků, pouze pokud se v ní hráč nachází.
  • Napište příkaz, který narovná hlavu každému hráči, který se dívá do země či nad sebe pod úhlem přesahujícím 60° (budete potřebovat 2 command bloky, které napojíte na stejný redstonový signál)
  • Napište příkaz, který teleportuje entitu Josef 2 bloky nad executora, pokud se nenachází dál než 4 bloky od něj

Řešení úloh máte ke stažení spolu s ostatními příkazy. V příštím díle si doplníme nějaké chybějící znalosti z oblasti "mapmakerství", budou to nějaké užitečné argumenty a příkazy pro nastavování světa.


 

Stáhnout

Staženo 2x (533.96 kB)
Aplikace je včetně zdrojových kódů v jazyce Minecraft

 

  Aktivity (6)

Článek pro vás napsal krepsy3
Avatar
Autor se učí programovat zde na itnetworku, zatím zejména jazyk C#. Znalosti chce mít ucelené, proto při vývoji aplikací studuje potřebné funkce do hloubky. Vyzná se v programování ve hrách, jako je Minecraft či Ricochet.

Jak se ti líbí článek?
Celkem (1 hlasů) :
55555


 



 

 

Komentáře

Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zatím nikdo nevložil komentář - buď první!