1. GSManager
    1. Funktionen
    2. Unterstützte Spiele
    3. Neuigkeiten
    4. Statistiken
    5. Serverliste
  2. Lexikon
  3. Filebase
  4. Entwicklung
  5. Forum
    1. Dashboard
    2. Unerledigte Themen
  6. Web-Interface
  7. Artikel
  8. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Seiten
  • Dateien
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. GSManager
  2. Forum
  3. Allgemeines
  4. Diskussionen
  5. Feedback

[Version 0.6 BETA] !getss <id|part_of_nick>

  • peperoni
  • 26. August 2008 um 23:40
Das Projekt GSManager (vormals ManuAdminMod) wurde am 01.01.2020 eingestellt - diese Internetpräsenz bleibt verfügbar, die Software wird aber nicht länger gepflegt. Vielen Dank für eure Unterstützung in den mehr als zehn vergangenen Jahren!
1. offizieller Beitrag
  • peperoni
    Fortgeschrittener
    Punkte
    1.070
    Trophäen
    1
    Beiträge
    200
    • 26. August 2008 um 23:40
    • #1

    Hallo Gemeinde,

    ich wollte auch ein Adminmod auf Basis PHP schreiben, leider kam mir Manu zuvor, wobei ich den auch nicht besser machen könnte.
    Der Adminmd läuft soweit stabli und erleichtert ungemein die Adminstration eines COD4 Servers.

    Was ich allerdings sehr vermisst habe, ist diese Funktion:

    !getss ID|PART_OF_NICK

    Sobald dieses Command eingegeben wird, macht der PB ein Screenshot des angefragten Spieler,in diesem Augenblick!
    Wer das benutzen möchte muss lediglich die Datei "classes/exec.inc.php" um folgendes erweitern:

    Einzufügen unter "switch ($command) {" bei mir war ds Zeile 13 in der Datei "classes/exec.inc.php"

    PHP
    case "getss":
    			if (!preg_match("/^\\".$pfx."getss .+$/i", $saymsg)) {
    				$admin->showhelp("getss", $saypid);
    				break;
    			}
    			if (is_numeric($separgs[0])) {
    				if ($admin->playerExists($separgs[0])) {
    					$player = $admin->getPlayerById($separgs[0]);
    					$pbid = $admin->getPbidByPid($player);
    					$answer = $admin->exec("pb_sv_getss ".$pbid."");
    					$admin->sayToPlayer($saypid, "^0Screenshot from $player[name] ^0requested");
    					$admin->sayToPlayer($saypid,$answer);
    				} else {
    					$admin->sayToPlayer($saypid, "^1Player-ID ^7$separgs[0] ^1not found");
    				}
    			} else {
    				$id = $admin->findPlayerIdByName($separgs[0]);
    				if ($id === false) {
    					$admin->sayToPlayer($saypid, "^1Player ^7$separgs[0] ^1not found");
    				} elseif (is_array($id)) {
    					$admin->sayToPlayer($saypid, "^1More than one player match");
    				} else {
    					$player = $admin->getPlayerById($separgs[0]);
    					$pbid = $admin->getPbidByPid($player);
    					$answer = $admin->exec("pb_sv_getss ".$pbid."");
    					$admin->sayToPlayer($saypid, "^0Screenshot from $player[name] ^0requested");
    					$admin->sayToPlayer($saypid,$answer);
    				}
    			}
    
    		break;
    Alles anzeigen

    Nicht zu vergessen in der "cfg/config.cfg" unter "[levels]" (Zeile 102 bei mir) den Befehl einem Level zuzuordnen,
    ich habe es unter level1 eingefügt. (Gäste sollten diese nicht benutzen können)

    Code
    [levels]
    level0 = "ts,irc,time,help,admintest,stats,info,fun,me,cmdlist,uptime,forgive,nextmap,ff"
    level1 = "2ts,2irc,pl,checkadmin,maps,cointoss,getss"
    level2 = "kick,tempban,restart,map,maprotate,warn,say"
    level3 = "ban,setpw,removepw,gametype,gamemode,exec,kickall,hardcore,oldschool,setnextmap,killcam,setff"
    level4 = "rm,mr,readconfig,setlevel,devmap,protect,gravity,knockback,speed"

    Damit auch die dümmsten wissen wie es geht, sollte man noch in der Datei "cfg/help.php" ein Hilfetext einfügen.

    Am Ende der Datei "cfg/help.php" folgendes einfügen:

    Code
    getss   = "Use !getss PID|PART_OF_NICK"

    So, MAM neustarten und testen, die PB-Screenshots werden bei mir unter "/usr/local/games/cod4-linux-server/.callofduty4/pb/svss" gespeichert. Kann bei euch anderst sein, meißt ist es das Homeverzeichniss.

    Wenn bei euch pb_sv_autoss aktiviert ist, ist der Ordner ziemlich voll, ich habe pb_sv_autoss "pb_sv_autoss 0"in der PB Configdeaktiviert, so habe ich die Screenshots die ich beantragt habe und nicht willkürlich...

    Bei mir wird sobald der SS empfangen wurde, ein Link zum SS in unserem TS gepostet, dazu benötigt es aber mehrer Änderungen am Server bzw. eine noch zu komplzierte anpassung, diese gibts evtl. mal hier, sobald ich die Zeit uns Muse dazu finde...

    ACHTUNG: Support gibts ausschließlich in diesem Thread

    5 Mal editiert, zuletzt von Dennis (12. September 2008 um 14:20)

  • manu
    Meister
    Punkte
    10.835
    Trophäen
    3
    Beiträge
    2.113
    • 27. August 2008 um 01:28
    • #2

    Hey, super gemacht :)

    Allerdings ist es doch in der aktuellen Version ziemlich umständlich einen einfachen neuen Command hinzuzufügen, findest du nicht?
    Wenn du vor hast, weitere Add-Ons zu schreiben, empfehle ich dir dringendst bis Version 0.7 zu warten, weil da ist das hinzufügen eines neuen Commands halb so schwer und man brauch sich bei einem Update nicht sorgen machen, dass er durch überschreiben der Dateien wieder gelöscht wird.

    Ich möchte dir gerne ein Beispiel geben, wie man ab 0.7 einen neuen Command schreibt:

    Du erstellst eine Datei im Order "plugins", welche den Namen deines Plugins trägt und am besten nicht doppeldeutig ist, sodass er von anderen Plugins nicht überschrieben werden kann. Beispiel: "pbgetss.php"
    Du musst die Datei einfach nur in dem Ordner haben, dann wird sie als Plugin geladen, kein weiteres Eintragen sonst wo ist nötig.

    Der Inhalt könnte dann etwa so aussehen:

    PHP
    <?php
    
    
    
    
    /*
    PLUGIN: Pbgetss
    =============
    Adds a command to get a PB screenshot of a player
    
    
    
    
    COMMANDS
    --------
    !getss
    
    
    
    
    
    
    
    NAMESPACE: pbgetss
    
    
    
    
    Functions:
        pbgetss_main
    
    
    
    
    
    
    
    */
    
    
    
    
    //Command Registrieren
    //                    Name des Commands  Syntax           Funktion, die aufgerufen wird
    $mod->registerCommand("getss",           "~getss \S.*~i", "pbgetss_main");
    
    
    
    
    //Nun die eigentliche Funktion
    //$guid = GUID des Ausführers
    //$parameters = die übergeben Parameter in einem Array (Beispiel: "!kick a d", dann wäre $parameters = array("a", "d"))
    
    function pbgetss_main($guid, $parameters) {
        global $mod;
        global $players;
        global $rcon;
    
        //Parameter wirder zusammenfügen
        $parameters = implode(" ", $parameters);
    
        //Spieler suchen nach PID oder Spielername
        $toss = $mod->findPlayerGuid($player);
    
        //Spieler nicht gefunden?
        if (!$toss) {
            //Sprachspezifische Fehlermeldung ausgeben
            $players[$guid]->say($mod->getLngString("playerNotFound", array("<SEARCH>"), array($parameters)));
            return;
    	}
    
    	//$toss enthält nun die GUID des gewünschten Spielers
    
    	//Echten Namen herausfinden (mit Farbcodes) für den PB Command
    	$dump = $players[$toss]->dumpUser();
    	$realname = $dump["name"];
    
    	//Screenshot machen
    	$result = $rcon->rcon("pb_sv_getss \"".$realname."\"");
    
    	//Rückmeldung schicken
    	$players[$guid]->say("PB Screenshot from $realname^7 requested: " . $result);
    }
    Alles anzeigen


    (Nicht getestet jetzt, also könnten Syntaxfehler drinne sein^^)

    Dann kannst du noch ein Hilfetext anlegen, für alle Spachen am besten
    Dazu im Ordner languages/en|de/help/ eine Datei anlegen. Name ist auch hier egal, aber sollte passend sein. Da kannst du nun deinen Hilfetext reinschreiben.

    Eintragen in der groups.cfg nicht vergessen, damit die Admins den Command auch ausführen können

    In der 0.7er gibt es die Function "$admin->getPbidByPid($player);" nicht mehr, da sie recht fehlerhaft arbeitete. Deshalb wird der Command pb_sv_getss direkt mit dem Nicknamen des Spielers ausgeführt. Allerdings braucht man dazu den kompletten Namen des Spielers mit Farbcodes, den man mithilfe von $players[$guid]->dumpUser einfach herausfindet (siehe Code :))

    Bei Fragen einfach noch mal posten :)

  • peperoni
    Fortgeschrittener
    Punkte
    1.070
    Trophäen
    1
    Beiträge
    200
    • 27. August 2008 um 02:29
    • #3

    Hi Manu,


    habe schon mit bekommen das v.0.7 mit Plugins arbeiten wird, dieses "ADDON" sollte auch eher als "workaround" für mich persönlich dienen :)
    Habe es nur öffentlich gemacht weil mich jemand darauf angesprochen hat...

  • Dieses Thema enthält 20 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind.

Benutzer online in diesem Thema

  • 1 Besucher
  1. Mitarbeiter
  2. Datenschutzerklärung
  3. Nutzungsbedingungen
  4. Impressum
  5. Kontakt
Community-Software: WoltLab Suite™