Scripts teis PHP Aprendiz Mu Online
Tutoriais

Scripts teis PHP

Por

Confira uma seleção de scripts úteis em PHP para sites de MU Online, com exemplos para consultar jogadores online, rankings, contas, personagens, VIP, resets e dados básicos da database. Um guia prático para administradores e desenvolvedores que desejam integrar o website ao SQL Server com mais organização.

MU Online • PHP • Desenvolvimento Web

Scripts Úteis PHP para Sites de MU Online

Veja exemplos práticos de PHP para consultar dados do MU Online, montar rankings, verificar jogadores online, buscar personagens, consultar resets e integrar informações da database ao seu website.

Nível: Intermediário Categoria: Desenvolvimento PHP + SQL Server Aprendiz MU Online

Antes de usar os exemplos

Os scripts abaixo são exemplos didáticos para sites de MU Online. Os nomes das colunas podem variar conforme sua Server File.

Em estruturas clássicas você pode encontrar tabelas como:

MEMB_INFO MEMB_STAT Character Guild GuildMember AccountCharacter warehouse
Importante Nunca exponha usuário e senha do SQL diretamente em páginas públicas. Centralize a conexão em um arquivo de configuração protegido.

1. Conexão com SQL Server

Em projetos antigos que utilizam extensões MSSQL, uma conexão pode seguir uma estrutura semelhante a:

<?php $host = '127.0.0.1'; $usuario = 'sa'; $senha = 'SUA_SENHA'; $database = 'MuOnline'; $conexao = mssql_connect( $host, $usuario, $senha ); if(!$conexao){ die('Erro ao conectar no SQL Server.'); } if(!mssql_select_db($database, $conexao)){ die('Erro ao selecionar a database.'); } ?>
PHP moderno Em servidores atuais, prefira drivers suportados como SQLSRV ou PDO_SQLSRV. O exemplo acima é mais comum em projetos legados.

2. Mostrar quantidade de jogadores online

Muitas Server Files registram o status da conta na tabela MEMB_STAT.

<?php $sql = " SELECT COUNT(*) AS total FROM MEMB_STAT WHERE ConnectStat > 0 "; $query = mssql_query($sql); $dados = mssql_fetch_assoc($query); echo intval($dados['total']); ?>

Normalmente:

ConnectStat = 0 Offline ConnectStat > 0 Online

3. Ranking de Resets

Caso sua Server File utilize ResetCount, um ranking simples pode ser montado assim:

<?php $sql = " SELECT TOP 10 Name, Class, ResetCount, cLevel FROM Character WHERE ctlcode = 0 OR ctlcode IS NULL ORDER BY ResetCount DESC, cLevel DESC "; $query = mssql_query($sql); while($char = mssql_fetch_assoc($query)){ echo htmlspecialchars( $char['Name'], ENT_QUOTES, 'UTF-8' ); echo ' - '; echo intval( $char['ResetCount'] ); echo '<br>'; } ?>
Confira seu campo de reset. Algumas Server Files utilizam Resets, ResetsG, ResetCount ou uma coluna personalizada.

4. Ranking por Level

<?php $sql = " SELECT TOP 10 Name, Class, cLevel, Experience FROM Character WHERE ctlcode = 0 OR ctlcode IS NULL ORDER BY cLevel DESC, Experience DESC "; $query = mssql_query($sql); while($char = mssql_fetch_assoc($query)){ echo htmlspecialchars( $char['Name'], ENT_QUOTES, 'UTF-8' ); echo ' - Level '; echo intval( $char['cLevel'] ); echo '<br>'; } ?>

5. Buscar personagem pelo nome

Evite inserir diretamente dados recebidos pelo usuário dentro da consulta SQL.

Em sistemas legados, no mínimo faça validação rigorosa antes de utilizar o valor.

<?php $nome = isset($_GET['nome']) ? trim($_GET['nome']) : ''; if(!preg_match('/^[a-zA-Z0-9_-]{1,10}$/', $nome)){ die('Nome inválido.'); } $nomeSql = str_replace( "'", "''", $nome ); $sql = " SELECT Name, Class, cLevel, ResetCount FROM Character WHERE Name = '" . $nomeSql . "' "; $query = mssql_query($sql); $char = mssql_fetch_assoc($query); if($char){ echo htmlspecialchars( $char['Name'], ENT_QUOTES, 'UTF-8' ); }else{ echo 'Personagem não encontrado.'; } ?>

