Ich verwende auf unserem Server Python 2.5 (Debian Lenny).
Es ist schon wichtig, dass das Script auch mit dieser Version funktioniert, da ich das später in unserem Forum für die Allgemeinheit anbieten will.
Die meisten GameServeradmins setzen Debian Lenny ein, welches zur Zeit python 2.5 beinhaltet.
Zur Zeit arbeite ich daran einen Watchdog, den ich in Shell-Script für GameServer geschrieben habe, in Python umzusetzen.
Um zum eigentlichen Problem zu kommen. Ich lese eine Liste aus, in der Admins eingetragen sind (Liste wird später aus einer Datei gelesen).
Mein eigentliches Problem ist, dass ich es so einfach wie möglich machen will.
Hier der Beispielcode, der so nicht funktionieren kann:
Code: Alles auswählen
admins = ['STEAM_0:0:xxxx','STEAM_0:0:aaaaa','STEAM_0:0:zzz','STEAM_0:0:yyy']
log = 'L 09/19/2010 - 14:51:20: "Player<87><STEAM_0:0:zzz><TERRORIST>" say "!rr"'
if admins in log and 'say' in log:
print 'Admin gefunden'
Das Beispiel hab ich dann so gelöst, was aber sicherlich nicht optimal ist:
Code: Alles auswählen
admins = ['STEAM_0:0:xxxx','STEAM_0:0:aaaaa','STEAM_0:0:zzz','STEAM_0:0:yyy']
log = 'L 09/19/2010 - 14:51:20: "Player<87><STEAM_0:0:zzz><TERRORIST>" say "!rr"'
def admincheck(admins, string):
for admin in admins:
if '<' + admin + '>' in string:
return True
return False
if admincheck(admins, log) and 'say' in log:
print 'Admin gefunden'
Es ist schon wichtig, dass die Ausführungszeit so kurz wie möglich ist, da aus einem Screenlog Zeile für Zeile geparst wird (Shell-Script like: tail -f | while read line; do foo; done).
Das dann auch noch für jeden der fünf WarServer.
Ziel ist es bei bestimmten Chatbefehlen Befehle auf dem Server auszuführen (screen -S name -p server -X stuff $'zb_lo3\n'). Wer sich mal das komplette ShellScript ansehen will, kann es hier herunterladen: http://download.sa-hosting.eu/temp/watc ... ate.tar.gz
Das Script funktioniert soweit, aber wie man sicherlich erkennen kann, ist der Code sehr unleserlich und lässt sich schlecht erweitern. Viele verlieren schon den Überblick nach den ersten Zeilen
Es soll nur der Watchdog in Python geschrieben werden. Den Rest lasse ich erstmal so, da es funktioniert.
Ich bin für jeden Hinweis dankbar. Mir würde schon ein Anstoß in die richtige Richtung ausreichen. Immerhin ist Python sehr gut dokumentiert, übersichtlich und die Community scheint sehr offen und freundlich zu sein. Genau mein Geschmack.