Fehler meinerseits: Die Addresse passt zwar auf vielen Versionen, aber nicht auf allen.
Hier ne Anleitung zum Finden der Addresse jetzt auf ALLEN Versionen:
Hier werden alle Stellen angezeigt, an denen LC auf die g_slzone zugreift. Dies ist die MapID. Uns wird also angezeigt, an welchen Stellen LC die MapID ausliest/benutzt.
Wichtig ist das, da LC die MapID mit den IDs der Dungeons/Tempel vergleichen muss, um zu wissen, ob wir in einem sind.
7. Wir öffnen also nun die Karte. Daraufhin kommen 2 neue Codestellen dazu.
Um die Stelle zu finden, die wir später patchen können, müssen wir uns den Code mal genauer anschauen. Dazu machen wir einen Rechtsklick darauf und wählen "Show this address in the disassembler".
D.h. der Wert der g_slzone (MapID) wird im sog. Register eax gespeichert (ähnlich einer Variablen in anderen Sprachen). Wir suchen also nach Operationen mit diesem Register.
Ein paar Zeilen weiter unten (nach ein paar anderen Operationen mit eax, die für uns nicht relevant sind) finden wir folgendes:
D.h. eax wird zuerst verglichen (cmp). Falls wir in einem Tempel/Dungeon sind, wird der nachfolgende Code übersprungen (Jump if Equal, damit könen if-Abfragen in ASM umgesetzt werden) bis _SFunc+8BE1. Genau dieser übersprungene Code ist aber für das Öffnen der Map verantwortlich. Wir müssen den jump if equal Befehl daher durch NOPs ersetzen (also Code der nichts macht). Die Addresse dieser Zeile ist es, die der Patcher braucht, um ebendiesen Befehl zu überschreiben.
Zählen wir nun die Bytes von der Stelle, wo eax die MapID zugewiesen wird, bis zum Jump if Equal, kommen wir auf 45. In Hex sind das 2D.
8. Zu der in "Find out what accesses" gefundenen Addresse müssen wir also 2D in Hex Form addieren. Das machen wir mit dem Windows Taschenrechner. Dazu Ansicht -> Programmierer und links Hex statt Dez auswählen.
Beispiel:
Code:
1038BCFC + 2D = 1038BD29
9. Die so berechnete Address in der "MapUnlocker.ini" mit "0x" davor einfügen und speichern.
Wenn das so ist, release ich doch gleich mal einen Map-Patch für alle Dungeons ab Level 100+ (Also ab Theo's Tomb).
Dieser ist erst einmal nur für EP2-Server geeignet!
Braucht man nicht unbedingt, aber ist halt ganz praktisch, wenn man sich irgenwo nicht auskennt. Außerdem werden Gruppenmitglieder auf der Map angezeigt.
Fehler meinerseits: Die Addresse passt zwar auf vielen Versionen, aber nicht auf allen.
Hier ne Anleitung zum Finden der Addresse jetzt auf ALLEN Versionen:
Hier werden alle Stellen angezeigt, an denen LC auf die g_slzone zugreift. Dies ist die MapID. Uns wird also angezeigt, an welchen Stellen LC die MapID ausliest/benutzt.
Wichtig ist das, da LC die MapID mit den IDs der Dungeons/Tempel vergleichen muss, um zu wissen, ob wir in einem sind.
7. Wir öffnen also nun die Karte. Daraufhin kommen 2 neue Codestellen dazu.
Um die Stelle zu finden, die wir später patchen können, müssen wir uns den Code mal genauer anschauen. Dazu machen wir einen Rechtsklick darauf und wählen "Show this address in the disassembler".
D.h. der Wert der g_slzone (MapID) wird im sog. Register eax gespeichert (ähnlich einer Variablen in anderen Sprachen). Wir suchen also nach Operationen mit diesem Register.
Ein paar Zeilen weiter unten (nach ein paar anderen Operationen mit eax, die für uns nicht relevant sind) finden wir folgendes:
D.h. eax wird zuerst verglichen (cmp). Falls wir in einem Tempel/Dungeon sind, wird der nachfolgende Code übersprungen (Jump if Equal, damit könen if-Abfragen in ASM umgesetzt werden) bis _SFunc+8BE1. Genau dieser übersprungene Code ist aber für das Öffnen der Map verantwortlich. Wir müssen den jump if equal Befehl daher durch NOPs ersetzen (also Code der nichts macht). Die Addresse dieser Zeile ist es, die der Patcher braucht, um ebendiesen Befehl zu überschreiben.
Zählen wir nun die Bytes von der Stelle, wo eax die MapID zugewiesen wird, bis zum Jump if Equal, kommen wir auf 45. In Hex sind das 2D.
8. Zu der in "Find out what accesses" gefundenen Addresse müssen wir also 2D in Hex Form addieren. Das machen wir mit dem Windows Taschenrechner. Dazu Ansicht -> Programmierer und links Hex statt Dez auswählen.
Beispiel:
Code:
1038BCFC + 2D = 1038BD29
9. Die so berechnete Address in der "MapUnlocker.ini" mit "0x" davor einfügen und speichern.
Braucht man nicht unbedingt, aber ist halt ganz praktisch, wenn man sich irgenwo nicht auskennt. Außerdem werden Gruppenmitglieder auf der Map angezeigt.
Gruppenmitglieder werden auch so in der Map+Radar Angezeigt.
Aber in Dungeons kann man die Map normal nicht öffnen, man sieht also nur die Gruppenmitglieder im Radar, die dicht neben dir sind.
Auf der Map siehst du alle, wenn du sie öffnen kannst.