Kompilieren funktioniert einwandfrei und tragen tut er den Hut auch.
Wenn ich nun ABER Speicher, egal wo in der Welt, das Spiel beende, es wieder starte und den eben erstellten Spielstand lade, gibt mir die Log.txt des GD3D11 Renderer's folgendes raus,
Code:
Info: World loaded, getting Levelmesh now!
Info: - Found 777270 polygons
Info: Extracting world
Info: Smoothing worldmesh normals...
Info: Process took 309ms
Info: Done extracting world!
Info: Reading Gothic-Config: invMaxColumns
Info: Reading Gothic-Config: invMaxRows
Info: Reading Gothic-Config: cameraLightRange
Info: Reading Gothic-Config: pickLockScramble
Info: Shutting down...
Habe dann gedacht das die gewählte Script .D für die integration falsch ist und habe es in der B_RefreshAtInsert.d probiert.
Dort endet das laden bei,
Code:
Info: World loaded, getting Levelmesh now!
Info: - Found 777270 polygons
Info: Extracting world
Info: Smoothing worldmesh normals...
Info: Process took 309ms
Info: Done extracting world!
Info: Reading Gothic-Config: invMaxColumns
Info: Reading Gothic-Config: invMaxRows
Info: Shutting down...
Hat jemand mit dieser Meldung erfahrung?
Was veranlasst plötzlich das Spiel diesen eintrag auf TRUE zu verlangen?
Und warum nicht beim Kompilieren?
Natürlich lässt es sich beheben in dem man in der Gothic.ini pickLockScramble auf True (1) stellt.
Aber das wollte ich jetzt nicht unbedingt da es ohne die Eqiup_Item function ja läuft.
Achso und "invMaxRows" ist in der Gothic.INI auf "=0"
Nur noch eben so nebenbei (keine Ahnung woran der Fehler liegt), aber pickLockScramble ist kein bool, sondern ein int, bis zu welcher Länge des Strings die Kombination "gescrambled" werden soll. 1 sollte also keinen wirklichen Effekt haben, es sei denn irgendeine Kiste hat einen pickLockStr mit Länge 1, also R oder L - also 0 machts schon aus, aber 1 nicht einfach so "an". Bei 2 wirds entweder LR, LL, RL oder RR sein, usw.
Insofern könnte auf 1 stellen nen quick & dirty fix sein ... wobei das schon wie ne wirklich sehr komische Sache wirkt. Geht wohl eher irgendwas völlig anderes kaputt, und das ist nur nen Zufallgsprodukt. Crasht das Spiel denn? Mal im zSpy geguckt?
So wie ich das im G3D11 source code nachverfolgen kann, crasht nicht der D3D11 renderer, sondern Gothic 2, und der renderer hat die exit func von G2 gehooked und gibt dann "Shutting down" aus.
Insofern könnte auf 1 stellen nen quick & dirty fix sein ... wobei das schon wie ne wirklich sehr komische Sache wirkt. Geht wohl eher irgendwas völlig anderes kaputt, und das ist nur nen Zufallgsprodukt. Crasht das Spiel denn? Mal im zSpy geguckt?
So wie ich das im G3D11 source code nachverfolgen kann, crasht nicht der D3D11 renderer, sondern Gothic 2, und der renderer hat die exit func von G2 gehooked und gibt dann "Shutting down" aus.
Danke dir für die Erklärung zu den einzelenen Stufen des commands.
Werde damit mal experimentieren wenn alles soweit fertig ist^^
Der Fehler kommt wirklich nur wenn ich Equip_Item an das ende der Story_Globals.d schreibe.
Eben noch einmal zur vergewisserung eingefügt, kompiliert, gestartet, gespeichert, beendet, gestartet, geladen, absturtz.
ZSpy gibt das aus:
Wo/Wann initialisierst du denn Ikarus?
Falls du das in der Init_Global machst ist das evt. zu spät(beziehungsweise die Verwendung von Equip_Item in der Initialisierungsfunktion des NPCs ist dann zu früh).
Wo/Wann initialisierst du denn Ikarus?
Falls du das in der Init_Global machst ist das evt. zu spät(beziehungsweise die Verwendung von Equip_Item in der Initialisierungsfunktion des NPCs ist dann zu früh).
Man kann allerdings die Zeile
Code:
MEM_InitAll();
in die Equip_Item Funktion einfügen, dann funktioniert's.
Wo/Wann initialisierst du denn Ikarus?
Falls du das in der Init_Global machst ist das evt. zu spät(beziehungsweise die Verwendung von Equip_Item in der Initialisierungsfunktion des NPCs ist dann zu früh).
Also so übermäßig ahnung von den Sprachen habe ich nicht!
Ich mache meine Ändrungen in LHiver DE 1.7.04 + meinen patch, C!
Habe wie gesagt mehrere .d Scripts probiert, nicht nur die zwei genannten. Sogar eine neue in verschiedene Ordner hinzugefügt, vergebens. Jedoch muss ich auch bei LHiver DE 1.7.04 die Startup.d am ende der SRC file stehen lassen. Hatte auch schon einen urplötzlichen fehler von wegen, er könne die "func void startup_global()" nicht finden. Musste darauf die reihenfolge einmal ändern (neuen Fehler produzieren) und eine leerzeile/zeilenumbruch in der Gothic.src am ende einfügen damit dieser Fehler verschwindet. Aber das, ist eine andere Geschichte!
Ich habe gelesen das die .d scripts von unten anch oben geschrieben werden. Bzw. unteres ist der erste Dialog. Ich vermute mal das es genauso bei der Gothic.SRC gehandelt wird? Letzterer eintrag ist erste kompilierte datei?
Zitat von Lehona
Man kann allerdings die Zeile
Code:
MEM_InitAll();
in die Equip_Item Funktion einfügen, dann funktioniert's.
Die erweiterung (hier in meinem fall duplizierung) von @Lehona funktioniert einwandfrei mit Starten, Neues Spiel, Speichern, Beenden, Starten, laden, Spielen!
Dqanke auch dir @Cryp18Struct für den Hinweis. Würde mich schon interessieren in welches script die function geschrieben werden müsste ohne duplicate?
Die LHiver 1.1 bzw. 1.7? Gothic.src mit meinen hinzugefügten scripts.
//AI\AI_Intern\
B_RefreshAtInsert.d //Regeneration und Fix für Kopf-Helm clipping fehler
Player_Plunder_Is_Empty.d //Keine Anzeigen für geplünderten oCMob
NPC_Plunder_Is_Empty.d //Keine Anzeigen für geplünderten oCMob
//AI\Human\C_Human\
C_PlayerHasFakeGuild.d //Gildenzugehörigkeit für Rüstungen
C_PlayerIsFakeBandit.d //Rüstungen Gildenzugehörigkeit für Banditen
C_PlayerIsFakePirate.d //Rüstungen Gildenzugehörigkeit für Piraten
//Items\
IT_Mod_Melee_weapons.d //Fake Waffen beschworene +normale Skelette, Goblins (Story\NPC\Monster)
IT_Mod_Misk.d //Angel und Zweig für Lagerfeuer Items
IT_Mod_Armor.d //Alle neuen Rüstungen
//IT_Mod_Helmets.d //Verschiedene Helme inkl. Helmy z M&B
IT_Mod_Written.d //Bücher zum erlernen von Magie Kreisen und Runen (Story\Dialog_Mobsis)
//Story\B_GiveTradeInv\ //Verteilung von Kreis und Runen Bücher auf Händler
B_GiveTradeInv_Addon_Cronos_ADW.d //Cronos in Jharkendar
B_GiveTradeInv_Addon_Cronos_NW.d //Cronos in Khorinis
b_givetradeinv_anselm.d //Anselm in Khorinis, Hafenvirtel (LHiver)
B_GiveTradeInv_Gorax.d //Gorax in Khorinis, Kloster
B_GiveTradeInv_Brahim.d //Khorinis, Hafenvirtel, Alte Minentalkarte
//Story\B_Story\
B_Statusanzeige2.d //Deaktivierung von Gold, Lernpubkte, XP und Tagebucheintrag
//Erinnerung zum Speichern erhöht, von 13000 auf 103000
B_Schleife_Regeneration.d //HP und Mana Regeneration bis level 25, AI\AI_Intern\B_RefreshAtInsert
//**************************************PrintScreen Größen- und positionsänderung
-B_BlessAttribute.d
-B_GiveInvItems.d //Item erhalten
-B_GivePlayerXP.d //Stufenaufstieg und Erfahrungspunkte
-B_LogEntry.d //Neuer Tagebucheintrag
-B_RaiseAttribute.d //
-B_RaiseFightTalent.d //
-B_TeachAttributePoints.d //
-B_TeachFightTalentPercent.d //
-B_TeachMagicCircle.d //
-B_TeachPlayerTalentAlchemy.d //
-B_TeachPlayerTalentForeignLanguage.d //
-B_TeachPlayerTalentRunes.d //
-B_TeachPlayerTalentSmith.d //
-B_TeachPlayerTalentTakeAnimalTrophy.d //
-B_TeachPlayerTalentWispDetector.d //
-B_TeachThiefTalent.d //
//**************************************Welten Name bei Portal/Levelwechsel
B_Enter_AddonWorld.d
B_Enter_DragonIsland.d
B_Enter_NewWorld.d
B_Enter_OldWorld.d
//Story\Dialog_Mobsis\
//B_OnHotkey.d //Sprint function ersetzt Heiltrank schnelltaste Mana-DEAKTIVIERT
B_RefuseAction.d //Keine Anzeigen für fehlende Schlüssel und Dietriche
Mod_BookstandRunes.d //on_equip function für Runen Lehrbücher
Mod_BookstandCircle.d //on_equip function für Magie Lehrbücher
-Goldhacken.d //PrintScreen änderung für Gold abbauen
-MakeRune.d //PrintScreen änderung für Runentisch, Schadensberechnung von verbesserten Runen gefixt
-PotionAlchemy.d //PrintScreen änderung für Trank herstellung
-PrayIdol_Addon.d //PrintScreen änderung für Beliar Schrein
-PrayShrine.d //PrintScreen änderung für Innos Schrein
-SleepABit.d //System und Dialog-Anzeige geändert
-SmithWeapon.d //PrintScreen änderung für Schmieden
//Story\G_Functions\
-G_PickLock.d //PrintScreen Größen- und positionsänderung für Schlösser knacken
//Story\Dialoge\
DIA_AddonBAU_4300_Cabalorn.d //Garderüstung nach Ornament/Paladin Quest
DIA_KDF_500_Pyrokar.d //Änderung der bedingungen für 6.Kreis der Magie
DIA_KDF_503_Karras.d //Änderung der bedingungen für 4-5.Kreis der Magie
DIA_KDF_504_Parlan.d //Änderung der bedingungen bis 3.Kreis der Magie
DIA_NONE_100_Xardas.d //Addon Intro dilaoge statt .bik video
//Schwert für start hilfe
//Schwierigkeitsgrad Namensänderung für Vanilla
//Start Dialoge von Marcello verkürzt und logisch korriegert
DIA_NONE_ADDON_115_Eremit.d //Klamotten für Quest korrigiert und ziegt diese gleich an
DIA_PAL_200_Hagen.d //Änderung der zu erhaltenden Rüstungen
DIA_PIR_1362_Addon_Bones.d //Übergibt Schwere G1 Banditenrüstung nach Lagerabschluss
DIA_PIR_1320_Addon_Greg.d //Übergabe von Itar_Pir_M geändert und Itar_PIR_L hinzugefügt
DIA_VLK_409_Zuris.d //Zuris Mod
//Story\NPC\Monster\
MST_Gobbo_Black.d //Fake Waffen für erhöhten Schwierigkeitsgrad
MST_Gobbo_Green.d //Fake Waffen für erhöhten Schwierigkeitsgrad
MST_Gobbo_Skeleton.d //Fake Waffen für erhöhten Schwierigkeitsgrad und gegen Gold Exploit
MST_Skeleton.d //Fake Waffen für erhöhten Schwierigkeitsgrad und gegen Gold Exploit
Habe wie gesagt mehrere .d Scripts probiert, nicht nur die zwei genannten. Sogar eine neue in verschiedene Ordner hinzugefügt, vergebens. Jedoch muss ich auch bei LHiver DE 1.7.04 die Startup.d am ende der SRC file stehen lassen. Hatte auch schon einen urplötzlichen fehler von wegen, er könne die "func void startup_global()" nicht finden. Musste darauf die reihenfolge einmal ändern (neuen Fehler produzieren) und eine leerzeile/zeilenumbruch in der Gothic.src am ende einfügen damit dieser Fehler verschwindet. Aber das, ist eine andere Geschichte!
Ich habe gelesen das die .d scripts von unten anch oben geschrieben werden. Bzw. unteres ist der erste Dialog. Ich vermute mal das es genauso bei der Gothic.SRC gehandelt wird? Letzterer eintrag ist erste kompilierte datei?
Nö, das wird schon von oben nach unten kompiliert, allerdings muss die letzte Zeile eben leer sein. Dass die Dialoge evtl. von "unten nach oben" geschrieben sind, hat keinen tieferen Sinn als vielleicht die interne Organisation seitens der PBs.
Zitat von Illari
Die erweiterung (hier in meinem fall duplizierung) von @Lehona funktioniert einwandfrei mit Starten, Neues Spiel, Speichern, Beenden, Starten, laden, Spielen!
Doch mich würde schon interessieren in welches script die function geschrieben werden müsste ohne duplicate?
Es gibt irgendeine Funktion die heißt "InitPerceptions" oder so, die wird wirklich ganz am Anfang ausgeführt, wenn du es da reinschreibst, sollte das auch hinhauen. Kann aber auch ruhig in der Equip_Item stehen bleiben, das ist nicht so schlimm.
Nö, das wird schon von oben nach unten kompiliert, allerdings muss die letzte Zeile eben leer sein. Dass die Dialoge evtl. von "unten nach oben" geschrieben sind, hat keinen tieferen Sinn als vielleicht die interne Organisation seitens der PBs.
Es gibt irgendeine Funktion die heißt "InitPerceptions" oder so, die wird wirklich ganz am Anfang ausgeführt, wenn du es da reinschreibst, sollte das auch hinhauen. Kann aber auch ruhig in der Equip_Item stehen bleiben, das ist nicht so schlimm.
Danke für die Tipps zur anordnung und kompilierung.
Aber ich habe einen neuen Fehler/glitch gefunden. Er verhindert jetzt auch nicht das Durchspielen. Doch wenn ich ein Neues Spiel starte und alles bis zum Eingangstor von Khorinis spiele, stehen plötzlich 4 Pladine im Eingang, mit dem Gesicht zur Stadt. Sind auch nur welche denen ich die Helme via func zugeschrieben habe. Laufe ich nun zu Lobarts Hof zurück, bis die Paladine außer Sichtweite sind und dann zurück, sind sie verschwunden. Oder sie stehen im Eingangstor, ich laufe bis zum Hafen runter, wieder zurück zum Einganstor und sie sind auch verschwunden. Habe jetzt mal die vermutung das dies durch den zusatz des MEM_InitAll(); Befehls kommt.
Das muss ich wohl doch etwas spezifischer in bestimmte Scripts integrieren bzw. diese Equip_Item function in eine seperate skript datei schreiben. Obwohl ich mir vielleicht auch noch die mühe machen würde und mich mal mit dem kombinieren von Rüstung und Helmen in Blender oder 3DSMax beschäftigen würde.
Danke dennoch an alle Member für die bisherige Hilfe
Ich habe gelesen das die .d scripts von unten anch oben geschrieben werden. Bzw. unteres ist der erste Dialog. Ich vermute mal das es genauso bei der Gothic.SRC gehandelt wird? Letzterer eintrag ist erste kompilierte datei?
[...]
Würde mich schon interessieren in welches script die function geschrieben werden müsste ohne duplicate?
Zitat von Illari
Habe jetzt mal die vermutung das dies durch den zusatz des MEM_InitAll(); Befehls kommt.
Das muss ich wohl doch etwas spezifischer in bestimmte Scripts integrieren bzw. diese Equip_Item function in eine seperate skript datei schreiben.
A: Du scheinst ein ziemlich krasses Missverständnis zu haben was den Parser angeht.
Die Idee das sich ingame irgendetwas ändert weil eine Funktion in der "falschen" .d Datei definiert ist, ist absurd.
Die .d Dateien welche in der .src Datei angegeben sind werden in der dort angegebenen Reihenfolge von oben nach unten eingelesen und verarbeitet.
Es gibt da nur 2 Möglichkeiten:
1. Du verwendest eine Funktion bevor sie definiert wurde(Funktion ist in Datei A.d definiert, wird in B.d aufgerufen und der Parser liest Datei B.d zuerst ein).
Das führt dann dazu das sich Gothic überhaupt nicht starten lässt weil der Parser dir eine Fehlermeldung entgegen schmeisst.
2. Du verwendest eine Funktion nachdem sie definiert wurde(Funktion ist in Datei A.d definiert, wird in B.d aufgerufen und der Parser liest Datei A.d zuerst ein).
Dann lässt sich das Spiel starten und der Parser beschwert sich nicht das die Funktion nie definiert wurde.
B: Was anderes wegen Mem_initAll():
Du verwendest Befehle die im Skriptpaket Ikarus definiert sind bei diesem Aufruf einer engine Funktion:
Falls Ikarus nie initialisiert wurde, führt das zu einem Spielabsturz (Ikarus muss einiges an kram "vorbereiten" bevor die Funktionen genutzt werden können).
Deshalb gab es den Absturz beim laden eines Spielstandes. Das hatte nichts mit den Werten aus der .ini wie pickLockScramble zu tun.
C: Was dein neues Problem mit den Paladinen angeht ist das wahrscheinlich nochmal eine ganz andere Geschichte. Hier wäre es interessant das Skript zu sehen wo der NPC definiert wird. Möglicherweise hast du da versehentlich den Tagesablauf kaputt gemacht oder so.
A: Du scheinst ein ziemlich krasses Missverständnis zu haben was den Parser angeht.
Die Idee das sich ingame irgendetwas ändert weil eine Funktion in der "falschen" .d Datei definiert ist, ist absurd.
Okay, ich muss das dann wohl nochmal alles kontrollieren. Habe zwar früher schon einige sachen in Gothic gemacht aber dieses Jahr ist irgendwie kein gutes dafür!
Obwohl ich auch immer gar kaum neue skripte hinzufüge.
Aber nach deiner langen beschreibung wird da wohl auch irgendwo der Fehler liegen warum ich die Angel aus der MDB nicht verwenden kann.
Zitat von Cryp18Struct
C: Was dein neues Problem mit den Paladinen angeht ist das wahrscheinlich nochmal eine ganz andere Geschichte. Hier wäre es interessant das Skript zu sehen wo der NPC definiert wird. Möglicherweise hast du da versehentlich den Tagesablauf kaputt gemacht oder so.
Nein der Tagesablauf ist normal und unverändert. Alles was ich einem NPC hinzugeschrieben habe waren zwei neue zeilen. Ich habe diese variante jeden falls irgendwie schon für mich abgeschrieben und glaube es wäre einfacher die zwei helme direkt via Model Editor auf die Rüstungen zu montieren. Ich besitze meine veränderten Scripts auch als Backup und habe allen Paladinen erstmal wieder die standard Rüstung geben und siehe da, niemand im Eingangstor. Hier aber mal das Skript der Pal_204_Torwache. Einer von vier NPC's die im Tor standen. Will das ja auch nicht so im Raum stehen lassen.
Nein der Tagesablauf ist normal und unverändert. Alles was ich einem NPC hinzugeschrieben habe waren zwei neue zeilen. Ich habe diese variante jeden falls irgendwie schon für mich abgeschrieben und glaube es wäre einfacher die zwei helme direkt via Model Editor auf die Rüstungen zu montieren. Ich besitze meine veränderten Scripts auch als Backup und habe allen Paladinen erstmal wieder die standard Rüstung geben und siehe da, niemand im Eingangstor. Hier aber mal das Skript der Pal_204_Torwache. Einer von vier NPC's die im Tor standen. Will das ja auch nicht so im Raum stehen lassen.
Okay, da war ich dann voreilig. Ist auf jeden Fall ein eher mysteriöses Symptom was du da im Spiel siehst.
Wilde Idee: Vielleicht ist es ein Problem Equip_Item aufzurufen bevor dem NPC ein visual gegeben wurde.
Du könntest testweise mal die Reihenfolge hier vertauschen,
Statt
Okay, da war ich dann voreilig. Ist auf jeden Fall ein eher mysteriöses Symptom was du da im Spiel siehst.
Wilde Idee: Vielleicht ist es ein Problem Equip_Item aufzurufen bevor dem NPC ein visual gegeben wurde.
Du könntest testweise mal die Reihenfolge hier vertauschen,
....
Einfach um zu schauen ob das einen Unterschied macht.
Ich werde mal alle umschreiben und schauen. Wäre super wenn ich das noch hinbekomme bevor ich das nächste Feature in angriff nehme.
Danke für die Antworten, Tipps und Hinweise. [Bild: s_065.gif]
Wenn es nochmal ein Problem macht werd ich mir was anderes ausdenken.