zKacpeQ 0 Opublikowano 27 lipca 2024 Udostępnij Opublikowano 27 lipca 2024 (edytowane) Jak zrobić cooldown na dany przedmiot w skrypcie? Chce żeby np. diamentowy miecz miał cooldown na tepanie pereł czy coś i na title jest napisany cooldown Edytowane 27 lipca 2024 przez zKacpeQ Cytuj Odnośnik do komentarza https://skript.pl/temat/57950-cooldown-na-dany-przedmiot/ Udostępnij na innych stronach Więcej opcji udostępniania...
0 Kormic 1951 Opublikowano 27 lipca 2024 Udostępnij Opublikowano 27 lipca 2024 1 minutę temu, zKacpeQ napisał: Jak zrobić cooldown na dany przedmiot w skrypcie? Chce żeby np. diamentowy miecz miał cooldown na tepanie pereł czy coś i na tym czymś (ss niżej) jest napisany cooldown Nie widzę zrzutu ekranu, więc nie wiem czego tyczy się druga część pytania. Co do samej implementacji cooldownu w Skript, jest ona dość prosta. Przy użyciu przedmiotu należy zapisywać czas użycia go w zmiennej przypisanej do gracza, aby przy kolejnych próbach sprawdzać czy odstęp czasu między obecną chwilą a ostatnim użyciem przedmiotu jest większy niż zadany przez nas okres czasu. Jeśli nie, wysyłamy graczowi wiadomość informująca o konieczności odczekania. Rzecz jasna moim celem nie jest rzucanie na głęboką wodę, więc pokażę prosty przykład kodu wprowadzającego taki cooldown. Można go wstawić wszędzie tam gdzie go potrzebujemy. # [...] if {itemCooldown::%uuid of player%} is set: difference between {itemCooldown::%uuid of player%} and now is smaller than 5 seconds send "&6Odczekaj chwilę." to player stop set {itemCooldown::%uuid of player%} to now # [...] Powyższy fragment sprawdza czy upłynęło co najmniej 5 sekund od ostatniej akcji, a więc cooldown wynosi 5 sekund. Tak jak wspomniałem wcześniej, ten kod się nada niemalże do wszystkiego, niekoniecznie tylko do cooldownu na przedmiot. Przykładowe wykorzystanie tego kodu można znaleźć tutaj. Jednym z wyjątków będzie cooldown komendy, ponieważ twórcy Skripta wykonali ukłon w stronę graczy i umożliwili dodawanie go w bardzo prosty i przyjemny sposób. Na ten temat i kilka innych rozpisał się mój dobry przyjaciel, @PanMaruda, w tym temacie. Po więcej informacji odsyłam do dokumentacji Skripta. Pozdrawiam. Cytuj Odnośnik do komentarza https://skript.pl/temat/57950-cooldown-na-dany-przedmiot/#findComment-344271 Udostępnij na innych stronach Więcej opcji udostępniania...
0 Fendi 190 Opublikowano 27 lipca 2024 Udostępnij Opublikowano 27 lipca 2024 W tym przypadku dostaniesz w wiadomości zwrotnej informacje ile czasu zostało do ponownego użycia Cytuj Odnośnik do komentarza https://skript.pl/temat/57950-cooldown-na-dany-przedmiot/#findComment-344272 Udostępnij na innych stronach Więcej opcji udostępniania...
0 CoFFeIN04 696 Opublikowano 27 lipca 2024 Udostępnij Opublikowano 27 lipca 2024 Nie jestem przekonany, czy sprawdzi się to w tym przypadku, tym bardziej, że nigdy tego efektu nie testowałem, ale można się również przyjrzeć: https://docs.skriptlang.org/docs.html?search=#ExprItemCooldown Cytuj Odnośnik do komentarza https://skript.pl/temat/57950-cooldown-na-dany-przedmiot/#findComment-344273 Udostępnij na innych stronach Więcej opcji udostępniania...
0 Fendi 190 Opublikowano 27 lipca 2024 Udostępnij Opublikowano 27 lipca 2024 (edytowane) 16 minut temu, CoFFeIN04 napisał: Nie jestem przekonany, czy sprawdzi się to w tym przypadku, tym bardziej, że nigdy tego efektu nie testowałem, ale można się również przyjrzeć: https://docs.skriptlang.org/docs.html?search=#ExprItemCooldown Działa to ale nie w pełni, potrzeba do tego jeszcze to przy wykonywaniu kodu if player has player's tool on cooldown: stop Inaczej tamten kod zadziała tylko na takie minecraftowe przedmioty jak miecz czy łuk, a nie na skriptowe które wykonują coś mniej normalnego Edytowane 27 lipca 2024 przez Fendi Cytuj Odnośnik do komentarza https://skript.pl/temat/57950-cooldown-na-dany-przedmiot/#findComment-344275 Udostępnij na innych stronach Więcej opcji udostępniania...
0 Kormic 1951 Opublikowano 27 lipca 2024 Udostępnij Opublikowano 27 lipca 2024 Godzinę temu, Fendi napisał: W tym przypadku dostaniesz w wiadomości zwrotnej informacje ile czasu zostało do ponownego użycia Te funkcję można lepiej napisać. Wiem, jestem czepialski, ale skoro funkcja znajduje się w dziale z poradnikami, powinna ona obsłużyć możliwie dużo przypadków. Brakuje obsługi dni, tygodni i lat. W dodatku zamiana przy spójniku "and" tworzy brzydką przerwę na 3 spacje. Kod sam w sobie można skrócić, ponieważ słowo kluczowe 'else' jest niepotrzebne, co jest związane z tym, iż zwracanie wartości kończy wykonywanie funkcji. Poniżej pokazałem co mam na myśli. function dodajCD(p: player, v: text, t: text, s: timespan) :: boolean: # [...] send "%{_t}% %{_s}%" to {_p} return false set {cooldown::%{_v}%::%{_p}%} to now return true 11 minut temu, Fendi napisał: Działa to ale nie w pełni, potrzeba do tego jeszcze to przy wykonywaniu kodu if player has player's tool on cooldown: stop Inaczej tamten kod zadziała tylko na takie minecraftowe przedmioty jak miecz czy łuk, a nie na skriptowe które wykonują coś mniej normalnego Dziwnie to wytłumaczyłeś i zdaje się, że niepoprawnie. @CoFFeIN04 Owszem, można użyć wbudowanych w Minecraft'cie cooldownów, ale trzeba się liczyć z pewnymi konsekwencjami - podążając za przykładem z początku wątku, cooldown będzie obowiązywał dla wszystkich diamentowych mieczy w ekwipunku gracza, a nie tylko dla tego konkretnego diamentowego miecza. Mówiąc ogólniej, działa ona na dany typ przedmiotu, nie na konkretny przedmiot. Dla potwierdzenia można zajrzeć do kodu źródłowego Skripta (ściślej mówiąc, klasy ExprItemCooldown) i zauważyć, że te wyrażenie przy ustawianiu go wykorzystuje metodę HumanEntity#setCooldown(org.bukkit.Material material, int ticks). Pozdrawiam. CoFFeIN04 1 Cytuj Odnośnik do komentarza https://skript.pl/temat/57950-cooldown-na-dany-przedmiot/#findComment-344277 Udostępnij na innych stronach Więcej opcji udostępniania...
0 Fendi 190 Opublikowano 27 lipca 2024 Udostępnij Opublikowano 27 lipca 2024 6 minut temu, Kormic napisał: Brakuje obsługi dni, tygodni i lat. Myślę, że nawet osoba początkująca wzorując się na godzinach minutach i sekundach potrafiła by to dodać 8 minut temu, Kormic napisał: W dodatku zamiana przy spójniku "and" tworzy brzydką przerwę na 3 spacje A tego chyba nie zauważyłem bo sam używam bardziej rozbudowanej wersji, ale chyba poprawiłem już. 10 minut temu, Kormic napisał: Kod sam w sobie można skrócić, ponieważ słowo kluczowe 'else' jest niepotrzebne, co jest związane z tym, iż zwracanie wartości kończy wykonywanie funkcji. Już bardziej się przyczepić nie dało ;s. Widocznie rok temu miałem taki humor żeby wcisnąć tam sobie else. Usunięcie tego i skasowanie jednej linijki nic, ale to absolutnie nic nie zmieni. A wręcz jest korzystne dla początkujących w skripcie gdzie if i else jest łatwiejsze do wyczytania. 13 minut temu, Kormic napisał: Dziwnie to wytłumaczyłeś i zdaje się, że niepoprawnie. Dlaczego? item cooldown sprawia, że nie użyjesz zwykłych przedmiotów. A autor prosi o 1 godzinę temu, zKacpeQ napisał: cooldown na tepanie pereł czy coś Perły które lecą z miecza (zakładam, że na right/left clicku) nie jest czymś normalnym więc ta składnia nie wystarczy. on right click: player's tool is diamond sword name of player's tool is "Teleportujacy miecz" if player has player's tool on cooldown: stop set item cooldown of player's tool for player to 10 seconds #kod na wystrzelenie perły Specjalnie wszedłem na minecrafta aby to przetestować. Cytuj Odnośnik do komentarza https://skript.pl/temat/57950-cooldown-na-dany-przedmiot/#findComment-344279 Udostępnij na innych stronach Więcej opcji udostępniania...
Pytanie
zKacpeQ 0
Jak zrobić cooldown na dany przedmiot w skrypcie?
Chce żeby np. diamentowy miecz miał cooldown na tepanie pereł czy coś i na title jest napisany cooldown
Edytowane przez zKacpeQOdnośnik do komentarza
https://skript.pl/temat/57950-cooldown-na-dany-przedmiot/Udostępnij na innych stronach
6 odpowiedzi na to pytanie
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ą.