Ergebnis 1 bis 14 von 14

Thema: HP, MP, TP Zahlen verschieben

  1. #1

    HP, MP, TP Zahlen verschieben

    Hey Community,

    die HP, MP und TP-Zahlen im KS sehen ja in etwa so aus

    HP---------50, MP-----------80, TP-----------20

    Ich will, daß die Zahlen näher an HP, TP, MP stehen, also

    HP50, MP80, TP20.

    Die farbigen Leisten hab ich bereits auskommentiert, die will ich gar nicht haben. Nur die Zahlen.

    Was muss ich in den Standardskripten verändern, um diese Verschiebung zu bewirken?

    Ken der Zahlenkot

  2. #2
    Am Ende werden die Werte über die Methode "draw_current_and_max_values" vom Base_Window geschrieben. Dort gibt die "2" ganz am Ende der Methode "draw_text" an, dass die Zahlen rechtsbündig erscheinen sollen.
    Durch Entfernen (oder durch 0 ersetzen) der "2", wird der Text linksbündig:
    Code:
    class Window_Base < Window
      def draw_current_and_max_values(x, y, width, current, max, color1, color2)
        change_color(color1)
        xr = x + width
        if width < 96
          draw_text(xr - 40, y, 42, line_height, current, 0)
        else
          draw_text(xr - 92, y, 42, line_height, current, 0)
          change_color(color2)
          draw_text(xr - 52, y, 12, line_height, "/", 0)
          draw_text(xr - 42, y, 42, line_height, max, 0)
        end
      end
    end

  3. #3
    Hey, Danke. So ganz geklappt hats allerdings noch nicht. HP und TP sind noch zu weit weg, für MP passt es. Gibt es da irgendwie noch eine Möglichkeit, das noch näher ranzubekommen? Es würde auch gehen, die HP, MP, TP mehr nach rechts in Richtung der Zahlen zu verschieben. Weiß nur nicht wie. Wie sich die Zahlen und die Buchstaben annähern ist mir eig egal, hauptsache sie stehen zusammen ohne Lücke.
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken Unbenannt.png  

    Geändert von Ken der Kot (04.08.2018 um 11:27 Uhr)

  4. #4
    Du hast doch den Punkt, wo der Text ausgegeben wird, direkt vor dir
    Schau mal in die Hilfe was die Methode draw_text für Parameter hat. Abgekürzt:
    Startposition horizontal, Startposition vertikal, Länge, Höhe, Ausgabetext, Ausrichtung (0= links, 1 = mittig, 2 = rechts)

    Du musst also mit der Startposition und der Länge schauen, wenn es dir noch zu weit auseinander ist.

    Der TP-Wert wird über eine andere Methode geschrieben - die man sofort findet, wenn man im Scripteditor mal nach der sucht, die ich dir hier genannt habe.
    Dort machst du hinten auch einfach aus der 2 eine 0 und schon ist es linksbündig.
    Code:
    class Window_Base < Window
      def draw_current_and_max_values(x, y, width, current, max, color1, color2)
        change_color(color1)
        xr = x + width
        if width < 96
          draw_text(xr - 40, y, 42, line_height, current, 0)
        else
          draw_text(xr - 92, y, 42, line_height, current, 0)
          change_color(color2)
          draw_text(xr - 52, y, 12, line_height, "/", 0)
          draw_text(xr - 42, y, 42, line_height, max, 0)
        end
      end
      def draw_actor_tp(actor, x, y, width = 124)
        draw_gauge(x, y, width, actor.tp_rate, tp_gauge_color1, tp_gauge_color2)
        change_color(system_color)
        draw_text(x, y, 30, line_height, Vocab::tp_a)
        change_color(tp_color(actor))
        draw_text(x + width - 42, y, 42, line_height, actor.tp.to_i, 0)
      end
    end
    Edit: Beziehungsweise musst du hier, weil die Methode für HP und MP verwendet wird, die aufrufende Methode am besten bearbeiten:
    Code:
    class Window_Base < Window
      def draw_current_and_max_values(x, y, width, current, max, color1, color2)
        change_color(color1)
        xr = x + width
        if width < 96
          draw_text(xr - 40, y, 42, line_height, current, 0)
        else
          draw_text(xr - 92, y, 42, line_height, current, 0)
          change_color(color2)
          draw_text(xr - 52, y, 12, line_height, "/", 0)
          draw_text(xr - 42, y, 42, line_height, max, 0)
        end
      end
      def draw_actor_tp(actor, x, y, width = 124)
        draw_gauge(x, y, width, actor.tp_rate, tp_gauge_color1, tp_gauge_color2)
        change_color(system_color)
        draw_text(x, y, 30, line_height, Vocab::tp_a)
        change_color(tp_color(actor))
        draw_text(x + width - 42, y, 42, line_height, actor.tp.to_i, 0)
      end
      #--------------------------------------------------------------------------
      # * Draw MP
      #--------------------------------------------------------------------------
      def draw_actor_hp(actor, x, y, width = 124)
        draw_gauge(x, y, width, actor.hp_rate, hp_gauge_color1, hp_gauge_color2)
        change_color(system_color)
        draw_text(x, y, 30, line_height, Vocab::hp_a)
        draw_current_and_max_values(x, y, width, actor.hp, actor.mhp,
          hp_color(actor), normal_color)
      end
      #--------------------------------------------------------------------------
      # * Draw MP
      #--------------------------------------------------------------------------
      def draw_actor_mp(actor, x, y, width = 124)
        draw_gauge(x, y, width, actor.mp_rate, mp_gauge_color1, mp_gauge_color2)
        change_color(system_color)
        draw_text(x, y, 30, line_height, Vocab::mp_a)
        draw_current_and_max_values(x, y, width, actor.mp, actor.mmp,
          mp_color(actor), normal_color)
      end
    end

    Geändert von Linkey (04.08.2018 um 11:35 Uhr)

  5. #5
    Neuen Post von Linkey gesehen, daher editiert---

    Danke

    Edit: Hmmm ok wo mach ich die Null für HP? :/

    Geändert von Ken der Kot (04.08.2018 um 11:40 Uhr)

  6. #6
    Eine 0 machst du da nicht. Die Methode für die HP wird ja hier aufgerufen:
    Code:
    draw_current_and_max_values(x, y, width, actor.hp, actor.mhp, hp_color(actor), normal_color)
    Wenn du nun möchtest, dass deine Zahl weiter links steht, dann musst du "x" verringern. Gleichzeitig solltest dementsprechend die Breite um den gleichen Wert erhöhen, damit die Zahl beim gleichen "Endpunkt" enden kann. Das könnte z.B. so aussehen:
    Code:
    draw_current_and_max_values(x-10, y, width+10, ...
    Um es 100% optimal zu machen, sollte man sich eifnach die Breite vom "HP"-Wort nehmen und dann ein paar Pixel (z.b. +2 oder +4) Abstand einstellen.
    Da die Ausgabe-Methode aber immer mit eigenen Werten rechnet, habe ich ich diese mal passend für dich umgeschrieben. Im Summe sieht es dann so aus, womit es funktionieren sollte:
    Code:
    class Window_Base < Window
      def draw_current_and_max_values(x, y, width, current, max, color1, color2)
        change_color(color1)
        if width < 96
          draw_text(x, y, 42, line_height, current, 0)
        else
          draw_text(x, y, 42, line_height, current, 0)
          change_color(color2)
          draw_text(x + 42, y, 12, line_height, "/", 0)
          draw_text(x + 54, y, 42, line_height, max, 0)
        end
      end
      def draw_actor_tp(actor, x, y, width = 124)
        draw_gauge(x, y, width, actor.tp_rate, tp_gauge_color1, tp_gauge_color2)
        change_color(system_color)
        draw_text(x, y, 30, line_height, Vocab::tp_a)
        change_color(tp_color(actor))
        draw_text(x + width - 42, y, 42, line_height, actor.tp.to_i, 0)
      end
      #--------------------------------------------------------------------------
      # * Draw HP
      #--------------------------------------------------------------------------
      def draw_actor_hp(actor, x, y, width = 124)
        draw_gauge(x, y, width, actor.hp_rate, hp_gauge_color1, hp_gauge_color2)
        change_color(system_color)
        draw_text(x, y, 30, line_height, Vocab::hp_a)
        tx = text_size(Vocab::hp_a).width + 2
        draw_current_and_max_values(x+tx, y, width, actor.hp, actor.mhp,
          hp_color(actor), normal_color)
      end
      #--------------------------------------------------------------------------
      # * Draw MP
      #--------------------------------------------------------------------------
      def draw_actor_mp(actor, x, y, width = 124)
        draw_gauge(x, y, width, actor.mp_rate, mp_gauge_color1, mp_gauge_color2)
        change_color(system_color)
        draw_text(x, y, 30, line_height, Vocab::mp_a)
        tx = text_size(Vocab::mp_a).width + 2
        draw_current_and_max_values(x+tx, y, width, actor.mp, actor.mmp,
          mp_color(actor), normal_color)
      end
    Der Maker sieht halt rechtsbündige Zahlen vor, weshalb er die Breite des Textes (HP, MP usw.) ignoriert hat. Linksbündig sollte man immer damit arbeiten - denn so werden die Zahlen, wenn du HP jetzt in II umbenennst (viel schmaler als HP) trotzdem direkt daran angezeigt.

  7. #7
    Danke

  8. #8
    Ich hätte noch eine Frage:

    Wenn ich jetzt nicht will, daß da steht HP50, sondern 50HP... wie tausche ich die Positionen der beiden? Also auch für MP und TP...

    Eigentlich sicherlich simpel, aber ich suche schon ein Weilchen in den Standardscripten wo das hinterlegt ist zb unter Window_Base aber ich finds aktuell nicht

  9. #9
    Das ist genau an der Stelle, die wir geändert haben zu sehen. Beispielsweise für die HP:
    Code:
    draw_text(x, y, 30, line_height, Vocab::hp_a)
        tx = text_size(Vocab::hp_a).width + 2
        draw_current_and_max_values(x+tx, y, width, actor.hp, actor.mhp,
          hp_color(actor), normal_color)
    Zeile1: zeichnet "HP" an stelle X,Y mit einer Länge von 30
    tx berechnet dann die genaue Breite von "HP" und fügt noch 2 pixel hinzu
    Damit zeichnen wir jetzt die Zahl genau 2 Pixel hinter "HP"

    Willst du also die HP rechts von der Zahl haben, müsstes der X-Wert der Zahl kleiner sein, als der der "HP".

  10. #10
    Ja, aber leider gibt es da ein Problem. Wenn ich 50HP anzeige geht es noch, aber spätestens bei 100HP schreibt der Maker mir die letzte 0 mitten ins H. Kann man das in Abhängigkeit voneinander verschieben?

  11. #11
    Natürlich kann man das - aber hier würde ich dann die Zahlen rechtsbündig machen. Wie willst du es haben?
    Code:
    50HP
    100HP
    9000HP
    Oder:
    Code:
      50HP
     100HP
    9000HP

  12. #12
    Die untere Variante

  13. #13
    Code:
    class Window_Base < Window
      def draw_current_and_max_values(x, y, width, current, max, color1, color2)
        change_color(color1)
        if width < 96
          draw_text(x, y, 42, line_height, current, 2)
        else
          draw_text(x, y, 42, line_height, current, 2)
          change_color(color2)
          draw_text(x + 42, y, 12, line_height, "/", 2)
          draw_text(x + 54, y, 42, line_height, max, 2)
        end
      end
      def draw_actor_tp(actor, x, y, width = 124)
        draw_gauge(x, y, width, actor.tp_rate, tp_gauge_color1, tp_gauge_color2)
        change_color(system_color)
        tx = text_size(Vocab::tp_a).width + 2
        draw_text(x, y, width, line_height, Vocab::tp_a, 2)
        change_color(tp_color(actor))
        draw_text(x, y, width - tx, line_height, actor.tp.to_i, 2)
      end
      #--------------------------------------------------------------------------
      # * Draw HP
      #--------------------------------------------------------------------------
      def draw_actor_hp(actor, x, y, width = 124)
        draw_gauge(x, y, width, actor.hp_rate, hp_gauge_color1, hp_gauge_color2)
        change_color(system_color)
        tx = text_size(Vocab::hp_a).width + 2
        draw_text(x, y, width, line_height, Vocab::hp_a, 2)
        draw_current_and_max_values(x+8, y, width, actor.hp, actor.mhp,
          hp_color(actor), normal_color)
      end
      #--------------------------------------------------------------------------
      # * Draw MP
      #--------------------------------------------------------------------------
      def draw_actor_mp(actor, x, y, width = 124)
        draw_gauge(x, y, width, actor.mp_rate, mp_gauge_color1, mp_gauge_color2)
        change_color(system_color)
        tx = text_size(Vocab::mp_a).width + 2
        draw_text(x, y, width, line_height, Vocab::mp_a, 2)
        draw_current_and_max_values(x, y, width, actor.mp, actor.mmp,
          mp_color(actor), normal_color)
      end
    end

  14. #14
    An der Entwicklung mancher Skripte lernt man echt viel Danke

Berechtigungen

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