Como instalar e configurar o LB Phone: ESX, QBCore e QBOX
Por Luke, RPScripts

O que é o LB Phone e do que ele precisa
O LB Phone é um recurso de smartphone completo para FiveM. Logo de cara ele cobre o que os jogadores esperam de um celular: chamadas, mensagens, e-mail, câmera, relógio, notas, mapas, clima, gravações de voz e uma loja de apps, além de apps sociais (InstaPic, Birdy, Trendy e Spark) e extras como DarkChat, um marketplace, Yellow Pages, música e cripto. O download traz dois recursos: o próprio lb-phone e um recurso separado para o prop do celular, lb-phoneprop.
Antes de instalar qualquer celular, anote o que o seu servidor realmente usa: framework, inventário, bibliotecas e a sua edição do GTA V com a versão do artifact do FXServer. Um celular mexe com chamadas, dados de personagem, itens de inventário e serviços do servidor, então verifique essas integrações, não só a lista de apps.
Frameworks suportados
Segundo a página do produto, o LB Phone funciona com ESX, QBCore, QBOX, ox_core, vRP 2.0 ou standalone e detecta o framework automaticamente por padrão. A documentação do criador também confirma essa detecção automática. Para qualquer outro framework existe um caminho documentado com framework personalizado (veja abaixo).
Requisitos
Os requisitos obrigatórios são poucos: oxmysql mais um dos frameworks suportados, ou standalone. O ox_core é uma dessas opções de framework, não uma dependência extra; a lista de dependências do criador não o inclui. O guia de instalação oficial acrescenta estes detalhes:
- MariaDB 10.11 ou mais recente. Você confere sua versão com
SELECT VERSION()no HeidiSQL. O guia diz expressamente para não usar XAMPP. - oxmysql
- loaf_bcrypt (recomendado)
- artifacts do servidor atualizados
- OneSync Infinity (opcional), necessário para alguns recursos como o AirShare
Antes de começar: faça backup e confira o banco de dados
O guia do criador pede para sempre fazer um backup antes de qualquer alteração no banco de dados. Aqui isso pesa ainda mais: antes de rodar o arquivo SQL do LB Phone, o guia manda apagar todas as tabelas que começam com phone_.
Num servidor novo, isso não faz mal. Num servidor que já rodava outro celular, pode apagar os dados dele. O gcPhone original e o base.sql do Re-Ignited, por exemplo, criam phone_app_chat, phone_calls, phone_messages e phone_users_contacts, então as quatro batem com o prefixo phone_. O Quasar Smartphone V3 usa o prefixo qs_phone_ nas tabelas. Antes de apagar qualquer coisa, exporte o banco, liste toda tabela que começa com phone_ e veja qual recurso a criou. Seguir instruções de reset num banco existente não preserva o histórico do celular. Se quiser manter os dados antigos, planeje primeiro uma migração num servidor de teste em vez de uma instalação limpa.
Instalação passo a passo
Os passos abaixo combinam a página do produto e o guia de instalação oficial. Onde o guia é mais detalhado, seguimos o guia.
1. Copie os recursos
Descompacte o download e copie lb-phone e lb-phoneprop da pasta [lb] para a pasta resources do seu servidor.
2. Apague as tabelas phone_ antigas e rode o arquivo SQL
Com o backup feito, apague todas as tabelas que começam com phone_ e depois rode no banco o arquivo incluído lb-phone/phone.sql. O criador recomenda o HeidiSQL e diz para não usar o phpMyAdmin. A página de problemas comuns dele acrescenta que erros de importação do SQL costumam vir do phpMyAdmin ou de uma versão antiga do MariaDB, e que hosts com painel de jogo muitas vezes vêm com os dois.
3. Instale as dependências
Instale o oxmysql e mantenha os artifacts do servidor atualizados. O oxmysql não vem no download e precisa iniciar primeiro.
O loaf_bcrypt é opcional, mas recomendado. O criador explica que o bcrypt nativo do FiveM roda na thread principal do servidor e pode causar uma travada de cerca de 80 ms quando o LB Phone gera ou confere o hash de uma senha, enquanto o loaf_bcrypt faz esse trabalho numa thread separada. O LB Phone detecta e usa o loaf_bcrypt automaticamente assim que ele é iniciado. Adicione estas linhas antes de start lb-phone no seu server.cfg:
add_unsafe_worker_permission loaf_bcrypt
start loaf_bcrypt
4. Defina a ordem de inicialização no server.cfg
Todo recurso que o LB Phone usa, incluindo seu framework, o oxmysql e o inventário, precisa iniciar antes do LB Phone. Apps personalizados iniciam depois. A página do produto dá esta ordem, colocada depois do oxmysql e do seu framework:
ensure oxmysql
ensure lb-phoneprop
ensure lb-phone
5. Configure uploads e chaves de API
Ajuste o config/config.lua às suas necessidades. Uploads de foto, vídeo e áudio precisam de um método de upload e de chaves de API: escolha o método no config.lua e coloque as chaves em lb-phone/server/apiKeys.lua. O método padrão é o Fivemanage; se preferir seu próprio armazenamento S3 ou R2, o criador indica o lb-presigned. Conte o serviço de upload como parte dos seus custos operacionais e guarde as credenciais na configuração do servidor, não no código do cliente.
Segundo o criador, depois disso o celular deve funcionar direto, com mais opções na pasta config.
Ainda não tem o LB Phone? Garanta o LB Phone v2 na RPScripts: download imediato, arquivos mais novos nos downloads da sua conta e suporte na instalação.
Notas por framework: ESX, QBCore e QBOX
O LB Phone detecta ESX, QBCore e QBOX automaticamente por padrão, então as fontes que conferimos não trazem uma instalação diferente para cada framework. As diferenças aparecem no seu inventário e nos apps ligados ao framework.
Celulares únicos
O LB Phone pode dar a cada item de celular um número próprio. Assim os jogadores podem roubar e emprestar celulares, mas isso exige um inventário com suporte a metadados. O criador recomenda o ox_inventory (para ESX, QBOX e outros) ou o qb-inventory (para QBCore) e cita lj-inventory, core_inventory e qs-inventory como suportados de fábrica. Outros inventários com metadados podem ser ligados pelo guia de inventário personalizado do criador.
Nos dois inventários recomendados, defina Config.Item.Unique e Config.Item.Require como true na config do LB Phone e, se quiser, Config.Item.Inventory com o nome do inventário. No ox_inventory você adiciona ou substitui o item phone em ox_inventory/data/items.lua e remove o bloco de integração do NPWD para Item('phone' em ox_inventory/items/client.lua. No qb-inventory (o guia mira a versão 2.0.0) você substitui a entrada phone em qb-core/shared/items.lua. Depois reinicie o servidor.
Decida o que deve acontecer quando um celular é dado, guardado ou apreendido, e teste sua integração em vez de supor que qualquer inventário com metadados funciona sem ajustes.
Housing e frameworks personalizados
O app Home suporta qb-houses, loaf_housing e qs-housing por padrão; você escolhe o seu com Config.HouseScript. Outros scripts de housing precisam de uma integração própria, que segundo o criador exige experiência com programação.
Com um framework personalizado, você edita os arquivos do framework standalone no cliente e no servidor. Para que os apps Wallet, Home, Garage e Services apareçam, defina Config.CustomFramework como true ou crie seus próprios arquivos de framework. Ou seja, uma instalação standalone também precisa de trabalho de integração para esses apps.
Videochamadas e servidores TURN
O LB Phone usa WebRTC para videochamadas, lives do InstaPic e gravação da voz de jogadores próximos. Se as videochamadas ou lives não mostram ninguém, o criador diz que geralmente um firewall está bloqueando a conexão e que um servidor TURN costuma resolver. O celular tem suporte nativo ao servidor Realtime TURN da Cloudflare via Config.DynamicWebRTC, e você também pode usar um serviço como o Metered via Config.RTCConfig. Confira também a sua edição do GTA V: as notas de migração da Cfx.re listam o Mumble como obsoleto no Enhanced, então uma dependência de voz sozinha não prova que as chamadas vão funcionar lá.
Problemas comuns depois da instalação
- App Wallet, Garage ou Services não aparece: o script não detectou seu framework, ou ele não está configurado corretamente.
- App Home não aparece: seu script de housing não está configurado; por padrão o app Home funciona com poucos scripts.
- O celular não abre: o criador sugere uma cópia nova do
lb-phone, depois definirConfig.DisableOpenNUIcomofalsepara achar um recurso em conflito e, por fim, ativar oConfig.Debug. - Erros ao importar o SQL: use o HeidiSQL em vez do phpMyAdmin e um MariaDB atualizado.
- "Unknown column x in field list": falta uma coluna do banco adicionada numa atualização; o criador publica as queries de correção no canal #updates do Discord dele.
- AirShare não funciona: ative o OneSync Infinity e atualize seus artifacts.
Para erros em geral, comece pela primeira linha vermelha sobre o recurso no console do servidor. Um objeto de framework nil geralmente significa que o framework inicia depois ou que é o framework errado.
Atualizando o LB Phone depois
De onde vêm os arquivos novos depende de onde você comprou o celular. Na RPScripts, um arquivo mais novo aparece nos downloads da sua conta assim que fica disponível. O guia do criador encaminha quem comprou o pacote dele para a Cfx.re.
Os passos de atualização do guia do criador:
- Faça backup da pasta
lb-phone, por exemplo em ZIP. - Faça backup do banco de dados se as patch notes disserem que o banco muda. O guia usa o "Export database as SQL" do HeidiSQL com as caixas "Create" marcadas, as caixas "Drop" desmarcadas e "Insert ignore (do not update existing)" selecionado para os dados.
- Apague o recurso
lb-phoneantigo. - Instale a versão mais recente.
- Reaplique suas alterações de config. A menos que as patch notes digam o contrário, você pode copiar a pasta config inteira.
Se uma atualização adicionar uma coluna e você tiver pulado as queries das patch notes, vai ver o erro "Unknown column" citado acima.
FAQ
Quais frameworks o LB Phone suporta?
ESX, QBCore, QBOX, ox_core, vRP 2.0 ou standalone, com detecção automática por padrão.
O ox_core é obrigatório?
Não. O ox_core é um dos frameworks suportados. A dependência obrigatória é o oxmysql.
Qual versão do MariaDB eu preciso?
MariaDB 10.11 ou mais recente, segundo o guia de instalação do criador.
Preciso mesmo apagar as tabelas phone_?
O guia do criador manda apagar todas as tabelas que começam com phone_ antes de rodar o arquivo SQL. Faça backup antes e confira a qual recurso cada tabela pertence, porque celulares mais antigos como o gcPhone usam o mesmo prefixo.
O OneSync é obrigatório?
O OneSync Infinity é opcional, mas alguns recursos como o AirShare precisam dele.
Cada celular pode ter um número próprio?
Sim, com o recurso de celulares únicos e um inventário com suporte a metadados.
Preciso do loaf_bcrypt?
É recomendado, não obrigatório. Ele tira o hash de senhas da thread principal do servidor.
Para esta escolha de celular, compare os Scripts de telefone: o LB Phone v2 faz parte da seleção atual para vários frameworks, o GKSPhone (ESX) é especificamente o pacote antigo para ESX 1.1/1.2 (1.2 FIX 5), e o CodeM Phone (mPhone 2.0) exige verificar as dependências do pacote. A documentação atual do GKSPHONE V2 descreve outro produto, diferente do download GKSPhone linkado aqui. Nenhum deles comprova uma migração sem perda dos dados do seu celular. A RPScripts vende esses pacotes.