Also ich hab ja selbst nichts schulisch oder sonst wie über Informatik gelernt, aber deine kommentierten Codestellen sind eigentlich leicht verständlich wenn man C++ Kenntnisse hast. Bin da sicher nicht das beste Beispiel, da ich mit DynRPG eigentlich nichts mache(gab mal so ein ganz simples PlugIn für Datum und Zeitzugriff, für mehr fehlt mir die Zeit und der Eigenbedarf). Geh mal am besten ein C++ Tutorial durch. Und wenn's nur so ein Crashkurs ist, helfen wird's allemal.
Die rot markierten Werte ändern. Werte mit % können nur -128 bis +127 sein, Werte mit # können auch höher sein.
Für Erklärung wie man Quickpatches mit DynRPG benutzt: http://www.multimediaxis.de/threads/...=1#post3084525 (auf jeden Fall einfacher als mit einem Hexeditor herumzuhantieren)
Erklärung für bugmenot: Ich habe die Berechnung für den X-Wert rechts vereinfacht, darum werden einige Befehle mit NOPs überschrieben von diesem Patch.
--
Mir war nichtmal bewusst dass ich nominiert wurde, aber: Cool! Hälfte des Lobes muss aber unbedingt an Archeia!
Oh. Sieht nach einem Debugcode aus der wohl vergessen wurde. D:\Temp ist mein Ordner für diversen temporären Kram ^^ Ich finde aber im Code nichts mehr davon, also nehme ich an dass es in der alleraktuellsten Version schon weg ist: http://share.cherrytree.at/showfile-...mate_01632.rar << hast du die?
--
Mir war nichtmal bewusst dass ich nominiert wurde, aber: Cool! Hälfte des Lobes muss aber unbedingt an Archeia!
Ich stelle mal die Frage in den Raum, ob jemand zufällig die Adresse der Funktion kennt, welche für den Output des Textes in der Message Box zuständig ist. (+Abschneiden vom Text am Rand und beim 80x80 Pixel großen Face-Feld)
Wenn man die Face-Grafiken außerhalb der Message Box darstellt, wird der Text immernoch um 80 Pixel verschoben bzw. nach 240 Pixeln (ca. 38 Characters) abgetrennt. Es bleibt also immer diese 80x80 Pixel große Leere.
Ich suche zwar immernoch danach, habe aber währenddessen Folgendes gefunden:
RPG_RT 2k (v 1.07 )
0x9402F -> [04] ändern (gibt die Zahl an ausgegebenen Textzeilen an)
0x93D6F -> [50] ändern (Höhe der M-Box //max.[7F], Range Check Error ab [80])
RPG_RT 2k3 (v 1.08 )
0xC6A0E -> [04] ändern (Textzeilen)
0xC6743 -> [50] ändern (Höhe der M-Box //max.[7F], Range Check Error ab [80])
Mit DynRPG sollte es sicher auch möglich sein, Text manuell einzugeben.
edit:
Die y-Positionen der Message Boxen habe ich leider nicht parat.
Naja man kann dafür eigentlich auch ResourceHacker oder andere Tools verwenden, von denen einige sogar
die Oberfläche darstellen können (weiss nicht mehr ob das PE Explorer / ResourceTuner oder XN war...). ^-^
RCDATA // TFORMEVCMD10110
Oder man trägt die Änderungen bei Ultimate ein.
--
Solange es hier falschzitierende Ärsche gibt, dulde ich keinerlei Zitatboxen, die von mir sein sollen.
@bugmenot: Du hast beim Quickpatch jetzt irrtümlich den 2k-Offset bei der Höhe verwendet. Übrigens würd ich statt "04" (was hexadezimal wäre und daher Nichttechniker bei höheren Zahlen verwirren könnte) "%4" schreiben. (% ist 1 Byte, # sind 4 Bytes und zwar beides dezimal angegeben).
Mit 4AC91F,9090 wären auch Choices > 4 Lines erlaubt, da braucht man allerdings noch einigen Zusatzcode um die Cancel-Zeile sonderzubehandeln die der Maker als ID 5 einfügt.
Mit diesem Tool kann man diese überlangen Messages auch in den Maker eingeben und bearbeiten: http://share.cherrytree.at/showfile-...revmsgedit.exe
Mit der Position ist es etwas mehr tricky weil da nicht viel Platz im Code für Eigenkonstrukte ist.
4C72A0 << Position im Kampf
4C734D << Position auf der Map
Jeweils ecx = y, edx = x. Und zwar wird hier die Messageboxposition (0 = oben, 1 = mittig, 2 = unten) mit 80 multipliziert:
(auf Map)
mov ecx, [ebx+8c] << Position laden
shl ecx, 4 << mal 16
lea ecx, [ecx+ecx*4] << mal 5
xor edx, edx << X auf 0 setzen
Man kann die ecx-Berechnung mit einem Trick verändern
mov eax, [ebx+8c] << Position laden, diesmal in eax
mov cl, 50 << Zahl 80 in cl laden
mul cl << Multipliziert al mit cl und speichert das Ergebnis in ax
mov ecx, eax << Und wieder in ecx kopieren
Braucht genausoviel Bytes, aber man kann den Multiplikator direkt angeben!
Mehr Erweiterungnen (wie z.B. X ungleich 0, Y-Offset zur Berechnung dazu) geht ohne Code Cave nicht gut in den Platz rein.
Aber man kann sie natürlich in der Größe ändern:
MessageBoxSize=4C733E,#320,4C7343,%80
Im Kampf haben wir aber mehr Platz, da die Berechnung (weil Position immer = 0) dort noch mehr vereinfacht werden kann. Man kann die ganze Berechnung in 4C72A9-4C72B2 mit
Wären meine Cookies nicht halb angebrannt, würde ich jetzt einige verteilen. (Cranberry & White Chocolate)
P.S.
Gibt es eine Möglichkeit einen 'Range Check Error' zu umgehen? (die magische Grenze von 7F) Oder tritt dieser auf, weil die Zahl negativ interprätiert wird und man deswegen die Zahl in 4 bytes angeben müsste?
Wenn man die Face-Grafiken außerhalb der Message Box darstellt, wird der Text immernoch um 80 Pixel verschoben bzw. nach 240 Pixeln (ca. 38 Characters) abgetrennt. Es bleibt also immer diese 80x80 Pixel große Leere.
...
2k: 0x94936
2k3: 0xC7412
Die 50 gibt die X Anfangsposition für den Text an, also dezimal 80.
** X und Y bei Texteinträgen sind die relative Position zum Fensteranfang
**** Die Farbe wird aus eurem Systemset genommen, die Nummer zwischen 1 und 20 müsst ihr Hex umwandeln (0x00 bis 0x13)
****** VocabStrings haben eine 4byte-ID (von denen nur 2 Byte wegen des genutzten Datenbereiches wirklich relevant sind)
Für VocabStrings hab ich mal eine Liste angelegt, die Namen hab ich mir manuell zur Übersicht ausgedacht:
--
Solange es hier falschzitierende Ärsche gibt, dulde ich keinerlei Zitatboxen, die von mir sein sollen.