Black Knight's Res Creator Einleitung: Valve hat im Server eine Methode implementiert, mit der neben der eigentlichen Map auch zugehörige Dateien nachgeladen werden können. Dies betrifft insbesondere spezielle Wad-Dateien etc., die für das Spielen einer Map notwendig sind und beim Mapchange vom Client geladen werden müssen. Auf Grund ihrer Anlage sind die sogenannten Res-Files komplett mapspezifisch, was bedeutet, dass es keine Standard-Res-Datei gibt, die für alle Maps gilt. Viele Plugins für Admin Mod oder andere Metamod-Plugins nutzen eigene Sounds oder eigene Dateien. Diese müssen jedoch auf jeder Map geladen werden. Daher muss man in der Regel ALLE Res-Dateien editieren, was mit großem Arbeitsaufwand verbunden ist, insbesondere, wenn man viele Maps hat. Die Installation von Plugins mit eigenen Dateien ist daher sehr zeitaufwändig. Die Idee war daher ein Plugin zu schreiben, das diese Dateien automatisch erstellt. Features: - Erstellt Res-Dateien - Berücksichtigt mapspezifische Dateien in den Res-Dateien (die, die nur auf bestimmten Maps benötigt werden) - Berücksichtigt global verwendete Dateien in den Res-Dateien (die, die auf allen Maps benötigt werden) - Berücksichtigt Dateien, die von Plugins an dieses Plugin gemeldet werden (die, die auf allen Maps benötigt werden) Installation: 1. Compiliere das Plugin (Mehr Informationen dazu im Handbuch oder auf www.adminmod.de) 2. Kopiere bzw. uploade die Datei und editiere die plugin.ini (WICHTIG: plugin_bk_res MUSS das ALLERLETZTE PLUGIN in der Liste sein, um einwandfrei zu funktionieren!!!) 3. Erstelle ein Verzeichnis addons/adminmod/config/res 4. Führe einen Mapchange durch 5. Es ist nun installiert. Konfiguration: 1. Wie berücksichtige ich mapspezifische Dateien? Verschiede die mapspezifischen Res-Dateien in das Verzeichnis addons/adminmod/config/res (z.B. fy_iceworld.res). In diesen Dateien sollten lediglich die mapspezifischen Dateien zu finden sein, die für das Spielen der Map unabdingbar sind (Keine Dateien von Plugins). 2. Wie berücksichtige ich Dateien, die auf allen Maps benötigt werden? Erstelle eine default.res (mittels Texteditor) und füge die Dateien ein, die auf jeder Map benötigt werden. Hier gehören alle pluginspezifischen Dateien hinein. 3. Für welche Maps sollen Res-Files erstellt werden? Standardmäßig erstellt das Plugin Res-Dateien für alle Maps, die in der mapcycle.txt gefunden wurden. Man kann seine eigene Liste mittels einer anderen Datei erstellen. Einzige Voraussetzung ist, dass sie genauso aufgebaut ist, wie die mapcycle.txt und alle Maps berücksichtigt, für die Res-Dateien erstellt werden sollen. Man muss admin_res_maps ändern, um die neue Liste zu nutzen: admin_res_maps : Setzt die Mapdatei oder gibt den aktuellen Wert zurück, falls keine Mapdatei spezifiziert wurde. 4. Wie erstelle ich nun die Res-Dateien? Führe aus: admin_res_refresh [Mapname]: Erneuert die Res-Dateien. Wenn ein Mapname angegeben wurde, wird nur die Res-Datei dieser Map erneuert. Man muss diesen Befehl jedes Mal durchführen, wenn man Änderungen an den Res-Dateien im Ordner addons/adminmod/config/res vorgenommen hat. 5. Wie überprüft man, ob alles geklappt hat? Einfach ins maps Verzeichnis schauen und einen Blick in die erstellten Res-Dateien werfen. ;-) 6. Ist es möglcih, dass dies noch einfacher geht? Es ist möglich, dass Plugins direkt mit plugin_bk_res kommunizieren, so dass man neben der eigentlich Installation und dem hochladen der Custom-Dateien nichts weiter tun muss. Mehr Informationen für Programmierer ist der nächsten Sektion zu entnehmen. Für Programmierer: Man kann die eigenen Custom-Dateien direkt eintragen lassen, ohne dass der User die Res-Dateien manuell bearbeiten muss, nicht mal im Verzeichnis addons/adminmod/config/res. Füge zur plugin_init() hinzu: plugin_registercmd("res_refresh","res_refresh",ACCESS_CONSOLE,""); Erstelle eine Funktion res_refresh(): public res_refresh(HLCommand,HLData,HLUserName,UserIndex){ return PLUGIN_CONTINUE; } In dieser Funktionen sollten alle Dateien weitergeleitet werden, die von Deinem Plugin benötigt werden, z.B.: public res_refresh(HLCommand,HLData,HLUserName,UserIndex){ plugin_exec("res_add","sound/testwavplugin1.wav"); plugin_exec("res_add","sound/testwavplugin2.wav"); plugin_exec("res_add","sound/testwavplugin3.wav"); return PLUGIN_CONTINUE; } Das ist es schon. Man kann auch die Erneuerung aus dem eigenen Plugin aus aktivieren, indem man admin_res_refresh mittels plugin_exec() ausführt. Auf diese Weise führt plugin_bk_res die res_refresh Funktion automatsich aus. Changelog: 1.1 (10.05.2005) Ein Problem mit den Accessleveln im Plugin gelöst. Leider beim testen nicht aufgefallen, da ich direkt in der Serverconsole gearbeitet habe. (gefunden von GotNoScope aus den OzForums) 1.0 (11.04.2005) Erste Veröffentlichung