seimandero 0 Opublikowano 21 marca 2018 Udostępnij Opublikowano 21 marca 2018 Cześć, jest ktos w stanie mi pomoc? Chodzi mi o kod, ze jak strzelam w gracza z luku wyswietla mi ile ma hp w send private static final HandlerList handlers = new HandlerList(); private final ItemStack bow; private Entity projectile; private final float force; private boolean cancelled; Nie ma gracza, jest tylko Jako Entity strzał, przez co nie dziala Odnośnik do komentarza https://skript.pl/temat/26233-hp-z-luku/ Udostępnij na innych stronach Więcej opcji udostępniania...
0 GotoFinal 195 Opublikowano 21 marca 2018 Udostępnij Opublikowano 21 marca 2018 ale jaki ty masz dokładnie problem? wklej kod jaki aktualnie masz i co dokładnie chcesz uzyskać, bo nawet nie wiem o jakim evencie piszesz.. Odnośnik do komentarza https://skript.pl/temat/26233-hp-z-luku/#findComment-172892 Udostępnij na innych stronach Więcej opcji udostępniania...
0 TheMolkaPL 345 Opublikowano 21 marca 2018 Udostępnij Opublikowano 21 marca 2018 - Nasłuchujecie EntityDamageByEntityEvent - Sprawdzacie czy getEntity() jest Playerem - Sprawdzacie czy getDamager() to Projectile - Castujecie getDamager() do Projectile - Sprawdzacie czy getShooter() to CommandSender - Castujecie getShooter() do CommandSender i wysyłacie wiadomość Pozdrawiam Czerwono sfuty 1 Odnośnik do komentarza https://skript.pl/temat/26233-hp-z-luku/#findComment-172895 Udostępnij na innych stronach Więcej opcji udostępniania...
0 LloydPL 436 Opublikowano 21 marca 2018 Udostępnij Opublikowano 21 marca 2018 (edytowane) w evencie projectile hit czy coś takiego jest funkcja getShooter() bodajże i do niego możesz sendować hp celu edit a jednak musisz zrobić event.getEntity().getShooter() i to ci zwróci tego co strzelał https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/entity/ProjectileHitEvent.html Edytowane 21 marca 2018 przez LloydPL sfuty 1 Odnośnik do komentarza https://skript.pl/temat/26233-hp-z-luku/#findComment-172896 Udostępnij na innych stronach Więcej opcji udostępniania...
0 TheMolkaPL 345 Opublikowano 21 marca 2018 Udostępnij Opublikowano 21 marca 2018 Hmmm, ale co jeżeli taki gracz ma goda, friendlyfire, albo gamemode? Nie wiem czy ProjectileHitEvent byłby lepszy od EntityDamageByEntityEvent - w tym drugim wiadomo, że normalnie powinien otrzymać damage (jeżeli event nie został anulowany). Dodatkowo można także obliczyć ile damage graczowi zadano, czy gracz umrze po tym uderzeniu, itd. sfuty i yooniks 2 Odnośnik do komentarza https://skript.pl/temat/26233-hp-z-luku/#findComment-172903 Udostępnij na innych stronach Więcej opcji udostępniania...
0 yooniks 347 Opublikowano 22 marca 2018 Udostępnij Opublikowano 22 marca 2018 (edytowane) @EventHandler(ignoreCancelled = true) public void onDamage(EntityDamageByEntityEvent e) { final Entity entity = e.getEntity(); final Entity damager = e.getDamager(); if (!(entity instanceof Player))return; if (damager instanceof Projectile) { final ProjectileSource shooter = ((Projectile) damager).getShooter(); if (shooter instanceof Player) { final Player attacker = (Player) shooter; final Player victim = (Player) entity; attacker.sendMessage("zabrano damage! "+e.getDamage()+" teraz hp tego gracza wynosi: " + (victim.getHealth()/2)); return; } } } sprobuj. (victim.getHealth() mozesz dac w decimalformat) i nie wiem czy victim.getHealth() to bedzie od razu z 'zadanym damage', jezeli nie to zrob sobie cos typu private double getHealth(Player target, double givenDamage) { final double health = ((target.getHealth()/2)-givenDamage); return health; } no i mozesz tez sprawdzac czy nie jest na minusie itd Edytowane 22 marca 2018 przez yooniks nawias sfuty i LloydPL 2 Odnośnik do komentarza https://skript.pl/temat/26233-hp-z-luku/#findComment-172944 Udostępnij na innych stronach Więcej opcji udostępniania...
0 GotoFinal 195 Opublikowano 22 marca 2018 Udostępnij Opublikowano 22 marca 2018 @yooniks co ty tu odwalasz? czemu dzielisz health przez dwa? to nie ma żadnego sensu Odnośnik do komentarza https://skript.pl/temat/26233-hp-z-luku/#findComment-172961 Udostępnij na innych stronach Więcej opcji udostępniania...
0 yooniks 347 Opublikowano 22 marca 2018 Udostępnij Opublikowano 22 marca 2018 1 minutę temu, GotoFinal napisał: @yooniks co ty tu odwalasz? czemu dzielisz health przez dwa? to nie ma żadnego sensu serduszek jest 10, wiec zamiast zwracac 20hp moim zdaniem jest lepiej zwracac 10 (m.in. tak mi kazano pod ostatnie zlecenie) sfuty 1 Odnośnik do komentarza https://skript.pl/temat/26233-hp-z-luku/#findComment-172962 Udostępnij na innych stronach Więcej opcji udostępniania...
0 GotoFinal 195 Opublikowano 22 marca 2018 Udostępnij Opublikowano 22 marca 2018 1 minutę temu, yooniks napisał: serduszek jest 10, wiec zamiast zwracac 20hp moim zdaniem jest lepiej zwracac 10 (m.in. tak mi kazano pod ostatnie zlecenie) no ale to wtedy nie ma nic do ilości HP, 1 serduszko nie musi nawet reprezentować 2 pkt HP, może reprezentować 1 lub 1000 - minecraft wspiera takie skalowanie. Więc takie dzielenie jest kompletnie niepoprawne i psuje kompatybilność z innymi pluginami które mogą modyfikować HP. Jak już dzielić to trzeba by obliczyć ilość HP przysługującą na jedno serce i wtedy wyświetlać uwzględniając ten fakt - np wyświetlać ilość HP jako emotki serc czy też dopisać że chodzi o serca a nie HP. Do tego zwyczajnie źle wtedy obliczasz tutaj: private double getHealth(Player target, double givenDamage) { final double health = ((target.getHealth()/2)-givenDamage); return health; } Bo od połowy hp gracza odejmujesz całość zadanego dmagae, co ma jeszcze mniej sensu. Więc nie dawaj takich kodów publicznie bo ci jakiś client kazał... a z klientem to warto pogadać czy na pewno rozumie to chce chce. Odnośnik do komentarza https://skript.pl/temat/26233-hp-z-luku/#findComment-172963 Udostępnij na innych stronach Więcej opcji udostępniania...
0 yooniks 347 Opublikowano 22 marca 2018 Udostępnij Opublikowano 22 marca 2018 1 minutę temu, GotoFinal napisał: no ale to wtedy nie ma nic do ilości HP, 1 serduszko nie musi nawet reprezentować 2 pkt HP, może reprezentować 1 lub 1000 - minecraft wspiera takie skalowanie. Więc takie dzielenie jest kompletnie niepoprawne i psuje kompatybilność z innymi pluginami które mogą modyfikować HP. Jak już dzielić to trzeba by obliczyć ilość HP przysługującą na jedno serce i wtedy wyświetlać uwzględniając ten fakt - np wyświetlać ilość HP jako emotki serc czy też dopisać że chodzi o serca a nie HP. Do tego zwyczajnie źle wtedy obliczasz tutaj: private double getHealth(Player target, double givenDamage) { final double health = ((target.getHealth()/2)-givenDamage); return health; } Bo od połowy hp gracza odejmujesz całość zadanego dmagae, co ma jeszcze mniej sensu. Więc nie dawaj takich kodów publicznie bo ci jakiś client kazał... a z klientem to warto pogadać czy na pewno rozumie to chce chce. Ale autor ma po prostu zwykly serwer, bez zadnym modow czy innych dodatków, dałem mu prosty kod, co z tym zrobi to jego sprawa, jeśli bym robił taki plugin 'publiczny' to oczywiście ,że zrobiłbym to inaczej, szukasz nieistotnych szczegółów.. Cytat Do tego zwyczajnie źle wtedy obliczasz tutaj: private double getHealth(Player target, double givenDamage) { final double health = ((target.getHealth()/2)-givenDamage); return health; } Bo od połowy hp gracza odejmujesz całość zadanego dmagae, co ma jeszcze mniej sensu. Pisane na szybko, nieprzemyślane sfuty 1 Odnośnik do komentarza https://skript.pl/temat/26233-hp-z-luku/#findComment-172968 Udostępnij na innych stronach Więcej opcji udostępniania...
0 GotoFinal 195 Opublikowano 22 marca 2018 Udostępnij Opublikowano 22 marca 2018 @yooniks Przecież nie znasz wszystkich pluginów na jego serwerze i tego jakie może wrzucić w przyszłości... więc nie dawaj mu kodu który psuje kompatybilność... Odnośnik do komentarza https://skript.pl/temat/26233-hp-z-luku/#findComment-172970 Udostępnij na innych stronach Więcej opcji udostępniania...
0 yooniks 347 Opublikowano 22 marca 2018 Udostępnij Opublikowano 22 marca 2018 Teraz, GotoFinal napisał: @yooniks Przecież nie znasz wszystkich pluginów na jego serwerze i tego jakie może wrzucić w przyszłości... więc nie dawaj mu kodu który psuje kompatybilność... DOBRZE @EventHandler(ignoreCancelled = true) public void onDamage(EntityDamageByEntityEvent e) { final Entity entity = e.getEntity(); final Entity damager = e.getDamager(); if (!(entity instanceof Player))return; if (damager instanceof Projectile) { final ProjectileSource shooter = ((Projectile) damager).getShooter(); if (shooter instanceof Player) { final Player attacker = (Player) shooter; final Player victim = (Player) entity; attacker.sendMessage("hp gracza: "+victim.getHealth()+" maxymalne hp: "+victim.getHealthScale()); return; } } } sfuty 1 Odnośnik do komentarza https://skript.pl/temat/26233-hp-z-luku/#findComment-172972 Udostępnij na innych stronach Więcej opcji udostępniania...
0 GotoFinal 195 Opublikowano 22 marca 2018 Udostępnij Opublikowano 22 marca 2018 @yooniks maxymalne hp: "+victim.getHealthScale() no niezbyt getMaxHealth jak już yooniks 1 Odnośnik do komentarza https://skript.pl/temat/26233-hp-z-luku/#findComment-172974 Udostępnij na innych stronach Więcej opcji udostępniania...
Pytanie
seimandero 0
Cześć, jest ktos w stanie mi pomoc? Chodzi mi o kod, ze jak strzelam w gracza z luku wyswietla mi ile ma hp w send
Odnośnik do komentarza
https://skript.pl/temat/26233-hp-z-luku/Udostępnij na innych stronach
12 odpowiedzi na to pytanie
Rekomendowane odpowiedzi