Vorab:
Es tut mir leid, dass ich jetzt einen neuen Thread erstellt habe, zum eigentlich selben Thema.
Aber da ich im anderen einiges durcheinandergeworfen habe, könnte das sehr verwirrend sein, da ich jetzt wieder neue Ansätze zur Lösung meines Problems habe, was insgeamt zu einer Hemmung von konstruktiven Antworten führen würde.
Diese Ansätze will ich dann aber auch gradlienig durchführen.
Der andere Thread kann geclosed werden. Und nochmal: Entschuldigung, ich habe nicht vor das Board zuzumüllen und es wird auch nicht nochmal vorkommen.
Aufgabe
Das Compilieren des Spirit of Half-Life SDKs (ich habe diesmal SOH genommen, in der Hoffnung, dass es sogar insgesamt aktueller, als die 2.3er des Half-Life SDKs ist).
Die aktuellste Version von SoH gibt es hier
Bisher unternommen
Hab alle genannten Sachen also installiert. Beim Visual C++ Express hab ich dann eingestellt, dass der auch im Include-Pfad vom Platform SDK gucken soll, weil dem sonst einige Header, wie die windows.h fehlen.
Dann wollte ich nochmal compilieren, aber es traten viele Warnungen und 6 fehler auf.
Deshalb hab ich dann zusätzlich den Include-Ordner vom C++ Toolkit 2003 im VC++ Express geadded. Dann waren die Warnungen weg und die Fehlerzahl reduzierte sich auf 5.
Das sind folgende:
...\dlls\doors.cpp(422) : error C3867: 'CBaseDoor::DoorTouch': function call missing argument list; use '&CBaseDoor::DoorTouch' to create a pointer to member
...\dlls\effects.cpp(3976) : error C3867: 'CBaseEntity::SUB_Remove': function call missing argument list; use '&CBaseEntity::SUB_Remove' to create a pointer to member
...\dlls\effects.cpp(4010) : error C3867: 'CBaseEntity::SUB_Remove': function call missing argument list; use '&CBaseEntity::SUB_Remove' to create a pointer to member
...\dlls\genericmonster.cpp(314) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
...\dlls\plats.cpp(2541) : error C3867: 'CBaseToggle::LinearMoveNow': function call missing argument list; use '&CBaseToggle::LinearMoveNow' to create a pointer to member
So, ich hoffe, es kann mir jemand helfen!
Und danke!
____________________________________
MfG Supervisor
[Beitrag wurde 1x editiert, zuletzt von Supervisor am 08.11.2005, 15:21]
Thx erstmal, hast mir schon sehr geholfen. Der Compiler hat zwar das auch so ähnlich vorgeschlagen, aber ich hatte jetzt irgendwie Schiss, dass ich noch mehr Fehler reinmach.
Nur noch zwei Fehler:
if (m_pfnThink LinearMoveNow)
hab ich in
if (m_pfnThink (&CBaseToggle::LinearMoveNow))
geändert.
Da meckert der aber irgendwie. Wahrscheinlich ist das falsch!?
Und halt noch den Fehler 314. Ich will das endlich fettichbekommen, jetzt wo auch noch VC++ EE for free ist, wäre das ein echter Glücksfall.
Bin noch grad am testen...aber wenn man beim Fehler 314 in der Zeile den Datentyp Integer, also int davor setzt funktioniert das. Bekomme nun am Ende den folgenden Error:
error PRJ0019: A tool returned an error code from "Performing Custom Build Step"
Dieser LinearMoveNow Error erscheint bei mir nicht, sollte klappen wenn du die zwei inneren Klammern enfernst.
[Beitrag wurde 5x editiert, zuletzt von 505050.20 am 08.11.2005, 19:36]
Ok, hab auch die == vergessen, hab ich grad mal so festgestellt.
Hm, bleibt die Frage, was wir gegen letzteres tun.
Wenn ich int dahinsetze bekomme ich allerdings nen Link-Fehler. Hm, mal gucken, ob der Linker auch nichts vermisst.
Hm, kann doch nicht sein...bei mir macht der gon (egon.cpp) Probleme. Da steht:
.\debughl\egon.obj : fatal error LNK1136: invalid or corrupt file
Und tatsächlich, wenn ich die Objekt-Datei in VC++ öffne, ist die leer.
Hm, mal alles neu erstellt und hab jetzt den Link-Fehler weg, aber dafür den selben, wie du...
EDIT zum 3ten: Hm, die spirit.dll ist trotzdem erstellt worden, dafür ist sie ein wenig groß. Ich glaub nicht, dass das funzt, ich teste das mal eben...
____________________________________
MfG Supervisor
[Beitrag wurde 3x editiert, zuletzt von Supervisor am 08.11.2005, 20:10]
Das einzige, was mich wundert ist, dass die Datei über 2 MB groß ist. Beim Spirit-Mod ist die nämlich gerade mal um wie >1 MB groß. Der komprimiert da wohl was nicht richtig!?
//edit: Achja, der sagt ja, dass der die Datei nicht finden kann. Ich glaube das liegt daran, dass die als Projekt hl angegeben ist, aber als spirit.dll erstellt wird.
Aber nochmal Danke und gute Arbeit. Ich glaube, du hast dir heute gut 10 Punkte verdient!
____________________________________
MfG Supervisor
[Beitrag wurde 2x editiert, zuletzt von Supervisor am 08.11.2005, 20:18]
Was die Dateigröße betrifft: Hast du die DLL als Debug oder Release compiliert?
Steht standardmäßig auf Debug und ist in den Projekteigenschaften zu finden. Debug wirft aber deutlich größere DLLs aus.
Danke für die Info Koraktor. Hab mich schon gewundert...aber irgendein Unterschied musste ja zwischen den Compile-Methoden bestehen.
Edit: Tatsache. Die DLL ist auf 1.10 MB geschrupft. Ist allerdings immer noch größer, als die DLL vom Spirit-Mod. Ist das schlimm oder kann man damit leben, solange alles funktioniert?
____________________________________
MfG Supervisor
[Beitrag wurde 1x editiert, zuletzt von Supervisor am 08.11.2005, 22:41]
Klar kann man damit leben, wenn alles geht.
Wird wohl an unterschiedlichen Compilern / Libraries liegen. Vielleicht auch am unterschiedlichen Quellcode, wenn die andere compilierte Version z.B. etwas älter ist.
Hab jetzt nochmal alles Ingame getestet. Die Map von Hl1 (c01a) aus der Konsole geladen. Scheint alles so weit rund zu laufen. Nur kann ich aus irgendeinem Grund die Mikrowelle in der Küche von Sektor: C nicht mehr hochgehen lassen. Dann hab ich nochmal meine DLL gegen die bereits fertige ausgetauscht und da ging dies. Seltsam....
Und ja, es müsste sich um die selbe Version handeln, was den Source Code und das bereits kompilierte betrifft. Aber wenns weiter nichts ist. Lässt mir natürlich jetzt Bedenken aufkommen, ob eventuell gravierendere Sachen sich später im Laufe des Spiels bemerkbar machen....
Hm, leider sind mir im Nachhinein doch einige Fehler begegnet, die zwar nicht direkt auffallen, aber alles andere als minimal oder unwichtig zu bezeichnen sind. Z.B. ich wende die Benutzentaste auf einen NPC (zB. den Wachmann Barney) an und laufe gegen ihn, sodass er sich umdreht und zurückläuft, bis da die Wand kommt und er nicht weiter zurück kann. Jetzt taucht auf einmal so ein komisches Sprite in Form eines kurzen Funken auf wie beim env_spark. Ich weiß nicht was das soll. Es kann ja wohl nicht sein, dass der Compiler jetzt da so ne Scheiße produziert bzw. den Code vermurkst. An den Änderungen die keepON und ich vorgenommen haben kann das ja wohl kaum liegen.
Aber irgendwie ist das mal wieder typisch. Ich meine, ich hab ja unendlich Bock mich mit so nem Kack rumzuärgern. Anstatt das ich nun den Code erweitern kann, muss ich jetzt erst gucken, wie ich diese Bugs rausbekomme. Irgendwo kann das doch alles nicht mehr wahr sein.
____________________________________
MfG Supervisor
[Beitrag wurde 1x editiert, zuletzt von Supervisor am 14.12.2005, 19:14]
Das Problem ist leider völlig unabhängig von den info_nodes. Ich habs ja mit der bereits vom Entwickler kompilierten spirit.dll getestet und da ist das nicht so, nur bei mir. Das konfuse ist allerdings, dass der Bug nur auftritt, wenn ich nen NPC (z.B. nen Barney) vorher per Benutzen-Taste sage, dass er mitkommen soll. Sobald der dann an ner Wand ist und natürlich mir nicht mehr nach hinten ausweichen kann taucht da eben dieses komische Sprite auf.
Edit: Mir ist gerade aufgefallen, dass das Sprite auch manchmal bei anderen Situationen (aber immer genau über dem NPC, egal ob Barney, Scientist, etc) erscheint. Ein Zombie schlägt Barney, dieser führt diese taumelnde Animation aus und im selben Augenblick erscheint es (aber immer nur für wenige Millisekunden). Strange....
Irgendiwe ist das alles richtig niederschmetternt für meine Psyche.
Ich glaub ich muss mir einen trinken. Gut, Alkohol ist keine Antwort, aber man vergisst ja bekannter Maßen beim Trinken die Frage..oder wie heißt das so schön?
Hoffe natürlich immer noch auf Hilfe von euch. Sonst schreib ich dem Entwickler mal ne Mail...
____________________________________
MfG Supervisor
[Beitrag wurde 2x editiert, zuletzt von Supervisor am 14.12.2005, 21:14]