alaneek_jestem 19 Opublikowano 12 lipca 2024 Udostępnij Opublikowano 12 lipca 2024 Przedstawiam wam dwa proste skrypty mojego wykonania Drop kasy ze stone: https://code.skript.pl/qoyS7tIh Brush: https://code.skript.pl/7EyrlOsW zachęcam do własnej opini Cytuj Odnośnik do komentarza https://skript.pl/temat/57847-skrypty-do-cashblock/ Udostępnij na innych stronach Więcej opcji udostępniania...
Kormic 1951 Opublikowano 12 lipca 2024 Udostępnij Opublikowano 12 lipca 2024 @SkryptExpert Niestety, ale oba skrypty posiadają błędy, które omówię je poniżej. W mojej ocenie wygląda to tak jakby oba skrypty nie zostały nawet załadowane na serwer, ponieważ Skript wykryłby jeden z nich. Podam również co można poprawić w kodzie (oczywiście poza samymi błędami). Pierwszy skrypt, który wezmę na tapet to skrypt implementujący dodawanie pieniędzy przy kopaniu kamienia. Błędy w nim występujące są błędami czysto składniowymi. Fragment kodu, który mam na myśli to: options: # [...] title: &aGratulacje! subtitle: &8Udało ci się wykopać &c%{_k}% $ # [...] send title {@title} with subtitle {@subtitle} to {_p} # [...] Warto tutaj wytłumaczyć sposób działania sekcji 'options'. Żeby się nie rozwodzić, najprościej jest powiedzieć, że opcje są wstawiane bezpośrednio w miejsca w kodzie, w których zostały "wspomniane". Ludzie zaznajomieni z C pewnie powiedzieliby o analogii do instrukcji preprocesora '#define'. Drugi błąd dotyczy użycia dziwnego wyrażenia, w którego miejsce powinno być wstawione 'all players'. Fragment, o którym mówię, znajduje się poniżej. function d(c: number, k: number, p: player): # [...] # [...] all {_p}'s # [...] W pierwszym skrypcie należy dodatkowo poprawić: nazewnictwo funkcji globalnej - funkcja globalna zawsze powinna posiadać nazwę, która jasno określa jej działanie i gwarantuje małe prawdopodobieństwo kolizji nazw z innymi funkcjami, nazewnictwo zmiennych lokalnych - zmienne lokalne powinny mieć również mniej enigmatyczne nazwy, ponieważ pojawiają się w konfigurowalnych wiadomościach w sekcji 'options'. Do drugiego skryptu (czyli skrypt na "brush", który - jeśli dobrze rozumiem - ma niszczyć każdy blok poza bedrockiem zwykłym kliknięciem) natomiast wkradł się błąd logiczny. Jest on związany z użyciem zmiennej lokalnej {_t} w warunku sprawdzającym dystans, która nie posiada jakiejkolwiek wartości, ponieważ nigdzie nie jest ustawiana wcześniej w kodzie listenera zdarzenia. W drugim skrypcie należy jeszcze poprawić: typ argumentu funkcji - nie jesteśmy w stanie wręczyć przedmiotów graczowi nieobecnemu na serwerze, więc typ 'player' w zupełności wystarczy, wartość domyślna argumentu funkcji - zamiast sprawdzać czy argument jest ustawiony, można prościej: [<player=%player%>] Powyższa modyfikacja sugeruje dodatkowo, aby komendy nie mogła wykonywać konsola. Warto więc dodać pole 'executable by: players'. Pozdrawiam. Cytuj Odnośnik do komentarza https://skript.pl/temat/57847-skrypty-do-cashblock/#findComment-343788 Udostępnij na innych stronach Więcej opcji udostępniania...
alaneek_jestem 19 Opublikowano 13 lipca 2024 Autor Udostępnij Opublikowano 13 lipca 2024 20 godzin temu, Kormic napisał: @SkryptExpert Niestety, ale oba skrypty posiadają błędy, które omówię je poniżej. W mojej ocenie wygląda to tak jakby oba skrypty nie zostały nawet załadowane na serwer, ponieważ Skript wykryłby jeden z nich. Podam również co można poprawić w kodzie (oczywiście poza samymi błędami). Pierwszy skrypt, który wezmę na tapet to skrypt implementujący dodawanie pieniędzy przy kopaniu kamienia. Błędy w nim występujące są błędami czysto składniowymi. Fragment kodu, który mam na myśli to: options: # [...] title: &aGratulacje! subtitle: &8Udało ci się wykopać &c%{_k}% $ # [...] send title {@title} with subtitle {@subtitle} to {_p} # [...] Warto tutaj wytłumaczyć sposób działania sekcji 'options'. Żeby się nie rozwodzić, najprościej jest powiedzieć, że opcje są wstawiane bezpośrednio w miejsca w kodzie, w których zostały "wspomniane". Ludzie zaznajomieni z C pewnie powiedzieliby o analogii do instrukcji preprocesora '#define'. Drugi błąd dotyczy użycia dziwnego wyrażenia, w którego miejsce powinno być wstawione 'all players'. Fragment, o którym mówię, znajduje się poniżej. function d(c: number, k: number, p: player): # [...] # [...] all {_p}'s # [...] W pierwszym skrypcie należy dodatkowo poprawić: nazewnictwo funkcji globalnej - funkcja globalna zawsze powinna posiadać nazwę, która jasno określa jej działanie i gwarantuje małe prawdopodobieństwo kolizji nazw z innymi funkcjami, nazewnictwo zmiennych lokalnych - zmienne lokalne powinny mieć również mniej enigmatyczne nazwy, ponieważ pojawiają się w konfigurowalnych wiadomościach w sekcji 'options'. Do drugiego skryptu (czyli skrypt na "brush", który - jeśli dobrze rozumiem - ma niszczyć każdy blok poza bedrockiem zwykłym kliknięciem) natomiast wkradł się błąd logiczny. Jest on związany z użyciem zmiennej lokalnej {_t} w warunku sprawdzającym dystans, która nie posiada jakiejkolwiek wartości, ponieważ nigdzie nie jest ustawiana wcześniej w kodzie listenera zdarzenia. W drugim skrypcie należy jeszcze poprawić: typ argumentu funkcji - nie jesteśmy w stanie wręczyć przedmiotów graczowi nieobecnemu na serwerze, więc typ 'player' w zupełności wystarczy, wartość domyślna argumentu funkcji - zamiast sprawdzać czy argument jest ustawiony, można prościej: [<player=%player%>] Powyższa modyfikacja sugeruje dodatkowo, aby komendy nie mogła wykonywać konsola. Warto więc dodać pole 'executable by: players'. Pozdrawiam. https://code.skript.pl/qoyS7tIh <- poprawiona wersja skryptu na Cashblock (nietestowana) a jeśli chodzi o skrypt na brush to nie wiem jak to zrobić Cytuj Odnośnik do komentarza https://skript.pl/temat/57847-skrypty-do-cashblock/#findComment-343815 Udostępnij na innych stronach Więcej opcji udostępniania...
Kormic 1951 Opublikowano 13 lipca 2024 Udostępnij Opublikowano 13 lipca 2024 43 minuty temu, SkryptExpert napisał: poprawiona wersja skryptu na Cashblock (nietestowana) No właśnie, nietestowana. Ponownie wkradły się błędy składniowe, czyli brak cudzysłowów domykających ciągi znaków w komendzie /kasa. Co więcej, ta poprawka objawiła Pana nieznajomość tworzenia funkcji. Zalecam zapoznać się z tym artykułem. Nie wiem dlaczego w kodzie 'all players' jest traktowane jak typ parametru funkcji jeżeli to jest wyrażenie. Poza tym, dlaczego Pan po prostu nie użyje 'all players' w środku funkcji w linijce z instrukcją 'send'? Przecież nikt Panu nie broni tak zrobić. Ponadto, w komendzie /kasa pojawił się ta sama niezrozumiała dla mnie rzecz co w komendzie /brush. 21 godzin temu, Kormic napisał: W drugim skrypcie należy jeszcze poprawić: typ argumentu funkcji - nie jesteśmy w stanie wręczyć przedmiotów graczowi nieobecnemu na serwerze, więc typ 'player' w zupełności wystarczy, wartość domyślna argumentu funkcji - zamiast sprawdzać czy argument jest ustawiony, można prościej: [<player=%player%>] Powyższa modyfikacja sugeruje dodatkowo, aby komendy nie mogła wykonywać konsola. Warto więc dodać pole 'executable by: players'. 47 minut temu, SkryptExpert napisał: a jeśli chodzi o skrypt na brush to nie wiem jak to zrobić Sprawa jest prosta. Niech Pan najpierw sprawdzi nazwę narzędzia gracza, a później niech Pan sprawdza dystans między graczem a klikniętym blokiem. Zmienna {_t} może być użyta, ale zanim Pan jej użyje, musi ona posiadać jakąś wartość. To oczywiste. Dodam, że sprawdzanie dystansu jest zbędne, może Pan skorzystać z wyrażenia 'clicked block', które zwraca kliknięty blok. Jeżeli jest on poza zasięgiem gracza, wyrażenie zwróci '<none>', a więc można to łatwo zweryfikować za pomocą warunku '[...] is set:'. Pozdrawiam. Cytuj Odnośnik do komentarza https://skript.pl/temat/57847-skrypty-do-cashblock/#findComment-343817 Udostępnij na innych stronach Więcej opcji udostępniania...
alaneek_jestem 19 Opublikowano 13 lipca 2024 Autor Udostępnij Opublikowano 13 lipca 2024 (edytowane) 29 minut temu, Kormic napisał: No właśnie, nietestowana. Ponownie wkradły się błędy składniowe, czyli brak cudzysłowów domykających ciągi znaków w komendzie /kasa. Co więcej, ta poprawka objawiła Pana nieznajomość tworzenia funkcji. Zalecam zapoznać się z tym artykułem. Nie wiem dlaczego w kodzie 'all players' jest traktowane jak typ parametru funkcji jeżeli to jest wyrażenie. Poza tym, dlaczego Pan po prostu nie użyje 'all players' w środku funkcji w linijce z instrukcją 'send'? Przecież nikt Panu nie broni tak zrobić. Ponadto, w komendzie /kasa pojawił się ta sama niezrozumiała dla mnie rzecz co w komendzie /brush. Sprawa jest prosta. Niech Pan najpierw sprawdzi nazwę narzędzia gracza, a później niech Pan sprawdza dystans między graczem a klikniętym blokiem. Zmienna {_t} może być użyta, ale zanim Pan jej użyje, musi ona posiadać jakąś wartość. To oczywiste. Dodam, że sprawdzanie dystansu jest zbędne, może Pan skorzystać z wyrażenia 'clicked block', które zwraca kliknięty blok. Jeżeli jest on poza zasięgiem gracza, wyrażenie zwróci '<none>', a więc można to łatwo zweryfikować za pomocą warunku '[...] is set:'. Pozdrawiam. https://code.skript.pl/qoyS7tIh teraz dobrze? (cashblock) https://code.skript.pl/7EyrlOsW/ Skrypt na brush offlineplayer jest w brush tylko dlatego aby dawać go dla graczy non premium Edytowane 13 lipca 2024 przez SkryptExpert Cytuj Odnośnik do komentarza https://skript.pl/temat/57847-skrypty-do-cashblock/#findComment-343819 Udostępnij na innych stronach Więcej opcji udostępniania...
Kormic 1951 Opublikowano 13 lipca 2024 Udostępnij Opublikowano 13 lipca 2024 Godzinę temu, SkryptExpert napisał: teraz dobrze? (cashblock) Teraz jest dobrze. Jedyne dwie uwagi jeszcze jakie mam to to, że w komendzie /kasa może Pan ustawić typ argumentu jako 'offlineplayer', aby było możliwe sprawdzenie stanu konta gracza nieobecnego na serwerze oraz to, że może Pan chcieć nieco przebudować funkcję 'drop' tak, aby gracz widział łączną sumę pieniędzy jaką dostanie. W tym momencie skrypt działa tak, że gracz może nic nie dostać lub dostać nawet 3.01 $, ale wiadomość 'title' i tak pokaże tylko 2 $, ponieważ zasłoni poprzednie wiadomości o otrzymaniu 0.01 $ i 1 $. Godzinę temu, SkryptExpert napisał: Skrypt na brush Też wygląda dobrze, ale i tutaj mam dwie uwagi. Pierwsza dotyczy zmiennej {_t}, która jest niepotrzebna. Zmienna {_c} przechowuje przecież informację o tym samym bloku, więc ustawianie zmiennej {_t} i używanie jej jest niepotrzebne. Godzinę temu, SkryptExpert napisał: offlineplayer jest w brush tylko dlatego aby dawać go dla graczy non premium Nie rozumiem. Typ 'offlineplayer' nie ma jakiegokolwiek związku z tym czy gracz korzysta z pirackiej wersji gry, czy też nie. Typ 'player' dotyczy gracza obecnego na serwerze, a typ 'offlineplayer' dotyczy dowolnego gracza - może, ale nie musi być na serwerze. Podawanie gracza offline nie ma sensu, ponieważ nie mamy możliwości wręczenia mu przedmiotu, dlatego warto zawęzić dziedzinę argumentu do graczy obecnych na serwerze. Ponadto, można zastosować tę samą modyfikację z domyślną wartością argumentu, którą zastosował Pan w skrypcie modyfikującym drop z kamienia. Pozdrawiam. Cytuj Odnośnik do komentarza https://skript.pl/temat/57847-skrypty-do-cashblock/#findComment-343822 Udostępnij na innych stronach Więcej opcji udostępniania...
alaneek_jestem 19 Opublikowano 14 lipca 2024 Autor Udostępnij Opublikowano 14 lipca 2024 W dniu 13.07.2024 o 15:39, Kormic napisał: Teraz jest dobrze. Jedyne dwie uwagi jeszcze jakie mam to to, że w komendzie /kasa może Pan ustawić typ argumentu jako 'offlineplayer', aby było możliwe sprawdzenie stanu konta gracza nieobecnego na serwerze oraz to, że może Pan chcieć nieco przebudować funkcję 'drop' tak, aby gracz widział łączną sumę pieniędzy jaką dostanie. W tym momencie skrypt działa tak, że gracz może nic nie dostać lub dostać nawet 3.01 $, ale wiadomość 'title' i tak pokaże tylko 2 $, ponieważ zasłoni poprzednie wiadomości o otrzymaniu 0.01 $ i 1 $. Też wygląda dobrze, ale i tutaj mam dwie uwagi. Pierwsza dotyczy zmiennej {_t}, która jest niepotrzebna. Zmienna {_c} przechowuje przecież informację o tym samym bloku, więc ustawianie zmiennej {_t} i używanie jej jest niepotrzebne. Nie rozumiem. Typ 'offlineplayer' nie ma jakiegokolwiek związku z tym czy gracz korzysta z pirackiej wersji gry, czy też nie. Typ 'player' dotyczy gracza obecnego na serwerze, a typ 'offlineplayer' dotyczy dowolnego gracza - może, ale nie musi być na serwerze. Podawanie gracza offline nie ma sensu, ponieważ nie mamy możliwości wręczenia mu przedmiotu, dlatego warto zawęzić dziedzinę argumentu do graczy obecnych na serwerze. Ponadto, można zastosować tę samą modyfikację z domyślną wartością argumentu, którą zastosował Pan w skrypcie modyfikującym drop z kamienia. Pozdrawiam. Poprawiona wersja skryptu na cashblock https://code.skript.pl/qoyS7tIh, brush https://code.skript.pl/7EyrlOsW/ Kormic 1 Cytuj Odnośnik do komentarza https://skript.pl/temat/57847-skrypty-do-cashblock/#findComment-343859 Udostępnij na innych stronach Więcej opcji udostępniania...
rip_syn0nim 0 Opublikowano 11 września 2024 Udostępnij Opublikowano 11 września 2024 W dniu 14.07.2024 o 16:08, SkryptExpert napisał: Poprawiona wersja skryptu na cashblock https://code.skript.pl/qoyS7tIh, brush https://code.skript.pl/7EyrlOsW/ a możesz zrobić żeby dalo sie kopac brushem tylko w swiecie brush? Cytuj Odnośnik do komentarza https://skript.pl/temat/57847-skrypty-do-cashblock/#findComment-345104 Udostępnij na innych stronach Więcej opcji udostępniania...
alaneek_jestem 19 Opublikowano 14 września 2024 Autor Udostępnij Opublikowano 14 września 2024 W dniu 11.09.2024 o 21:42, rip_syn0nim napisał: a możesz zrobić żeby dalo sie kopac brushem tylko w swiecie brush? mozesz sprobowac dodac to na poczatku skrypt z brushem if world name is "brush" Cytuj Odnośnik do komentarza https://skript.pl/temat/57847-skrypty-do-cashblock/#findComment-345120 Udostępnij na innych stronach Więcej opcji udostępniania...
Fendi 190 Opublikowano 29 września 2024 Udostępnij Opublikowano 29 września 2024 W dniu 12.07.2024 o 14:57, SkryptExpert napisał: Przedstawiam wam dwa proste skrypty mojego wykonania Drop kasy ze stone: https://code.skript.pl/qoyS7tIh Brush: https://code.skript.pl/7EyrlOsW zachęcam do własnej opini Aby zwiększyć użyteczność skryptu jak i powiększyć jego horyzonty polecił bym ci rozbudować brushe, aby była możliwość w różny sposób kopać daną ilość bloków. Czy np w formie okręgu Cytuj Odnośnik do komentarza https://skript.pl/temat/57847-skrypty-do-cashblock/#findComment-345251 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ą.