5. diel - Programovanie v Minecraftu - Príkazy pre manipuláciu so svetom
Vítam vás u ďalšej lekcie kurzu o programovaní v Minecraftu. Minule sme si vysvetlili systém pozicovanie as ním súvisiace príkazy a argumenty. Dnes si doplníme takmer kompletne znalosť selektorových argumentov (chýbať nám budú už len tie súvisiace so scoreboard systémom, čo je pomerne dlhá kapitola) a ukážeme si niektoré príkazy potrebné pre "mapmakerství", čo znamená stavanie hrateľných máp - viac sa dozviete napr. Na http : //www.wikihow.com/...dventure-Map. Práve tvorba hrateľných máp je dôvod, prečo sa väčšinou chcú ľudia naučiť používať command bloky. Ak ste tu práve z tohto dôvodu, môžete sa tešiť na ďalšie lekcie, ktoré už budú na mapmakerství zamerané.
Ostatné selektorové argumenty
Najprv doplníme znalosť o chýbajúce argumenty.
Argument c
Argument "c" ako "count" (počet) navracia počet entít. Použijete ho iba u selektorov "@a" a "@e" (pretože @ri @p vyberajú iba jedného hráča, takže by to nemalo moc zmysel). Jeho výhodou je, že pri výbere entít postupuje vždy od tej najbližšej po tú najneskorší, a to v zmysle argumentu r, teda po kružniciach. Zápis @p možno teda nahradiť zápisom @a [c = 1], čo síce nemá zmysel, ale @e [c = 1] už zmysel má, pretože neexistuje selektor pre "najbližší entitu", a vyššie uvedený zápis je pre túto selekciu úplne dostačujúce. Príklad nájdete u nasledujúceho argumentu.
Argument type
Tento argument, ako vám asi došlo, navracia "typ" a to "typ entity", inými slovami o ktorú entitu sa jedná. Použijete ho teda iba u @e, keďže ostatné selektory vyberajú iba hráča. Môžete použiť aj predznamenanie "!", Čím zabezpečíte výber entít odlišného typu. Zoznam použiteľných typov nájdete tu: http://minecraft.gamepedia.com/...s/Entity_IDs Posledný stĺpec zo spomínanej tabuľky ( "savegame ID") obsahuje práve hodnotu argumentu type pre danú entitu. Doplním, že ak chcete entitu hráča, zapíšete "Player".
Poďme teraz vyskúšať, čo sme sa práve naučili. Nájdime najbližší z našich dvoch ošípaných:
/say @e[type=Pig,c=1]
Alebo ak vykonávate výber zo všetkých entít, ale nechcete hráča:
/testfor @e[type=!Player]
Príkaz vyššie nebude fungovať (respektíve ukáže
selector @e[type=!Player] found nothing)
, ak všetky ostatné
entity zabijete, samozrejme si to skúste pomocou príkazu / kill.
Minule ste sa dozvedeli, že argumenty x, yaz presúvajú centrum výberu, ale fungujú len v kombinácii SRA rm. Fungujú aj v kombinácii s c, môžete skúsiť dosadiť súradnice stredu ohrádky, aby ste zistili, ktoré prasa je ďalej:
/say @e[type=Pig,c=-1,x=-776,y=56,z=271]
Ako vidíte, dosadením záporného čísla obrátite smer výberu - teraz už vyberáte v zmysle argumentu rm, teda v kruhoch od najvzdialenejšej entity po najbližší.
Argumenty pre xp
A konečne, argumenty "l" a "lm" (m opäť ako minimal). Tieto argumenty zastupujú "levels of experience", čiže počet "úrovní" skúseností, čo je "to zelené", čo používate na enchantování. Váš momentálny level je zobrazený nad aktívnym inventárom zeleným číslom. Ako hráčom xp meniť si povieme inokedy. Napíšme si teda jednoduchý oznamovacej skriptík, ktorý bude dávať hráči vedieť, ako na tom je. Budete potrebovať dva command bloky, ktoré napojíte na obvod clock:
/tell @a[lm=30] Hej, už máš dost levelů na plné enchantování! /tell @a[l=5] Máš poměrně málo levelů, měl bys jít zabít pár příšer.
Jediný problém je, že skript bude spamovať chat hráčov pri každom priebehu obvodu, ako to ošetriť si povieme u tutoriálu o scoreboard systému. Ide však o reálne použiteľný skript, ktorých dokážete s patričnou znalosťou vymyslieť tisíce.
Príkazy pre manipuláciu so svetom
Teraz si predstavíme príkazy používané na manipuláciu so svetom, ktoré sa vám budú hodiť napr. Až budete sami vytvárať nejakú hrateľnú mapu, alebo len keď si budete chcieť prispôsobiť testovacie svet.
Príkaz / defaultgamemode
Príkaz / Gamemody už poznáte, tak iste nebude problém uhádnuť, že príkaz nastaví svetu predvolený herný mód. Tento východiskový mód ste nastavovali pri vytváraní sveta, bol to creative. Skúste ho teraz zmeniť na survival (použiť môžete, rovnako ako u / difficulty, rôzny druh zápisu):
/defaultgamemode 0 /defaultgamemode s /defaultgamemode survival
Keď sa teraz prihlási do sveta nový hráč, bude mať herný mód nastavený na survival.
Príkaz / difficulty
Ako možno uhádnete, tento príkaz mení obtiažnosť. Obdobne ako u / defaultgamemode, berie aj tento príkaz jediný argument a tým je vytúžená obtiažnosť. V hre sú celkom štyri a opäť ich môžete špecifikovať rôznym spôsobom:
- Peaceful (Mierumilovná) - 0, p, peaceful
- Easy (Jednoduchá) - 1, e, easy
- Normal (Normálne) - 2, n, normal
- Hard (Ťažká) - 3, h, hard
Obtiažnosť je uložené pre každý svet samostatne, preto ak prejdete do nastavenia, vidíte tu obtiažnosť poslednýkrát načítaného sveta. Ako možno viete, obtiažnosť možno pre daný svet "zamknúť", čím ju už nejde z nastavenia meniť. Tento príkaz sa však na zámok neobzerá, takže ani to nie je 100% ochrana, však v momente, keď sú vypnuté cheaty, hráč na zamknutom svete ju nebude môcť zmeniť. Ak je príkaz vykonaný na serveri, obtiažnosť je zmenená, avšak pri nasledujúcom štarte servera bude opäť na pre server východiskovej hodnote, pretože si ju počas spúšťania nastaví podľa server properties.
Príkaz / seed
Tento príkaz môžete ako jeden z mála vykonať aj s vypnutými cheaty. Nemá žiadne argumenty a svojmu executorovi zobrazí seed (semeno) sveta, na ktorom sa nachádza. Toto číslo udáva generátora sveta "ako ho má generovať", čiže dva novo vygenerované svety s rovnakým Seed budú vyzerať rovnako. Toto číslo je možné zadať pri vytváraní sveta.
Príkazy pre počasie
Môžete vykonať príkaz / toggledownfall (čiže niečo ako "prepnúť padanie z oblohy"), ktorý neberie žiadne argumenty. Ak prší (resp. Sneží), prestane a ak neprší, začne.
Komplexnejším príkazom je / weather, najprv jeho syntaxe:
/weather <clear|rain|thunder> [délka trvání]
Prvým povinným argumentom je stav počasia, ktorý má príkaz nastaviť
- clear znamená, že neprší
- rain znamená, že prší (resp. sneží, záleží na teplote BIOMAT)
- thunder znamená, že prší a bijú blesky (blesk je entita). Ak blesk udrie do Creeper, nabije ho. Ak udrie do prasaťa, urobí z neho Pigmana (prasačieho muža - príšera z Netheru).
Ďalej je možné špecifikovať dĺžku trvania. To je minimálna doba, počas ktorej bude bezpodmienečne nastavený stav trvať. Po jej uplynutí opäť bude v môcť hry náhodne nastaviť nový stav (neznamená to teda, že po uplynutí stanovenej doby sa nutne počasie ihneď zmení). Táto doba sa udáva v tzv. "Ticks" (tiky - programátori iste vedia, že sa jedná o najmenší časovú jednotku, s ktorou program počíta), môžete zadať hodnotu medzi 1 - 1000000. Jeden minecraftový tik zodpovedá 1/20 sekundy, čiže dvadsať tikov dá jednu sekundu. Jeden celý minecraftový deň trvá 24 000 ticks, čo je dvadsať min. Pokiaľ tento argument neuvediete, hra automaticky dosadí náhodne medzi 6 000 - 18 000 ticks.
Skúsme teda teraz zapnúť búrku:
/weather thunder
Ak hráte, rovnako ako ja, v BIOMAT púšť, uvidíte iba zatiahnutú oblohu, ale žiadny dážď ani blesky. Je to preto, že každý biom má svoju teplotu, ktorá určuje, či v ňom prší, sneží alebo vôbec nič. Od y = 64 sa navyše východisková teplota BIOMAT znižuje s pribúdajúcou nadmorskou výškou, čo napríklad spôsobí, že v BIOMAT Extreme Hills pri úpätí kopca prší, ale hore už sneží (tým ako sú hory vysoké). Viac sa dočítate tu: http://minecraft.gamepedia.com/Biome....
Príkazy pre spawnpoint
Spawnpoint je miesto, na ktorom sa objaví hráč po tom, čo zomrie ( "spawn point" - bod objavenie sa) a stlačí tlačidlo respawn. Každý svet má svoj východiskový spawnpoint, ktorý nastavíte príkazom / setworldspawn:
/setworldspawn [souřadnice x, y a z]
Buď príkaz vykonáte len tak, potom je miesto nastavené podľa súradníc executora, alebo súradnice zadáte. Predvolené svetový spawnpoint sa vždy nachádza v jednom z prostredných štyroch spawnchunků, jeho opätovným nastavením teda premiestnite aj lokalitu spawnchunků.
Ešte uvediem príkaz, ktorý zmení spawnpoint individuálne hráčom. Ako vám možno došlo, tento osobné spawnpoint je vždy nastavený vedľa postele, v ktorej vyspíte - po smrti sa objavíte na svojej základni a nie na východiskovom bode. Zároveň sa ale dá meniť príkazom / spawnpoint:
/spawnpoint [hráč] [souřadnice x, y a z]
Ak chcete nastaviť svoj vlastný spawnpoint na mieste, kde sa momentálne nachádzate, nemusíte špecifikovať žiadny argument. Keď ho nastavujete inému hráčovi, ale na mieste, kde sa momentálne nachádzate, nemusíte uvádzať súradnice. Inak príkaz vyžaduje plnú špecifikáciu.
Príkaz / time
Týmto príkazom nastavíte koľko je hodín (hodnota je samozrejme v ticks). Ako som už spomínal u príkazu / weather, jeden minecraftový deň má 24 000 ticks, východ slnka je 0 (+ násobky, teda 0, 24000, 48000 ...). Pravé poludnie nastáva v 6000 a násobkoch, západ slnka vo 12000 a násobkoch a polnoc je v 18000 a násobkoch. Syntax príkazu:
/time <<set|add>|<query>> <<denní doba (day|night) |počet ticks>|<jednotka>>
Argumenty set a add čas nastaví, špecifikujete dobu v ticks, ktorá má byť nastavená, resp. pripočítaná k aktuálnej hodnote. Ak používate set, môžete nastaviť iba "day" či "night" a hra automaticky dosadí 1000 alebo 13000 tics.
Argument query nechá príkaz oznámiť koľko času uplynulo od istého momentu. Za argument jednotka dosadíte
- daytime - oznámi koľko je hodín (v ticks), teda číslo od 0 do 24000
- gametime - oznámi koľko ticks uplynulo od prvého spustenia sveta
- day - oznámi číselne koľko dní už na tomto svete prebehlo. Tento údaj možno vidieť aj na debug screen:
Upozornenie: Ak zmeníte čas na pravé poludnie pomocou príkazu
/time set 6000
, vynulujete tým počet prebehnutých dní.
To je pre tento diel všetko, nabudúce si ukážeme ešte príkaz / gamerule Svet máte ako zvyčajne k stiahnutiu.
Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 22x (537.48 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Minecraft