Navegação da documentação

Integrações

Fora do vRP, o manifesto também muda#

Trocar só a bridge não basta. O fxmanifest.lua carrega arquivos da vRP antes de qualquer código nosso rodar, e o resource recusa subir sem ela. No sf_crafting são estas linhas:

  • dependencies { "vrp", "oxmysql", "PolyZone" }
  • "@vrp/config/Item.lua", "@vrp/config/Vehicle.lua", "@vrp/config/Global.lua" e "@vrp/config/Drops.lua" em shared_scripts
  • "@vrp/config/Native.lua" e "@vrp/lib/Utils.lua" em client_scripts
  • "@vrp/lib/Utils.lua" em server_scripts

Troque "vrp" em dependencies pela sua framework (ou remova a linha) e substitua os includes @vrp/... pelos equivalentes dela. Só depois disso a adaptação da bridge tem efeito.

bridge/server.lua#

FunçãoO que precisa devolver
Passport(source)id único do personagem
Source(passport)source online, ou nil
HasPermission(passport, perm)bool
HasGroup(passport, grupo)bool — bônus de farm, /craftconfig, /sfdiagnostico e aviso à polícia
Grupos(passport){ [grupo] = nível } — é o que decide de qual facção é o cofre do jogador
PlayerName(passport)nome de exibição, para o ranking e as encomendas
MembrosOnline(grupo)sources online do grupo — quem recebe a denúncia da rota
ItemAmount(passport, item)quantidade, chave real
RemoveItem / GiveItem / CanCarrymovimentação de item e limite de mochila
ItemName(item)nome de exibição
ItemExiste(item)bool — só o /sfdiagnostico usa
PermissaoExiste(perm)bool ou nil ("não sei") — só o /sfdiagnostico usa
Pay(passport, valor)cobra atomicamente (melhorias, encomendas)
Reward(passport, valor)paga o jogador (rota, encomendas)
InIsolatedWorld(source)está fora da cidade?
PlayerCoords(source)vector3
BindInterface(tabela)publica as funções para o client
Notify / NotifySourcenotificação na tela

Grupos devolvendo tabela vazia não é erro: significa "sem facção", e a bancada recusa o cofre da organização em vez de escolher um por conta.

Reward é o par de Pay e existe em separado porque pagar e cobrar caem em contas diferentes na maioria das bases.

bridge/client.lua#

FunçãoO que faz
Bridge.Server.*canal client → server (Tunnel no vRP)
Notify / Progressnotificação e barra de progresso
AddZone / RemoveZonezona de interação (target)
DrawInteractPrompt / IsInteractPressedprompt de "aperte E" na rota
CreateBlip / RemoveBlipblip da rota
CreateAlertBlip(coord, titulo)marca aproximada da denúncia, para a polícia

RemoveZone precisa funcionar: é ela que apaga a zona antiga quando a bancada muda de lugar no /craftconfig. Sem ela, o ponto antigo continua abrindo a bancada.

Cada função tem, no próprio arquivo, o equivalente em ESX / QBCore / ox_lib comentado logo acima.

Dispatch próprio#

Se a sua base tem um sistema de ocorrências, preencha Config.Rotas.Policia.Evento com o evento dele. Ele recebe (titulo, mensagem, x, y, z) e substitui o notify + blip padrão. A coordenada já chega com ruído — não aumente a precisão: a imprecisão é o que mantém a rota jogável.

Exports e eventos#

O SF Crafting não expõe exports públicos. Os eventos sf_crafting:* são internos da fila, armazém, rotas, encomendas e NUI, e não devem ser disparados externamente.