A base
898 linhasOs dois resources dos quais todo o resto depende. Nenhum deles aparece para o jogador, e são os únicos que, se caírem, param o servidor inteiro.
mysql2, no lugar do oxmysql. A biblioteca de fora resolve o protocolo do MySQL na fiação — handshake, tipos binários, TLS —, e reescrever isso não seria independência, seria refazer um dialeto binário de vinte anos. O que é nosso é o que afeta o servidor todo dia: quantas conexões abrir, o que fazer quando o banco cai e que formato de resultado atravessa para o Lua.
documentação completa →
SQL.single(...) e não sabe quem responde. Foi essa separação que permitiu trocar o motor por baixo — do oxmysql para o nosso — sem encostar em nenhuma das 61 chamadas espalhadas por seis resources: mudaram três linhas. A segunda razão aparece todo dia em vez de uma vez na vida: é o único lugar por onde toda query passa, e por isso a consulta lenta agora surge no console com resource e SQL inteiro, em vez de o servidor engasgar sem ninguém saber onde.
As ferramentas
3.453 linhasO que os outros resources usam para falar com o jogador. Existem para que nenhuma tela do servidor precise ser desenhada duas vezes.
O jogo
38.208 linhasO que o jogador encontra. Em ordem de quando ele encontra.
/192, almoxarifado, garagem e faturamento. O chamado tem validade e volta para a fila se quem aceitou sair — sem isso, um paramédico que desconecta prende o chamado para sempre e o paciente fica no chão esperando ninguém.
A operação
3.255 linhasAdministrar o servidor. São duas metades porque nenhuma das duas dá conta sozinha: de fora do FiveM não existe "expulsar o jogador 3", e de dentro não existe ligar o servidor depois que ele caiu.
playerConnecting. É essa checagem na entrada que separa um ban de um kick — sem ela, a pessoa reconecta em dez segundos.
Desligados de propósito
continuam na pastaEstão comentados no server.cfg, não apagados — apagar esconde a decisão, e "por que isto não está ligado?" é a pergunta que volta toda vez que alguém abre a pasta de resources.
O que continua sendo de fora
Duas bibliotecas e uma base. Nenhuma delas é um resource que a gente mantém.
| O quê | Onde | Por que fica |
|---|---|---|
| mysql2 | npm, dentro do rp_mysql | Fala o protocolo do MySQL na fiação. Reescrever é refazer um dialeto binário de vinte anos, e o jeito de errar ali não é tela feia, é número errado gravado no personagem de alguém. |
| esbuild | npm, só na oficina | Empacota o driver e o painel. Não vai para a VPS: o que sobe é o arquivo pronto. |
| es_extended | [core] | A base do servidor. Não fizemos fork: ele aponta para @rp_mysql/lib/MySQL.lua e continua falando a língua que já falava. Uma linha no manifesto dele, e nada além. |
Não trocamos um resource de terceiros pelo nosso por gosto, e sim quando ele decide algo que precisa ser nosso: o que grava no banco, o que o jogador vê e o que administra o servidor. Biblioteca que resolve protocolo ou compila arquivo pode continuar vindo de fora — ninguém ganha nada reescrevendo isso.
Escrevendo neste manual
As páginas ficam em docs/ no repositório e sobem no mesmo git push vps main do resto do servidor. Não há build: é HTML servido do disco.
- Copie
rp_mysql.htmlcomo ponto de partida — ele já traz a barra de cima, o índice lateral e os tipos de aviso. - O visual inteiro vem de
estilo.css. Página nenhuma traz estilo próprio; se algo precisa de um jeito novo de mostrar, o jeito novo entra no arquivo compartilhado e passa a existir para todas. - Acrescente a linha na estante desta página e, quando houver documentação, o link.
O código já diz o que ele faz. Esta página existe para o que o código não consegue dizer: por que é assim, o que foi tentado antes, e o que quebrou. Uma página que só repete os nomes das funções envelhece em uma semana e não salva ninguém às duas da manhã.