6. Mostrar classe do personagem

A coluna Class normalmente armazena um código numérico.

Você pode converter o valor para um nome amigável:

<?php function nome_classe($classe) { $classes = array( 0 => 'Dark Wizard', 1 => 'Soul Master', 16 => 'Dark Knight', 17 => 'Blade Knight', 32 => 'Fairy Elf', 33 => 'Muse Elf', 48 => 'Magic Gladiator', 64 => 'Dark Lord' ); if(isset($classes[$classe])){ return $classes[$classe]; } return 'Classe desconhecida'; } echo nome_classe( intval($char['Class']) ); ?>

Os códigos podem variar conforme Season e implementação.

7. Consultar VIP da conta

Em muitas Server Files, o nível VIP está armazenado em:

MEMB_INFO.AccountLevel

Exemplo:

<?php $login = 'usuario'; $loginSql = str_replace( "'", "''", $login ); $sql = " SELECT AccountLevel, AccountExpireDate FROM MEMB_INFO WHERE memb___id = '" . $loginSql . "' "; $query = mssql_query($sql); $conta = mssql_fetch_assoc($query); if($conta){ echo 'VIP: '; echo intval( $conta['AccountLevel'] ); } ?>

8. Converter AccountLevel em nome do VIP

<?php function nome_vip($nivel) { switch(intval($nivel)){ case 1: return 'Silver'; case 2: return 'Prata'; case 3: return 'Gold'; default: return 'Free'; } } echo nome_vip( $conta['AccountLevel'] ); ?>

Ajuste os nomes de acordo com os planos utilizados pelo seu servidor.

9. Mostrar personagens de uma conta

<?php $login = 'usuario'; $loginSql = str_replace( "'", "''", $login ); $sql = " SELECT Name, Class, cLevel, ResetCount FROM Character WHERE AccountID = '" . $loginSql . "' ORDER BY Name ASC "; $query = mssql_query($sql); while($char = mssql_fetch_assoc($query)){ echo htmlspecialchars( $char['Name'], ENT_QUOTES, 'UTF-8' ); echo '<br>'; } ?>

10. Mostrar personagem conectado

Algumas estruturas utilizam AccountCharacter.GameIDC para registrar o personagem atualmente conectado.

<?php $sql = " SELECT GameIDC FROM AccountCharacter WHERE Id = 'usuario' "; $query = mssql_query($sql); $dados = mssql_fetch_assoc($query); if( $dados && isset($dados['GameIDC']) && trim($dados['GameIDC']) != '' ){ echo htmlspecialchars( $dados['GameIDC'], ENT_QUOTES, 'UTF-8' ); }else{ echo 'Nenhum personagem conectado.'; } ?>

11. Ranking de PK

Caso a sua tabela Character possua PkCount:

<?php $sql = " SELECT TOP 10 Name, PkCount FROM Character WHERE ctlcode = 0 OR ctlcode IS NULL ORDER BY PkCount DESC "; $query = mssql_query($sql); while($char = mssql_fetch_assoc($query)){ echo htmlspecialchars( $char['Name'], ENT_QUOTES, 'UTF-8' ); echo ' - PK: '; echo intval( $char['PkCount'] ); echo '<br>'; } ?>

12. Ranking semanal

Se a sua Server File possui uma coluna como ResetsWeek:

<?php $sql = " SELECT TOP 10 Name, ResetsWeek FROM Character WHERE ctlcode = 0 OR ctlcode IS NULL ORDER BY ResetsWeek DESC "; $query = mssql_query($sql); while($char = mssql_fetch_assoc($query)){ echo htmlspecialchars( $char['Name'], ENT_QUOTES, 'UTF-8' ); echo ' - '; echo intval( $char['ResetsWeek'] ); echo '<br>'; } ?>

13. Ranking mensal

<?php $sql = " SELECT TOP 10 Name, ResetsMonth FROM Character WHERE ctlcode = 0 OR ctlcode IS NULL ORDER BY ResetsMonth DESC "; $query = mssql_query($sql); while($char = mssql_fetch_assoc($query)){ echo htmlspecialchars( $char['Name'], ENT_QUOTES, 'UTF-8' ); echo ' - '; echo intval( $char['ResetsMonth'] ); echo '<br>'; } ?>

14. Mostrar quantidade total de contas

