예제 #1
0
 /** Gets a Server class instance for the specified server.
  * This function returns an instance of Server (the same as the innerAPI one) for the specified server in argument.
  * 
  * \param $server The wanted server's name.
  * 
  * \return If the server exists, it returns an instance of Server class. Else, it returns FALSE.
  */
 public static function getServer($server)
 {
     $self = self::getInstance();
     if (!isset($self->_leelabot->servers[$server])) {
         return FALSE;
     }
     $instance = new Server();
     $instance->setServer($self->_leelabot->servers[$server]);
     return $instance;
 }
예제 #2
0
 public function IrcPlayers($pseudo, $channel, $cmd, $message)
 {
     $serverlist = ServerList::getList();
     $actual = Server::getName();
     if (isset($cmd[1]) && in_array($cmd[1], $serverlist)) {
         Server::setServer($this->_main->servers[$cmd[1]]);
         $this->_printPlayers($cmd[1]);
     } else {
         foreach ($serverlist as $server) {
             Server::setServer($this->_main->servers[$server]);
             $this->_printPlayers();
         }
     }
     Server::setServer($this->_main->servers[$actual]);
 }
예제 #3
0
 /** Loads all the server instances and defining their parameters
  * This function loads all the server instances found in Leelabot::$config, and initializes them with their config.
  * 
  * \returns TRUE if instances loaded successfully, FALSE otherwise.
  */
 public function loadServerInstances()
 {
     if (!isset($this->config['Server'])) {
         Leelabot::message('No server defined in configuration.', array(), E_ERROR);
         exit;
     }
     $this->servers = array();
     Leelabot::message('Loading server instances.');
     //Checking default configuration
     if (isset($this->config['Server']['default'])) {
         $defaultConfig = $this->config['Server']['default'];
         unset($this->config['Server']['default']);
     }
     foreach ($this->config['Server'] as $name => $instance) {
         if (isset($instance['name'])) {
             $name = $instance['name'];
         }
         Leelabot::message('Loading server "$0".', array($name));
         $this->servers[$name] = new ServerInstance($this);
         //Using config name if not specified
         $this->servers[$name]->setName($name);
         //Loading config
         if (!$this->servers[$name]->loadConfig($instance)) {
             Leelabot::message('Can\'t load config for server "$0".', array($name), E_WARNING);
             unset($this->servers[$name]);
             continue;
         }
         //Setting servers for static inner API
         RCon::setServer($this->servers[$name]);
         Server::setServer($this->servers[$name]);
         //Connecting to server
         if (!$this->servers[$name]->connect()) {
             Leelabot::message('Can\'t connect to server "$0".', array($name), E_WARNING);
             unset($this->servers[$name]);
         }
     }
 }
예제 #4
0
파일: stats.php 프로젝트: Geolim4/Leelabot
 public function IrcStats($pseudo, $channel, $cmd, $message)
 {
     $server = LeelaBotIrc::nameOfServer($cmd[2], FALSE);
     $actual = Server::getName();
     if (isset($cmd[1])) {
         if ($server !== false) {
             Server::setServer($this->_main->servers[$server]);
             $target = Server::searchPlayer(trim($cmd[1]));
             if (!$target) {
                 LeelaBotIrc::sendMessage("Unknown player");
             } elseif (is_array($target)) {
                 $players = array();
                 foreach ($target as $p) {
                     $players[] = Server::getPlayer($p)->name;
                 }
                 LeelaBotIrc::sendMessage("Multiple players found : " . join(', ', $players));
             } else {
                 $buffer = array();
                 $_stats = Server::get('stats');
                 $_awards = Server::get('awards');
                 $player = Server::getPlayer($target);
                 if ($_stats[$player->id]['deaths'] != 0) {
                     $ratio = $_stats[$player->id]['kills'] / $_stats[$player->id]['deaths'];
                 } else {
                     $ratio = $_stats[$player->id]['kills'];
                 }
                 if (in_array('hits', $this->config['ShowStats'])) {
                     //Gestion des hits en fonction de la configuration du plugin de stats
                     $hits = "Hits : " . $_stats[$player->id]['hits'] . " - ";
                 }
                 if (Server::getServer()->serverInfo['g_gametype'] == 7) {
                     //Gestion des caps uniquement en CTF
                     $caps = " - Caps : " . $_stats[$player->id]['caps'];
                 }
                 LeelaBotIrc::sendMessage("Stats de " . $player->name . " : " . $hits . "Kills : " . $_stats[$player->id]['kills'] . " - Deaths : " . $_stats[$player->id]['deaths'] . " - Ratio : " . $ratio . $caps . " - Streaks : " . $_stats[$player->id]['streaks']);
             }
             Server::setServer($this->_main->servers[$actual]);
         }
     } else {
         LeelaBotIrc::sendMessage("Player name missing");
     }
 }