Void'e kim düşürdü?

Darkless05

Demir Madencisi
En iyi cevaplar
0
Merhaba arkadaşlar uzun süredir forumda yoktum. Bu konu başlığı altında bir soru sormak istiyorum. Bir oyuncuyu void'e (boşluğa) kimin düşürdüğünü nasıl buluruz veya bir oyuncunun düşerek ölmesine sebep olan oyuncuyu nasıl tespit ederiz. Umarım uzman arkadaşlarımız konuya dahil olur fikir yürütürler.
Şimdiden teşekkürler, İyi forumlar..

(Konu sanırım yanlış yerde moderatör arkadaşlardan özür diliyorum)
 

Areilyn

-(˘▾˘-)
Ressam
En iyi cevaplar
0
Sanırsam belli bir süre zarfında voide düşmüşse ona en son vuran düşürmüş sayılıyordu :hmm: En azından hypixelde öyle ;-; (Kod ile şu sıralar hiç aram yok dolayısıyla yardımcı da olamam ;-; )
 

Dpelqpleq

2 + 2 = 5
En iyi cevaplar
0
Kod:
@EventHandler
    public void a(PlayerDeathEvent e){
      Player p = e.getEntity().getPlayer();
      Player k = e.getEntity().getKiller(); //öldüren adam
      e.setDeathMessage(null);
      p.sendMessage("§4§lÖldün");
      k.sendMessage("§6§lÖldürdün");}
Emin olmak icin sunucumdada denedim, oyuncuyu vurarak voide düşürdüğümde Killer olduğumu anlıyor.
 

GodofMilker

Nether Yerlisi
En iyi cevaplar
0
Kod:
@EventHandler
    public void a(PlayerDeathEvent e){
      Player p = e.getEntity().getPlayer();
      Player k = e.getEntity().getKiller(); //öldüren adam
      e.setDeathMessage(null);
      p.sendMessage("§4§lÖldün");
      k.sendMessage("§6§lÖldürdün");}
Emin olmak icin sunucumdada denedim, oyuncuyu vurarak voide düşürdüğümde Killer olduğumu anlıyor.
Adama 10 yıl önce vursa da yine verir ama siz bilirsiniz .-.
 

Dpelqpleq

2 + 2 = 5
En iyi cevaplar
0
Büyük ihtimalle konsola hata gidiyordur void'i killer aldığından* .-.
Kod:
[21:45:50 ERROR]: Could not pass event PlayerDeathEvent to Dpelqpleq v1.0
org.bukkit.event.EventException
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) -[craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) -[craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.callPlayerDeathEvent(CraftEventFactory.java:396) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.EntityPlayer.die(EntityPlayer.java:417) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.EntityLiving.damageEntity(EntityLiving.java:812) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.EntityHuman.damageEntity(EntityHuman.java:800) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.EntityPlayer.damageEntity(EntityPlayer.java:496) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.EntityLiving.O(EntityLiving.java:1183) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.Entity.K(Entity.java:327) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.EntityLiving.K(EntityLiving.java:169) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.Entity.t_(Entity.java:247) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.EntityLiving.t_(EntityLiving.java:1448) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.EntityHuman.t_(EntityHuman.java:173) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.EntityPlayer.l(EntityPlayer.java:285) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:382) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.PacketPlayInFlying.a(SourceFile:126) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.PacketPlayInFlying$PacketPlayInPosition.a(SourceFile:57) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.7.0_71]
at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.7.0_71]
at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at java.lang.Thread.run(Unknown Source) [?:1.7.0_71]
Caused by: java.lang.NullPointerException
at ana.c1.ds(c1.java:213) -[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) -[?:1.7.0_71]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) -[?:1.7.0_71]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) -[?:1.7.0_71]
at java.lang.reflect.Method.invoke(Unknown Source) -[?:1.7.0_71]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) -[craftbukkit.jar:git-Spigot-db6de12-18fbb24]
... 27 more
;( pf java pf!
 

Darkless05

Demir Madencisi
En iyi cevaplar
0
Arkadaşlar dedikleriniz yararlımı şuanda deneme fırsatım yok en yakın zamanda denerim fakat
Linki görebilmek için üye olmanız gerekiyor. Giriş yap veya üye ol.
2. postta adam uzun uzun anlatmış doğruysa anlayan arkadaş bizimle paylaşabilir :)
 

Nobody01

YASAKLANDI
En iyi cevaplar
0
Bunu yapmanın sadece "Bukkit" kütüphanesiyle bir yolu yok, evet yok. Bunun için ne bir olay dinleyicisi ne başka bir şey var, fakat verdiğin linkte de gördüğün gibi yapma yöntemleri var ve bunun en basit modeli "Map" objesini kullanarak yapılabilir. Aşağıda istediğine bir örnek koyuyorum o şekilde yapabilirsin. Aman unutma sınıfı dinletmeyi, bu arada "Scheduler Programming" ile istersen bir süre sonra da listeden çıkarabilirsin oyuncuyu. Bu haliyle biri sana vurduktan 1 saat sonra düşersen bile o öldürmüş sayılıyor ve kendin düşersen dahil, iyi forumlar.
PHP:
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.PlayerDeathEvent;

import java.util.HashMap;

public class PlayerFallVoid implements Listener {

    HashMap<Player, Player> lastDamages = new HashMap<Player, Player>();

