Krystiann 0 Opublikowano 5 grudnia 2020 Udostępnij Opublikowano 5 grudnia 2020 (edytowane) Witam, chciałbym wam przedstawiać mój skrypt na drop surowców z kamienia w "Minecraft". Jest to mój autorski skrypt który planuję ciągle rozwijać (jak i nie tylko ten skrypt). Udostępniam go wam w celu konfrontacji z waszą opinią i pomocą dalszego rozwoju. Chciałbym, abyście proponowali co mógł bym zaimplementować do skryptu lub jaki skrypt miałbym napisać. Pozdrawiam i zapraszam do komentowania! • Link: https://code.skript.pl/gUC5oph8 • Komendy: • /drop - pokazuje nam na chacie całe menu z komendami. • Skript Versions: • 1.0 - Opublikowanie skryptu - 03.12.2020 • 1.1 - Zaimplementowane komendy: "/drop szansa", dodano opisy opcji, - 03.12.2020 Kod źródłowy dla podglądu: Edytowane 5 grudnia 2020 przez Krystiann Cytuj Odnośnik do komentarza https://skript.pl/temat/43396-skrypt-easystonedrop-fortune-minecraft-skversion-11-20202021-still-in-build/ Udostępnij na innych stronach Więcej opcji udostępniania...
CoFFeIN04 696 Opublikowano 5 grudnia 2020 Udostępnij Opublikowano 5 grudnia 2020 (edytowane) Po 1: w tej nanosekundzie nie było (było miliard takich skryptów) Po 2: Kod dodaj na https://code.skript.pl Po 3: zmień: on mine of redstone ore: na: on mine of any ore: Unikniesz pisania 10 linijek Zrobiłbym to inaczej: on mine of any ore: cancel drops repair player's tool by 1 send {@wykopanie_rudy} (jeśli to naprawianie itemu będzie jakoś źle działać to je wywal) Po 4: czemu wymuszasz po wejściu gracza na serwer te wszystkie zmienne? Czemu w kodzie sprawdzasz czy są "on" a nie true? on join: set {drop.%player%} to true set {wiadomosci.%player%} to true set {cobble.%player%} to true Skoro wyłączyli je podczas ostatniego pobytu, to dlaczego mają musieć je znowu wyłączać. Dodałbym warunek if {drop.%player%} is not set i dopiero wtedy ustawił na true Po 5: Między options gdy dajesz komentarz to nie musisz dawać od nowa options: Po 6: w komendzie /drop dwa razy sprawdzasz permisję, po co? Po 7: czemu wszystko dajesz do oddzielnych eventów on mine? Edytowane 5 grudnia 2020 przez CoFFeIN04 Krystiann 1 Cytuj Odnośnik do komentarza https://skript.pl/temat/43396-skrypt-easystonedrop-fortune-minecraft-skversion-11-20202021-still-in-build/#findComment-271557 Udostępnij na innych stronach Więcej opcji udostępniania...
Kormic 1951 Opublikowano 5 grudnia 2020 Udostępnij Opublikowano 5 grudnia 2020 (edytowane) 1. Wszelkie dłuższe skrypty wstawiamy na serwis code.skript.pl. Usuń ten skrypt i wrzuć go do tego serwisu, a następnie wklej link, zostanie on automatycznie zamieniony na graficzną formę wycinku kodu. 2. Co do samego skryptu... Zalety to: obszerna sekcja konfiguracyjna, co pozwala użytkownikowi na dopasowanie niemalże całego skryptu do swoich zastosowań możliwość modyfikacji dropu przez gracza Wady natomiast to: wielokrotne nasłuchiwanie do tych samych eventów (chociażby on mine stone), tutaj zalecałbym połączenie wszystkiego w jeden event wiele zagnieżdżonych conditionali, co wpływa negatywnie na czytelność kodu, zalecałbym zastąpienie tego czymś takim: if arg 1 is not 1: stop if arg 2 is not 2: stop if arg 3 is not 3: stop # I tak dalej... brak użycia funkcji w celu skrócenia kodu oraz uczynienia go czytelniejszym niepotrzebne użycie 'on first join' oraz 'on join', gdyż zawierają ten sam kod, wystarczy użyć samego 'on join' Nie wiem czy testowałeś skrypt, czy też nie, ale z pewnością przydałoby się uporządkować kod. Starałem się wypunktować te wady, które najbardziej rzucają się w oczy. Mógłbym się tutaj jeszcze do sposobu nazewnictwa zmiennych, ale to jest szczerze mało istotne (o ile nie zamierzasz ich później masowo modyfikować). EDIT: Co do rozwoju skryptu, dodam, że przydałoby się utworzenie jakiegoś GUI pozwalającego na modyfikację dropu. Gracze raczej wolą GUI aniżeli zabawę w wykonywanie dziesiątek komend. Edytowane 5 grudnia 2020 przez Kormic PanMaruda 1 Cytuj Odnośnik do komentarza https://skript.pl/temat/43396-skrypt-easystonedrop-fortune-minecraft-skversion-11-20202021-still-in-build/#findComment-271558 Udostępnij na innych stronach Więcej opcji udostępniania...
PanMaruda 624 Opublikowano 5 grudnia 2020 Udostępnij Opublikowano 5 grudnia 2020 (edytowane) Tak jak pan Kormic ci wyżej napisał i trochę więcej: unikaj definiowania rzeczy w pierwszej linijce eventu, np. zamiast on mine stone: #kod używaj: on mine: if event-block is a stone: #kod jeżeli jednak musisz już to zrobić - to proszę - pisz to poprawnie gramatycznie: zamiast on mine stone: #podczas wykopanie kamień? Jak to brzmi? Kali jeść? on rightclick axe: #podczas kliknięcia siekiera? Kali pić? używaj: on mine OF stone: #podczas wykopania kamienia on rightclick WITH axe: #podczas kliknięcia PPM siekierą nie powtarzaj takich samych sekcji w skrypcie, np. konfiguracji: zamiast options: admin: drop.admin # uprawnienie dla administratora upr_mess: &cNie masz wystarczających uprawnień # wiadomość dla gracza nie posiadającego uprawnień # Opcje zadziałania fortuny w PROCENTACH, ilości dodatkowych diamentów z fortuny, moc dropów surowców. <<------------<<------------<<------------ options: procent_zadzialania_fortuny_1: 20 używaj: options: admin: drop.admin # uprawnienie dla administratora upr_mess: &cNie masz wystarczających uprawnień # wiadomość dla gracza nie posiadającego uprawnień # Opcje zadziałania fortuny w PROCENTACH, ilości dodatkowych diamentów z fortuny, moc dropów surowców. <<------------<<------------<<------------ procent_zadzialania_fortuny_1: 20 Puste linijki ani komentarze nie przerywają ani nie kończą danej sekcji. ograniczaj kod do minimum - nie powtarzaj kodu pierdyliard razy: zamiast if player has permission "{@admin}": if arg 1 is not set: send "&8============ &6[ &eDrop Menu &4- Admin &6] &8============" to player send "" to player send " &8- &c/drop &aon &8- &eWłącza drop surowców na całym serwerze." to player send " &8- &c/drop &4off &8- &eWyłącza drop surowców na całym serwerze." to player send " &8- &6/drop szansa &8- &ePokazuje aktualną szansę na drop surowców w &cprocentach&e." to player send " &8- &6/drop surowce &aon &8- &eWłącza drop surowców." to player send " &8- &6/drop surowce &coff &8- &eWyłącza drop surowców." to player send " &8- &6/drop cobble &aon &8- &eWłącza drop cobblestone." to player send " &8- &6/drop cobble &coff &8- &eWyłącza drop cobblestone." to player send " &8- &6/drop wiadomosci &aon &8- &eWłącza powiadomienia o dropie." to player send " &8- &6/drop wiadomosci &coff &8- &eWyłącza powiadomienia o dropie." to player send "" to player send "&8============ &6[ &eDrop Menu &4- Admin &6] &8============" to player if arg 1 is not set: if player don't have permission "{@admin}": send "&8============ &6[ &eDrop Menu &6] &8============" to player send "" to player send " &8- &6/drop szansa &8- &ePokazuje aktualną szansę na drop surowców w &cprocentach&e." to player send " &8- &6/drop surowce &aon &8- &eWłącza drop surowców." to player send " &8- &6/drop surowce &coff &8- &eWyłącza drop surowców." to player send " &8- &6/drop cobble &aon &8- &eWłącza drop cobblestone." to player send " &8- &6/drop cobble &coff &8- &eWyłącza drop cobblestone." to player send " &8- &6/drop wiadomosci &aon &8- &eWłącza powiadomienia o dropie." to player send " &8- &6/drop wiadomosci &coff &8- &eWyłącza powiadomienia o dropie." to player send "" to player send "&8============ &6[ &eDrop Menu &6] &8============" to player twórz w taki sposób if arg 1 is not set: if player has permission "{@admin}": set {_} to "&4- Admin " add " &8- &c/drop &aon &8- &eWłącza drop surowców na całym serwerze." to {_admin::*} add " &8- &c/drop &4off &8- &eWyłącza drop surowców na całym serwerze." to {_admin::*} send "&8============ &6[ &eDrop Menu %{_} ? """"%&6] &8============" send "" send {_admin::*} send " &8- &6/drop szansa &8- &ePokazuje aktualną szansę na drop surowców w &cprocentach&e." send " &8- &6/drop surowce &aon &8- &eWłącza drop surowców." send " &8- &6/drop surowce &coff &8- &eWyłącza drop surowców." send " &8- &6/drop cobble &aon &8- &eWłącza drop cobblestone." send " &8- &6/drop cobble &coff &8- &eWyłącza drop cobblestone." send " &8- &6/drop wiadomosci &aon &8- &eWłącza powiadomienia o dropie." send " &8- &6/drop wiadomosci &coff &8- &eWyłącza powiadomienia o dropie." send "" send "&8============ &6[ &eDrop Menu %{_} ? """"%&6] &8============" mamy podobne wiadomości, które różnią się tylko fragmentem więc nie powtarzając warunków sprawdzamy tylko raz czy gracz jest adminem i wtedy ustawiamy tą różnicę w wiadomościach do zmiennych - czyli napis '&4 Admin' do zmiennej {_} i dwie wiadomości do listy {_admin::*} następnie przechodzimy do wysyłania wiadomości - w miejscu gdzie powinny się znaleźć linijki dla admina - wysyłamy listę {_admin::*} gdy będzie ustawiona, tj. gdy gracz jest adminem wtedy wiadomości z listy zostaną wysłane gdy nie będzie ustawiona, tj. gdy gracz nie jest adminem wtedy lista będzie pusta i nic nie wyśle zmienną {_} wstawiamy do nagłówka i stopki w procentach, ponieważ chcemy wyświetlić jej wartość {_} ? """" tylko dlaczego taki zapis - o ile lista przy wysyłaniu gdy będzie pusta nie wyśle nic, tak zmienna wstawiona do tekstu gdy będzie pusta (tj. gdy gracz nie będzie adminem) zwróci null (czyli <none>) - tego nie chcemy - dlatego definiujemy wartość domyślną dla tego nulla - znaczy to mniej więcej tak - gdy zmienna będzie miała wartość wstaw jej wartość, a gdy nie - wstaw wartość znajdującą się po drugiej stronie pytajnika. Dlaczego jest tam cztery cudzysłowy ("""")? Ten zapis jest równoznaczy z pustą wiadomoscią "", ale ponieważ jest to tekst w tekście a cudzysłów jest znakiem specjalnym to gdy chcemy go wpisać do tekstu musimy go zapisać podwójnie (podobnie jak procenty i kratki) zrezygnuj z ustawiania odbiorcy na końcu wiadomości ('to player') - to jest komenda - jeżeli wysyłamy wiadomość do gracz, który ją wykonał to skript sam go sobie dopełni nie powtarzaj eventów: zamiast on mine emerald ore: cancel event set block to air send "{@wykopanie_rudy}" to player on mine gold ore: cancel event set block to air send "{@wykopanie_rudy}" to player pisz w taki sposób: on mine: if event-block is any ore: cancel drops send "{@wykopanie_rudy}" ponownie rezygnacja z 'to player' - to jest event wykonywany przez gracza - więc nie trzeba ustawiać odbiorcy jak wyżej również pisałem - nie sprawdzaj bloku w pierwszej linijce eventu skoro sprawdzasz wszystkie rudy osobnymi eventami - a zatem kod się powtarza a zmienia się jedynie rodzaj rudy - to użyj wyrażenia 'any ore' - ono sprawdzi czy wykopany blok jest jakąkolwiek rudą (w skript mamy wiele takich grup przedmiotów - any ore, any food, any sheep, any villager, any tool i tak dalej... nie przerywaj eventu aby potem zniszczyć blok bo to niepotrzebnie obciąża procesor i irytuje gracza - wyczyść wypadające przedmioty - użyj 'cancel drops' zamiast 'cancel event' tak jak wyżej napisał Kormic - nie powielaj eventów o podobnym działaniu: zamiast: on first join: set {drop.%player%} to true set {wiadomosci.%player%} to true set {cobble.%player%} to true on join: set {drop.%player%} to true set {wiadomosci.%player%} to true set {cobble.%player%} to true używaj jedynie on join: set {drop.%player%} to true set {wiadomosci.%player%} to true set {cobble.%player%} to true event 'on first join' aktywuje się równocześnie z 'on join' więc jest to zbędne zaśmiecanie kodu wydarzenie 'on mine' aktywuj się jedynie w przypadku gdy blok zostanie zniszczony odpowiednim narzędziem i z bloku wypadnie przedmiot - nie musisz więc sprawdzać czy danym narzędziem można zniszczyć blok: if player' tool is a diamond pickaxe or iron pickaxe or stone pickaxe: póki co tyle ode mnie - połącz wszystkie te eventy w jeden, popraw powyższe błędy, zastosuj się do tego co ci napisałem ja i panowie wyżej - w razie problemów pytaj - powodzenia. Edytowane 5 grudnia 2020 przez PanMaruda Kormic i Krystiann 2 Cytuj Odnośnik do komentarza https://skript.pl/temat/43396-skrypt-easystonedrop-fortune-minecraft-skversion-11-20202021-still-in-build/#findComment-271568 Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ą.