PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : HP, MP, TP Zahlen verschieben



Ken der Kot
04.08.2018, 09:38
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

Linkey
04.08.2018, 10:06
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:


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

Ken der Kot
04.08.2018, 10:18
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. :D

Linkey
04.08.2018, 10:27
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.


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:


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

Ken der Kot
04.08.2018, 10:36
Neuen Post von Linkey gesehen, daher editiert---

Danke :D

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

Linkey
04.08.2018, 11:04
Eine 0 machst du da nicht. Die Methode für die HP wird ja hier aufgerufen:

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:

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:


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.

Ken der Kot
04.08.2018, 12:03
Danke :)

Ken der Kot
11.08.2018, 11:53
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 :D

Linkey
11.08.2018, 12:44
Das ist genau an der Stelle, die wir geändert haben zu sehen. Beispielsweise für die HP:


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".

Ken der Kot
12.08.2018, 11:53
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?

Linkey
12.08.2018, 12:17
Natürlich kann man das - aber hier würde ich dann die Zahlen rechtsbündig machen. Wie willst du es haben?


50HP
100HP
9000HP

Oder:


50HP
100HP
9000HP

Ken der Kot
12.08.2018, 12:21
Die untere Variante :)

Linkey
12.08.2018, 15:52
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

Ken der Kot
12.08.2018, 18:18
An der Entwicklung mancher Skripte lernt man echt viel :D Danke