Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 27

Thema: Lebensanzeige Plugin

  1. #1
    Avatar von Darkblader24
    Allroundcrafter

    Status
    Offline
    Registriert seit
    22.08.2012
    Beiträge
    81

    Tutorial Lebensanzeige Plugin

    Hallo
    ich weiß, es gab vor kurzem einen Tread dazu, aber ich dachte mir, ich mache einen neuen auf.
    Und zwar möchte ich ein Plugin schreiben, mit dem die Herzen des Gegners im Chat angezeigt werden. Der Grundcode ist von Benni1000, doch ich habe noch ein paar Fragen dazu.

    Code: http://pastebin.com/bNKaZURG

    Wie müsste man den Code umschreiben, sodass das Leben des Gegners erst nach dem Abzug des Schadens angezeigt wird? Denn bis jetzt zeigt es nur das Leben vor dem Schlag an und das bringt den Spielern ja nicht viel.

    Und ich habe es jetzt auch so geschrieben, dass es auch Treffer mit Pfeilen und Schadenstränken anzeigt. Jedoch habe ich es in zwei verschiedene if-Abfragen gepackt welche bei den beiden Varianten jeweils das gleiche ausführen. Geht es auch, dass ich es in eine gemeinsame if-Abfrage packen kann, oder dass man es einfacher schreiben kann?

    Danke

  2. #2
    TimBone
    Avatar von TimBone
    Gast
    Füge einen Bukkit Sheduler ein. Der könnte die Anzeige um ein oder zwei Sekunden verzögern.

  3. #3
    Avatar von MrFlieder
    Hobby Programmierer

    Status
    Offline
    Registriert seit
    30.12.2011
    MC-Name
    MrFlieder
    Ort
    Österreich
    Beiträge
    338
    Zitat Zitat von Darkblader24 Beitrag anzeigen
    Jedoch habe ich es in zwei verschiedene if-Abfragen gepackt welche bei den beiden Varianten jeweils das gleiche ausführen. Geht es auch, dass ich es in eine gemeinsame if-Abfrage packen kann, oder dass man es einfacher schreiben kann?
    Eine neue Methode erstellen und an den entsprechenden Stellen aufrufen.
    Code:
    public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args)
    {
        bla();
        return false;
    }
    
    public void bla()
    {
        if(DEINE IF-ABFRAGE)
        {
            // CODE
        }
    }
    An den Stellen, wo du deine If-Abfrage brauchst, kannst du diese dann aufrufen.

  4. #4
    Avatar von Benni1000
    Stapelt Pizzaschachteln!

    Status
    Offline
    Registriert seit
    04.05.2012
    Beiträge
    1.508
    Zitat Zitat von Darkblader24 Beitrag anzeigen
    Hallo
    Wie müsste man den Code umschreiben, sodass das Leben des Gegners erst nach dem Abzug des Schadens angezeigt wird? Denn bis jetzt zeigt es nur das Leben vor dem Schlag an und das bringt den Spielern ja nicht viel.
    Du kannst dir den Schaden den dieser Schlag verursacht so holen:
    Code:
    ev.getDamage();
    Dann kannst du einfach das aktuelle Leben des Spielers in eine variable stecken, diesen wert abzeiehen,
    und dann nicht mit pl.getHealth() sondern mit der variable rechnen.
    Geändert von Benni1000 (30.11.2012 um 20:48 Uhr)


    Warum Software Patente sehr schlecht für Softwareentwickler sind:
    https://www.youtube.com/watch?v=1Uw_ENS6rAU

    MinecraftImage - Die einfachste Lösung den Status eines Minecraftservers darzustellen:
    http://forums.bukkit.org/threads/web...images.173473/

  5. #5
    Avatar von Darkblader24
    Allroundcrafter

    Status
    Offline
    Registriert seit
    22.08.2012
    Beiträge
    81
    Zitat Zitat von Benni1000 Beitrag anzeigen
    Du kannst dir den Schaden den dieser Schlag verursacht so holen:
    Code:
    ev.getDamage();
    Dan kannst du einfach das aktuelle Leben des Spielers in eine variable stecken, diesen wert abzeiehen,
    und dann nicht mit pl.getHealth() sondern mit der variable rechnen.
    Danke Benni, das klappt jetzt super
    Nur jetzt ist noch ein Problem, dass ich in no-PvP Zonen den Schaden sehe, den der Schlag gemacht hätte. Jedoch möchte ich, dass wenn er in der no-PvP-Zone steht, ich sein derzeites Leben sehe, wenn ich versuche ihn anzugreifen.
    Also wenn kein tatsächlicher Schaden zugefügt werden kann, dass es dafür das jetztige Leben des anderen anzeigt.

    Der Code den ich jetzt habe:

    Code:
            if (ev.getDamager() instanceof Player && ev.getEntity() instanceof Player) {            Player pl = (Player)ev.getEntity();
                Player to = (Player)ev.getDamager();
                String toPlayer = "";
                if((pl.getHealth()-ev.getDamage())%2 != 0) {
                    for(int i = 0; i < ((pl.getHealth()-ev.getDamage())-1)/2; i++) {
                        toPlayer = toPlayer + "❤";
                    }
                    toPlayer = toPlayer + "♥";
                }
                else {
                    for(int i = 0; i < (pl.getHealth()-ev.getDamage())/2; i++) {
                        toPlayer = toPlayer + "❤";
                    }
                }
                ChatColor prefix;
                if(toPlayer.length() > 7)
                    prefix = ChatColor.GREEN;
                else if(toPlayer.length() > 4)
                    prefix = ChatColor.YELLOW;
                else
                    prefix = ChatColor.RED;
                to.sendMessage(ChatColor.GOLD+"Leben von "+ChatColor.DARK_GREEN+pl.getName()+ChatColor.GOLD+": "+prefix+toPlayer);
            }

  6. #6
    Avatar von manf
    Userscheuche

    Status
    Online
    Registriert seit
    26.07.2012
    MC-Name
    manf
    Ort
    Ruhrgebiet
    Beiträge
    821
    füg ein Event.isCanceled() ein, damit wird überprüft ob das Event nicht schon abgebrochen wurde, dann solltest du die Priorität auch hoch stellen.
    mfg manf


    Java Programmierer|Servertechniker|Minecraft Spieler|Bronie /)



  7. #7
    Avatar von Darkblader24
    Allroundcrafter

    Status
    Offline
    Registriert seit
    22.08.2012
    Beiträge
    81
    Sorry, bin noch Anfänger im Programmieren.
    Wo und wie kann ich denn das Event.isCanceled() einfügen?

  8. #8
    Avatar von manf
    Userscheuche

    Status
    Online
    Registriert seit
    26.07.2012
    MC-Name
    manf
    Ort
    Ruhrgebiet
    Beiträge
    821
    Code:
    if(ev.isCancled()){
     //Kein Schaden vorhanden
     return;
    }
    mfg manf


    Java Programmierer|Servertechniker|Minecraft Spieler|Bronie /)



  9. #9
    Avatar von Darkblader24
    Allroundcrafter

    Status
    Offline
    Registriert seit
    22.08.2012
    Beiträge
    81
    So ich hab jetzt mal eine Weile herumgetestet, aber irgendwie klappt es noch nicht so ganz.
    Ich hab es jetzt in 2 Teile unterteilt: eines wenn das Event klappt und einmal wenn nicht. Jedoch klappt das Event irgendwie immer und der erste Teil wird immer übersprungen. Obwohl ja im no-PvP das Event ja nicht klappen dürfte. Wo liegt hier der Fehler?

    http://pastie.org/5460342

  10. #10
    Avatar von Benni1000
    Stapelt Pizzaschachteln!

    Status
    Offline
    Registriert seit
    04.05.2012
    Beiträge
    1.508
    Ersetze
    Code:
    if(ev.isCancled()){
    mit
    Code:
    if(!ev.isCancled()){


    Warum Software Patente sehr schlecht für Softwareentwickler sind:
    https://www.youtube.com/watch?v=1Uw_ENS6rAU

    MinecraftImage - Die einfachste Lösung den Status eines Minecraftservers darzustellen:
    http://forums.bukkit.org/threads/web...images.173473/

Ähnliche Themen

  1. [ServerPlugin] PvPHealthDisplay ― PvP-Lebensanzeige (Grafik, Text)
    Von MrFlieder im Forum Selbstgeschriebene Plugins | Mods | Programme
    Antworten: 51
    Letzter Beitrag: 22.04.2013, 15:11
  2. Antworten: 5
    Letzter Beitrag: 29.11.2012, 17:34

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
Chatbox   
loading gif