Zunächst sollte man sich die Funktionsweise von Metamod vor Augen führen. daRope hat dazu mal einen recht anschaulichen Text geschrieben wie ich finde, und da ich faul bin kopier ich den mal hier rein
Zitat:
Die HL Engine laedt beim starten dynamisch eine GameDLL. Welche das ist, kramt er sich aus dem Kommandozeilen Parameter -game und der liblist.gam Datei in dem angegebenen Verzeichnis zusammen. Diese GameDLL ist verantwortlich fuer die Elemente des Spiels.
Engine <-> GameDLL
Wenn in der liblist.gam die Metamod DLL angegeben ist, dann laedt die Engine halt die Metamod DLL. Der Engine ist es egal, was sie fuer eine DLL laedt, solange sie alle Funktionen bereithaelt, um erfolgreich geladen zu werden.
Da Metamod aber nun kein Spiel ist, muss irgendwo jetzt noch die GameDLL herkommen. Metamod schaut also nach, was denn die Engine fuer ein Spiel laden wollte, kuck in seine interne Liste, welche GameDLL dazu passt und laedt dann die GameDLL. Die Engine denkt sie unterhaelt sich mit der GameDLL, die GameDLL denkt sie unterhaelt sich mit der Engine, Metamod sitzt dazwischen und alle sind gluecklich.
Engine <-> Metamod <-> GameDLL
Gleichzeitig hat sich aber in HL mit der Einführung von Steam etwas geändert. Die Spieldateien befinden sich sämtlichst nicht mehr frei zugänglich in Half-Life\<moddir>\ sondern wurden zusammengefasst zu eingen *.gcf-Dateien, die sich in <Steamroot>\SteamApps\ befinden.
An der Dateistruktur hat sich nichts geändert, und die liblist.gam existiert auch noch, auch wenn ich letztens mehrfach was anderes gehört habe. Sie ist aber auch in einer dieser .gcf-Dateien abgelegt. Wenn HL oder eines seiner Mods jetzt eine Datei lesen will, schaut es zunächst in dem eigentlichen Ordner, und wenn es docht nicht fündig wird in der .gcf-Datei (Dieses Verhalten wurde eingebaut, damit jeder Stam-Nutzer sein eigenes Verzeichnis hat, aber nicht unnötig viel Plattenspeicher verbraucht wird: Alle Accouts benutzen dieselben Basisdateien aus der .gcf-Datei).
Um die GameDLL-Einstellung auf Metamod umzustellen reicht es also, eine eigene liblist.gam anzulegen (ich habe meine alte aus dem 1.5-Ordner kopiert). Nun wird Metamod theoretisch geladen. Praktisch steht Metamod aber vor einem Problem: Auch die Originale GameDLL befindet sich in der .gcf-Datei, und die metamod.dll ist im Gegensatz zu der HL.exe nich in der Lage die Datei hieraus zu extrahieren und zu laden. Stattdessen sucht es an der "alten" Position im Modordner. Damit das Spiel jetzt richtig von Metamod geladen wird, muss man ihm die GameDLL wieder an die erwartete Postion kopieren. Aber wie kommt man an die GameDLL ran? Ganz einfach, in der Installation eines Dedicated Servers sind noch wie früher alle Dateien da. Diese reicht es zu kopieren, und Metamod inklusive aller Plugins funktioniert auch auf einem Listenserver.
Nochmal zusammengefasst:
- liblist.gam aus einer alten Installation oder dem Dedicated Server ins Moddir kopieren
- GameDLL-Einstellung in der liblist.gam auf die Position der metamod.dll ändern
- Die GameDLL des betreffenden Mods an derselben stelle in der Ordnerstruktur einfügen, wo sie auch beim Dedicated Server ist
- Metamod und Plugins installieren
Und da die Meisten hier sowieso nur CS spielen, habe ich euch das Ganze noch gepackt, inklusive Metamod-Installation. Dieses sollte (mit Pfadangaben) in <Steamroot>\SteamApps\<Account>\counter-strike\cstrike entpackt werden
Klick!