Xemixd 0 Opublikowano 10 marca 2021 Udostępnij Opublikowano 10 marca 2021 Po zabiciu zombie nadal śnieżki strzelają. Jak zapisać to aby wszystko sie działo do momentu kiedy on jest żywy? Odnośnik do komentarza https://skript.pl/temat/46777-powtarzanie-czynno%C5%9Bci/ Udostępnij na innych stronach Więcej opcji udostępniania...
0 LeviBoyPL 161 Opublikowano 10 marca 2021 Udostępnij Opublikowano 10 marca 2021 Co tak właściwie chcesz zrobić? Bo z tego kodu ciężko jest się domyślić Odnośnik do komentarza https://skript.pl/temat/46777-powtarzanie-czynno%C5%9Bci/#findComment-294431 Udostępnij na innych stronach Więcej opcji udostępniania...
0 Xemixd 0 Opublikowano 10 marca 2021 Autor Udostępnij Opublikowano 10 marca 2021 (edytowane) 15 minut temu, LeviBoyPL napisał: Co tak właściwie chcesz zrobić? Bo z tego kodu ciężko jest się domyślić Gdy gracz będzie w obrębie 10 kratek od zombie to zombie wystrzeliwuje śnieżki. Gdy gracz zabije zombie to ten te śnieżki nadal się wystrzeliwują w miejscu gdy zombie zostało zabite. Chce zrobić to tak, że jeżeli zombie nie żyje to śnieżki nie będą strzelały. Edytowane 10 marca 2021 przez Xemixd Odnośnik do komentarza https://skript.pl/temat/46777-powtarzanie-czynno%C5%9Bci/#findComment-294433 Udostępnij na innych stronach Więcej opcji udostępniania...
0 LeviBoyPL 161 Opublikowano 10 marca 2021 Udostępnij Opublikowano 10 marca 2021 @EventHandler public void onEntityTargetEvent(EntityTargetEvent event) { if(!(event.getEntity() instanceof Zombie)) return; Zombie zombie = (Zombie) event.getEntity(); new TargetEventZombieRunnable(zombie).runTaskTimer(main, 1, 15); } Lepiej było by zrobić sobie nową klasę z kodem taska, wtedy kod będzie wyglądał schludniej i wygodniej będzie dodawać kolejne rzeczy do listenera, wyżej tworzysz sobie nową klasę, która rozszerza BukkitRunnable i od razu uruchamiasz task. public class TargetEventZombieRunnable extends BukkitRunnable { private final Zombie zombie; public TargetEventZombieRunnable(Zombie zombie) { this.zombie = zombie; } @Override public void run() { if(zombie.isDead()) cancel(); List<Entity> nearbyEntities = zombie.getNearbyEntities(10, 10, 10); if(nearbyEntities.size() == 0) cancel(); for(Entity loopEntity : nearbyEntities) { if(loopEntity instanceof Player) { Player player = ((Player) loopEntity).getPlayer(); Vector vector = zombie.getLocation().getDirection(); Snowball snowball = zombie.launchProjectile(Snowball.class); zombie.setTarget(player); snowball.setVelocity(vector); } } } } Musisz tylko pamiętać że zombie często traci zainteresowanie graczem i idzie w innym kierunku, jeżeli nagle znów zacznie śledzić gracza powstanie nowy task i będzie działał podwójnie. Aktualny cel zombie możesz sprawdzić poprzez Zombie#getTarget() Odnośnik do komentarza https://skript.pl/temat/46777-powtarzanie-czynno%C5%9Bci/#findComment-294437 Udostępnij na innych stronach Więcej opcji udostępniania...
0 Xemixd 0 Opublikowano 10 marca 2021 Autor Udostępnij Opublikowano 10 marca 2021 Jaki jest mob, który nie traci targetu? Odnośnik do komentarza https://skript.pl/temat/46777-powtarzanie-czynno%C5%9Bci/#findComment-294440 Udostępnij na innych stronach Więcej opcji udostępniania...
0 LeviBoyPL 161 Opublikowano 10 marca 2021 Udostępnij Opublikowano 10 marca 2021 Nie ma takiego, ale możesz sprawdzić czy target jest nullem i jeśli jest to anulować task Odnośnik do komentarza https://skript.pl/temat/46777-powtarzanie-czynno%C5%9Bci/#findComment-294452 Udostępnij na innych stronach Więcej opcji udostępniania...
0 Xemixd 0 Opublikowano 10 marca 2021 Autor Udostępnij Opublikowano 10 marca 2021 Dzięki wielkie Odnośnik do komentarza https://skript.pl/temat/46777-powtarzanie-czynno%C5%9Bci/#findComment-294453 Udostępnij na innych stronach Więcej opcji udostępniania...
Pytanie
Xemixd 0
Po zabiciu zombie nadal śnieżki strzelają.
Jak zapisać to aby wszystko sie działo do momentu kiedy on jest żywy?
Odnośnik do komentarza
https://skript.pl/temat/46777-powtarzanie-czynno%C5%9Bci/Udostępnij na innych stronach
6 odpowiedzi na to pytanie
Rekomendowane odpowiedzi