Скрипт - Грешки за начинаещи& Как да оптимизирате ВАШИЯ код. Правя тази публикация, за да помогна на нови разработчици. Първо ще разгледаме често срещаните грешки на скрипта, след което ще започна да ви уча как да оптимизирате собствения си код. Често срещана грешка №1 - Използване на интервали или забравяне на отстъпа В скрипта целият код трябва да бъде с отстъп, 4 интервала или 1 табулатор всеки. Каква е разликата между табулаторите и интервалите? Един табулатор е 4 интервала, но връщането назад на един незабавно ще изтрие 4 интервала, а натискането на Tab на клавиатурата моментално прави 4 интервала. По-бързо е и по-ефективно. Някои казват, че е неефективно в други езици, като Java, което не е вярно, езици като Java не са твърде фокусирани върху отстъпа, не толкова, колкото Skript, тъй като повечето IDE правят отстъп автоматично за вас или всички раздели се конвертират така или иначе на интервали в края на деня. Пример за лош код:
при прекъсване: изпратете „Вие счупихте блок!“ дайте 1 от диаманта на играчите изпратете „Подарете диамант!“Проблемът е, че ЦЕЛИЯТ код трябва да съдържа точно 4 интервала (или 1 раздел). Вие правите отстъп в кода си само след 'if' или който и да е код, завършващ с двоеточие: Често срещана грешка #2 Използване на .%player's uuid% вместо ::%player's uuid% или използване на %player%Променлива за играч в Skript изглежда така : {mana::%player's uuid%} И често срещана грешка, която хората правят е използването на {mana.%player's uuid%} ; използвайки :: вместо . във вашата променлива е по-добре, тъй като ще запази вашите променливи по-добре във variables.csv; освен това много играчи също правят грешката да използват %player%, когато не искат. Когато използвате %player%, вие запазвате стойността в името на играча, което означава, че ако той някога промени името си, целият му напредък ще бъде изтрит. Вместо това използвайте %player's uuid%. Пример за добра променлива:{mana::%player's uuid%}Често срещана грешка #3Код за спагети Ха, чакайте ИМА СПАГЕТИ? Не. Това е код за спагети: (Форумите някак си го разбиват, но схващате идеята.)
команда /sell:trigger:ако държаният от играча предмет не е железен слитък:ако държаният от играча предмет не е златен слитък:ако държаният от играча предмет не е въглища:ако държаният от играча предмет не е диамант:ако държаният от играча предмет не е Не съм изумруд:send "Пример"else:send "Не можете да продавате изумруди!:else:send "Не можете да продавате диаманти!:else:send "Не можете да продавате въглища!:else:send "Вие не можете да продавате железни блокове!:else:send "Не можете да продавате железни блокове!:Точно така.. много безполезни ако. Добре, така че, "Роза! Но как иначе би трябвало да изпратя персонализирано съобщение за всеки артикул, който не трябва да продава UVU"Simple.
команда /sell:trigger:ако задържаният от играча предмет не е железен слитък или диамант, или изумруд, златен слитък или въглища:изпрати "Пример"else:изпрати "Не можете да изпратите %задържан от играча предмет%!"Това прави абсолютно същото, %player's hold item% ще бъде това, което те държат, така че това е персонализирано съобщение за всеки артикул, който не могат да продадат в 12 реда по-малко. Ако не планирате да използвате „друго“, можете също да направите
команда /sell:trigger:държаният от играча предмет не е железен слитък или диамант, изумруд или златен слитък или въглен, изпратете „Пример“Не, ако е необходимо. Направете го при всяко възможно обстоятелство. Раздел II – Как да оптимизирате кода си Няма да навлизам твърде задълбочено в този раздел. Само куп откъси от трикове, които научих през годините. Съвет #1 Изтрийте възможно най-много променливи. Когато приключите с използването на променлива, изтрийте я, наистина е просто. Кажете, че {mana::%player's uuid%} е вашата променлива. При всяко събитие или команда, където е необходимо, просто поставете delete {mana::%player's uuid%} сега. ОПРЕДЕЛЕНО не бих препоръчал изтриването на важни променливи, но ако използвате променливата само за временна, кратка задача, изтрийте я след употреба или го изтрийте, когато играчът напусне. Това ни води до локални променливи, всички локални променливи започват с '_', например: {_timer::%player's uuid%} или {_t} са локални променливи. След като кодът спре, те се изтриват автоматично и никога няма да бъдат запазени в променливи.csvИзползвайте ги, когато трябва да запазите нещо или да използвате променлива в кода само за тази част от кода. Съвет #2 Използвайте RAM променливи, МОЛЯ! Какво представляват RAM променливите? Е, когато вашият сървър спре или се рестартира, те се изтриват автоматично. RAM променливата винаги започва с '-' или каквото и да я зададете в config.yml, тъй като това не е в нормалния скрипт, трябва да активирате това в config.yml. Тази статия ще ви покаже как да направите всяка променлива, започваща с - изтриване при рестартиране - https://forums.skunity.com/threads/skript-variables-ram.5865/Така че имате настроени вашите RAM променливи. Ето как изглеждат те: {-thirst::%player's uuid%}Те са ИЗКЛЮЧИТЕЛНО полезни за запазване на стойности като измервател на жаждата или каквато и да е друга употреба, за която можете да ги използвате. След като бъдат настроени, просто започнете всяка променлива с „-“, за да я накарате да изтрие променливата при рестартиране на сървъра. Това предпазва variables.csv от задръстване с безполезни променливи, които не трябва да се записват след рестартиране.
Съвет №3. Защо пускате играчи за вашето табло? Един от най-полезните съвети за всеки Minehut сървър. НЕ зацикляйте играчи за вашето табло, има безкрайно по-добър начин и той изисква само SkBee. Това е пример за моя метод. Направете своето табло точно като моето и го поставете във функция.
функция резултат(p: играч): задайте {_uuid} на uuidset на {_p} заглавието на таблото с резултати на {_p} на "&lPIE&lDOMS" задайте ред 11 на таблото с резултати на {_p} на "&l [/pie] „задайте ред 10 от таблото с резултати на {_p} на „&7“ задайте ред 9 от таблото с резултати на {_p} на „●&f монети&8 |&f %{_p} balance%"задайте ред 8 от таблото с резултати на {_p} на "&7"задайте ред 7 от таблото с резултати на {_p} на "●&f Убийства&8 |&f %{stats::%{_uuid }%::kills}%"задайте ред 6 от таблото с резултати на {_p} на "●&f Ниво&8 |&f %{stats::%{_uuid}%::lvl}%"задайте ред 5 от таблото с резултати на {_p} на „●&f Изпечени пайове&8 |&f %{stats::%{_uuid}%::pies}%" задайте ред 4 от таблото с резултати на {_p} на „& ;7"задайте ред 3 от таблото на {_p} на "&lПодкрепете ни - [/buy]"задайте ред 2 от таблото на {_p} на "&5"задайте ред 1 на {_p} табло с резултати на "&f{ /discord&f | /pie&f |/profile&f }"включете таблото с резултати на {_p}Винаги, когато актуализирате стойност в таблото с резултати, във вашия код поставете score(player )
on join:score(player)Секция с мини-съвет БОНУС!Съвет #4 - Използвайте функции ВИНАГИ, КОЙТО можете, не подценявайте възможностите им. Например, трябваше да направя 10+ Shop GUIS за моя сървър. Направих функция, която ми позволява да направя всеки GUI, който искам, в един ред код, като използвам функция с около 15-20 реда. Съвет #4 - Деактивирайте архивирането в config.yml, така че вашият сървър да не произвежда безкрайно стотици хиляди резервни копия извънреден труд; обикновено води до спиране на сървъра, когато се стартира.
Съвет №5 – Винаги използвайте тези полезни входни данни, вместо да използвате „завъртане на всички играчи“ –
изпрати "%player% executed command&e %full command%" до всички играчи, където [{-cspy::%input's uuid%} е true]изпрати "%player% >> %message%" до всички играчи, където въвеждане има разрешение "Staffchat"]PREV: Как да активирате виртуален хост Apache в Windows 10. - Linux ...
NEXT: Как да изброите всички виртуални хостове в уеб сървъра на Apache