Skript – Začátečnické chyby& Jak optimalizovat VÁŠ kódTento příspěvek vytvářím ve prospěch pomoci novým vývojářům. Nejprve si projdeme běžné chyby skriptu a poté vás začnu učit, jak optimalizovat svůj vlastní kód. Častá chyba #1 – Používání mezer nebo zapomínání odsazení Ve skriptu musí být veškerý kód odsazen, každý musí mít 4 mezery nebo 1 tabulátor. Jaký je rozdíl mezi tabulátory a mezerami? Tabulátor má 4 mezery, ale zpětné mezery na jedné okamžitě odstraní 4 mezery a stisknutím klávesy Tab na klávesnici okamžitě vytvoříte 4 mezery. Je to rychlejší a efektivnější. Někteří říkají, že je to neefektivní v jiných jazycích, jako je Java, což není pravda, jazyky jako Java se příliš nezaměřují na odsazení, ne tolik jako Skript, protože většina IDE se automaticky odsazuje za vás nebo jsou převedeny všechny karty do mezer na konci dne. Příklad špatného kódu:
on break:send "Rozbili jste blok!"dejte hráčům 1 diamantend "Gave Diamond!"Problém je v tom, že VŠECHNY tento kód musí mít přesně 4 mezery (nebo 1 tabelátor). Svůj kód odsadíte pouze za „if“ nebo za jakýkoli kód končící dvojtečkou :Obvyklá chyba #2Použití .%player's uuid% místo ::%player's uuid% nebo použití %player%A proměnné pro hráče ve Skriptu vypadá takto : {mana::%player's uuid%} A častou chybou, kterou lidé dělají, je použití {mana.%player's uuid%} ; pomocí :: místo . ve vaší proměnné je lepší, protože lépe uloží vaše proměnné do variables.csv; mnoho hráčů také dělá tu chybu, že používá %player%, když to nechtějí. Při použití %player% ukládáte hodnotu ke jménu hráče, což znamená, že pokud někdy změní své jméno, veškerý jeho postup bude smazán. Místo toho použijte %player's uuid%. Příklad dobré proměnné:{mana::%player's uuid%}Obvyklá chyba #3Spaghetti codeHuh, wait THERE'S SPAGHETTI?Ne. Toto je kód špaget: (Fóra to trochu pokazí, ale chápete to.)
příkaz /sell:trigger:pokud držený předmět hráčem není železný ingot:pokud držený předmět hráče není zlatý ingot:pokud držený předmět hráče není uhlí:pokud předmět držený hráčem není diamant:pokud předmět držený hráčem není 't an emerald:send "Příklad"else:send "Nemůžete prodávat smaragdy!:else:send "Nemůžete prodávat diamanty!:else:send "Nemůžete prodávat uhlí!:else:send "Vy nemůže prodávat železné ingoty!:else:send "Nemůžeš prodávat železné ingoty!:Jen tak.. mnoho zbytečných, pokud je. Dobře, tak, "Rosa! Ale jak jinak mám poslat vlastní zprávu pro každou položku, kterou nemají prodávat UVU"Simple.
příkaz /sell:trigger:pokud hráč držený předmět není železný ingot nebo diamant nebo smaragd nebo zlatý ingot nebo uhlí:send "Příklad"else:send "Nemůžete poslat % držený předmět hráče%!"To dělá přesně to samé, % držený předmět % hráče % bude tím, co drží, takže to je vlastní zpráva pro každou položku, kterou nemohou prodat za 12 méně řádků. Pokud neplánujete použít 'jiný', můžete také udělat
příkaz /sell:trigger:položka držená hráčem není železný ingot nebo diamant, smaragd nebo zlatý ingot nebo coalsend "Příklad"Ne, pokud je potřeba. Udělejte to za všech možných okolností. Část II – Jak optimalizovat váš kód Nebudu v této části zacházet příliš do hloubky. Jen pár úryvků triků, které jsem se za ta léta naučil. Tip #1Smažte co nejvíce proměnných Když skončíte s použitím proměnné delete, je to opravdu jednoduché. Řekněme, že {mana::%player's uuid%} je vaše proměnná. V jakékoli události nebo příkazu, kde je to potřeba, stačí dát delete {mana::%player's uuid%} nyní ROZHODNĚ nedoporučuji mazat důležité proměnné, ale pokud proměnnou používáte pouze pro dočasný, krátký úkol, smažte ji po použití nebo jej smažte, když hráč odejde. To nás vede k lokálním proměnným, všechny lokální proměnné začínají '_', například: {_timer::%player's uuid%} nebo {_t} jsou lokální proměnné. Jakmile se kód zastaví, jsou automaticky smazány, nikdy se neuloží do proměnných.csvPoužijte je, když potřebujete něco uložit nebo použijte proměnnou v kódu pouze pro tento jeden kus kódu. Tip #2Používejte proměnné RAM, PROSÍM! Co jsou proměnné RAM? Když se váš server zastaví nebo restartuje, automaticky se odstraní. Proměnná RAM vždy začíná znakem '-' nebo čímkoli, co jste nastavili v config.yml, protože to není v normálním skriptu, musíte to povolit v souboru config.yml Tento článek vám ukáže, jak vytvořit libovolnou proměnnou začínající na - smazat při restartu - https://forums.skunity.com/threads/skript-variables-ram.5865/Takže máte nastavené proměnné RAM. Takto vypadají: {-thirst::%player's uuid%}Jsou MIMOŘÁDNĚ užitečné pro ukládání hodnot, jako je měřič žízně, nebo pro jakékoli jiné použití, které vás napadne použít. Jakmile jsou nastaveny, začněte libovolnou proměnnou znakem '-', aby se proměnná po restartu serveru odstranila. To zabrání tomu, aby se variables.csv zanášely zbytečnými proměnnými, které není třeba po restartu ukládat.
Tip #3Uh.. Proč pro svou výsledkovou tabulku zacyklíte hráče? Jeden z nejužitečnějších tipů pro jakýkoli server Minehut. NEVYLUČUJTE hráče pro vaši výsledkovou tabulku, existuje nekonečně lepší způsob a vyžaduje pouze SkBee. Toto je příklad mé metody. Udělejte si svou výsledkovou tabulku jako já a vložte ji do funkce.
function score(p: player):set {_uuid} na {_p}'s uuidset title of {_p}'s scoreboard to "&lPIE&lDOMS"nastav řádek 11 výsledkové tabulky {_p} na "&l [/pie] "nastavit řádek 10 výsledkové tabulky {_p} na "&7"nastavit řádek 9 výsledkové tabulky {_p} na "●&f Coins&8 |&f %{_p}" balance%"nastavit řádek 8 výsledkové tabulky {_p} na "&7"nastavit řádek 7 výsledkové tabulky {_p} na "●&f Zabíjí&8 |&f %{stats::%{_uuid }%::kills}%"nastavit řádek 6 výsledkové tabulky {_p} na "●&f Úroveň&8 |&f %{stats::%{_uuid}%::lvl}%"nastavit řádek 5 z výsledkové tabulky {_p} na "●&f Pečené koláče&8 |&f %{stats::%{_uuid}%::pies}%"nastavit řádek 4 výsledkové tabulky {_p} na "& ;7"nastavit řádek 3 výsledkové tabulky {_p} na "&lPodpořte nás - [/buy]"nastavit řádek 2 výsledkové tabulky {_p} na "&5"nastavit řádek 1 {_p} výsledková tabulka na "&f{ /discord&f | /pie&f |/profile&f }"přepnout výsledkovou tabuli {_p} naKdykoli aktualizujete hodnotu na výsledkové tabuli, vložte do kódu skóre (hráč )
on join:score(player)Sekce BONUS mini-tip!Tip #4 - Používejte funkce, KDYKOLI můžete, nepodceňujte jejich schopnosti. Například jsem potřeboval vytvořit 10+ Shop GUIS pro můj server. Vytvořil jsem funkci, která mi umožňuje vytvořit libovolné grafické uživatelské rozhraní na jednom řádku kódu pomocí funkce s přibližně 15–20 řádky. Tip #4 – Zakažte zálohování v souboru config.yml, aby váš server neprodukoval donekonečna stovky tisíce záloh přesčas; obvykle vede k tomu, že server umírá, kdykoli je spuštěn.
Tip č. 5 – Vždy používejte tyto užitečné vstupy namísto použití funkce „zacyklit všechny hráče“ –
odeslat "%player% proveden příkaz&e %plný příkaz%" všem hráčům, kde [{-cspy::%input's uuid%} je true]odeslat "%player% >> %message%" všem hráčům, kde vstup má oprávnění "Staffchat"]PREV: Jak povolit virtuálního hostitele Apache ve Windows 10. - Linux ...
NEXT: Jak vypsat seznam všech virtuálních hostitelů na webovém serveru Apache