Ranking MU Online PHP + SQL: Top Level, Resets, PK e Guild Aprendiz Mu Online
Tutoriais

Ranking MU Online PHP + SQL: Top Level, Resets, PK e Guild

Por

Aprenda a criar Ranking MU Online com PHP e SQL Server: Top Level, Resets, PK, Guild, Character, ORDER BY, filtros e queries prontas.

MU Online • PHP • SQL Server • Rankings

Ranking MU Online com PHP + SQL: Guia Completo para Top Level, Resets, PK e Guild

Aprenda como criar rankings para MU Online usando PHP e SQL Server, consultar a tabela Character, montar Top Level, Top Resets, Top PK e entender como adaptar as queries para os campos realmente utilizados pela sua source.

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

Criar um ranking MU Online com PHP e SQL Server é uma das formas mais úteis de integrar o website diretamente com a database do servidor.

A partir da tabela Character, é possível montar rankings de level, resets, PK, master reset, ranking semanal, mensal e diversas outras classificações.

O ponto mais importante é entender que a query precisa seguir a estrutura real da sua database. Um servidor pode utilizar ResetCount, enquanto outro usa ResetsG.

Como funciona um ranking MU Online?

O ranking normalmente executa uma consulta SQL na database MuOnline, organiza os registros e depois exibe o resultado através do PHP.

Database MuOnline
       |
       v
Tabela Character
       |
       v
SELECT + ORDER BY
       |
       v
PHP
       |
       v
Tabela de ranking no website
Conceito principal O PHP não calcula o ranking sozinho. O SQL normalmente já retorna os personagens na ordem correta através do ORDER BY.

Tabela Character no ranking

A tabela Character costuma possuir dados essenciais para rankings.

Exemplos:

Name
Class
cLevel
Experience
ResetCount
ResetsG
MResets
PkCount
ctlcode
AccountID

Nem todos os campos existem em todas as sources.

Confira sua estrutura

sp_help 'Character';

Antes de copiar qualquer ranking, veja quais campos realmente existem na sua database.

Ranking Top Level MU Online

Um ranking de level pode ordenar primeiro por cLevel e depois pela experiência.

SELECT TOP 10
    Name,
    Class,
    cLevel,
    Experience
FROM Character
WHERE ctlcode = 0 OR ctlcode IS NULL
ORDER BY
    cLevel DESC,
    Experience DESC;

Por que usar Experience como desempate?

Dois jogadores podem estar no mesmo level. Nesse caso, quem possui maior experiência acumulada pode aparecer primeiro.

Ranking Top Resets MU Online

Primeiro descubra qual campo sua source usa.

Se for ResetCount:

SELECT TOP 10
    Name,
    Class,
    ResetCount,
    cLevel
FROM Character
WHERE ctlcode = 0 OR ctlcode IS NULL
ORDER BY
    ResetCount DESC,
    cLevel DESC;

Se for ResetsG:

SELECT TOP 10
    Name,
    Class,
    ResetsG,
    cLevel
FROM Character
WHERE ctlcode = 0 OR ctlcode IS NULL
ORDER BY
    ResetsG DESC,
    cLevel DESC;
Ranking zerado? Se os jogadores resetam normalmente, mas o site mostra zero, verifique se o PHP está consultando ResetCount enquanto o GameServer atualiza ResetsG.

Ranking semanal

Algumas sources possuem:

ResetsWeek

Nesse caso:

SELECT TOP 10
    Name,
    Class,
    ResetsWeek
FROM Character
WHERE ctlcode = 0 OR ctlcode IS NULL
ORDER BY ResetsWeek DESC;

Ranking mensal

SELECT TOP 10
    Name,
    Class,
    ResetsMonth
FROM Character
WHERE ctlcode = 0 OR ctlcode IS NULL
ORDER BY ResetsMonth DESC;

Ranking Top PK / Killers

Se sua source utiliza PkCount:

SELECT TOP 10
    Name,
    Class,
    PkCount
