Jak spočítat, kolik máš ve své minihře hráčů

V tomto návodu si ukážeme, jak ve své Minecraft minihře můžeš spočítat, kolik hráčů se nachází na tvé mapě.

Představ si to takhle: Máš postavenou mapu na svoji hru, například Spleef, TNT run, nebo nějakou jinou. V těchto hrách se hraje o to, kdo je poslední naživu. Jak ale můžeš zjistit, kolik je na tvé mapě hráčů? Přesně to si teď vysvětlíme.

Co už bys měl/a umět

  • Pracovat se scoreboardy (počítadly)
  • Rozumět selektorům v Minecraftu (@a, @e, @p) – návod zde
  • Pracovat s příkazem /execute – návod zde

Vytváříme počítadlo

Nejprve musíme vytvořit scoreboard (počítadlo). Scoreboardy nám v Minecraftu umožňují vytvořit tabulku, kde má každý hráč nějaké číslo (skóre). Toto skóre potom můžeme zobrazovat třeba na pravé straně obrazovky, nebo v Tab listu (seznam připojených hráčů, který můžeš otevřít stisknutím klávesy Tab).

Scoreboardy můžou být navázané na nějakou informaci v Minecraftu; můžou automaticky počítat, kolikrát hráč zemřel, kolikrát byl vytěžen nějaký předmět, kolik zombie hráč zabil a mnoho dalších. Scoreboardy jde ale také nastavit, aby nebyly spojené na nějaké informace; v takovém případě si můžeš body v scoreboardu přidělovat sám. Můžeš třeba s jednoduchým commandem počítat, kolikrát nějaký hráč stiskl tlačítko.

/scoreboard objectives add <nazev_pocitadla> dummy

Tento příkaz vytvoří nové počítadlo. Název počítadla si můžeš vymyslet, ale nesmí v něm být mezery, ani české háčky a čárky. Pod tímto jménem budeš scoreboard označovat v ostatních příkazech.

/scoreboard objectives add HraciNaMape dummy

Tímto jsme vytvořili nové počítadlo HraciNaMape. Můžeš ho zviditelnit napsáním tohoto příkazu:

/scoreboard objectives setdisplay HraciNaMape sidebar

Zatím se nic nestalo, protože počítadlo HraciNaMape nemá žádné záznamy. Před chvíli jsme ho vytvořili, a proto je prázdné. Teď si ukážeme, k čemu nám bude užitečné.

Počítání hráčů

Položili jsme dva command blocky, jeden repeatový, a jeden chainový. Do fialového chain command blocku napíšeme tento příkaz:

/execute store result score Hraci HraciNaMape if entity @a[distance=..20]

Pojďme si ho vysvětlit trochu podrobněji.

  • /execute začíná příkaz execute.
  • store result score nastaví /execute tak, aby výsledek uložil do nějakého počítadla.
  • Hraci je jméno hráče, pod jehož jménem se skóre uloží. Můžeš si vymyslet jiné.
    • Ale proč? HraciNaMape je pouze počítadlo, počítadlo žádnou hodnotu samo o sobě nemá. Hodnoty mají Hráči, kterým jsou body na počítadle ukládány.
    • Hráč Steve by mohl mít 1 bod, hráč Alex by mohl mít 2 body, hráč Honzik by mohl mít 3 body. Ale na jiném počítadle by mohl mít Steve 4 body, Alex 3 body, a Honzik 2 body.
    • Můžeš si to představit jako sporty, v jednom sportu (jednom scoreboardu) mají hráči nějaké body, ale v jiném sportu (jiném scoreboardu) můžou mít body jiné.
    • Hráč, kterému body přidáváš, nemusí být připojený na Minecraft server. Vlastně ani nemusí existovat. V tomto příkazu používáme smyšleného hráče, a nastavujeme mu body ve scoreboardu, abychom něco vypočítali. Chytré, že?
  • HraciNaMape je počítadlo, do kterého ukládáme body.
  • if entity @a[distance=..20] spustí příkaz pouze na hráčích, kteří jsou 20 bloků nebo blíž od command blocku, kde máš příkaz napsaný.
    • Pokud napíšeš do chatu /execute if entity @a, do chatu nejspíš dostaneš zprávu “Test passed, count: Číslo“. if entity v příkazu /execute spočítalo, kolik hráčů příkaz našel. [distance=..20] omezuje vyhledávání jen na určitou oblast.

Dokončili jsme první příkaz, který jsme napsali do repeat command blocku. Pokud máš správně nastavený scoreboard, hlavně příkaz /scoreboard objectives setdisplay, okamžitě uvidíš změnu. Setdisplay Minecraftu přikázalo, aby se po pravé straně zobrazovalo počítadlo. Náš smyšlený hráč na něm bude mít skóre, které představuje počet hráčů. To protože repeatový command block neustále počítá hráče okolo a výsledek ukládá.

Napíšeme druhý command, do zeleného chain command blocku. Ten bude:

/execute if score Hraci HraciNaMape matches 1

Tento příkaz zkontroluje, pokud hráč “Hraci” má ve scoreboardu “HraciNaMape” přesně 1 bod. Pokud ano, příkaz bude úspěšný.

A to je vše, tímto jsme zkontrolovali, jestli je na tvé minihře jen jeden hráč.

Co dál?

Jaké příkazy spustit, když je ve tvé minihře jen jeden hráč, je na tobě. Můžeš vítězi předat odměnu, teleportovat ho pryč, nebo napsat do chatu oznámení. Ale jak na to?

V kapitole nahoře jsme zmínili, že pokud bude skóre přesně 1, bude příkaz úspěšný. Toho můžeme využít. Polož si do řady command blocků další command block. Nastav ho jako chainový, a conditional. Conditional a unconditional můžeš přepínat prostředním tlačítkem.

Šipka na conditional command blocku bude zalomená, jako je to vidět tady

Příkazy v conditional command blocku se spustí jen, když příkaz před ním skončí úspěšně. Náš počítací příkaz:

/execute if score Hraci HraciNaMape matches 1

…skončí úspěšně když má hráč “Hraci” ve scoreboardu “HraciNaMape” jeden bod. Pokud má více, nebo méně, skončí neúspěšně. Příkazy v conditional command blocku by se tedy nespustily.

Co do tohoto command blocku napíšeš je už jen na tobě. Ale zapojení přes conditional command block ti ušetří práci. Nebudeš muset do každého command blocku v řadě přidávat podmínku, jestli je skóre rovné 1. To protože máš v řadě už jeden příkaz, který to dělá za tebe, a zbytek je na něj navázaný.

Napsat komentář