Black Knight's Res Creator


Einleitung:
Valve hat im Server eine Methode implementiert, mit der neben der eigentlichen Map auch zugehrige Dateien nachgeladen werden knnen. Dies betrifft insbesondere spezielle Wad-Dateien etc., die fr das Spielen einer Map notwendig sind und beim Mapchange vom Client geladen werden mssen.
Auf Grund ihrer Anlage sind die sogenannten Res-Files komplett mapspezifisch, was bedeutet, dass es keine Standard-Res-Datei gibt, die fr alle Maps gilt.
Viele Plugins fr Admin Mod oder andere Metamod-Plugins nutzen eigene Sounds oder eigene Dateien. Diese mssen jedoch auf jeder Map geladen werden. Daher muss man in der Regel ALLE Res-Dateien editieren, was mit groem Arbeitsaufwand verbunden ist, insbesondere, wenn man viele Maps hat. Die Installation von Plugins mit eigenen Dateien ist daher sehr zeitaufwndig.
Die Idee war daher ein Plugin zu schreiben, das diese Dateien automatisch erstellt.


Features:
- Erstellt Res-Dateien
- Bercksichtigt mapspezifische Dateien in den Res-Dateien (die, die nur auf bestimmten  Maps bentigt werden)
- Bercksichtigt global verwendete Dateien in den Res-Dateien (die, die auf allen Maps bentigt werden)
- Bercksichtigt Dateien, die von Plugins an dieses Plugin gemeldet werden (die, die auf allen Maps bentigt werden)


Installation:
1. Compiliere das Plugin (Mehr Informationen dazu im Handbuch oder auf www.admin-mod.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. Fhre einen Mapchange durch
5. Es ist nun installiert.


Konfiguration:
1. Wie bercksichtige 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 fr das Spielen der Map unabdingbar sind (Keine Dateien von Plugins).

2. Wie bercksichtige ich Dateien, die auf allen Maps bentigt werden?
Erstelle eine default.res (mittels Texteditor) und fge die Dateien ein, die auf jeder Map bentigt werden. Hier gehren alle pluginspezifischen Dateien hinein.

3. Fr welche Maps sollen Res-Files erstellt werden?
Standardmig erstellt das Plugin Res-Dateien fr 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 bercksichtigt, fr die Res-Dateien erstellt werden sollen.
Man muss admin_res_maps ndern, um die neue Liste zu nutzen:
admin_res_maps <Name der Mapdatei>: Setzt die Mapdatei oder gibt den aktuellen Wert zurck, falls keine Mapdatei spezifiziert wurde.

4. Wie erstelle ich nun die Res-Dateien?
Fhre 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 durchfhren, wenn man nderungen an den Res-Dateien im Ordner addons/adminmod/config/res vorgenommen hat.

5. Wie berprft man, ob alles geklappt hat?
Einfach ins maps Verzeichnis schauen und einen Blick in die erstellten Res-Dateien werfen. ;-)

6. Ist es mglcih, dass dies noch einfacher geht?
Es ist mglich, 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 fr Programmierer ist der nchsten Sektion zu entnehmen.


Fr 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.

Fge 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 bentigt 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() ausfhrt. Auf diese Weise fhrt plugin_bk_res die res_refresh Funktion automatsich aus.


Changelog:
1.1 (10.05.2005) Ein Problem mit den Accessleveln im Plugin gelst. 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 Verffentlichung
