Você não é registrado, por favor registre-se para ter acesso ao conteúdo completo.
Caso seja registrado, efetue login.
Esqueceu sua senha? Clique aqui
Recomendamos o uso do Mozilla Firefox para uma melhor visualização.    


Início Postados Hoje Marcar Fóruns Como Lidos Álbums Banidos SE Team Medalhas
Voltar   Secret Experience > Private Server & MMORPG - Administre Um > Lineage II - OFF > [L2OFF] Administrador > [L2OFF | Admin] Downloads > [L2OFF | Admin] Web Sites
Registrar Loteria VIPStaff SERegras do fórum Comunidade Arcade Postados Hoje Pesquisar Experience
   

Secret Experience.NET   Secret Experience Corporation - Welcome To The Real World
     Anúncios SE

 
 
LinkBack Ferramentas do Tópico Modos de Exibição
Prev Post Anterior   Próximo Post Next
Antigo 12-08-2013, 10:23 PM   #1
Script Server Status: ON | OFF - Quantidade de Players ON e Record de Players ON
Setokaiba Setokaiba está online agora 12-08-2013, 10:23 PM

Esse script se resume em mostrar o status do servidor, quantos player encontram-se online no mesmo, e o recorde de players que já estiveram online em tal servidor.

Código: [Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar]
<?php 
class ServerStatus 
{ 
   private $ip, $port, $interval, $timeout; 

   public function __construct($ip = '127.0.0.1', $port = 2106, $interval = 30, $timeout = 1) 
   { 
      $this->ip = $ip; 
      $this->port = $port; 
      $this->interval = $interval; 
      $this->timeout = $timeout; 
   } 

   public function GetStatusFromAuth() 
   { 
      $status = array(); 
      $f = @fsockopen($this->ip, $this->port, $errno, $errstr, $this->timeout); 
      if ($f) 
      { 
         do 
         { 
            $sec = floor($this->timeout); 
            $msec = ($this->timeout - $sec) * 1000; 
            socket_set_timeout($f, $sec, $msec); 

            $buf = fread($f, 2); 
            if (strlen($buf) != 2) break; 
            $a = unpack('vsize', $buf); 
            $size = $a['size'] - 2; 
            if ($size < 1) break; 

            $buf = fread($f, $size); 
            if (strlen($buf) != $size) break; 

            fwrite($f, "\x03\x00\xFE", 3); 

            $buf = fread($f, 2); 
            if (strlen($buf) != 2) break; 
            $a = unpack('vsize', $buf); 
            $size = $a['size'] - 2; 
            if ($size < 1) break; 

            $buf = fread($f, $size); 
            if (strlen($buf) != $size) break; 

            if (ord($buf[0]) != 0xFE) break; 
            if (strlen($buf) < 3) break; 
            $amount = ord($buf[1]) + ord($buf[2]) * 256; 
            $buf = substr($buf, 3); 
            if (strlen($buf) != $amount * 4) break; 
            $a = unpack('v' . ($amount * 2), $buf); 
            for ($i = 0; $i < $amount; $i++) $status[$a[$i * 2 + 1]] = $a[$i * 2 + 2]; 
         } 
         while (false); 
         fclose ($f); 
      } 
      return $status; 
   } 

   public function GetStatus() 
   { 
      $fn = dirname(__FILE__) . '/status.txt'; 
      $status = array(); 
      fclose(fopen($fn, 'a+b')); 
      $f = @fopen($fn, 'r+b'); 
      if ($f) 
      { 
         flock($f, LOCK_EX); 
         $cache = unserialize(fread($f, 1024)); 
         $status = @$cache['status']; 
         $time = @$cache['time']; 
         if (!IsSet($status) || !IsSet($time)) 
         { 
            $status = array(); 
            $time = 0; 
         } 
         if (time() - $time > $this->interval) 
         { 
            $new = $this->GetStatusFromAuth(); 
            foreach ($status as $id => $value) 
            { 
               $c = &$status[$id]; 
               $c['on'] = false; 
               $c['cur'] = 0; 
            } 
            foreach ($new as $id => $value) 
            { 
               if (!IsSet($status[$id])) $status[$id] = array('on' => false, 'cur' => 0, 'max' => 0); 
               $c = &$status[$id]; 
               $c['on'] = true; 
               $c['cur'] = $new[$id]; 
               if ($c['cur'] > $c['max']) $c['max'] = $c['cur']; 
            } 
            $cache = array('status' => $status, 'time' => time()); 
            $s = serialize($cache); 
            rewind($f); 
            ftruncate($f, 0); 
            fwrite($f, $s, strlen($s)); 
         } 
         fclose($f); 
      } 
      return $status; 
   } 

   public function GetText($id, $online, $offline) 
   { 
      $status = $this->GetStatus(); 
      if (IsSet($status[$id])) $c = &$status[$id]; else $c = array('on' => false, 'cur' => 0, 'max' => 0); 
      $res = str_replace(array('%c', '%m'), array($c['cur'], $c['max']), $c['on'] ? $online : $offline); 
      return $res; 
   } 
} 

$status = new ServerStatus('127.0.0.1'); 
$online = 'Status: <b><font color="#00AA00">ONLINE</font></b> | Players: <b>%c</b> | Record: <b>%m</b>'; 
$offline = 'Status: <b><font color="#FF0000">OFFLINE</font></b> | Players: <b>%c</b> | Record: <b>%m</b>'; 
echo $status->GetText(1, $online, $offline); //1 - ServerID 
?>

 
Avatar de Setokaiba
Setokaiba
Jesus Te Ama, Mas EU Não!

Quadro de Medalhas

Registrado em: Oct 2008
Localização: 45º 33º 34º N | 122º 41º 41º W DESTINATION: ANYWHERE Adidas
Posts: 4,133
Pontos: 20,442, Nível: 90
Pontos: 20,442, Nível: 90 Pontos: 20,442, Nível: 90 Pontos: 20,442, Nível: 90
Atividade: 99%
Atividade: 99% Atividade: 99% Atividade: 99%

Nome Real: Anderson Andrade
Visitas: 554
Os Seguintes 2 Usuários disseram Obrigado(a) para Setokaiba por gostarem deste post :
Kurosawa (27-01-2016), Myutsu (18-10-2013)
Links Patrocinados
 

Tags
jogadores, l2off, logados, online, players, quantidade, record


Regras para Posts
Você não pode postar novos tópicos
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar seus posts

Código [IMG] Sim
Código HTML Não
Trackbacks are Sim
Pingbacks are Sim
Refbacks are Sim



Horários baseados na GMT -3. Agora são 04:45 AM.
 



Search Engine Optimization by vBSEO 3.3.0