    @EventHandler
    public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
        if (event.getEntity() instanceof Player && event.getDamager() instanceof Player) {
            lastDamages.put((Player) event.getEntity(), (Player) event.getDamager());
        }
    }

    @EventHandler
    public void onPlayerDeath(PlayerDeathEvent event) {
        if (lastDamages.containsKey(event.getEntity()) && event.getEntity().getLastDamageCause().getCause() == EntityDamageEvent.DamageCause.VOID) {
            event.setDeathMessage(String.format("%s isimli oyuncu %s tarafından boşluğa düşürüldü!", event.getEntity().getName(), lastDamages.get(event.getEntity())));

            lastDamages.remove(event.getEntity());
        }
    }

}
 

eklenti

Kızıltaş Madencisi
En iyi cevaplar
0
Bunu yapmanın sadece "Bukkit" kütüphanesiyle bir yolu yok, evet yok. Bunun için ne bir olay dinleyicisi ne başka bir şey var, fakat verdiğin linkte de gördüğün gibi yapma yöntemleri var ve bunun en basit modeli "Map" objesini kullanarak yapılabilir. Aşağıda istediğine bir örnek koyuyorum o şekilde yapabilirsin. Aman unutma sınıfı dinletmeyi, bu arada "Scheduler Programming" ile istersen bir süre sonra da listeden çıkarabilirsin oyuncuyu. Bu haliyle biri sana vurduktan 1 saat sonra düşersen bile o öldürmüş sayılıyor ve kendin düşersen dahil, iyi forumlar.
PHP:
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.PlayerDeathEvent;

import java.util.HashMap;

public class PlayerFallVoid implements Listener {

    HashMap<Player, Player> lastDamages = new HashMap<Player, Player>();

    @EventHandler
    public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
        if (event.getEntity() instanceof Player && event.getDamager() instanceof Player) {
            lastDamages.put((Player) event.getEntity(), (Player) event.getDamager());
        }
    }

    @EventHandler
    public void onPlayerDeath(PlayerDeathEvent event) {
        if (lastDamages.containsKey(event.getEntity()) && event.getEntity().getLastDamageCause().getCause() == EntityDamageEvent.DamageCause.VOID) {
            event.setDeathMessage(String.format("%s isimli oyuncu %s tarafından boşluğa düşürüldü!", event.getEntity().getName(), lastDamages.get(event.getEntity())));

            lastDamages.remove(event.getEntity());
        }
    }

}
belli bi zaman geçtikten sonra da lastdamages sıfırlanabilir atıyorum void de düşüp ölme zamanı 10sn ise 20 sn sonra sıfırlanabilir hashmap diye düşünüyorum
 

Nobody01

YASAKLANDI
En iyi cevaplar
0
belli bi zaman geçtikten sonra da lastdamages sıfırlanabilir atıyorum void de düşüp ölme zamanı 10sn ise 20 sn sonra sıfırlanabilir hashmap diye düşünüyorum
HashMap'i niye sıfırlayacaksın? Dedim zaten belli bir süre sonra Scheduler Programming ile çıkarılabileceğini oyuncunun. Ama biri vurduktan 20 saniye sonra tüm HashMap sıfırlanırsa ve bu işlemden 5 saniye önce hasar alıp düşen biri olursa onun ki sayılmayacaktır. Sıfırlamak mantıklı bir yol değildir, çıkarmak anlamında kullandığınızı düşünüyorum.
 

eklenti

Kızıltaş Madencisi
En iyi cevaplar
0
HashMap'i niye sıfırlayacaksın? Dedim zaten belli bir süre sonra Scheduler Programming ile çıkarılabileceğini oyuncunun. Ama biri vurduktan 20 saniye sonra tüm HashMap sıfırlanırsa ve bu işlemden 5 saniye önce hasar alıp düşen biri olursa onun ki sayılmayacaktır. Sıfırlamak mantıklı bir yol değildir, çıkarmak anlamında kullandığınızı düşünüyorum.
her 1 dk da değil adam hasar alınca demek istedim
adam hasar alınca devreye giricek fakat şöyle ki 2 kere girmemiş olmaması için bir kere vurunca koruma için ufak bişiler ekleyerek tek seferlik çalıştırma yapılır yada her vuruşta adamın vurduğu değer sıfırlanır ve ardından tekrar scheduler devreye girer eğer adam scheduler zamanı devredeyken bir daha vurulduğunda scheduleri kapatıp yeni bi tane açar ne kadar sağlıklı olur bilinmz ama böyle yapılır diye düşünyorum bi sorunu var mı sence?
 

Nobody01

YASAKLANDI
En iyi cevaplar
0
her 1 dk da değil adam hasar alınca demek istedim
adam hasar alınca devreye giricek fakat şöyle ki 2 kere girmemiş olmaması için bir kere vurunca koruma için ufak bişiler ekleyerek tek seferlik çalıştırma yapılır yada her vuruşta adamın vurduğu değer sıfırlanır ve ardından tekrar scheduler devreye girer eğer adam scheduler zamanı devredeyken bir daha vurulduğunda scheduleri kapatıp yeni bi tane açar ne kadar sağlıklı olur bilinmz ama böyle yapılır diye düşünyorum bi sorunu var mı sence?
Sıfırlamak farklı şey, HashMap'ten oyuncuyu çıkarmak farklı şey. Yazdığın haliyle sorunu var, her 1 dakika ile ilgili bir şey demedim bende. Yazmaya çalıştığın şeyin yukarıda doğrusunu yazdım.
 
Üst