Erstens mal ist da auch das Problem mit dem Müll am Ende von Stringparametern von Comments gefixt, und zweitens gibt es jetzt zwei Arten von Direktpatches:
1) IPS-Dateien
Ganz simpel: Ihr legt einen Ordner "DynPatches" an und schmeißt da einfach alle IPS-Dateien rein. Die Patches werden dann ohne RPG_RT.exe-Modifikation "on-the-fly" angewendet, d.h. das Entfernen eines Patches ist ganz einfach - nur die Datei wieder löschen (oder die Dateiendung umbenennen)!
Beispiel für eine sinnvolle Anwendung wäre z.B. BetterAEP als IPS-Datei: http://share.cherrytree.at/showfile-10054/betteraep.ips
Der PicPointerPatch liegt beispielsweise schon von Haus aus als IPS-Datei vor, da reicht reinkopieren.
2) "Quick Patches"
Für ganz kleine Patches ist es fast zu viel verlangt, eine IPS-Datei zu erzeugen, außerdem gibt es ja solche wo der Benutzer einen Wert (z.B. eine Koordinate) selber einstellen können soll. Dazu gibt es Quick Patches. Diese werden in die Section "QuickPatches" in der DynRPG.ini geschrieben und haben folgendes Format:
BeliebigerName=Adresse,Daten,Adresse,Daten,...
Die Adresse ist eine hexadezimale VA, die Daten können drei Formen haben:
a) Hexstring: Eine Aneinanderreihung von Bytes in Hexadezimalschreibweise (Leerzeichen werden ignoriert und können also zur Übersicht verwendet werden). Beispiel: 49E148,EB71 - schreibt die 2 Bytes EB 71 an Adressen 49E148 und 49E149.
b) Dezimale Zahl mit %-Prefix: Schreibt ein Byte an die angegebene Adresse, die Zahl ist dabei nicht hexadezimal angegeben (negative Zahlen möglich). Beispiel: 49E0BC,%48 - schreibt ein Byte 30 an Adresse 49E0BC.
c) Dezimale Zahl mit #-Prefix: Schreibt einen 32-Bit-Integer an die angegebene Adresse, die Zahl ist dabei nicht hexadezimal angegeben (negative Zahlen möglich). Beispiel: 49E1F1,#270 - schreibt die 4 Bytes 0E 01 00 00 an Adressen 49E1F1-49E1F4.
b) und c) sind dafür gedacht dass man leicht selber Werte eintragen kann (also Expertenuser A gibt Ottonormaluser B so eine Patchzeile und User B braucht nur die Zahlen nach % bzw. # seinen Bedürfnissen anpassen ohne irgendwas hexadezimal umrechnen zu müssen, Bytes zu vertauschen oder sonstwas).
Hier ein Beispiel wie sowas aussehen kann:
(Hinweis zum Titelfensterbeispiel: Der Maker verwendet da die X-Koordinate für die Mitte des Fensters aber die Y-Koordinate für die obere Kante.)
mfG Cherry
PS: Wer Dateioffsets in virtuelle Adressen umrechnen will: Für Offsets 0 - 400 addieren wir 400000, für Offsets 400 - C9200 addieren wir 400C00, für Offsets C9200 - CD400 addieren wir 400E00. Also normalerweise braucht man nur 400C00 zu addieren.
--
Mir war nichtmal bewusst dass ich nominiert wurde, aber: Cool! Hälfte des Lobes muss aber unbedingt an Archeia!
Endlich kann ich die nutzlosen »end«-Token am Ende mancher Comment-Befehl rausschmeißen. Vor allem, weil diese dynloader.dll funktioniert - im Gegensatz zu der, die du damals mal gepostest hast. Ich glaube es war bei rmn. Diese hatte bei mir komischerweise nicht funktioniert, aber ich hatte mich dann nicht weiter damit auseinandergesetzt und einfach die »originale« weiter verwendet >.<
Auf jeden Fall zwei sehr geniale Features, muss ich sagen. Vor allem für Sachen, die sich so mit DynRPG nicht, oder noch nicht realisieren lassen =D
EDIT:
Cherry! Es gibt doch Probs mit der neuen dynloader.dll! Sie funktionierte in meinem Testprojekt mit dem ich die ganze Zeit rumgespielt habe perfekt. Als ich dann ein neues angelegt hatte und dort ein - auch mit der neuen dynloader.dll - funktionierendes PlugIn dort reingepackt habe, meldet mir DynRPG, dass die dll nicht geladen werden konnte. Dazu muss ich sagen, dass sich in meinem Testprojekt mehr als ein PlugIn und auch die ganzen Entwicklungsdaten befinden, in dem neu erstellten nicht. Aber wenn ich in das neue die alte dynloader.dll hineinkopiere, startet das PlugIn problemlos. Ich versuche das heute Abend mal genauer zu reproduzieren und geb' dir dann Bescheid.
EDIT2:
Das Problem tritt nur auf, wenn ich dieses eine PlugIn einzeln im »DynPlugins«-Ordner habe. Schiebe ich noch ein anderes dazu, dann funktioniert es o.O Mit der alten dynloader.dll funktioniert es sowohl einzeln, als auch mit anderen PlugIns.
PeAcE
MorDen
--
»Ein Traum kann auch die Wehmut nach der verlorenen Vergangenheit sein…«
»Manchmal ist eine Enttäuschung auch einfach nur das Ergebnis zu hoher Erwartungen.«
__________________________________________________________________________
gibt es eine Möglichkeit abzufragen ob eine Variable verändert wird? Zb. wenn der Wert der Variable durch "Memorize Position" verändert wird oder durch "Store Event ID"...
Das selbe gilt für "Change Event Location" wo der Wert nicht verändert sondern drauf zugegriffen wird.
--
Langzeitstudien an einer Universität in England haben ergeben, dass Homosexuelle die Signaturen anderer immer mit der Hand auf der Maus lesen.
Du brauchst sie jetzt nicht mehr wegzunehmen, es
ist eh schon zu spät....
gibt es eine Möglichkeit abzufragen ob eine Variable verändert wird? Zb. wenn der Wert der Variable durch "Memorize Position" verändert wird oder durch "Store Event ID"...
Das selbe gilt für "Change Event Location" wo der Wert nicht verändert sondern drauf zugegriffen wird.
...
Du könntest versuchen direkt die jeweiligen Kommandos abzufragen in onEventCommand. Das wäre zwar aufwändig, aber so hättest du die Möglichkeit festzustellen, wann mit einem solchen Befehl auf eine Variable zugegriffen wird.
PeAcE
MorDen
--
»Ein Traum kann auch die Wehmut nach der verlorenen Vergangenheit sein…«
»Manchmal ist eine Enttäuschung auch einfach nur das Ergebnis zu hoher Erwartungen.«
__________________________________________________________________________
Geht es dir darum zu wissen, was die Veränderung hervorgerufen hat? Weil wenn es nur wäre dass eine Veränderung einer bestimmten Variable stattfand, dann gibts ja genau dafür onSetVariable.
--
Mir war nichtmal bewusst dass ich nominiert wurde, aber: Cool! Hälfte des Lobes muss aber unbedingt an Archeia!
Ich habs heute geschafft mein 2k3-KS in einen "geht nicht weiter"-Zustand zu bringen. Das geht in dem man Monster und Helden hat, die quasi zur selben Zeit ihren Zug machen, dazu ist allerdings sehr exaktes Timing notwendig, ist mir bisher auch nur in dem derzeitigen Zustand gelungen. Dabei wird vom Monster die "Monster takes turn"-Eventseite ausgelöst, danach passiert nichts mehr, geht nicht weiter und kommt auch kein Angriff.
Wenn ich den maximalen Wert für RPG::battleSpeed reduziere ist es immer schwerer möglich den Fehler zu reproduzieren. Während des "geht nicht weiter"-Zustandes kommt der "Cancel"-Sound wenn ich Esc. drücke.
Nachdem ich jetzt ein bischen weiter rumprobiert hab bin ich von der Erkenntnis her trotzdem nicth weiter. Hab noch einn zwei Sachen rausgenommen, die ich in Verdacht hatte, aber es ändert nichts. Wenn Held&Monster gleichzeitig dran sind kommt man in den Zustand. Hab alle Tasten durchprobiert, nur Esc gibt den Cancel-Sound bei den anderen geschieht nichts.
Frage:
Ich hab den "AutoBattle Auswahl"-Entfernungspatch drauf. Könnte der im Kampfzyklus was umgeschmissen haben?
Edit:
Geil, ich hab 'nen Pandora-Bug xD Einmal gefunden geht er NIE WIEDER weg und tritt nun auch quasi dauernd auf. HAHAHA! Verfickte scheisse!
Okey, es scheint als ob der Tod des Helden auf Partyposition 1 (angenommen gezählt 1 bis 4 ) akut notwendig ist um im Folgezug das Monster zu verwirren O____o
Hey Cherry, sagmal in welchen der Patches ist das Entfernen des "Kampf-AutoBattle-Fliehen"-Fensters? Ich hab BetterAep-DynRPG und die volle Packung HyperPatcher3-Patches, keiner davon hat vom Namen her mit Autobattle zu tun.
denke gerade ein wenig auf den Möglichkeiten rum, ohne bisher etwas ausprobiert zu haben, und frage mich ob es möglich ist Events einer Map auf eine andere zu verschieben.
RPG::Map bietet „nur“ den Zugriff auf die aktuelle Map. Gibt es eine Möglichkeit, hier mit dem Name der Map auch auf andere zuzugreifen?
RPG::Map::events bietet Zugriff auf ein beliebiges Event der aktuellen Map. Mit der Kombination „Zugriff auf die Map per Name“ könnte der Zugriff auf alle Events des Spiels möglich sein. Wenn wir davon ausgehen, dass dies gehen kann, könnte dann ein Event einer beliebigen Map auf eine andere kopiert/verschoben werden?
Oder anders herum gedacht: Kann ein Event der aktuellen Map kopiert werden?
Du kannst dir maximal die Events zwischenspeichern, und wenn eine neue Map geladen wird, das Event dort platzieren. Andere Möglichkeit sehe ich dabei nicht, weil der Maker immer nur eine Map gleichzeitig im Speicher behält.
Du kannst dir maximal die Events zwischenspeichern, und wenn eine neue Map geladen wird, das Event dort platzieren. Andere Möglichkeit sehe ich dabei nicht, weil der Maker immer nur eine Map gleichzeitig im Speicher behält.
...
Das hört sich auch gut an. Ein "Durchschleifen" der Events von einer Map zur anderen sollte ja nich allzu Rechenintensiv sein.
Danke für den Zaunpfahlwink. Da probiere ich mal rum
@Cherry: Danke für den Hinweis. Bin noch immer auf der Suche nach der Ursache meines Bugs. Zwischenzeitlich habe ich herausgefunden, dass der Maker selbst einen Zugriffsfehler schmeissen kann wenn man unter (bisher nicht ausreichend definierten ) Umständen die Anzahl der Helden in der Party verringert.
EDIT: Hrm, wenn ich den Helden auf Position 0 sterben lasse, ihn dann aus der Party entferne und gleich wieder zufüge( also nach hinten sortiere ) löst das mein Problem scheinbar.