v4 Atualização da v4 disponível — framework refeito do zero. Ver novidades

Docs
Voltar ao blog
Tutoriais

15 de August de 2026

Como Criar uma Página de Players Online do Zero na MuCRM

Aprenda a consultar o banco de dados do jogo, estruturar a rota, criar o Controller e renderizar a lista de jogadores online em poucos passos.

Como Criar uma Página de Players Online do Zero na MuCRM 2.0

Exibir os jogadores conectados em tempo real no site aumenta a credibilidade do servidor e proporciona uma experiência mais dinâmica para a comunidade.

Prefere em vídeo? Este tutorial também está disponível no nosso canal oficial no YouTube.

Neste guia, você vai aprender a:

  • Criar a rota da página de jogadores online.
  • Criar o Controller responsável pela consulta.
  • Buscar os personagens conectados ao servidor.
  • Criar a View utilizando a Template Engine da MuCRM.
  • Exibir o total de jogadores online.
  • Criar, opcionalmente, um endpoint de API para sistemas externos.

1. Definindo a Rota

Primeiro, abra o arquivo de rotas web do seu projeto:

routes/web.php

Adicione a rota responsável pela página de jogadores online:

use App\Controllers\OnlinePlayersController;

Route::get('/online', [OnlinePlayersController::class, 'index']);

Agora, quando o usuário acessar:

/online

A MuCRM irá executar o método index() do OnlinePlayersController.


2. Criando o Controller

Agora vamos criar o Controller responsável por consultar os jogadores conectados.

Crie o arquivo:

app/Controllers/OnlinePlayersController.php

O Controller ficará responsável por:

  • Consultar os personagens.
  • Verificar quais jogadores estão online.
  • Ordenar os personagens por nível.
  • Calcular o total de jogadores conectados.
  • Enviar os dados para a View.
<?php

namespace App\Controllers;

use Core\Controller;
use Core\Database\DB;

class OnlinePlayersController extends Controller
{
    public function index()
    {
        // Consulta os personagens com status online no banco de dados
        $players = DB::table('MEMB_STAT')
            ->join(
                'Character',
                'MEMB_STAT.memb___id',
                '=',
                'Character.AccountID'
            )
            ->where('MEMB_STAT.ConnectStat', 1)
            ->select([
                'Character.Name',
                'Character.cLevel',
                'Character.Class',
                'MEMB_STAT.ServerName'
            ])
            ->orderBy('Character.cLevel', 'DESC')
            ->get();

        // Total de jogadores online
        $totalOnline = count($players);

        // Renderiza a View passando os dados
        return view('pages.online', [
            'players' => $players,
            'total' => $totalOnline
        ]);
    }
}

Entendendo a consulta

A consulta utiliza a tabela MEMB_STAT para identificar quais contas estão conectadas.

O campo:

->where('MEMB_STAT.ConnectStat', 1)

filtra somente os jogadores que estão com status online.

Também fazemos um JOIN com a tabela Character para obter informações como:

  • Nome do personagem.
  • Nível.
  • Classe.
  • Servidor.

3. Criando a View

Agora precisamos criar a página que irá exibir os jogadores.

Crie o arquivo:

views/pages/online.mucrm.php

A Template Engine da MuCRM permite utilizar uma sintaxe simples para trabalhar com layouts, condições e loops.

<div class="container py-8">

    <div class="header-section mb-6">

        <h1 class="text-2xl font-bold">
            Jogadores Online
        </h1>

        <p class="text-gray-400">
            Total de guerreiros conectados agora:
            <span class="badge">
                {{ $total }}
            </span>
        </p>

    </div>

    :if(empty($players))

        <div class="alert alert-info">
            Nenhum jogador conectado no momento.
            Seja o primeiro a entrar!
        </div>

    :else

        <table class="table-players">

            <thead>
                <tr>
                    <th>Nome</th>
                    <th>Classe</th>
                    <th>Nível</th>
                    <th>Sala / Servidor</th>
                    <th>Status</th>
                </tr>
            </thead>

            <tbody>

                :foreach($players as $player)

                    <tr>

                        <td class="font-semibold">
                            {{ $player->Name }}
                        </td>

                        <td>
                            {{ $player->Class }}
                        </td>

                        <td>
                            {{ $player->cLevel }}
                        </td>

                        <td>
                            {{ $player->ServerName }}
                        </td>

                        <td>
                            <span class="status-online">
                                Online
                            </span>
                        </td>

                    </tr>

                :endforeach

            </tbody>

        </table>

    :endif

</div>

Atenção: observe que o :foreach deve possuir um espaço entre as e $player:

:foreach($players as $player)

e não:

:foreach($players as$player)

4. Disponibilizando os Players via API

Se você quiser disponibilizar a quantidade de jogadores online para sistemas externos, como:

  • Bot do Discord.
  • Launcher.
  • Painel externo.
  • Aplicativo.
  • Site externo.
  • Sistemas de monitoramento.

Você pode criar um endpoint na API.

Abra:

routes/api.php

E adicione:

use Core\Database\DB;

Route::get('/v1/players/online', function () {

    $players = DB::table('MEMB_STAT')
        ->where('ConnectStat', 1)
        ->count();

    return request()->json([
        'status' => 'success',
        'online_count' => $players
    ]);
});

O endpoint ficará disponível em:

/v1/players/online

E poderá retornar uma estrutura semelhante a:

{
    "status": "success",
    "online_count": 127
}

5. Estrutura Final dos Arquivos

Depois de concluir o exemplo, sua estrutura poderá ficar assim:

app/
└── Controllers/
    └── OnlinePlayersController.php

routes/
├── web.php
└── api.php

views/
└── sua_template/
    └── online.mucrm.php

6. Resultado

Com essa implementação, a MuCRM terá uma página dedicada para exibir os jogadores atualmente conectados ao servidor.

O fluxo funciona da seguinte maneira:

Usuário acessa /online
        ↓
Route identifica a URL
        ↓
OnlinePlayersController
        ↓
Consulta MEMB_STAT
        ↓
Filtra ConnectStat = 1
        ↓
Busca os personagens
        ↓
Envia os dados para a View
        ↓
online.mucrm.php
        ↓
Jogadores são exibidos na página

Fluxo da API

Para sistemas externos, o fluxo é ainda mais simples:

GET /v1/players/online
        ↓
Consulta MEMB_STAT
        ↓
Filtra jogadores online
        ↓
Retorna JSON

Assim, você pode reutilizar a mesma informação em diferentes partes do ecossistema da MuCRM, como site, launcher, Discord, dashboard e outros sistemas externos.

Pronto para colocar o servidor no ar?

Licença Master a partir de R$ 24,99/mês.

Ver planos

Presente exclusivo

7 dias grátis

Crie sua conta agora e ganhe acesso completo por 7 dias.

Ao criar sua conta, você concorda com nossos Termos e Políticas.