Recruting on Server

  • folgendes problem:
    auf einem meiner cod-server häuft sich in letzter zeit das problem mit werbung/recruting. da ich nun nicht immer auf meinem server als spieler online sein möchte um solche fälle zu erkennen hab ich mich gefragt ob man die ingame-messages extern abfragen könnte.


    mfg heilige banane

  • grundsätzlich: NEIN
    es gibt keine Möglichkeit, "direkt" die Messages abzufragen oder abzufangen.
    Einzige Alternative: ein Skript/Tool, welches das Logfile "in Echtzeit" liest, und auf entsprechende Trigger (Wörter o.ä.) reagiert.
    Ich bin seit geraumer Zeit dabei, so etwas - für Linux - zu schreiben, ich hab nämlich u.a. genau dasselbe PRoblem auf meinen Servern.
    Allerdings gestaltet sich das aber etwas schwierig, da ich kein Experte in Sachen "Shell-Programmierung" bin.


    Deswegen hab ich hier auch vor einiger Zeit einen entsprechenden Thread gestartet, auf den aber bisher niemand reagiert hat.
    Dies hier ist der entsprechende Thread: http://www.gameserveradmin.de/…ter-fuer-cod-uo-t220.html
    Zwar nicht ganz, was Du möchtest, aber es geht in dieselbe Richtung.


    Grüße,
    Chris

  • ich hatte an folgendes gedacht:


    die server starte ich bequem per PuttY da ein freund mir netterweise eine start und stop-date angelegt hat geht das recht flott und schnell. wen ich nun einen server starte sehe ich zum einen was punkbuster so macht und auch die messages die die spieler einmal per schnellnachricht schreiben und per say befehl. dummerweise wen ich PuttY abschalte und später wieder mir das anschauen möchte siehe da nix da. habe mir daraufhin die games_mp.log angeschaut. darin findet man aber nur die trefferanzeige und ein paar andere daten. die console_mp_server.log hatte ich dan auch mal getestet ob dort die daten sind. aber nein dort sieht man nur rcon-anfragen und schnellnachrichten wie angriff-linke-flanke aber halt nicht die say-nachrichten. nun hoffte ich das einer evt. mir sagen könnte wie ich mit PuttY das wieder einsehen kann.

  • Richtig, solange Du mit Putty verbunden bist, siehst Du einige Sachen auch, sobald sie passieren. Und auch richtig, sobald Du Putty beendest und wieder startest, siehst Du nichts mehr.


    In der Datei "console_mp_server.log" wird im Prinzip alles eingetragen, auch die Nachrichten, die mit "say" abgesetzt wurden. Allerdings sind die - im Vergleich zum "eigentlichen" Logfile - nicht mit "say" gekennzeichnet, sondern durch Sonderzeichen. Hier mal ein Beispiel aus einem meiner console_mp_server.log's:

    Code
    ^8Orlando^7: hiho silver


    Im eigentlichen Serverlogfile - bei mir benannt als "server.log", sieht das dann so aus:

    Code
    227:18 say;12345678;0;Orlando;hiho silver


    Um das mit Putty "in Echtzeit" sehen zu können, mußt Du Dir die letzten Zeilen des Logfiles anzeigen lassen und natürlich automatisch jeden neuen Eintrag.
    Das geht z.B. mit "tail -f <pfad_zur_console_mp.log>" oder "tail -f <pfad_zum_serverlog>"
    zum Beispiel: "tail -f /home/x/cod/uo/console_mp.log" oder "tail -f /home/y/cod/uo/server.log"
    Je nachdem, wo Deine Logdateien liegen, den Pfad entsprechend anpassen.


    Das löst aber das nicht das Problem ansich. Was machst Du, wenn solche Sachen passieren und Du nicht gerade auf dem Server verbunden bist und mitlesen kannst? Täglich die Logfiles durchsuchen? Und dann? Wie willst Du die Leute nachträglich für sowas "bestrafen"?


    Also, ich versuch mich weiter an 'nem Tool oder Skript, was die Sachen sofort erledigen kann. Ich möchte meine Zeit nicht nur mit der Überwachung der Server verbringen, sondern ab und zu auch mal spielen. :)


    Grüße,
    Chris

  • Hi,


    um Volltextsuche auf der Shell durchzuführen bietet sich grep an.
    Weitere Infos:

    Code
    grep --help
    man grep


    Cheers


    tcs

    Wer ständig überall dranpinkeln muß kommt schnell in den Verdacht ein keifendes Schoßhündchen zu sein.
    (Bezug auf einen bestimmten Forumsuser ist unvermeidlich)

  • ich hab leider nicht soviel ahnung von scripts und linux. ehrlich gesagt gar keine. aber kann man evt. putty serverseitig laufen lassen und die anfallende .log mit dem grep befehl durchsuchen lassen,wobei man noch eine datei anlegt mit den wörtern die unerwünscht sind, zb werbung? so ähnlich wie bei der ban.txt wo man auch nur die namen und id´s der zu banenden spieler stehen?


    aber da fällt mir ein problem auf: wie will man die namen der spieler markieren? um damit einen zu kicken?!

  • Man bräuchte ein Script das das Logfile ausliest und bei ungewünschen Worten den Spieler automatisch in die ban.txt einträgt. Die Frage ist nur ob der Spieler dann automatisch auch gekickt wird oder nur nichtmehr auf den Server connecten kann :?:
    Das zweite Problem ist die Serverlast, das Script müsste nach jeder Eingabe laufen, das stell ich mir allerdings schwirig vor, wenn das Script dauerhaft läuft könnte es zu Lasten der performance gehen. Igrend jemand ne Idee?


    Man müsste das einfach mal testen, ich habe selber kein CoD da ich nur OFP spiele, einen Testserver hätte ich allerdings. Wenn jemand ein bischen programieren kann und irgegend eine Idee hat, kann er sich gerne bei mir melden. Bedarf scheint es ja zu geben!

  • Zitat von Tobi

    Man bräuchte ein Script das das Logfile ausliest und bei ungewünschen Worten den Spieler automatisch in die ban.txt einträgt. Die Frage ist nur ob der Spieler dann automatisch auch gekickt wird oder nur nichtmehr auf den Server connecten kann :?:
    Das zweite Problem ist die Serverlast, das Script müsste nach jeder Eingabe laufen, das stell ich mir allerdings schwirig vor, wenn das Script dauerhaft läuft könnte es zu Lasten der performance gehen. Igrend jemand ne Idee?


    Man müsste das einfach mal testen, ich habe selber kein CoD da ich nur OFP spiele, einen Testserver hätte ich allerdings. Wenn jemand ein bischen programieren kann und irgegend eine Idee hat, kann er sich gerne bei mir melden. Bedarf scheint es ja zu geben!


    So etwas in der Art hatte ich mir auch vorgestellt.....
    Ich will mal kurz etwas genauer beschreiben, was ich derzeit habe:
    - eine Liste mit "bad words"
    - ein Skript, welches das Logfile liest und auf den Trigger "say" bzw. "sayteam" reagiert.
    - ein Tool, welches RCON Befehle an den Server senden kann (KKRCON, zum kicken/bannen)


    Grundsätzlich funktioniert das nun so (oder soll es zumindest mal):
    Das ganze wird gestartet mit

    Code
    tail -f <pfad_zum_serverlogfile> | <pfad_zum_skript>


    Heißt also, grundsätzlich wird der "tail" Befehl ausgeführt, aber anstatt die Ausgaben auf der Console zu machen, werden diese umgeleitet auf das Skript.
    Das Skript liest dann zuerst einmal die Liste der "bad words" ein und überführt jedes einzelne Wort in ein Array.
    Nun wird jeder neue Eintrag ins Serverlog überprüft, ob dort ein "say" oder "sayteam" vorkommt (wenn also ein Spieler etwas "sagt").
    Ist das der Fall, wird aus diesem Eintrag genau DAS herausgezogen, was "gesagt" wurde, und in eine Variable gespeichert.
    Nun wird geprüft, ob die Variable irgendeinen Wert des Arrays enthält.
    - Wenn ja, wird das externe Tool aufgerufen und der Spieler entweder gekickt oder gebannt, je nachdem, was mit demjenigen passieren soll.
    - Wenn nein, wird auf den nächsten Eintrag im Logfile gewartet und das ganze beginnt von vorne.


    Soweit mal im Überblick .......


    Zu den einzelnen Funktionen:
    Es gibt die Möglichkeit, den Spieler zu kicken und ein Reconnect für eine bestimmte Zeit zu verhindern. Danach kann er problemlos wieder auf den Server.
    Genauso ist es aber auch möglich, den Spieler direkt zu bannen. In diesem Fall wird ein Eintrag in der ban.txt vorgenommen, danach wird er gekickt und
    kann so nicht mehr auf den Server, bis der Eintrag aus der ban.txt entfernt wurde.
    Die Serverlast ist nach meinen Erfahrungen zu vernachlässigen; das "Lesen" des Logfiles in Echtzeit (mit tail) erzeugt nur minimal Last und selbst, wenn
    das Skript "arbeitet" (also eine Aktion "kicken/bannen" ausführt), geht das so schnell, dass auch hier die Last nicht wesentlich ansteigen würde.
    Ganz sicher bin ich allerdings nicht, da ich das so intensiv noch nicht testen konnte.


    Ich habe es schon öfter erwähnt, möchte es aber an dieser Stelle nochmal tun:
    Ich bin KEIN Experte in Sachen Shell-Skripting. Jeden einzelnen Befehl und jede einzelne Funktion muß ich mir in mühevoller Kleinarbeit zusammensuchen
    und solange dran rumbasteln, bis es (vielleicht) mal irgendwann funktioniert.
    Ganz konkret hab ich jetzt noch folgende Probleme:
    - die Liste der "bad words" in ein Array überführen
    - die Überprüfung des Gesagten gegen die "bad words"


    Hier mal das Skript in der "Rohfassung", wie es derzeit aussieht.


    Achtung: Das Skript ist so NICHT lauffähig! Es stellt lediglich den letzten Stand meiner Versuche dar. Mit Sicherheit ist einiges falsch oder kann
    anders/besser programmiert werden. Dazu fehlen mir aber leider die entsprechenden Kenntnisse.


    Soweit erstmal - vielleicht kommen ja hier jetzt entsprechende Infos/Ideen zusammen, damit das ganze mal irgendwann einwandfrei läuft.
    Grüße,
    Chris

  • Hi,


    ich würde von derartigen Lösungen grundsätzlich abraten, via Shellscript Ingame Aktionen zu starten halte ich für eine typische "von hinten durch die Brust in's Auge" Konstellation. Vielmehr würde ich versuchen in Erfahrung zu bringen wie man vielleicht direkt einen Mutator/Plugin für das Spiel coden kann der dann vom Gameserver an sich mitläuft. Bei UT200* gibt's solche Möglichkeiten zumindest, vielleicht geht das hier auch...


    Cheers


    tcs

    Wer ständig überall dranpinkeln muß kommt schnell in den Verdacht ein keifendes Schoßhündchen zu sein.
    (Bezug auf einen bestimmten Forumsuser ist unvermeidlich)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!