<?php $sql = " SELECT COUNT(*) AS total FROM MEMB_INFO "; $query = mssql_query($sql); $dados = mssql_fetch_assoc($query); echo intval( $dados['total'] ); ?>

15. Mostrar quantidade total de personagens

<?php $sql = " SELECT COUNT(*) AS total FROM Character "; $query = mssql_query($sql); $dados = mssql_fetch_assoc($query); echo intval( $dados['total'] ); ?>

16. Escapar saída HTML

Nunca imprima nomes e outros textos vindos da database diretamente dentro do HTML.

Utilize:

<?php echo htmlspecialchars( $texto, ENT_QUOTES, 'UTF-8' ); ?>

Isso reduz problemas de HTML quebrado e ajuda a evitar injeção de conteúdo no navegador.

17. Validar números antes de usar

Para IDs, níveis, resets ou outros valores numéricos:

<?php $id = isset($_GET['id']) ? intval($_GET['id']) : 0; if($id <= 0){ die('ID inválido.'); } ?>

Nunca confie diretamente em parâmetros recebidos pela URL.

18. Não exiba erros SQL em produção

Durante desenvolvimento pode ser útil visualizar erros. Em produção, isso pode revelar informações internas.

Evite mensagens contendo:

  • IP do SQL Server;
  • usuário SQL;
  • nome de tabelas internas desnecessárias;
  • caminhos físicos;
  • senhas;
  • detalhes de conexão.

19. Centralize consultas repetidas

Em vez de repetir a mesma consulta em várias páginas, crie funções reutilizáveis.

<?php function total_online() { $sql = " SELECT COUNT(*) AS total FROM MEMB_STAT WHERE ConnectStat > 0 "; $query = mssql_query($sql); if(!$query){ return 0; } $dados = mssql_fetch_assoc($query); return intval( $dados['total'] ); } echo total_online(); ?>

20. Boas práticas para PHP em sites MU Online

  • centralize a conexão com SQL;
  • não exponha credenciais;
  • valide dados recebidos por GET e POST;
  • escape conteúdo antes de imprimir;
  • evite consultas SQL desnecessárias;
  • limite rankings com TOP;
  • não permita que usuários comuns editem dados administrativos;
  • mantenha backups da database;
  • use HTTPS;
  • prefira drivers SQL atuais quando possível.

Perguntas frequentes

PHP consegue acessar a database MuOnline?

Sim, desde que o servidor PHP possua um driver compatível com o SQL Server e as credenciais tenham permissão na database.

Qual tabela mostra jogadores online?

Em muitas Server Files clássicas é utilizada a tabela MEMB_STAT e o campo ConnectStat.

Qual campo usar para ranking de reset?

Depende da Server File. Pode ser ResetCount, Resets, ResetsG ou outro campo personalizado.

É seguro utilizar usuário SA no site?

Não é o ideal. Prefira criar um usuário SQL específico com apenas as permissões necessárias para o website.

Esses scripts funcionam em qualquer Season?

Não necessariamente. As tabelas e colunas podem variar, então os exemplos devem ser adaptados à estrutura da sua database.

Conclusão

PHP pode ser utilizado para integrar praticamente todas as informações principais de um servidor MU Online ao website, desde rankings até status online e dados de personagens.

O mais importante é entender a estrutura real da sua database, validar todas as entradas e evitar consultas inseguras.

Com uma base organizada, esses scripts podem servir como ponto de partida para rankings, painéis de usuário, sistemas VIP, páginas de personagens e diversas outras ferramentas.

Compartilhe este artigo
Aprendiz Mu Online Conhecimento, comunidade e oportunidades para quem vive MU Online.
Estatísticas de acesso Evolução diária do portal
Total de visitas 20.998.173
Visitas hoje 1.137
Visitas ontem 2.266
14/07: 1.187 visitas15/07: 1.376 visitas16/07: 1.219 visitas17/07: 1.328 visitas18/07: 1.146 visitas19/07: 1.392 visitas20/07: 1.241 visitas21/07: 1.357 visitas22/07: 1.174 visitas23/07: 1.298 visitas24/07: 1.960 visitas25/07: 3.414 visitas26/07: 2.266 visitas27/07: 1.137 visitas14/0716/0718/0720/0722/0724/0726/0727/07
Visitas registradas automaticamente.
© 2026 Aprendiz Mu Online