Mit "erster Analyse" meinte ich die Autoanalyse seitens IDA. Und um OldInstruction als Parameter aus den Hooks nehmen zu können, darf a) trotzdem bloß nach einer Instruktion gehookt werden, nicht inmitten (Anfang der Funktion ist damit natürlich in Ordnung und b) während der Hook-Instructions der Code wieder neu gebaut werden, die Rücksprungadresse überschrieben (Theoretisch muss ESP nicht den passenden Pointer halten!), die originale Rücksprungadresse merken, in der zwischengeschalteten Funktion den Code wieder hooken und danach zur originalen Rücksprungadresse springen. Nichts, worauf ich Lust habe, wenn Zerxes das eh in die Tabelle einfügt oder man auch eben IDA anwerfen kann (Wer's nicht hat und trotzdem Hooks nutzt, hat doch eh jemanden in einem IM, der es hat :0 ).
So, ich habe nun die Anzahl der zu sicherenden Bytes für einen Hook in die dritte Spalte (HookData) eingetragen.
Es waren anscheinend keine Funktionen dabei, die kleiner als 5 Byte sind. ^^
EDIT: Das mit den "Funktionen < 5 Byte" nimm ich mal lieber zurück. Mein disassembler prüft nicht, ob die Funktion endet. Sollte aber (hoffentlich) nicht nötig sein.
Deutschland - "ein Gefängnis, das du weder riechen, noch schmecken, noch berühren kannst" [Bild: ssp-362-60.gif]
Hast du auch sicher gestellt dass du keine calls/jumps in diesen Bytes hast?
MfG Gottfried
Ich wusste doch - es war zu leicht... x]
Hab das nachgeholt, in der zusätzlichen Spalte "HookOffset", steht die relative Position an der gehooked werden kann.
Die Hook-Adresse ist also Funktionsadresse+HoofOffset.
Ein "-" bedeutet, dass die Funktion nicht gehooked werden kann, da sie z.B. zu kurz ist.
Deutschland - "ein Gefängnis, das du weder riechen, noch schmecken, noch berühren kannst" [Bild: ssp-362-60.gif]
Von mir auch ein dickes "Danke Zerxes".
Die Liste ist sehr hilfreich, vor allem für Leute die kein IDA verwenden (wollen)Ich wollte schon fragen ob er das erlaubt.. Erlaubt er es?
In den nächsten Tagen kommt sowieso die nächste Version raus, da passt diese Liste zur Aufwertung der Hooks super rein.
MfG Gottfried
Natürlich erlaube ich es, ist kein Problem.
Ich werde diese Woche noch eine 2. Liste für Gothic 1 erstellen.
Hätte ich schon früher getan, habe aber Gothic aktuell nicht installiert.
Deutschland - "ein Gefängnis, das du weder riechen, noch schmecken, noch berühren kannst" [Bild: ssp-362-60.gif]
Es ist vollbracht. Nun ist die neue Version 2.0 fertig und veröffentlicht.
Die Unterstützung von Sektenspinner (und diesmal auch ein wenig von Ingenieur) und unser Dank dafür sind ja beinahe Routine.
Obwohl es sehr lange gedauert hat waren wir nicht faul. (Gut, die ersten zwei Monate vielleicht. Oder drei. Mehr nicht!)
Dank PermMem konnten einige Pakete maßgeblich optimiert und verbessert werden. FF_ApplyExt mit beliebigem Zeitintervall (Trigger adieu!), Anim8 mit dem man beinahe vollwertige Mover zusammenschrauben kann, Views die auch nach einem Neustart noch existieren, Bloodsplats die keine Abstürze mehr erzeugen, und.. Also gut. Viel Spaß damit!
Hallo Gottfried, ich habe folgende Fehlermeldung, bei der Version 2.0
Code:
U:PAR:Undefined function:NEW (line 61)
zSpy sagt in der Datei FrameFunctions.d
das wäre dann folgende Funktion
Code:
var int hndl; hndl = new(FFItem@);
Ich hatte gerade schon eine Fehlermeldung bei der AI_FUNCTION ,aber das konnte ich durch die neuste Ikarus Version lösen.
Woran könnte das jetzt liegen? Die vorherige Version hat ohne Probleme geklappt.
Und noch eine Frage. Bei dem Bild "LeGo_PrintS.png" Bekomm ich sowas ,inetwa durch die Examples in der Interface.d Datei hin ,oder bin ich damit auf dem komplett falschen weg?
Wenn das doch so geht, Habt ihr dann einfach den Print in der Linkenecke ausführen lassen, dann nach oben wandern und dabei verblasen lassen?
Grüße und nochmals riesen Dank für dieses Wunderbare Paket!
Hallo Gottfried, ich habe folgende Fehlermeldung, bei der Version 2.0
Code:
U:PAR:Undefined function:NEW (line 61)
zSpy sagt in der Datei FrameFunctions.d
das wäre dann folgende Funktion
Code:
var int hndl; hndl = new(FFItem@);
Hast du deine Gothic.src angepasst? In der neuen Version müssen nicht mehr alle Dateien einzeln inkludiert werden sondern nur eine Header.src in der alle aufgelistet sind.
Ich hätte es vielleicht hier erwähnen sollen, steht aber auch im Changelog und in der neuen ReadMe.txt
Originally Posted by Fisk2033
Ich hatte gerade schon eine Fehlermeldung bei der AI_FUNCTION ,aber das konnte ich durch die neuste Ikarus Version lösen.
Ja, das neueste Ikarus ist eigentlich immer Pflicht.
Originally Posted by Fisk2033
Und noch eine Frage. Bei dem Bild "LeGo_PrintS.png" Bekomm ich sowas ,inetwa durch die Examples in der Interface.d Datei hin ,oder bin ich damit auf dem komplett falschen weg?
Wenn das doch so geht, Habt ihr dann einfach den Print in der Linkenecke ausführen lassen, dann nach oben wandern und dabei verblasen lassen?
Viel einfacher. Ein Aufruf der Funktion PrintS(string text) genügt, der Rest passiert von alleine. In LeGo 2 hat der Text allerdings eine andere Animation erhalten. Vielleicht wird diese nochmal abgeändert, momentan ist sie nur suboptimal da ich das Paket schnell fertig haben wollte..
Ich werd wohl die Tage noch eine neue Version davon zusammenschrauben.
Originally Posted by Fisk2033
Grüße und nochmals riesen Dank für dieses Wunderbare Paket!
Wie bestimm ich damit ,aber dann die Farbe? Hast du da vielleicht mal ein Beispiel o.ä.?
Ich seh zumindest nicht durch wie und wo ich die Farbe dann bestimme + Print Text
Es hilft immer die jeweilige Scriptdatei (hier Interface.d) anzusehen, dort sind oben alle Funktionen aufgelistet die enthalten sind + kurzer Erklärung.
PrintS_Ext(string text, int color) heißt die Lösung. Color bekommst du zB. mit RGBA(int red, int green, int blue, int alpha) (auch in Interface.d enthalten)
Um roten Text zu Printen könntest du es also so machen:
Code:
PrintS_Ext("Testprint", RGBA(255, 0, 0, 0));
alpha wäre hier 0 (also eigentlich durchsichtig), aber das macht nichts weil PrintS den Alphawert sowieso manipuliert.
Es scheint als gäbe es wieder ein Problem beim Levelchange, nur das es dieses mal nicht abstürzt sondern eine Messagebox erscheint.
Es scheint als verfüge G2 nicht die Rechte Files zu bearbeiten (?), obwohl ich als Admin starte. (Win 7)
[...][*]Views sind nun keine Pointer mehr sondern Handles
[...]
Heißt das Views, die mit LeGo 1.0.1 realisiert wurden, müssten komplett umgebaut werden?
@edeksumo: With LeGo 2.0 Views are no longer Pointers, but rather Handles. Maybe this is the reason for the crashes of the game and that's what I've asked above to the developers of LeGo.
Ich habe PermMem noch nicht benutzt, aber ich weiß genug darüber um die Bedeutung zu schätzen zu wissen. So etwas wie PermMem habe ich mir schon lange gewünscht. Und nun ist es auf Basis von HookEngine und BinaryMachines Realität geworden.
Ich glaube, dass auf Basis von PermMem einige sehr interessante Anwendungen entstehen können und werden, die zuvor nicht praktikabel waren.
Gratulation zum Release!
Ich werd wohl die Tage noch eine neue Version davon [PrintS] zusammenschrauben.
Originally Posted by Umfi
Es scheint als gäbe es wieder ein Problem beim Levelchange, nur das es dieses mal nicht abstürzt sondern eine Messagebox erscheint.
Es scheint als verfüge G2 nicht die Rechte Files zu bearbeiten (?), obwohl ich als Admin starte. (Win 7)
Erledigt und erledigt.
Es lag an einem Problem mit den Saves. Ich habe das behoben, war nichts ernstes.
Hatte es schon Lehona in ICQ geschrieben, bei mir funktioniert zur Zeit der Cursor nicht mehr seit der Umstellung, weil das Handle invalide sein soll, angezeigt wird mir das X allerdings, wird nur eben nicht mehr bewegt.
Das zweite Problem mit dem fehlerhaften Save sollte sich beheben lassen, wenn man bei Slot 0 eine Sonderbehandlung was den Ordner-Namen angeht einbaut, hab das mal eben gemacht, ist noch ungetestet:
Außerdem stellt es mir jetzt grad bei jedem Mal wo ich speichere die Sichtweite runter und ich muss die immer wieder per F4 auf Maximum setzen, ist auch nicht grad so toll.
€.Okay, habs durch bisschen rumschauen und verändern der Interface.d und einem Dialog, hinbekommen.
Es ist eigentlich nicht sehr klug die Quelldateien von Hand zu verändern. Besser du gibst uns durch was falsch ist und wir helfen dir das Problem zu finden/bauen deinen Fix ein.
In der 2.0.1 ist versehentlich die unfertige Version von der Interface.d gelandet, der von dir beschriebene Fehler wurde bereits behoben.
Wenn du willst dass der Text länger angezeigt wird solltest du die PrintS-Konstanten verändern und nicht die Funktion an sich.
Originally Posted by Bonne6
Hatte es schon Lehona in ICQ geschrieben, bei mir funktioniert zur Zeit der Cursor nicht mehr seit der Umstellung, weil das Handle invalide sein soll, angezeigt wird mir das X allerdings, wird nur eben nicht mehr bewegt.
Wie genau sieht dein Schnipsel aus? Wenn ich Cursor_Show/Hide verwende habe ich keine Probleme mit fehlenden Handles.
Der Cursor bewegt sich in der aktuellen Version nur wenn in den Optionen die Maus aus ist (seit Spielstart).
Leho und ich versuchen schon eine bessere Lösung zu finden, nur scheint das leicht knifflig zu werden. (Gothic macht da ordentlich murks)
Originally Posted by Bonne6
Das zweite Problem mit dem fehlerhaften Save sollte sich beheben lassen, wenn man bei Slot 0 eine Sonderbehandlung was den Ordner-Namen angeht einbaut, hab das mal eben gemacht, ist noch ungetestet:
Hab schon exakt dasselbe bei mir gehabt und getestet
Originally Posted by Bonne6
Außerdem stellt es mir jetzt grad bei jedem Mal wo ich speichere die Sichtweite runter und ich muss die immer wieder per F4 auf Maximum setzen, ist auch nicht grad so toll.
Das kann ich mir beim besten Willen nicht erklären. Steht dann auch in den Optionen ein niedrigerer Wert?