FROM Character
WHERE ctlcode = 0 OR ctlcode IS NULL
ORDER BY PkCount DESC;
PK Level não é necessariamente Kill Count Algumas databases possuem campos diferentes para estado PK e quantidade de kills. Confira qual sistema sua source utiliza.

Ranking Master Reset

Se sua source utiliza:

MResets

uma consulta possível é:

SELECT TOP 10
    Name,
    Class,
    MResets,
    ResetsG
FROM Character
WHERE ctlcode = 0 OR ctlcode IS NULL
ORDER BY
    MResets DESC,
    ResetsG DESC;

Ranking de Guilds

O ranking de guild depende muito mais da estrutura da source.

Uma database pode possuir:

Guild
GuildMember

Por exemplo, para contar membros:

SELECT
    G_Name,
    COUNT(*) AS TotalMembros
FROM GuildMember
GROUP BY G_Name
ORDER BY TotalMembros DESC;

O critério de "melhor guild" pode ser totalmente diferente dependendo do projeto.

Como remover GM do ranking

Muitas databases utilizam o campo:

ctlcode

Rankings customizados frequentemente aplicam:

WHERE ctlcode = 0 OR ctlcode IS NULL

Assim, personagens administrativos podem ser removidos da classificação.

Confirme sua source Não trate ctlcode como regra absoluta. Verifique quais valores sua implementação utiliza para personagens normais e Game Masters.

Top 10, Top 50 ou Top 200?

Basta alterar o TOP.

SELECT TOP 200
    Name,
    ResetsG,
    cLevel
FROM Character
ORDER BY
    ResetsG DESC,
    cLevel DESC;

Exemplo completo em PHP + MSSQL

Para sistemas antigos que utilizam a extensão mssql, um exemplo simples seria:

<?php

$sql = "
SELECT TOP 10
    Name,
    Class,
    ResetsG,
    cLevel
FROM Character
WHERE ctlcode = 0 OR ctlcode IS NULL
ORDER BY
    ResetsG DESC,
    cLevel DESC
";

$query = mssql_query($sql);

if (!$query) {
    echo 'Erro ao carregar ranking.';
} else {

    $posicao = 1;

    while ($row = mssql_fetch_array($query)) {

        echo '<tr>';

        echo '<td>' . intval($posicao) . '</td>';

        echo '<td>' .
             htmlspecialchars($row['Name']) .
             '</td>';

        echo '<td>' .
             intval($row['Class']) .
             '</td>';

        echo '<td>' .
             intval($row['ResetsG']) .
             '</td>';

        echo '<td>' .
             intval($row['cLevel']) .
             '</td>';

        echo '</tr>';

        $posicao++;
    }
}

?>

HTML da tabela

<table>

    <thead>
        <tr>
            <th>#</th>
            <th>Personagem</th>
            <th>Classe</th>
            <th>Resets</th>
            <th>Level</th>
        </tr>
    </thead>

    <tbody>

        <?php
        // loop PHP do ranking aqui
        ?>

    </tbody>

</table>

Como mostrar o nome da classe

Em vez de exibir apenas o número da classe, você pode criar uma função PHP.

function nomeClasse($class)
{
    $class = intval($class);

    if ($class == 0) {
        return 'Dark Wizard';
    }

    if ($class == 1) {
        return 'Soul Master';
    }

    if ($class == 16) {
        return 'Dark Knight';
    }

    if ($class == 17) {
        return 'Blade Knight';
    }

    if ($class == 32) {
        return 'Fairy Elf';
    }

    if ($class == 33) {
        return 'Muse Elf';
    }

    return 'Classe ' . $class;
}

Os códigos precisam ser adaptados à versão utilizada pelo servidor.

Ranking com Guild

Em databases que possuem GuildMember, você pode relacionar o personagem à guild.

Exemplo conceitual:

SELECT TOP 10
    C.Name,
    C.ResetsG,
    C.cLevel,
    G.G_Name
FROM Character C
LEFT JOIN GuildMember G
    ON G.Name = C.Name
WHERE C.ctlcode = 0 OR C.ctlcode IS NULL
ORDER BY
    C.ResetsG DESC,
    C.cLevel DESC;

Ranking por posição individual

