Ir para conteúdo

Aprenda a obter informações de um servidor C.S. usando PHP


AsakuraStar

Recommended Posts

::Obtendo Informações de um determinado Servidor Usando PHP - by AsakuraStar::

 

Requerimentos:

 

* Noções básicas de PHP

* Webserver com suporte a PHP 4.x.x ou superior

 

Tipos de servidores suportados:

 

* Counter-Strike 1.6

* Half-Life 1

 

1) - Introdução

 

- Será necessário a utilização do protocolo UDP para receber os dados do servidor, devido o sistema do game Half-Life.

A primeira coisa a fazer é nos conectar no servidor, no exemplo usaremos o ip:porta 127.0.0.1:27015

 

2) - Montando o Script para abrir e pegar conteúdo.

 

- Para chamar uma conexão utilizado PHP, usaremos a funcão fsockopen()

 

<?php

// IP doServidor

$ServerIP = "127.0.0.1";

// Porta do Servidor

$ServerPort = "27015";

// Variavel que determina qual Query a ser enviada para o servidor

$ServerinfoCommand = "\377\377\377\377infostring\0";

 

// Abrindo a conexão com o servidor

$fp = fsockopen("udp://".$ServerIP, $ServerPort, $errno, $errstr);

 

//Enviando a Query para o servidor

fwrite($fp, $ServerinfoCommand);

 

//Removendo os Headers iniciais inuteis

$JunkHead = fread($fp,24);

 

// Rotina para checar se o servidor está rodando

$CheckStatus = socket_get_status($fp);

if($CheckStatus["unread_bytes"] == 0)

{

die("Não foi possível estabelecer conexão, verifique se o servidor encontra-se online.");

}

 

// Obtendo as informações que chegarem

$do = 1;

$HLServerStats= "";

while($do)

{

$str = fread($fp,1);

$HLServerStats.= $str;

$status = socket_get_status($fp);

if($status["unread_bytes"] == 0) {$do = 0;}

}

//Fechando a conexão

fclose($fp);

?>

 

O código acima, enviará a Query ÿÿÿÿinfostring para o servidor com a função fwrite() e em seguida criamos um while loop para pegar todo o conteúdo e o colocarmos na variavel $HLServerStats

Para uma lista detalhada de todas as Querys de sistem Half-life acesse http://dev.kquery.com/index.php?article=31

 

3) - Montando o Script para retornar o conteúdo obtido

 

- Agora que nós já temos as informações desejadas, podemos criar um script para facilitar o seu retorno, simplificando na hora de colocar em um servidor web. Vamos dividir a variavel $HLServerStats colocando seu conteúdo em Arrays de uma forma mais organizada.

 

<?php

// Separando o conteúdo em Arrays

$HLServerStats = explode("\\", $HLServerStats);

 

// Contando a quantidade de arrays

$count = count($HLServerStats);

 

// O resultado da quantidade precisa ser um número par

if($count % 2 == 0)

{

// "Loopamos" o conteúdo através dos arrays e em seguida o colocamos em uma variavel chamada $ServerData

$i = 0;

while($count != $i)

{

$ServerData[$HLServerStats[$i]] = $HLServerStats[$i+1];

$i = $i + 2;

}

}

?>

 

4) - INFORMAÇÕES ADQUIRIDAS

 

- Pronto, agora que já temos a variavel, podemos usa-la de forma organizada.

Estas são as palavras-chaves obtidas, cada uma retorna o seu devido valor:

 

protocol - Versão do Protocolo de rede (atualmente 47)

address - Endereço IP do Servidor

players - Número de jogadores atualmente no servidor.

proxytarget - Este servidor possue proxy HLTV? 1 = Sim, 0 = Não

lan - Este servidor corre em LAN? 1 = Sim, 0 = Não

max - Número máximo de jogadores que podem jogar

bots - Número de Bots em jogo

gamedir - Diretório do Mod (Ex: tfc)

description - Nome do Mod (Ex: Counter-Strike)

hostname - Nome do Servidor

map - Mapa atual que está em jogo

type - Tipo do servidor. d = dedicado, l = listen.

password - O Servidor possue senha? 1 = Sim, 0 = Não

os - Sistema Operacional do servidor. w = Windows, l = Linux.

secure - Modo seguro VAC ativo? 1 = Sim, 0 = Não

 

Para mostrar via Web um determinado conteúdo, utilize este exemplo:

 

<? echo $ServerData['PALAVRA-CHAVE']; ?>

 

Depois é só personalizar a seu gosto, insira Código HTML a vontade ou qualquer outra coisa.

Salve o arquivo com um nome qualquer.php, e pronto!

 

Este script é útil para sites de games, por exemplo, mostrar as estatísticas de um servidor pertencente a algum Clã, bastante simples e sem complicações.

 

5) - Fim

Link para o comentário
Compartilhar em outros sites

  • 5 months later...
  • 1 month later...
×
×
  • Criar Novo...