innos 2 Opublikowano 22 kwietnia 2018 Udostępnij Opublikowano 22 kwietnia 2018 (edytowane) 1.Jak zrobić komende którą można wpisać co 30 sekund??? Jeżeli wpiszesz za wczesnie to wykonuje p.sendMessage("§cOdczekaj przed ponownym wpisaniem komendy"); 2.Jak zrobić w komendzie aby odczekało np: if(cmd.getName().equalsIgnoreCase("lubie")){ Player p = (Player) sender; p.sendMessage("xxx"); //odczekac np 100 ticków p.sendMessage("xxxxxxxxxx"); Edytowane 23 kwietnia 2018 przez bvcz Odnośnik do komentarza https://skript.pl/temat/26818-odczekaj/ Udostępnij na innych stronach Więcej opcji udostępniania...
0 LikeIkeOne (Nupix) 14 Opublikowano 22 kwietnia 2018 Udostępnij Opublikowano 22 kwietnia 2018 56 minut temu, innos napisał: 1.Jak zrobić komende którą można wpisać co 30 sekund??? Jeżeli wpiszesz za wczesnie to wykonuje p.sendMessage("§cOdczekaj przed ponownym wpisaniem komendy"); 2.Jak zrobić w komendzie aby odczekało np: if(cmd.getName().equalsIgnoreCase("lubie")){ Player p = (Player) sender; p.sendMessage("xxx"); //odczekac np 100 ticków p.sendMessage("xxxxxxxxxx"); Polecam się pobawić BukkitTaskiem, zrobic liste String gracza i jego Task, po uzyciu komendy dodac go do niej a potem odpowiednim schedulerem ustawic ze po 30 sekundach ((30*20)w tickach) usuwa go z niej. Jak bedzie wykonywac to po prostu szuka Keya w liscie z jego nickiem, taki standardzik, chyba nie muszę tłumaczyc. pozderki Odnośnik do komentarza https://skript.pl/temat/26818-odczekaj/#findComment-176571 Udostępnij na innych stronach Więcej opcji udostępniania...
0 innos 2 Opublikowano 22 kwietnia 2018 Autor Udostępnij Opublikowano 22 kwietnia 2018 a mógłbyś podać jak to zrobić bo ja dopiero zaczynam się uczyć? Odnośnik do komentarza https://skript.pl/temat/26818-odczekaj/#findComment-176574 Udostępnij na innych stronach Więcej opcji udostępniania...
0 LikeIkeOne (Nupix) 14 Opublikowano 22 kwietnia 2018 Udostępnij Opublikowano 22 kwietnia 2018 (edytowane) 9 godzin temu, innos napisał: a mógłbyś podać jak to zrobić bo ja dopiero zaczynam się uczyć? public Map<String, BukkitTask> lista = new HashMap<String, BukkitTask>(); @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if(cmd.getName().equalsIgnoreCase("komenda")) { /*Pobiera komende, ignorujac wielkosci liter*/ final Player p = (Player) sender; /*ustawia zmienna gracza ktory wykonal komende*/ if(lista.containsKey(p.getName())) { /*Jezeli na liscie znajduje sie gracz*/ p.sendMessage("Odczekaj 30 sekund przed kolejnym uzyciem!"); return true; /*Wyskakuje ze musi odczekac, konczy komende*/ } else { /*Jezeli nie ma go w liscie, tzn. moze uzyc komende*/ BukkitTask task = Bukkit.getScheduler().runTaskLater(main.getInst(), new Runnable(){ /*Tworzy licznik czekania zapisujac go jako zadanie pod zmienna task*/ public void run() { ((BukkitTask)lista.remove(p.getName())).cancel(); /*Usuwa gracza z listy blokujacej komende, konczy zadanie*/ } }, 30*20); /*za liczbe 30 dajemy za ile sekund ma byc wykonany void run powyzej*/ lista.put(p.getName(), task); /*Gdy uzyje komende po wlaczeniu timera dodaje go do listy blokady wraz z jego zadaniem (zmienna task)*/ /* Tresc komendy */ } } return false; } Wykonane to wszystko oczywiscie w executorze,a nie w mainie Co do drugiego to wystarczy znów uzyc tego samego Schedulera juz nawet bez listy, odpowiada on wlasnie temu odczekaniu np. 30 sekund Edytowane 23 kwietnia 2018 przez bvcz Odnośnik do komentarza https://skript.pl/temat/26818-odczekaj/#findComment-176584 Udostępnij na innych stronach Więcej opcji udostępniania...
0 TheMolkaPL 345 Opublikowano 22 kwietnia 2018 Udostępnij Opublikowano 22 kwietnia 2018 Jaki scheduler Wystarczy zwykły Cache z Google Guavy. private final Cache<UUID, Instant> cooldown = CacheBuilder.newBuilder() .weakKeys() .expireAfterWrite(30, TimeUnit.SECONDS) .build(); Odnośnik do komentarza https://skript.pl/temat/26818-odczekaj/#findComment-176610 Udostępnij na innych stronach Więcej opcji udostępniania...
0 yooniks 347 Opublikowano 23 kwietnia 2018 Udostępnij Opublikowano 23 kwietnia 2018 (edytowane) 15 godzin temu, LikeIkeOne (Nupix) napisał: Polecam się pobawić BukkitTaskiem, zrobic liste String gracza i jego Task, po uzyciu komendy dodac go do niej a potem odpowiednim schedulerem ustawic ze po 30 sekundach ((30*20)w tickach) usuwa go z niej. Jak bedzie wykonywac to po prostu szuka Keya w liscie z jego nickiem, taki standardzik, chyba nie muszę tłumaczyc. pozderki halo halo,mamy juz jave 8 (od dawna) a ty siedzisz dalej w 6? Do tego używamy UUID a nie String i co jak senderem jest konsola? + takie akcje mozesz robic asynchronicznie Do tego uzyj tej cache-mapki ktora podał Molka *pisane z tel Edytowane 23 kwietnia 2018 przez yooniks Odnośnik do komentarza https://skript.pl/temat/26818-odczekaj/#findComment-176620 Udostępnij na innych stronach Więcej opcji udostępniania...
0 LikeIkeOne (Nupix) 14 Opublikowano 23 kwietnia 2018 Udostępnij Opublikowano 23 kwietnia 2018 2 godziny temu, yooniks napisał: halo halo,mamy juz jave 8 a ty siedzisz dalej w 6? Do tego używamy UUID a nie String i co jak senderem jest konsola? + takie akcje mozesz robic asynchronicznie Do tego uzyj tej cache-mapki ktora podał Molka *pisane z tel Siedze w 7 bo pisze pluginsy jeszcze pod starsze wersje gry Odnośnik do komentarza https://skript.pl/temat/26818-odczekaj/#findComment-176630 Udostępnij na innych stronach Więcej opcji udostępniania...
0 TheMolkaPL 345 Opublikowano 23 kwietnia 2018 Udostępnij Opublikowano 23 kwietnia 2018 3 godziny temu, LikeIkeOne (Nupix) napisał: Siedze w 7 bo pisze pluginsy jeszcze pod starsze wersje gry Java nie ma nic do wersji gry akurat. Sam Minecraft Mojangu pisany jest pod 6, Spigot pod 8. Chociaż Mojang zadeklarował, że wersja 1.13 będzie już na 8. Nawet gdybyś chciał pisać pod starsze wersje gry to nie przeszkadza to w użyciu nowszej Javy, bo serwer host pewnie już na takiej stoi, bo taka ma właśnie wsparcie od Oracle. LikeIkeOne (Nupix) i yooniks 2 Odnośnik do komentarza https://skript.pl/temat/26818-odczekaj/#findComment-176646 Udostępnij na innych stronach Więcej opcji udostępniania...
Pytanie
innos 2
1.Jak zrobić komende którą można wpisać co 30 sekund???
Jeżeli wpiszesz za wczesnie to wykonuje p.sendMessage("§cOdczekaj przed ponownym wpisaniem komendy");
2.Jak zrobić w komendzie aby odczekało np:
if(cmd.getName().equalsIgnoreCase("lubie")){ Player p = (Player) sender; p.sendMessage("xxx"); //odczekac np 100 ticków p.sendMessage("xxxxxxxxxx");
Edytowane przez bvczOdnośnik do komentarza
https://skript.pl/temat/26818-odczekaj/Udostępnij na innych stronach
7 odpowiedzi na to pytanie
Rekomendowane odpowiedzi