Programmierung eines Commands
Aus Manu-Admin-Mod
Grundgedanke
Was soll der Befehl machen?
- er soll die Guid eines Spielers in eine Datei loggen
- er soll in der Datei den Namen mit angeben
Programmieren
Zuerst müssen wir dem Mod mitteilen das es einen neuen Befehl gibt.
$mod->registerCommand("saveguid", "~^saveguid \S.*$~i", "saveguid");
Das erste Parameter übergibt den Namen des Befehls der Zweite den Syntax und das Dritte die Funktion die aufgerufen wird.
Danach wird die Funktion angegeben mit den übergebenen Parametern die wir brauchen.
function saveguid($guid, $parameters){
"$guid" ist die Guid von dem Spieler der den Befehl ausgeführt hat.
"$parameters" gibt die Guid oder den Namen zurück
Nun kommen noch ein paar globalen Variablen dazu die wir noch brauchen damit unsere Funktionen funktionieren.
global $mod; global $players;
Jetzt ist der Hauptteil dran:
als erstes wird das Array "$parameters" in einen String gewandelt.
$player = implode(" ", $parameters);
Danach suchen wir die Guid zu dem Spieler den wir mit dem Befehl übergeben haben
$mplayer = $mod->findPlayerGuid($player);
Darauf folgt eine Standard Abfrage ob es den Spieler gibt
if (!$mplayer) {
$players[$guid]->say($mod->getLngString("playerNotFound", array("<SEARCH>"), array($mplayer)));
return false;
}
Gibt es den Spieler nicht bekommt man eine PM mit dem Fehler.
Wenn es ihn gibt geht es weiter mit der Suche nach dem passenden Nicknamen dazu
$nick = $players[$mplayer]->getName();
Als letztes Schreiben wir alles in eine Datei Namens "guid.log".
$fp=fopen(LOGDIR . "/guid.log", "a+"); $save = $nick; $save .= ":"; $save .= $mplayer; $save .= "\n"; fwrite($fp, $save); fclose($fp);
Hat alles geklappt bekommt man noch eine PM das es geklappt hat.
$players[$guid]->say($mod->getLngString("saveguid", "<PLAYER_NAME>", $nick));
So nun ist das Plugin fertig. Wir können es jetzt in einer Datei speichern Namens "saveguid.php und in den Plugin Ordner kopieren.
Jetzt müssen wir nurnoch einen Hilfetext dazu schreiben und die Nachricht die am Ende kommen soll.
Dazu erstellen wir im Adminmod-Verzeichnis unter "languages/de/help" die Datei "saveguid.lng"
In diese schreiben wir folgendes:
saveguid = "saveguid <Name|PID> speichert den Namen und die Guid in einer Log-Datei"
Nun fehlt nur noch der Text für die letzte PM. Der kommt in "languages/de/" in eine Datei Namens "saveguid.lng" die wir ebenfalls erstellen müssen.
Dort kommt folgendes hinein:
saveguid = "Guid von <PLAYER_NAME> erfolgreich Gespeichert"
Nun ist alles fertig.
So sieht es dann aus:
Master of Little:!saveguid 0 Console: PM: Guid von Master of Little erfolgreich gespeichert
