|
-
G1 Inventar schließt bei Dialogaufruf nicht automatisch
Hi Leute,
ich habe festgestellt, dass es sich in G2 anders verhält mit Dialog aus Inventar heraus als in G1.
Genau gesagt habe ich Items, die Dialoge starten. Beispielsweise mein "Verstand" Item das das Herstellmenü für Häuser, Einrichtung etc. öffnet.
Die selben Funktionen haben in G1 und G2 unterschiedliche Auswirkungen. Während G2 das Inventar schließt, die Kamera normalisiert und den Player freezt, lässt G1 das Inventar offen, freezt den Player nur so halb, sodass man noch durch die Items scrollen kann und lässt es auch beim Schließen des Dialogs noch offen, allerdings verbuggt. Sodass man die Kategorie nicht mehr wechseln kann.
Ich möchte aber, dass das Inventar sich in G1 bei Dialogaufruf schließt.
Gibt es eine Enginefunktion, mit der ich das leicht hinkriege? Im Grunde muss ich nur in ner Schleife abfragen, ob der AIV_Invincible gerade aktiv ist und dann die gesuchte Funktion aufrufen. Nur welche ist das? Bitte da um Hilfe
"Das erinnert doch sehr erfreulich an das, was man sich als Gothicfan wünscht!"
-Korallenkette
-
In LoA schließen wir das Inventar mit
Code:
MEM_InsertKeyEvent(KEY_ESCAPE);
bisher habe ich noch keine Beschwerden gehört, dass bei manchen Spielern ESC etwas anderes macht / anders belegt ist
Ansonsten haben wir im Code noch diese Funktionen (alle Adressen G2):
Code:
//Inventory functions - Dummy/test
const int oCNpc__ReallyOpenInventory = 7742032;
func void Inv_Open(var int slf)
{
var oCNpc k; k = Hlp_GetNpc (slf);
var int i; i = 1;
CALL_IntParam (i);
CALL__thiscall (_@(k), oCNpc__ReallyOpenInventory);
};
const int oCNpc__ReallyCloseInventory = 7742480;
func void Inv_Close(var int slf)
{
var oCNpc m; m = Hlp_GetNpc (slf);
CALL__thiscall (_@(m), oCNpc__ReallyCloseInventory);
};
LeGo hat auch
Code:
const int oCNpc__CloseInventory = 7742483; //0x762413 Hook: Quickslots
Eventuell kannst du über den LeGo-Vergleich passende G1 Adressen finden (oder jemand anderes öffnet IDA für dich und schaut dort nach)
-
G1 NPC_CloseInventory
G1
Code:
FUNC VOID NPC_CloseInventory (var int slfInstance)
{
//006BB2F0 .text Debug data ?CloseInventory@oCNpc@@QAEXXZ
const int oCNPC__CloseInventory = 7058160;
var C_NPC slf;
slf = Hlp_GetNPC (slfInstance);
CALL__thiscall (MEM_InstToPtr (slf), oCNPC__CloseInventory);
};
-
OpenInventory G1: 0x006BB0A0 bzw 7057568
ACHTUNG! In Gothic 1 ist es OpenInventory(void) und nicht OpenInventory(int). Also kein Int param vorher.
CloseInventory G1: 0x006BB2F0 bzw 7058160
Den Hook von Lego verstehe ich nicht ganz, aber der sollte ... keine Garantie ... hier sein:
0x006BB2F4 bzw 7058164
Edit: Da war wohl jemand schneller ... kommt davon wenn man absurde Bugs in GTA3 hat
-
Sorry für das Off Topic. Aber was machst du denn da mit GTA 3?^^ Moddest du dafür?
-
-
Warum reversed er es denn, also was ist da das Ziel dahinter? Also hier steht zwar: "The aim of this project is to reverse GTA III for PC by replacing parts of the game one by one such that we have a working game at all times.", aber da erschließt sich mir noch nicht ganz, warum er das macht. Weil es sonst nicht mehr auf modernen Systemen läuft?
-
Einfach "aus Spaß". Er macht seit Jahren schon Sachen mit GTA, und da bei GTA3 diverse Sachen rumfliegen die beim reversen zum Teil helfen (PS2 Versionen haben irgendwelche debug infos, android dlls exporten fast alle Funktionsnamen), macht ers halt
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
|
|