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
:foreachdeve possuir um espaço entrease$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.