Ergebnis 1 bis 20 von 20

Thema: Hilfe gesucht: HP Leiste vertikal im Menü anzeigen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Poste das Script bitte nochmal und stelle dabei die Smileys vorher aus, damit ich mir das in den Maker reinkopieren kann. Dann schau ich bei Zeiten mal rein.

  2. #2
    Uuupsi gar nicht gesehen. Hab mal den Code-Tag stattdessen benutzt. Danke

  3. #3
    Füge unter PAC ein neues, leeres Script ein, und kopiere folgenden Code rein:
    Code:
    ######
    # PAC - HP Bar Addon
    # Author: Linkey D. T.
    # Date: 08.03.2018
    ######
    class Scene_Menu < Scene_MenuBase
      alias ldt_create_command_window create_command_window
      def create_command_window(*args)
        ldt_create_command_window(*args)
        create_hp_bar_window
      end
          
    
      def create_hp_bar_window
        @hp_bar_window = LDT_Window_HPBar.new(@command_window.width,0,@command_window.height)
      end
      
      def update_hp_bar_window
        thp = $game_actors[1].hp
        thp_max = $game_actors[1].mhp
        @hp_bar_window.set_hp(thp,thp_max)
      end
    end
    
    
    ####
    # HP Bar Window
    # Author: Linkey D. T.
    # Date: 08.03.2018
    ####
    class LDT_Window_HPBar < Window_Base
      HP_WIDTH = 20
      HP_HEIGHT = 100
      
      BORDER_WIDTH = 4
      BORDER_COLOR = 1
      HP_COLOR = 3
      BACKGROUND_COLOR = 2
      
      def initialize(x,y,th=nil)
        @hp_height = th ? th : HP_HEIGHT
        @hp_height = @hp_height - BORDER_WIDTH*2
        super(x,y,HP_WIDTH+BORDER_WIDTH*2,@hp_height+BORDER_WIDTH*2)
        @hp = 0
        @max_hp = 0
      end
      
      def set_hp(hp,maxhp)
        trefresh = (hp != @hp || maxhp != @max_hp) ? true : false
        @hp = hp + 0.0
        @max_hp = maxhp + 0.0
        refresh if(trefresh)
      end
      
      def refresh
        contents.clear
        th = (@hp / @max_hp * @hp_height).to_i
        ty2 = @hp_height - th
        contents.fill_rect(BORDER_WIDTH, BORDER_WIDTH, HP_WIDTH, @hp_height, text_color(BACKGROUND_COLOR))
        contents.fill_rect(BORDER_WIDTH, BORDER_WIDTH + ty2, HP_WIDTH, th, text_color(HP_COLOR))
      end
      
      def standard_padding
        return 0
      end
    end

  4. #4
    Du bist echt schnell, vielen Dank. Der Balken ist nur leider leer. Hab jede Farbe ausprobiert und anschließend alle Scripte nacheinander testweise entfernt um zu schauen ob da was nicht miteinander funktioniert. Aber der Balken bleibt leer. Wie zeige ich die Farbe denn an?

  5. #5
    So wie ich es hier reinkopiert habe, ist der Balken grün (wenn HP voll), rot (der Teil der HP, der nicht gefüllt ist) und weiß (die Ränder).
    Hast du dir denn auch selbst HP abgezogen, um das zu testen?

    Ansonsten, was zu beachten ist: Die PAC-Scripte müssen über dem stehen, was ich dir geschickt habe.

    Sollte es dennoch nicht funktionieren, kannst du mir auch ein test-projekt schicken, in welches du alle scripts, die du benutzt, in gleicher reihenfolge reinkopierst. Dann kann ich mir das einmal anschauen.

    EDIT:
    Mein Fehler. Hatte die Update-Methode, warum auch immer, hier nicht mit reinkopiert (hatte die bei mir im Projekt noch auf einer anderen Scriptseite rumfliegen):
    Code:
    def update(*args)
        pac_mm_update(*args)
        update_hp_bar_window
        update_heal
      end
    Sollte dann so aussehen:
    Code:
    ######
    # PAC - HP Bar Addon
    # Author: Linkey D. T.
    # Date: 08.03.2018
    ######
    class Scene_Menu < Scene_MenuBase
      def update(*args)
        pac_mm_update(*args)
        update_hp_bar_window
        update_heal
      end
      
      alias ldt_create_command_window create_command_window
      def create_command_window(*args)
        ldt_create_command_window(*args)
        create_hp_bar_window
      end
          
    
      def create_hp_bar_window
        @hp_bar_window = LDT_Window_HPBar.new(@command_window.width,0,@command_window.height)
      end
      
      def update_hp_bar_window
        thp = $game_actors[1].hp
        thp_max = $game_actors[1].mhp
        @hp_bar_window.set_hp(thp,thp_max)
      end
    end
    
    
    ####
    # HP Bar Window
    # Author: Linkey D. T.
    # Date: 08.03.2018
    ####
    class LDT_Window_HPBar < Window_Base
      HP_WIDTH = 20
      HP_HEIGHT = 100
      
      BORDER_WIDTH = 4
      BORDER_COLOR = 1
      HP_COLOR = 3
      BACKGROUND_COLOR = 2
      
      def initialize(x,y,th=nil)
        @hp_height = th ? th : HP_HEIGHT
        @hp_height = @hp_height - BORDER_WIDTH*2
        super(x,y,HP_WIDTH+BORDER_WIDTH*2,@hp_height+BORDER_WIDTH*2)
        @hp = 0
        @max_hp = 0
      end
      
      def set_hp(hp,maxhp)
        trefresh = (hp != @hp || maxhp != @max_hp) ? true : false
        @hp = hp + 0.0
        @max_hp = maxhp + 0.0
        refresh if(trefresh)
      end
      
      def refresh
        contents.clear
        th = (@hp / @max_hp * @hp_height).to_i
        ty2 = @hp_height - th
        contents.fill_rect(BORDER_WIDTH, BORDER_WIDTH, HP_WIDTH, @hp_height, text_color(BACKGROUND_COLOR))
        contents.fill_rect(BORDER_WIDTH, BORDER_WIDTH + ty2, HP_WIDTH, th, text_color(HP_COLOR))
      end
      
      def standard_padding
        return 0
      end
    end

    Geändert von Linkey (09.03.2018 um 11:37 Uhr)

  6. #6
    Hab deine pm bekommen. Es tut! Danke!

    Die "Füllung" der HP erscheint nur sehr zeitverzögert nach dem Aufrufen des Menüs. Lässt sich das möglicherweise noch durch irgendeinen Zusatzbefehl beschleunigen? Könnte an der refresh Methode liegen. Beim verlassen von Untermenüs (Items) baut sich die Füllung ebenso zeitverzögert auf.

  7. #7
    Natürlich. Pack noch in diese Zeile in die create methode: update_hp_bar_window
    Code:
    def create_hp_bar_window
        @hp_bar_window = LDT_Window_HPBar.new(@command_window.width,0,@command_window.height)
        update_hp_bar_window
      end
    Ging davon aus, dass die Update-Methode so oder so immediately aufgerufen wird. Scheinbar aber erst nach einigen Frames.

  8. #8
    Du bist genial! Nun ist mein Menü endlich komplett und ich kann mich an die kosmetischen Sachen (Icons) machen. Danke dir sehr!!!

  9. #9
    Ah, eine Sache vielleicht noch (auch wenn es vielleicht "pingelig" erscheinen mag. Bekommt man die Füllung der HP noch irgendwie unter die Box? Also dass die Farbe nicht "übersteht" und die inneren Ränder der Box auch zu erkennen sind. Es soll aussehen wie Blut in einem Gefäß. Weißt du was ich meine? Ansonsten kann ich es gern versuchen mit Paint zu skizzieren.
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken Unbenannt.png  

  10. #10
    Dafür habe ich dir BORDER_WIDTH als Konstante zum Einstellen mitgegeben. Trag dort mal eine 6 ein, dass sollte generell der gesamte Rahmen angezeigt werden.
    Wenn du noch an den Ecken eine Krümmung willst, kann ich mir das später anschauen.

  11. #11
    Wenn du LDT_Window_HPBar hiermit ersetzt:

    Sind auch die Pixel in den Ecken abgerundet.

  12. #12
    Awesome, vielen Dank Linkey!!! So ist es perfekt

Berechtigungen

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