Todo script traz a mesma camada de bridges. Ela detecta o que roda no seu servidor, escolhe um target e diz qual foi. Nada para instalar, nada para corrigir, e os arquivos que fazem o trabalho podem ser lidos.
Quais frameworks são realmente suportados
ESX, QBCore e vRP têm um ramo dedicado, testado em cima dos exports reais. O modo standalone não precisa de framework nenhum, e custom é um ramo vazio que você mesmo preenche. Qbox e ox_core passam pelo caminho standalone ou custom em vez de um target testado, e dizemos isso em vez de alegar um suporte que não verificamos.
esx, testado em cima de es_extended
qbcore, testado em cima de qb-core
vrp, falado através do seu barramento de eventos e não da sua lib
standalone, sem framework
custom, um ponto de extensão documentado
Como a detecção funciona
A detecção roda na inicialização e sonda o export real, não apenas se o recurso está iniciado. Um framework que sobe depois de nós não nos prende para sempre: o bridge tenta de novo, depois desiste e cai para standalone. Cada bridge levanta uma flag Ready, e o resto do recurso espera essa flag em vez de um atraso adivinhado. Um Wait adivinhado já fez com que nenhum item de roupa fosse registrado em um servidor lento.
Coloque Config.Debug = true e reinicie. O console imprime uma linha por categoria de bridge nomeando o target escolhido. Volte para false quando as linhas baterem com o seu servidor, porque os comandos de diagnóstico que isso libera custam um engasgo de frame.
Forçar um target em vez de detectá-lo
Troque auto pelo nome que quiser. A detecção é então pulada por completo nessa categoria, o que é útil em um ambiente muito modificado onde a sondagem dá a resposta errada. As cinco categorias são independentes: você pode forçar o framework e deixar as notificações em auto.
Para que serve o ramo custom
Cada arquivo de bridge tem um ramo custom com um comentário indicando onde plugar o seu próprio código. Ele nunca é escolhido automaticamente, apenas quando você o nomeia, porque um fallback que caísse em silêncio num ramo vazio seria pior do que um que cai em standalone.
Por que o vRP é falado por eventos
Uma dependência dura no manifesto, aquela linha @vrp/lib/utils.lua que se vê em todo lugar, impede o recurso de iniciar em qualquer servidor sem vRP. O bridge fala então direto com o barramento de eventos do vRP. O benefício secundário é real: as diferenças de convenção entre forks vivem nesse helper, então ir direto elimina todas. vRP 2 e vRP 0.5 não são suportados, e o recurso avisa no console em vez de se comportar mal em silêncio.
Perguntas
Funciona em Qbox ou ox_core?
Roda, pelo caminho standalone ou custom, mas não por um ramo que testamos. Qbox é próximo o bastante do QBCore para que forçar qbcore funcione na maioria das builds. Preferimos escrever isso a alegar um suporte não verificado.
O que acontece se meu framework iniciar depois do script?
Nada quebra. A detecção tenta de novo em vez de fixar uma resposta errada na primeira olhada, e o recurso espera a flag Ready do bridge antes de tocar em qualquer coisa. Um recurso que não está instalado é descartado na hora, para que outros servidores não paguem a espera.
Posso rodar dois dos seus scripts lado a lado?
Sim, foram feitos para isso. Cada um é dono da sua metade do único slot de decoração do ped e devolve o resto após um redraw. O que você não deve fazer é rodar os recursos separados e o pacote ao mesmo tempo, e o console avisa na inicialização se for o caso.
Preciso do ox_lib?
Não. bridges/compat.lua fornece uma implementação nativa do que usamos, então o ox_lib é aproveitado quando está presente e substituído quando não está. Nada no manifesto depende dele.