ZHLT unter Linux einrichten

In diesem Tutorial möchte ich erkären wie man die Zoner Half-Life Tools unter Linux compiliert und mit Hilfe eines Shellscripts seine Maps compiliert.

Zuerst braucht man den aktuellen Sourcecode der ZHLT. Dann braucht man noch g++ und make (ist bei allen aktuellen Distributionen dabei). Wenn man netvis auch noch kompilieren möchte, braucht man noch die CommonC++ Libraries in der Version 1.3.2 oder höher. Auch diese sind bei gaengigen Distributionen dabei, das package heisst wahrscheinlich libcommoncpp oder libcommonc++. Jetzt entpackt man die ZHLT in den Ordner, in dem sie später installiert sein sollen, also z.B. /usr/local/zhlt/. Anschließend öffnet man eine Konsole und geht in den ZHLT Ordner (bei uns: /usr/local/zhlt/) Dort gibt man dann ob man den nun netvis haben will oder nicht.

Wenn man die obrigen Libraries hat, gibt es kein Problem und man kann einfach make aufrufen.

Falls man sie jedoch nicht hat, muss man das makefile mit einem Texteditor öffnen und die Zeile löschen und am Ende der Zeile entfernen und dann erst make aufrufen.

Abschließend schreiben wir uns noch ein Shellscript, das uns eine Map kompiliert, die ich hier einfach mal test.map nenne. Dazu starten wir einen Texteditor wie kedit oder joe (konsolenbasiert, Hilfe: STRG + K, H) und schreiben eine Textdatei, die in etwa so aussehen sollte:

mkdir /tmp/test_map/
cp /mnt/windows/games/test.map /tmp/test_map/
WADROOT=/mnt/windows/games/Half-Life
export WADROOT
/usr/local/zhlt/release/hlcsg /tmp/test_map/test
/usr/local/zhlt/release/hlbsp /tmp/test_map/test
/usr/local/zhlt/release/hlvis -full /tmp/test_map/test
/usr/local/zhlt/release/hlrad -extra /tmp/test_map/test
cp /tmp/test_map/test.bsp /mnt/windows/games/Half-Life/valve/maps/

Das Script muss nun noch ausfuehrbar gemacht werden.

chmod a+x compile.sh

Dann koennen wir es starten.

./compile.sh

Jetzt sollte die Map compilieren.

Problembehebung

Mögliche Probleme.

Compile-Error bei netvis

Wenn man netvis mitkompiliert kann es zu einer Fehlermeldung wie dieser kommen:

g++ -I common -I template -Wall -c -O2 -g -D SYSTEM_POSIX
-D NDEBUG -D GNU_COMPILER -DHAVE_CONFIG_H -I hlvis -I
netvis -D ZHLT_NETVIS -D CXX_IMPORTS
-onetvis/release/SocketThreads.o netvis/SocketThreads.cpp
In file included from /usr/local/include/cc++/socket.h:55,
                 from netvis/NetvisSession.h:12,
                 from netvis/netvis.h:14,
                 from netvis/SocketThreads.cpp:1:
/usr/local/include/cc++/thread.h:183:
 syntax error before `;'
make: *** [netvis/release/SocketThreads.o] Error 1

Das liegt daran das in der /usr/local/include/cc++/thread.h ein Fehler ist, nämlich in der Zeile 183, dort lautet es so:

private:
        pthread_rwlock_t _lock;
        pthread_mutex_t _lock;

ein Leerzeichen ist, das gelöscht werden muss.

Dateien werden nicht gefunden

Bei dem Shellscript kann es passieren, das cp die Dateien nicht findet, was daran liegt, das im Pfad ein Verzeichnis mit einem Leerzeichen in der Mitte vorkommt, beispielsweise

cp /mnt/windows/Eigene Dateien/test.map /tmp/test_map/

Dieser Fehler kann behoben werden indem man den Pfad in Anführungszeichen setzt.

cp "/mnt/windows/zeugs/Eigene Dateien/test.map" /tmp/test_map/
Die Verwendung aller Dokumente einschließlich der Abbildungen ausschließlich zu nichtkommerziellen Zwecken. Verbreitung des Dokuments auf Speichermedien, (insbesondere auf CD-ROMs als Beilage zu Zeitschriften und Magazinen oder sog. "Mission-Packs" etc.) ist untersagt.
 
half-life/tutorials/zhlt_unter_linux_einrichten.txt · Zuletzt geändert: 2009/04/24 11:45 von spezifanta