Punkte beim Player Killen

Dieses Thema im Forum "Programmierung" wurde erstellt von Mrcookie008, 10. Mai 2013.

  1. Mrcookie008
    Offline

    Mrcookie008

    Registriert seit:
    15. Dezember 2011
    Beiträge:
    380
    Ort:
    /home
    Minecraft:
    xCookieZz oder Mrcookie008 (Beides Premium)
    Hey Leute:)
    Da ich verzweifelt auf mein Java Buch warte, damit solche dummen Fragen nichtmehr gestellt werden müssen, frage ich hier einfach nochmal nach:

    Wie bekomme ich es hin (Via Code in Eclipse), wenn ein Player gekillt wird (über den Eventhandler z.B), dass er dann den "Killer" des gekillten erkennt und diesem dann 2 Punkte gibt, die er dann mit z.B /punkte aufrufen kann...

    Hätte da jemand ein Codebeispiel zur Hand? Wäre echt nett :)
    LG.
     
    #1
  2. Gleydar
    Offline

    Gleydar Ehem. Teammitglied

    Registriert seit:
    2. August 2012
    Beiträge:
    443
    Ort:
    player.getHome()
    Minecraft:
    Gleydar
    Mit
    Code (Text):
    1. player.getKiller();
     
    #2
  3. paister3
    Offline

    paister3

    Registriert seit:
    17. März 2013
    Beiträge:
    22
    Minecraft:
    Paister
    Hier wäre ein Beispiel:
    Code (Text):
    1.  
    2.     public static HashMap<Player, Integer> stats = new HashMap<Player, Integer>();
    3.     @EventHandler
    4.     public void onEntityDeathEvent(EntityDeathEvent e){
    5.         if(e.getEntity() instanceof Player && e.getEntity().getKiller() instanceof Player){
    6.             Player dmg = (Player)e.getEntity().getKiller();
    7.                        //Das solltest du verstehen, jetzt nurnoch den Spielern Punkte geben z.B. in einer HashMap
    8.                        stats.put(dmg, stats.get(dmg)+2);
    9.      }
    10.    }
    11.  
    12.  
    Code (Text):
    1.  
    2.     @Override
    3.     public boolean onCommand(CommandSender sender, Command cmd, String cmdLabel, String[] args) {
    4.         if(cmd.getName().equalsIgnoreCase("punkte")){
    5.             if(sender instanceof Player){
    6.              Player p = (Player)sender;
    7.              p.sendMessage("§4§l"+ stats.get(dmg));
    8.     }
    9.   }
    10. }
    11.  
    Hier fügt er bei jedem Kill dem Killer 2 Punkte hinzu und bei /punkte gibt er die Anzahl seiner Punkte wieder.
    Sollte an sich so funktionieren, habs nicht getestet.
    Lg Paister ;)
     
    #3
  4. games6471
    Online

    games6471

    Tut mir Leid paister3, aber dein Beitrag Code enthält Fehler. Nämlich ist erstens getKiller immer ein Player, aber (jetzt zum zweiten Punkt) wenn der gestorbene Spieler nicht vom einem anderen Spieler getötet wurde, ist dieser Wert null und dann kommt es zu einem Performance Problem.

    Ebenso sind im Code noch weiter Bestandteile, die zu einem NullPointer führen können.
     
    #4
    1 Person gefällt das.
  5. ChunkNorris
    Online

    ChunkNorris

    Ich glaube du wirst von dem Buch sehr enttäuscht sein. :(
     
    #5
  6. paister3
    Offline

    paister3

    Registriert seit:
    17. März 2013
    Beiträge:
    22
    Minecraft:
    Paister
    Wie gesagt, ich habe den Code noch nicht so getestet...
    mit dem .getKiller() hast du Recht, es ist immer ein Player, sry dass kannst du dir also sparen...
    Wieso kommt es dann zu einer NullPointer? Wenn er kein Spieler ist, macht das Plugin doch gar nichts?
     
    #6
  7. games6471
    Online

    games6471

    Ok, du hast Recht. Ich habe das instanceof übersehen. Aber trotzdem kann man dazu noch was sagen. Ein Überprüfung mit instanceof anstatt einem einfach != null oder == null ist nicht gut für die Performance.
     
    #7
  8. paister3
    Offline

    paister3

    Registriert seit:
    17. März 2013
    Beiträge:
    22
    Minecraft:
    Paister
    Okay dann ist ja gut, dachte schon ;D
    Ja, dass stimmt. Danke ;)
    Hoffe die Frage von Mrcookie008 ist beantwortet.
     
    #8
  9. games6471
    Online

    games6471

    #9