Hey Leute,
auch wenn hier vermutlich wenig Leute mit dem RPG Maker 2003 und dem Maniacs Patch arbeiten hier ein kleines Script an dem ich die letzten Tage gearbeitet habe. Habe leider keine Zeit mich um eine bessere Kommentierung zu kümmern und perfekt ist der Code bestimmt auch nicht, aber wer sich damit beschäftigt, kann es sich ja noch anpassen. Ich denke es funktioniert fehlerfrei aber ich kann nicht garantieren, dass nicht doch irgendwelche Fälle nicht beachtet werden.
Was macht es?
Müde davon bei jedem Testspielen zu prüfen, wo der Text von Dialogen, etc. (gerade bei langen Dialogen) umgebrochen wird und es dann mühevoll anzupassen? Mit diesem Script tippt ihr euren gesamten Dialog den eine Person in ihren Textboxen sagen soll in einem fortlaufenden Satz in eine Textvariable. Danach führt ihr ein Common Event aus und das Script generiert Textboxen bis der ganze Text gezeigt wurde. Das Script achtet dabei auf Pausen wie \. oder \|
Drawbacks?
- Ihr müsst dafür den RPG Maker Maniacs Patch verwenden
- Umlaute klappen nicht durch einfaches tippen, ihr müsst den Umweg verwenden 3 Helden zu erstellen mit den Namen ä,ö,ü und diese dann über \n[...] in euren Text einbringen und euch beim Tippen merken, dass z.B. \n[25] für ein ö steht
- Die Zeilenlänge hängt von der Schriftgröße ab, d.h. die müsst ihr im Script eventuell anpassen
Bilder:
--> Im Maker:
Man tippt einfach über das TPC edit den ganzen Text/Dialog/etc. in einer langen Zeile.
--> Ergebnis:
Der Text wird rechtzeitig umgebrochen.
--> Umlaute workaround:
t[v[1487]] .asg .rep t[v[1487]], "\n[24]", ""
t[v[1487]] .asg .rep t[v[1487]], "\n[25]", ""
t[v[1487]] .asg .rep t[v[1487]], "\n[26]", ""
weil wegen und so...
--> Video:
Video
Weil ich meine Beschreibung auch nicht verstehen würde...
@label.set 1
@comment "Pointer Initialisierung
Pointer initialisation"
v[1488] = 1996
v[1487] = 2000
@comment "Startbedingung zweite Schleife
starting condition second loop"
v[1260] = 1
@label.set 2
@comment "----------------Laenge der Zeichenketten fuer erste Schleifenbedingung speichern--------------------
----------------Get length of the first string for the first loop condition--------------------"
t[1799] .getLen v[1260]
@comment "Aufteilen bei jedem Leerzeichen und in StringVariablen ab T2000 schreiben
Cut string into pieces for every space and write the pieces to the string variables starting from T2000"
t[1799] .split " ", t[2000], v[1489]
@comment "Dieses Script generiert vier Zeilen wof?r vier Schleifendurchg?nge notwendig w?ren.
Da die erste Zeile der ersten Textbox mit einem Semikolon beginnt, wird der erste
Schleifendurchgang vom Rest getrennt
This script generates four lines for which four loops are needed. Because the first
line in the first textbox starts with a semicolon this line needs to be seperated
from the next three loops"
@loop 1 {
@comment "L?nge der zuletzt berechneten Zeile zur?cksetzen und der Zusatzzeichenl?nge
Reset length of the last calculated line and the special addition length"
v[1490] = 0
v[1664] = 0
@comment "Starte wenn der zu zerlegende Satz nicht leer ist
Start if the sentence to process isnt empty"
@while v[1260] != 0 {
@comment "Hole dir das aktuelle Wort aus dem zerlegten Satz
Fetch the current word from the disassembled sentence"
t[1798] .asg t[v[1487]]
@comment "Berechnung der Anzahl an Zeichen, die im aktuellen Wort enthalten, die aber nicht
gedruckt werden (\. oder \|) Diese m?ssen beachtet werden, damit die Zeile bis zum
Ende gef?llt ist und nicht k?rzer erscheint
Calculate the amount of characters of the current word which arent shown (\. oder \|)
These have to be taken into account otherwise the line won't be filled to its maximum."
t[1798] .getLen v[1667]
t[v[1487]] .asg .rep t[v[1487]], "\.", ""
t[v[1487]] .asg .rep t[v[1487]], "\|", ""
t[v[1487]] .getLen v[1670]
v[1667] -= v[1670]
v[1664] += v[1667]
@comment "L?nge des aktuellen Wortes holen
Get length of the current word"
t[v[1487]] .getLen v[1260]
@comment "GESAMTLAENGE DER AKTUELLEN STRINGZEILE jede Schleife um letztes Wort erhoehen
add the length of the last word to complete length of the current stringline every loop"
v[1490] += v[1260]
@comment "fuer jedes Wort Leerzeichen eins dazu
add one for every space after every word"
v[1490] += 1
@comment "BERECHNEN DER GESAMTLAENGE DER AKTUELLEN STRINGZEILE WENN DAS NAECHSTE WORT DAZUKAEME
Calculate the complete line length if the next word would be added"
v[1487] += 1
t[v[1487]] .getLen v[1669]
v[1487] -= 1
v[1492] = v[1490]
v[1492] += v[1669]
@comment "naechstes wort fuer naechsten schleifendurchgang
go the next word for the next loop"
v[1487] += 1
@comment "--------------wenn steuerbefehle gesamtanzahl erhoehen--------------
if there are special commands (\| or \.) the the amount the the complete length"
v[1668] += v[1667]
@comment "-------------------------"
@comment "Bei der Schriftart des Scripterstellers passen 50 Zeichen in eine Zeile
Beim ersten Satz hier ein zeichen weniger durch das vorangestellte Semikolon
With the font of this scripts writers 50 letters fit into one line
This first sentence need one letter less because of the upfront semicolon"
@if v[1492] > 49 {
@comment "erster Satz ist voll
first line is full"
@break
} .else bl {
}
}
@comment "zusatzdifferenz dazurechnen
add special character amount"
v[1490] += v[1664]
@comment "In Textausgabe alles von 0 bis V1490 eintragen"
@comment "In Textausgabe alles von 0 bis V1490 eintragen
Add the line to the variable for output"
t[v[1488]] .asg .subs t[1799], 0, v[1490]
@comment "Rest der gesamten Zeichenkette ohne den bereits verarbeiteten
Rest of the complete string without the calculated line"
t[1799] .asg .subs t[1799], v[1490], 999
@comment "Ausrechnen der Rest-Stringlaenge f?r n?chsten Schleifenbedingung"
@comment "Calculate the length of the remaining string"
t[1799] .getLen v[1260]
@comment "----------------naechste Zeile--------------------"
@comment "next line"
v[1488] += 1
}
@comment "MEHR VON DEMSELBEN SCRIPT
MORE OF THE SAME BLABLA"
@comment "MEHR VON DEMSELBEN SCRIPT
MORE OF THE SAME BLABLA"
@comment "MEHR VON DEMSELBEN SCRIPT
MORE OF THE SAME BLABLA"
@comment "MEHR VON DEMSELBEN SCRIPT
MORE OF THE SAME BLABLA"
@comment "MEHR VON DEMSELBEN SCRIPT
MORE OF THE SAME BLABLA"
@comment "MEHR VON DEMSELBEN SCRIPT
MORE OF THE SAME BLABLA"
@comment "MEHR VON DEMSELBEN SCRIPT
MORE OF THE SAME BLABLA"
@loop 3 {
v[1490] = 0
v[1664] = 0
@while v[1260] != 0 {
t[1798] .asg t[v[1487]]
t[1798] .getLen v[1667]
t[v[1487]] .asg .rep t[v[1487]], "\.", ""
t[v[1487]] .asg .rep t[v[1487]], "\|", ""
t[v[1487]] .getLen v[1670]
v[1667] -= v[1670]
v[1664] += v[1667]
t[v[1487]] .getLen v[1260]
v[1490] += v[1260]
v[1490] += 1
v[1487] += 1
t[1797] .asg t[v[1487]]
t[v[1487]] .asg .rep t[v[1487]], "\.", ""
t[v[1487]] .asg .rep t[v[1487]], "\|", ""
t[v[1487]] .getLen v[1669]
t[v[1487]] .getLen v[1669]
v[1487] -= 1
v[1492] = v[1490]
v[1492] += v[1669]
v[1487] += 1
v[1668] += v[1667]
@comment "-------------------------"
@if v[1492] > 50 {
@break
} .else bl {
}
}
v[1490] += v[1664]
t[v[1488]] .asg .subs t[1799], 0, v[1490]
t[1799] .asg .subs t[1799], v[1490], 999
t[1799] .getLen v[1260]
v[1488] += 1
}
@msg.show """\t[1996]
\t[1997]
\t[1998]
\t[1999]"
v[1488] = 1996
t[1799] .getLen v[1260]
@if v[1260] > 50 {
} .else bl {
@if v[1260] <= 0 {
@label.jump 77
} .else bl {
@if v[1260] == 50 {
@comment "------------------------SONDERSCHLEIFE------------------"
@comment "------------------------SONDERSCHLEIFE------------------"
v[1490] = 0
v[1664] = 0
@while v[1260] != 0 {
t[1798] .asg t[v[1487]]
t[1798] .getLen v[1667]
t[v[1487]] .asg .rep t[v[1487]], "\.", ""
t[v[1487]] .asg .rep t[v[1487]], "\|", ""
@comment "----------------ZUSATZDIFFERENZ BERECHNEN--------------------"
t[v[1487]] .getLen v[1670]
v[1667] -= v[1670]
v[1664] += v[1667]
@comment "LAENGE DES AKTUELLEN WORTES"
t[v[1487]] .getLen v[1260]
@comment "GESAMTLAENGE DER AKTUELLEN STRINGZEILE
Wird jeden Schleifendurchgang erh?ht"
v[1490] += v[1260]
@comment "fuer jedes Leerzeichen eins dazu"
v[1490] += 1
@comment "GESAMTLAENGE DER AKTUELLEN STRINGZEILE WENN DAS NAECHSTE WORT DAZUKAEME"
v[1487] += 1
t[1797] .asg t[v[1487]]
t[v[1487]] .asg .rep t[v[1487]], "\.", ""
t[v[1487]] .asg .rep t[v[1487]], "\|", ""
t[v[1487]] .getLen v[1669]
t[v[1487]] .getLen v[1669]
v[1487] -= 1
v[1492] = v[1490]
v[1492] += v[1669]
@comment "naechstes wort fuer naechsten schleifendurchgang"
v[1487] += 1
@comment "--------------wenn steuerbefehle gesamtanzahl erhoehen--------------"
v[1668] += v[1667]
@comment "-------------------------"
@if v[1492] == 50 {
@comment "An letztes Wort w?rde kein Endsemikolon passen --> umbruch"
@break
}
}
@comment "zusatzdifferenz dazurechnen"
v[1490] += v[1664]
@comment "In Textausgabe alles von 0 bis V1490 eintragen"
t[1996] .asg .subs t[1799], 0, v[1490]
@comment "Rest der gesamten Zeichenkette ohne den bereits verarbeiteten"
t[1799] .asg .subs t[1799], v[1490], 999
@comment "Ausrechnen der Rest-Stringlaenge f?r n?chsten Schleifenbedingung"
t[1799] .getLen v[1260]
t[1997] .asg t[v[1487]]
@msg.show "\t[1996]
\t[1997]"""
@comment "----------------------------------------------------------------------------"
@comment "----------------------------------------------------------------------------"
@comment "----------------------------------------------------------------------------"
@label.jump 77
} .else bl {
@msg.show "\t[1799]"""
@label.jump 77
}
}
}
@comment "------------------------------------------------------------------------------------------------------------------"
@comment "------------------------------------------------------------------------------------------------------------------"
@label.set 3
@comment "------------------------------------------------------------------------------------------------------------------"
@comment "------------------------------------------------------------------------------------------------------------------"
@loop 4 {
v[1668] = 48
v[1490] = 0
v[1664] = 0
@while v[1260] != 0 {
t[1798] .asg t[v[1487]]
t[1798] .getLen v[1667]
t[v[1487]] .asg .rep t[v[1487]], "\.", ""
t[v[1487]] .asg .rep t[v[1487]], "\|", ""
@comment "----------------ZUSATZDIFFERENZ BERECHNEN--------------------"
t[v[1487]] .getLen v[1670]
v[1667] -= v[1670]
v[1664] += v[1667]
@comment "LAENGE DES AKTUELLEN WORTES"
t[v[1487]] .getLen v[1260]
@comment "GESAMTLAENGE DER AKTUELLEN STRINGZEILE
Wird jeden Schleifendurchgang erh?ht"
v[1490] += v[1260]
@comment "fuer jedes Leerzeichen eins dazu"
v[1490] += 1
@comment "GESAMTLAENGE DER AKTUELLEN STRINGZEILE WENN DAS NAECHSTE WORT DAZUKAEME"
v[1487] += 1
t[1797] .asg t[v[1487]]
t[v[1487]] .asg .rep t[v[1487]], "\.", ""
t[v[1487]] .asg .rep t[v[1487]], "\|", ""
t[v[1487]] .getLen v[1669]
t[v[1487]] .getLen v[1669]
v[1487] -= 1
v[1492] = v[1490]
v[1492] += v[1669]
@comment "naechstes wort fuer naechsten schleifendurchgang"
v[1487] += 1
@comment "--------------wenn steuerbefehle gesamtanzahl erhoehen--------------"
v[1668] += v[1667]
@comment "-------------------------"
@if v[1492] > 50 {
@comment "erster Satz fertig, letztes Leerzeichen berechnen"
@break
} .else bl {
}
}
@comment "zusatzdifferenz dazurechnen"
v[1490] += v[1664]
@comment "In Textausgabe alles von 0 bis V1490 eintragen"
t[v[1488]] .asg .subs t[1799], 0, v[1490]
@comment "Rest der gesamten Zeichenkette ohne den bereits verarbeiteten"
t[1799] .asg .subs t[1799], v[1490], 999
@comment "Ausrechnen der Rest-Stringlaenge f?r n?chsten Schleifenbedingung"
t[1799] .getLen v[1260]
@comment "----------------naechste Zeile--------------------"
v[1488] += 1
}
@msg.show "\t[1996]
\t[1997]
\t[1998]
\t[1999]"
@comment "-------------------------------------------------------"
v[1488] = 1996
@comment "Zusammengesetzten String holen"
@comment "L?nge ausrechnen"
t[1799] .getLen v[1260]
@if v[1260] > 50 {
@label.jump 3
} .else bl {
@if v[1260] <= 0 {
@label.jump 77
} .else bl {
@if v[1260] == 50 {
@comment "------------------------SONDERSCHLEIFE------------------"
@comment "------------------------SONDERSCHLEIFE------------------"
@comment "------------------------SONDERSCHLEIFE------------------"
v[1490] = 0
v[1664] = 0
@while v[1260] != 0 {
t[1798] .asg t[v[1487]]
t[1798] .getLen v[1667]
t[v[1487]] .asg .rep t[v[1487]], "\.", ""
t[v[1487]] .asg .rep t[v[1487]], "\|", ""
@comment "----------------ZUSATZDIFFERENZ BERECHNEN--------------------"
t[v[1487]] .getLen v[1670]
v[1667] -= v[1670]
v[1664] += v[1667]
@comment "LAENGE DES AKTUELLEN WORTES"
t[v[1487]] .getLen v[1260]
@comment "GESAMTLAENGE DER AKTUELLEN STRINGZEILE
Wird jeden Schleifendurchgang erh?ht"
v[1490] += v[1260]
@comment "fuer jedes Leerzeichen eins dazu"
v[1490] += 1
@comment "GESAMTLAENGE DER AKTUELLEN STRINGZEILE WENN DAS NAECHSTE WORT DAZUKAEME"
v[1487] += 1
t[1797] .asg t[v[1487]]
t[v[1487]] .asg .rep t[v[1487]], "\.", ""
t[v[1487]] .asg .rep t[v[1487]], "\|", ""
t[v[1487]] .getLen v[1669]
t[v[1487]] .getLen v[1669]
v[1487] -= 1
v[1492] = v[1490]
v[1492] += v[1669]
@comment "naechstes wort fuer naechsten schleifendurchgang"
v[1487] += 1
@comment "--------------wenn steuerbefehle gesamtanzahl erhoehen--------------"
v[1668] += v[1667]
@comment "-------------------------"
@if v[1492] == 50 {
@comment "An letztes Wort w?rde kein Endsemikolon passen --> umbruch"
@break
}
}
@comment "zusatzdifferenz dazurechnen"
v[1490] += v[1664]
@comment "In Textausgabe alles von 0 bis V1490 eintragen"
t[1996] .asg .subs t[1799], 0, v[1490]
@comment "Rest der gesamten Zeichenkette ohne den bereits verarbeiteten"
t[1799] .asg .subs t[1799], v[1490], 999
@comment "Ausrechnen der Rest-Stringlaenge f?r n?chsten Schleifenbedingung"
t[1799] .getLen v[1260]
t[1997] .asg t[v[1487]]
@msg.show "\t[1996]
\t[1997]"""
@comment "----------------------------------------------------------------------------"
@comment "----------------------------------------------------------------------------"
@comment "----------------------------------------------------------------------------"
@label.jump 77
} .else bl {
@msg.show "\t[1799]"""
@label.jump 77
}
}
}
@comment "------------------------------------------------------------------------------------------------------------------"
@comment "------------------------------------------------------------------------------------------------------------------"
@label.set 77
Alles anzeigen