Também é possível calcular a posição de um personagem comparando quantos jogadores possuem um resultado superior.

SELECT COUNT(*) + 1 AS Posicao
FROM Character
WHERE
    (ctlcode = 0 OR ctlcode IS NULL)
    AND (
        ResetsG > 100
        OR (
            ResetsG = 100
            AND cLevel > 400
        )
    );

Neste exemplo, 100 e 400 representariam os dados do personagem consultado.

Invalid Column Name no ranking

Exemplo:

Invalid column name 'ResetsG'

Significa que sua tabela Character não possui esse campo.

Confira:

sp_help 'Character';

Depois adapte a query.

Ranking não mostra ninguém

Verifique:

  • conexão com SQL;
  • database correta;
  • tabela Character;
  • filtro ctlcode;
  • campo utilizado;
  • erro retornado por mssql_query.

Ranking mostra dados antigos

Possíveis causas:

  • GameServer ainda não salvou o personagem;
  • cache do website;
  • site conectado à database errada;
  • campo diferente do usado no jogo;
  • ranking consultando tabela auxiliar.

Ranking está lento

Evite consultas desnecessárias dentro de loops.

Por exemplo, é melhor buscar personagem e guild em um JOIN do que executar uma nova consulta SQL para cada linha da tabela.

Performance do ranking

Algumas boas práticas:

  • use TOP para limitar resultados;
  • evite SELECT * quando não precisa de todas as colunas;
  • evite dezenas de queries por personagem;
  • use JOIN quando apropriado;
  • avalie índices em databases grandes;
  • não ordene por campos desnecessários.

Segurança no PHP

Um ranking público normalmente não precisa receber valores arbitrários do usuário para montar SQL.

Quando filtros ou buscas forem adicionados, valide os dados e evite concatenar entrada do usuário diretamente em queries.

Nunca exponha credenciais SQL Mensagens de erro públicas não devem revelar senha, usuário, host SQL ou estrutura interna sensível.

Checklist do ranking MU Online

Verificação Resultado esperado
Conexão SQL Funcionando.
Database MuOnline correta.
Character Tabela disponível.
Campo de reset Mesmo usado pelo GameServer.
ctlcode Filtro compatível com a source.
ORDER BY Critério correto.
TOP Quantidade limitada.
PHP Escapa conteúdo exibido.
Performance Sem query desnecessária por linha.

Perguntas frequentes

Qual tabela usar para ranking MU Online?

A tabela Character é uma das mais utilizadas para rankings de personagens, pois normalmente contém level, classe e outros dados importantes.

Como criar ranking de resets?

Descubra primeiro qual campo o GameServer atualiza, como ResetCount ou ResetsG, e ordene esse campo de forma decrescente.

Por que o ranking mostra 0 resets?

Uma causa muito comum é o site consultar uma coluna diferente daquela utilizada pelo sistema de reset.

Como esconder GM do ranking?

Algumas databases permitem filtrar por ctlcode, mas você deve confirmar os valores utilizados pela sua source.

Posso criar Top 200?

Sim. Em SQL Server, basta utilizar TOP 200 na consulta, desde que essa quantidade faça sentido para o layout e a performance do portal.

Ranking PHP funciona em MU Online 97D, 99z e Season 6?

O conceito funciona, mas os campos, classes, tabelas e estrutura da database precisam ser adaptados à versão e source utilizada.

Conclusão

Criar um ranking MU Online com PHP e SQL exige principalmente entender a estrutura da database.

Para Top Level, campos como cLevel e Experience costumam ser importantes. Para Top Resets, você precisa descobrir se sua source utiliza ResetCount, Resets ou ResetsG.

O melhor ranking não é aquele com a query mais complexa, mas aquele que consulta corretamente os dados reais utilizados pelo GameServer e faz isso de maneira segura e eficiente.

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.995.669
Visitas hoje 899
Visitas ontem 3.414
13/07: 1.264 visitas14/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: 899 visitas13/0715/0717/0719/0721/0723/0725/0726/07
Visitas registradas automaticamente.
© 2026 Aprendiz Mu Online