Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /*
- * by Mirko
- * last edit 20.03.2012 23:12
- */
- $mod->setDefaultCV("teamspeak", "enabled", 1);
- $mod->setDefaultCV("teamspeak", "serverip", "localhost");
- $mod->setDefaultCV("teamspeak", "queryport", 10011);
- $mod->setDefaultCV("teamspeak", "serverport", 9987 );
- $mod->setDefaultCV("teamspeak", "username", "serveradmin");
- $mod->setDefaultCV("teamspeak", "password", "LNJt+T9o");
- $mod->setDefaultCV("teamspeak", "spamtime", 120);
- $mod->setDefaultCV("teamspeak", "admins", "2");
- $mod->setDefaultCV("teamspeak", "blacklistChannel", "1");
- $mod->setDefaultCV("teamspeak", "enableLogging", "1");
- $mod->setDefaultCV("teamspeak", "logFormat", "<DATE>: <PLAYERNAME>[<GUID>] <MSG>");
- $teamspeak = new TeamspeakUsage();
- $mod->registerCommand("admin", '~^admin .+$~i', "pokeAdmin", $teamspeak);
- class TeamspeakUsage{
- //Teamspeak Classes and Checks
- private $ts3Admin = FALSE;
- private $isConnected = FALSE;
- //Global Classes
- private $mod;
- private $players;
- private $logging;
- //Teamspeak vars
- private $admins = array();
- private $blacklistChannel = array();
- private $lastPoke = 0;
- /**
- *@global Mod $mod
- *@global Player $players
- *@global Logging $logging
- *@global Ts3admin $ts3Admin
- */
- function __construct() {
- global $logging;
- global $mod;
- global $players;
- //Global Classes
- $this->mod = $mod;
- $this->players = $players;
- $this->logging = $logging;
- //Teamspeak Vars
- $this->admins = explode(",",$mod->getCV("teamspeak", "admins"));
- $this->blacklistChannel = explode(",",$mod->getCV("teamspeak", "blacklistChannel"));
- if(file_exists("classes/ts3admin.class.php")) {
- require_once ("classes/ts3admin.class.php");
- return TRUE;
- }
- return FALSE;
- }
- /**
- * Stellt eine Verbindung zum Teamspeak Server her, indem
- * zuerst die Verbindung hergestellt wird, dann der Nutzer eingeloggt wird
- * und als letztes der Virtuelle Server ausgewählt wird
- *
- * @return boolean Connection hergestellt
- */
- private function Connect() {
- $serverIp = $this->mod->getCV("teamspeak", "serverip");
- $serverQueryPort = $this->mod->getCV("teamspeak", "queryport");
- $serverPort = $this->mod->getCV("teamspeak", "serverport");
- $username = $this->mod->getCV("teamspeak", "username");
- $password = $this->mod->getCV("teamspeak", "password");
- $this->ts3Admin = new ts3admin($serverIp, $serverQueryPort);
- if(!$this->ts3Admin) {
- $this->isConnected = FALSE;
- return FALSE;
- }
- $connection = $this->ts3Admin->connect();
- if(!$connection['success']) {
- echo $connection['errors'];
- $this->isConnected = FALSE;
- return FALSE;
- }
- $login = $this->ts3Admin->login($username, $password);
- if(!$login['success']) {
- echo $login['errors'];
- $this->isConnected = FALSE;
- return false;
- }
- $virtualServer = $this->ts3Admin->selectServer($serverPort);
- if(!$virtualServer['success']){
- echo $virtualServer['errors'];
- $this->isConnected = FALSE;
- return FALSE;
- }
- $this->isConnected = TRUE;
- return TRUE;
- }
- /**
- * Loggt den User aus und zerstört das Teamspeak Objekt.
- * Verhindert Laufzeitfehler, die entstehen wenn Teamspeak nach
- * ca. 30 min. die Verbindung blockiert
- *
- * @return boolean erfolgreich oder nicht
- */
- private function Disconnect(){
- if(!$this->isConnected) return false;
- $logout = $this->ts3Admin->logout();
- if($logout['success']){
- unset($this->ts3Admin);
- $this->isConnected = FALSE;
- return TRUE;
- }
- echo $logout['errors'];
- return FALSE;
- }
- /**
- * Stupst die Admins auf Teamspeak an
- * @param String $guid Die Spielerguid
- * @param String $msg Die Nachricht
- * @return boolean success
- */
- public function pokeAdmin($guid, $msg) {
- $msg = implode(" ", $msg);
- if(!$this->mod->getCV("teamspeak", "enabled")) {
- return FALSE;
- }
- if(time() - $this->lastPoke < $this->mod->getCV("teamspeak", "spamtime") ){
- $this->players[$guid]->say("Teamspeak: You can't send a message for the next ^2" . (120 - (time() - $this->lastPoke)) . " ^1seconds" );
- $this->writeToLog("SPAM: " . $msg, $guid);
- return FALSE;
- }
- if(!$this->Connect())return false;
- //get a List of all Teamspeak Users
- $list = $this->ts3Admin->clientList();
- foreach($list["data"] as $users) {
- //If TsDatabaseId of a User == predefined Admins to Poke
- if(in_array($users["client_database_id"], $this->admins)){
- //IF ChannelID not Blacklisted
- if(!in_array($users["cid"], $this->blacklistChannel)){
- $server = $this->mod->getCV("main", "ip") . ":" . $this->mod->getCV("main", "port");
- $pokemsg = $this->players[$guid]->getName() . ": " . $msg . "(" . $server . ")";
- $this->ts3Admin->ClientPoke($users['clid'], $pokemsg);
- $this->players[$guid]->say("Teamspeak: Message send:" . $pokemsg);
- $this->lastPoke = time();
- }
- $this->players[$guid]->say("Teamspeak: An Admin is online, but he is ^2busy");
- }
- $this->players[$guid]->say("Teamspeak: No Admin was only. Try again later");
- }
- $this->Disconnect();
- }
- public function writeToLog($msg, $playerGuid = FALSE) {
- if(!$this->mod->getCV("teamspeak", "enableLogging")) return FALSE;
- $fp = fopen(LOGDIR ."/teamspeak.log", "a");
- if(!$playerGuid){
- $username = "";
- $guid = "";
- }
- else{
- $username = $this->players[$playerGuid]->getName();
- $guid = $this->players[$playerGuid]->getGuid();
- }
- $date = date(DATE_RFC850 ,time());
- $search = array("<DATE>", "<PLAYERNAME>", "<GUID>", "<MSG>");
- $replace = array($date, $username, $guid, $this->mod->removecolor($msg));
- $logline = str_replace($search, $replace, $this->mod->getCV("teamspeak", "logFormat")) . "\r\n";
- fwrite($fp, $logline);
- fclose($fp);
- }
- }
- ?>
Add Comment
Please, Sign In to add comment