Skocz do zawartości

AxAutoUpdate - Skrypt ułatwiający automatyczną aktualizacje


xAxee

Rekomendowane odpowiedzi

AxAutoUpdate
Cześć, chciałbym przedstawić skrypt do fajnego zarządzania aktualizacjami
skryptów oraz ich automatycznego aktualizowania.

Skrypt jest głównie przeznaczony dla osób które piszą skrypt
i chcą aby ich skrypt automatycznie aktualizował się użytkownikom

Działanie
Skrypt co godzinę sprawdza czy wersje wszystkich zarejestrowanych skryptów są aktualne,
jeżeli nie i aktualizowanie nie jest zablokowane, nowa wersja pobiera się sama.
Jeżeli jednak aktualizowanie jest zablokowane to wysyła wiadomość do konsoli serwera i wszystkich operatorów.
Aby skrypt wykrywał wersję skryptu trzeba gdzieś w kodzie umieścić jego wersje między  #$ i $# np:

#$ Version: 1.0 $#

oraz wywołać np przy ładowaniu skryptu funkcje AxUpdate_register(nazwa, link, skrypt) z odpowiednimi argumentami np:

on load:
    AxUpdate_register("AxUpdate", "https://code.skript.pl/0uFoPX6y/raw", script)

Jeżeli chcesz dać użytkownikom wolną rękę aby nie musieli pobierać tego skryptu ale jeżeli pobiorą to wasz skrypt będzie się automatycznie aktualizował, starczy że ustawisz te zmienne na dane twojego skryptu przy ładowaniu

set {AxUpdate::<nazwa>::link} to "<link>"
set {AxUpdate::<nazwa>::status} to true
set {AxUpdate::<nazwa>::name} to "<nazwa>"
set {AxUpdate::<nazwa>} to script

np:

on load:
    set {AxUpdate::mHelix::link} to "https://code.skript.pl/yyY0eOdW/raw"
    set {AxUpdate::mHelix::status} to true
    set {AxUpdate::mHelix::name} to "mHelix"
    set {AxUpdate::mHelix} to script

Wymagania
- Skript min. 2.2
- SkUtilities

Główna komenda
update:
Zamienniki: autoupdate
Składnia: /update <list/unregister/update/on/off>* <name>
list
#Wyświetla wszystkie zarejestrowane skrypty oraz podaje różne informacje
unregister <name> #Odrejestrowuje skrypt
update <name> #Pobiera nowy albo resetuje kod skryptu
on <name> #Włącza automatyczne pobieranie nowych wersji
off <name> #Wyłącza automatycznie pobieranie nowych wersji

Uprawnienia
AutoUpdate #Uprawnienie do głównej komendy

Środowisko
Skript 2.2
SkUtilities 0.9.2
Serwer Spigot 1.8.8

Informacja
Skrypt aktualizuje się automatycznie :kappalul:

SS

Spoiler

Komenda główna
image.png
argumenty - update/on/off
image.png
Argument - list 
image.png

 

Przykłady

Spoiler

Przykład bez zarejestrowania

 

Lista skryptów które mają wsparcie tego skryptu

Spoiler

Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!, Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!
Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!, Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!, Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!, Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

Jeżeli chcesz aby twój skrypt znalazł się na tej liście napisz do mnie!

Zmiany i wydania
Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

Wszelkie błędy / poprawki / pomysły proszę zgłaszać na pw albo pod tematem w odpowiedzi :D

Edytowane przez xAxee
Odnośnik do odpowiedzi
Udostępnij na innych stronach

function AxUpdate_getVersion(content: text) :: text:
    set {_start} to index of "##$" in {_content}
    set {_end} to index of "$##" in {_content}
    set {_version} to subtext of {_content} between character {_start} to {_end}-1
    return {_version}

wydaje mi się że lepiej byłoby zrobić to w postaci listy linijek (tak jak jest domyślnie w file contents)

  • (dla powyższego kodu) załóżmy że skrypt będzie miał 30 linijek - okej, ujdzie. Ale jeżeli będzie to już powiedzmy 1030 linijek (a takie się zdarzają) to wtedy serwer złapie laga (może nawet kilkunastu sekundowego)
  • a teraz jeżeli zrobimy w pętli (i dodatkowo doradzimy użytkownikom żeby wersję wpisywali na samej górze skryptu) - to nie ważne czy skrypt będzie miał 30 czy 1030 linijek - wtedy wszystko będzie trwało mniej więcej tyle samo
    function AxUpdate_getVersion(content: strings) :: text:
    	loop {_content::*}:
    		set {_start} to index of "##$" in loop-value
    		set {_end} to (index of "$##" in loop-value) - 1
    
    		return (subtext of loop-value between character {_start} to {_end})

    + weźmy pod uwagę że jeżeli nie będzie wpisanej wersji, to ta funkcja zwróci nulla (tak samo moja jak i twoja)
    a jeżeli zwróci nulla to i tak skrypt bez podanej wersji będzie uznany za nową wersję, bo przyrównujesz

    if {_ver1} is {_ver2}:
    
    #to zaaktualizuje skypt
    if "1.0.0" is "1.0.1":
    
    #ale to też go zaaktualizuje
    if "1.0.0" is null:

 

 

 

Mam też propozycję dot. rozwoju skryptu (o ile taki przewidujesz) - byłoby fajnie gdyby gdzieś w folderze Skripta zapisywała się kopia starych wersji każdego skryptu (na wszelki wypadek)
+ do tego może jakaś komenda do przywracania tego starego skryptu

Odnośnik do odpowiedzi
Udostępnij na innych stronach

@PanMaruda dzięki za sugestie, funkcje do sprawdzania wersji już poprawiłem.
Co do tego nulla to zastanawiam się jak to rozwiązać, pewnie zostawię tak jak jest, no bo ktoś w każdej chwili może zakończyć wsparcie.
Owszem skrypt będzie przez dłuższy czas rozwijany, więc na dniach (pewnie jutro) pokaże się aktualizacja z ty zapisywaniem wersji :D

Edytowane przez xAxee
Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • 4 miesiące później...

Witaj, chciałem Twojego skryptu użyć jako możliwość autoupdatów, jeżeli użytkownik by chciał takowe, lecz przy próbie aktualizacji skryptu, wyskakuje error skutility:

 
[21:24:02 ERROR]: [skUtilities] v0.9.2: File: '/home/servers/841212/plugins/Skript/scripts/AxAutoUpdate.sk' Input length = 1 (SExprFileContents.class)
[21:24:03 ERROR]: [skUtilities] v0.9.2: File: '/home/servers/841212/plugins/Skript/scripts/KxSprawdzanie.sk' Input length = 1 (SExprFileContents.class)
 

da sie to jakoś naprawić?

Paper Spigot 1.16.4 (Paper-336)
skUtilities v0.9.2
SkRayFall v1.19.23
SkQuery v4.1.4
Skellet v1.9.11

Edytowane przez xAxee
xAxee

Wstawiam w code

Notatka dodana przez xAxee

Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • xAxee odpiął ten temat

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Nieaktywny
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...