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 Membros Arcade Pesquisar Postados Hoje Marcar Fóruns Como Lidos Experience
   

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

 
 
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: 551
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

Ferramentas do Tópico
Modos de Exibição

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

Ir para...


Horários baseados na GMT -3. Agora são 12:49 AM.