Siemka,
chciałbym pokazać proces tworzenia pliku .yml. Napisałem ten tutek bo stary nie jest pełny a autor go olau.
Spis zawartości:
1. Co to jest plik .YML?
2. Tworzenie folderu z plikiem.
3. Zapisywanie wartości i komentarzy.
4. Odczytywanie z pliku .yml
5. Przykładowe skrypty.
1. Co to i po co?
W pliku .yml możemy zapisać np. wiadomości, różne ustawienia itp.
Skrypt będzie bardziej estetyczny.
Random nie będzie musiał "grzebać" w kodzie.
Możesz zrobić autodownload bez obawy o ustawienia użytkownika.
Możesz zaciemnić obfuscatorem skrypt, a random dalej będzie mógł pozmieniać to, na co zezwolisz.
2. Tworzenie pliku:
Najlepiej robić pliki swojego skryptu w osobnym folderze. Może to być dowolne miejsce, lecz najczęściej albo folder /plugins/ albo /Skript/ albo /scripts/. No więc tworzymy kod:
on script load: # najlepiej nazwac folder wstepna nazwa skryptu #
if folder "plugins/Skript/mojsuperskrypt" doesn't exists:
# tworzymy folder #
send "Nie odnaleziono folderu ""mojsuperskrypt""!" to console
send "Tworzenie..." to console
create folder "plugins/Skript/mojsuperskrypt"
send "Folder ""mojsuperskrypt"" zostal pomyslnie utworzony!" to console
# teraz tworzymy sam plik .yml #
if file "plugins/Skript/mojsuperskrypt/config.yml" doesn't exists:
send "Nie znaleziono pliku ""config.yml""!" to console
send "Tworzenie..." to console
create file "plugins/Skript/mojsuperskrypt/config.yml"
Gzgz, właśnie stworzyłeś folder z pustym plikiem!
3. Zapisywanie do pliku (3 sposoby)
a] WriteFile - do logów, komentarzy, value list, itp.
b] Set - do zapisywania wartości. Przykłady:
# komentarz #
wf "## fajny komentarz sol macz ##" to "plugins/Skript/mojsuperskrypt/config.yml"
# 1 wersja #
set "jakasnazwa" to "jakaswartosc" in yaml file "plugins/Skript/mojsuperskrypt/config.yml"
set "jakasnazwa2" to "jakaswartosc2" in yaml file "plugins/Skript/mojsuperskrypt/config.yml"
# 2 wersja #
wf "cos:" to "plugins/Skript/mojsuperskrypt/config.yml"
wf " jakasnazwa:" "to plugins/Skript/mojsuperskrypt/config.yml"
wf " - 'jakaswartosc'" to "plugins/Skript/mojsuperskrypt/config.yml"
wf " - ' jakaswartosc2'" to "plugins/Skript/mojsuperskrypt/config.yml"
# 3 wersja #
wf "cos:" to "plugins/Skript/mojsuperskrypt/config.yml"
wf " jakasnazwa: 'jakaswartosc'" to "plugins/Skript/mojsuperskrypt/config.yml"
wf " jakasnazwa2: 'jakaswartosc2'" to "plugins/Skript/mojsuperskrypt/config.yml"
4. Odczytywanie z pliku (2 części): I najpierw do zmiennych: a] Single Value
b] Value List
c] Configuration Section
# 1 wersja #
set {jakaszmienna} to single value "jakasnazwa" get of "plugins/Skript/mojsuperskrypt/config.yml"
set {jakaszmienna2} to single value "jakasnazwa2" get of "plugins/Skript/mojsuperskrypt/config.yml"
# 2 wersja #
set {jakaslista::*} to value list "cos/jakasnazwa" get of "plugins/Skript/mojsuperskrypt/config.yml"
# 3 wersja #
set {jakaslista::*} to configuration section "cos/jakasnazwa" get of "plugins/Skript/mojsuperskrypt/config.yml"
II odczyt ze zmiennych:
command /testyml:
trigger:
# 1 wersja #
send "%{jakaszmienna}%"
# 2 wersja #
set {_x} to random element of {jakaslista::*}
give player 1 {_x}
# 3 wersja #
send "%{jakaslista::jakasnazwa}%"
send "%{jakaslista::jakasnazwa2}%"
Jeżeli chcemy wsadzić zmienną do configu która nie pasuje do "on skript load:" mamy 2 możliwości:
a] Niby-zmienna, np (NICK)
b] zmiana eventu Wersja a]
Plik YML:
wiad.wegiel: '&6Brawo &c(NICK)&6, wykopales &0&lWEGIEL&6!'
Plik SK:
on skript load:
set {wiad.wegiel} to single value "wiad.wegiel" get of "plugins/Skript/mojsuperskrypt/config.yml"
on mine of coal:
set {_wiad} to {wiad.wegiel}
replace all "(NICK)" with "%player%" in {_wiad} send "%{_wiad}%"
Wersja b]:
Plik YML jak wyżej
Plik SK:
on mine:
set {_wiad} to single value "wiadomosc.wegiel" get of "plugins/Skript/mojsuperskrypt/config.yml"
replace all "(NICK)" with "%player%" in {_wiad} send "%{_wiad%}"
5. Przykłady:
Wersja 1:
Plik YML:
Plik SK:
tag: '&8[&6Tut&2YML&8]'
on skript load:
set {tag} to single value "tag" get of "plugins/Skript/mojsuperskrypt/config.yml"
command /tutek:
trigger:
send "%{tag}% &6Gz, ogarniasz!"
Wersja 2:
Plik YML:
Plik SK:
itemyskyblock:- '1 diamond sword named "&3Mieczyk"'- '1 golden apple'- '64 dirt'
on skript load:
set {itemy.skyblock::*} to value list "itemyskyblock" get of "plugins/Skript/mojsuperskrypt/config.yml"
command /wyspa daj itemy:
trigger:
loop {itemy.skyblock::*}:
give loop-value to player
Wersja 3:
Plik YML:
motda:
motd1: '&6Zapraszamy'
motd2: '&cFajny serwer Sv+Gildie'
motd3: '&2Nasze IP: s182.hostingnajlepszywprzeluj.pl.tk.com.net:12345'
Plik SK:
variables:
{nr.motda} = 1
on skript load:
set {motda::*} to configuration section "motda" get of "plugins/Skript/mojsuperskrypt/config.yml"
on server list ping:
set motd to "{motda::%{nr.motda}%}%"
add 1 to {nr.motda}
{nr.motda} is 4:
set {nr.motda} to 1
Wiem że pogmatwane, kilka razy poprawiałem, bo było jeszcze gorsze (tak, to możliwe).
Widzisz jakiś błąd? Napisz! Skryptów nie testowałem, w teorii powinny działać.
Za rozpisanie się walnij lajka xD