Man könnte doch einfach das Plugin den Itemnamen in einen Heroname schreiben lassen (die Längenbegrenzung ist nur im Eingabefeld im Maker vorhanden, nicht intern, also ist das egal).
Man könnte doch einfach das Plugin den Itemnamen in einen Heroname schreiben lassen (die Längenbegrenzung ist nur im Eingabefeld im Maker vorhanden, nicht intern, also ist das egal).
--
Mir war nichtmal bewusst dass ich nominiert wurde, aber: Cool! Hälfte des Lobes muss aber unbedingt an Archeia!Now all new and shiny:CherryShare | Patches und Tools | Programmwunschthread | www.cherrytree.at | Cherry = CherryDT
Wenn also Interesse besteht, dann mache ich das fertig. Meine Implementierung parst den ganz normal eingegebenen MessageText. Stellt also weitere Makros, wie \i[] zur Verfügung, welche auch unendlich tief verschachtelt werden können. Also auch sowas: \i[\v[50]]
.
Siehe oben, ich würde das per Parser lösen - weil komfortabler zu benutzen.
PeAcE
MorDen
Da dürfte es ein kleines Problem geben:
Für die erste Zeile sollte das wunderbar gehen, weil "You may change the scriptLine object if you want, so that it is executed with different parameters. After the line was executed, all changes will be undone automatically."
Für die zweite bis vierte Zeile, die ja eigene RPG::EventScriptLine's sind, kriegst du ein Problem: Die zweite bis vierte Zeile wird von dem Handler der ersten Zeile abgefragt und nicht als eigener Eventbefehl (mit onEventCommand-Callback) ausgeführt. Du kannst zwar im onEventCommand der ersten Zeile z.B. mit scriptData[lineId + 1] auf die zweite Zeile zugreifen (musst halt überprüfen ob es auch wirklich eine RPG::EVCMD_ADD_LINE_TO_MESSAGE-Zeile ist), wenn du diese aber veränderst, wird das von DynRPG nicht automatisch zurückgeändert! Wenn sich die Message also in einem Loop befindet, funktioniert das Ersetzen nur einmal, nachher wird der bereits ersetzte Text verwendet!
Aus diesem Grund habe ich vor, ein Callback für Backslashbefehle in Messages einzufügen. Außerdem brauche ich das um die Länge von Messages feststellen zu können (auch solche mit Plugin-eigenen Sachen drin), weil das dann später dazu verwendet werden kann, Fenster (oder Sprechblasen) zu verwenden die sich der Messagelänge von der Größe her anpassen.
--
Mir war nichtmal bewusst dass ich nominiert wurde, aber: Cool! Hälfte des Lobes muss aber unbedingt an Archeia!Now all new and shiny:CherryShare | Patches und Tools | Programmwunschthread | www.cherrytree.at | Cherry = CherryDT
Ja, ich weiß Cherry. Ich bin auch noch am überlegen, wie man die "Loop-Problematik" am besten behebt. Das andere habe ich alles schon alleine herausgefunden xDDD Meine Idee wäre da, dass man alle Text bis zum "End of Event" zwischenspeichert und dann bei einem MessageCommand überprüft, ob diese bereits zwischengespeichert wurde, und dann halt das Zwischengespeicherte verwendet und dann neu parst. Beim EndOfEvent könnte man dann den "Cache" ja wieder rausschmeißen, oder nicht?
Das, was du als letztes ansprichst: An sowas in der Art bastle ich auch gerade rum^^ Also an dynamischen MessageBoxen usw.
Wobei ich aber sicher bin, dass eine direkte Implementierung in DynRPG wesentlich besser ist ^^'''
PeAcE
MorDen
Es gibt einen Weg der zwar eine Art Hack ist, aber funktionieren könnte:
Du speicherst die zweite bis vierte Zeile, wenn es eine gibt, zwischen, und zwar als String in irgendeinem Format, z.B. durch \x01 Bytes getrennt, und am Anfang und Ende auch je ein \x01 Byte. Dann schaust du immer nach, ob der Text der ersten Zeile mit \x01 endet - wenn nicht, hängst du an den bestehenden Text "\>", 50 Leerzeichen, "\<" und dann deinen Spezialstring, also etwa "\x01Dies ist die zweite Zeile\x01die dritte\x01und die vierte\x01" (hier sind die Backslashes im C-Stil gemeint). Endet die erste Zeile bereits mit \x01, dann liest du deinen Spezialstring aus und stellst damit die 2. bis 4. Zeile wieder her. Das mit \>...\< dient dazu dass dein String nicht vom Maker angezeigt wird, weil du vorher 50 Leerzeichen einfügst (die dank \>...\< instant angezeigt werden und nicht "hereinlaufen" und Zeit verbrauchen).
EDIT: Vielleicht war es auch \<...\>, ich weiß nicht mehr. Musst probieren.
--
Mir war nichtmal bewusst dass ich nominiert wurde, aber: Cool! Hälfte des Lobes muss aber unbedingt an Archeia!Now all new and shiny:CherryShare | Patches und Tools | Programmwunschthread | www.cherrytree.at | Cherry = CherryDT
Ich glaube eine andere Möglichkeit gefunden zu haben, die super funktioniert. Die ist nicht so »hacky«, wie deine Lösung Cherry.
ich möchte aber erst noch ein paar Tests durchführen, bevor ich wirklich sage, dass es in allen Situationen funktioniert^^
EDIT:
Ich hab mich entschlossen, dass ihr das auch eigentlich gleich testen könnt xD Bei mir hat es soweit funktioniert.
In dem Thread hier: KLICK
PeAcE
MorDen