Guest User

Untitled

a guest
Jul 11th, 2018
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.62 KB | None | 0 0
  1. <?php
  2. /*
  3. * by Mirko
  4. * last edit 20.03.2012 23:12
  5. */
  6.  
  7. $mod->setDefaultCV("teamspeak", "enabled", 1);
  8. $mod->setDefaultCV("teamspeak", "serverip", "localhost");
  9. $mod->setDefaultCV("teamspeak", "queryport", 10011);
  10. $mod->setDefaultCV("teamspeak", "serverport", 9987 );
  11. $mod->setDefaultCV("teamspeak", "username", "serveradmin");
  12. $mod->setDefaultCV("teamspeak", "password", "LNJt+T9o");
  13. $mod->setDefaultCV("teamspeak", "spamtime", 120);
  14. $mod->setDefaultCV("teamspeak", "admins", "2");
  15. $mod->setDefaultCV("teamspeak", "blacklistChannel", "1");
  16. $mod->setDefaultCV("teamspeak", "enableLogging", "1");
  17. $mod->setDefaultCV("teamspeak", "logFormat", "<DATE>: <PLAYERNAME>[<GUID>] <MSG>");
  18.  
  19. $teamspeak = new TeamspeakUsage();
  20. $mod->registerCommand("admin", '~^admin .+$~i', "pokeAdmin", $teamspeak);
  21.  
  22.  
  23. class TeamspeakUsage{
  24. //Teamspeak Classes and Checks
  25. private $ts3Admin = FALSE;
  26. private $isConnected = FALSE;
  27. //Global Classes
  28. private $mod;
  29. private $players;
  30. private $logging;
  31. //Teamspeak vars
  32. private $admins = array();
  33. private $blacklistChannel = array();
  34. private $lastPoke = 0;
  35.  
  36.  
  37. /**
  38. *@global Mod $mod
  39. *@global Player $players
  40. *@global Logging $logging
  41. *@global Ts3admin $ts3Admin
  42. */
  43. function __construct() {
  44. global $logging;
  45. global $mod;
  46. global $players;
  47.  
  48. //Global Classes
  49. $this->mod = $mod;
  50. $this->players = $players;
  51. $this->logging = $logging;
  52.  
  53. //Teamspeak Vars
  54. $this->admins = explode(",",$mod->getCV("teamspeak", "admins"));
  55. $this->blacklistChannel = explode(",",$mod->getCV("teamspeak", "blacklistChannel"));
  56.  
  57. if(file_exists("classes/ts3admin.class.php")) {
  58. require_once ("classes/ts3admin.class.php");
  59. return TRUE;
  60. }
  61. return FALSE;
  62. }
  63.  
  64. /**
  65. * Stellt eine Verbindung zum Teamspeak Server her, indem
  66. * zuerst die Verbindung hergestellt wird, dann der Nutzer eingeloggt wird
  67. * und als letztes der Virtuelle Server ausgewählt wird
  68. *
  69. * @return boolean Connection hergestellt
  70. */
  71. private function Connect() {
  72. $serverIp = $this->mod->getCV("teamspeak", "serverip");
  73. $serverQueryPort = $this->mod->getCV("teamspeak", "queryport");
  74. $serverPort = $this->mod->getCV("teamspeak", "serverport");
  75. $username = $this->mod->getCV("teamspeak", "username");
  76. $password = $this->mod->getCV("teamspeak", "password");
  77.  
  78. $this->ts3Admin = new ts3admin($serverIp, $serverQueryPort);
  79. if(!$this->ts3Admin) {
  80. $this->isConnected = FALSE;
  81. return FALSE;
  82. }
  83.  
  84. $connection = $this->ts3Admin->connect();
  85. if(!$connection['success']) {
  86. echo $connection['errors'];
  87. $this->isConnected = FALSE;
  88. return FALSE;
  89. }
  90.  
  91. $login = $this->ts3Admin->login($username, $password);
  92. if(!$login['success']) {
  93. echo $login['errors'];
  94. $this->isConnected = FALSE;
  95. return false;
  96. }
  97.  
  98. $virtualServer = $this->ts3Admin->selectServer($serverPort);
  99. if(!$virtualServer['success']){
  100. echo $virtualServer['errors'];
  101. $this->isConnected = FALSE;
  102. return FALSE;
  103. }
  104.  
  105. $this->isConnected = TRUE;
  106. return TRUE;
  107. }
  108.  
  109. /**
  110. * Loggt den User aus und zerstört das Teamspeak Objekt.
  111. * Verhindert Laufzeitfehler, die entstehen wenn Teamspeak nach
  112. * ca. 30 min. die Verbindung blockiert
  113. *
  114. * @return boolean erfolgreich oder nicht
  115. */
  116. private function Disconnect(){
  117. if(!$this->isConnected) return false;
  118. $logout = $this->ts3Admin->logout();
  119. if($logout['success']){
  120. unset($this->ts3Admin);
  121. $this->isConnected = FALSE;
  122. return TRUE;
  123. }
  124. echo $logout['errors'];
  125. return FALSE;
  126. }
  127.  
  128. /**
  129. * Stupst die Admins auf Teamspeak an
  130. * @param String $guid Die Spielerguid
  131. * @param String $msg Die Nachricht
  132. * @return boolean success
  133. */
  134. public function pokeAdmin($guid, $msg) {
  135. $msg = implode(" ", $msg);
  136. if(!$this->mod->getCV("teamspeak", "enabled")) {
  137. return FALSE;
  138. }
  139.  
  140. if(time() - $this->lastPoke < $this->mod->getCV("teamspeak", "spamtime") ){
  141. $this->players[$guid]->say("Teamspeak: You can't send a message for the next ^2" . (120 - (time() - $this->lastPoke)) . " ^1seconds" );
  142. $this->writeToLog("SPAM: " . $msg, $guid);
  143. return FALSE;
  144. }
  145.  
  146. if(!$this->Connect())return false;
  147.  
  148. //get a List of all Teamspeak Users
  149. $list = $this->ts3Admin->clientList();
  150. foreach($list["data"] as $users) {
  151. //If TsDatabaseId of a User == predefined Admins to Poke
  152. if(in_array($users["client_database_id"], $this->admins)){
  153. //IF ChannelID not Blacklisted
  154. if(!in_array($users["cid"], $this->blacklistChannel)){
  155. $server = $this->mod->getCV("main", "ip") . ":" . $this->mod->getCV("main", "port");
  156. $pokemsg = $this->players[$guid]->getName() . ": " . $msg . "(" . $server . ")";
  157. $this->ts3Admin->ClientPoke($users['clid'], $pokemsg);
  158. $this->players[$guid]->say("Teamspeak: Message send:" . $pokemsg);
  159. $this->lastPoke = time();
  160. }
  161. $this->players[$guid]->say("Teamspeak: An Admin is online, but he is ^2busy");
  162. }
  163. $this->players[$guid]->say("Teamspeak: No Admin was only. Try again later");
  164. }
  165. $this->Disconnect();
  166. }
  167.  
  168. public function writeToLog($msg, $playerGuid = FALSE) {
  169. if(!$this->mod->getCV("teamspeak", "enableLogging")) return FALSE;
  170. $fp = fopen(LOGDIR ."/teamspeak.log", "a");
  171. if(!$playerGuid){
  172. $username = "";
  173. $guid = "";
  174. }
  175. else{
  176. $username = $this->players[$playerGuid]->getName();
  177. $guid = $this->players[$playerGuid]->getGuid();
  178. }
  179. $date = date(DATE_RFC850 ,time());
  180.  
  181. $search = array("<DATE>", "<PLAYERNAME>", "<GUID>", "<MSG>");
  182. $replace = array($date, $username, $guid, $this->mod->removecolor($msg));
  183. $logline = str_replace($search, $replace, $this->mod->getCV("teamspeak", "logFormat")) . "\r\n";
  184. fwrite($fp, $logline);
  185. fclose($fp);
  186. }
  187.  
  188. }
  189. ?>
Add Comment
Please, Sign In to add comment