Resolva problemas comuns
Resource não inicia
Está com problemas para iniciar o seu produto? Clique aqui
Configurar o resource
Está com dúvidas de como configurar algo no sistema? Clique aqui

Sobre o sistema
O Phone System é um sistema completo de celular para MTA, com aplicativos como WhatsApp, Instagram, Spotify, Paypal, Uber, Blaze e muito mais. Com as funções exportadas, você pode:- Dar/remover celulares para jogadores de forma programática (útil para sistemas de inventário, empregos, etc.);
- Abrir o celular para um jogador a partir de outro script;
- Buscar o número de telefone ou ID do celular por player;
- Buscar o player com base no ID ou número do celular;
- Vincular/desvincular o keybind de abrir celular manualmente;
- Gerenciar a JBL do Spotify (equipar, desequipar, dropar);
- Controlar redes Wi-Fi via script (criar, desconectar, verificar);
- Verificar/marcar contas do Instagram como verificadas.
Funções Exportadas
Server-side
- buyPhone ->
Dá um celular para o player - openPhone ->
Abre o celular para um player - removePhonePlayer ->
Remove o celular de um player - getPhoneNumberByID ->
Retorna o número de telefone pelo ID do celular ou player - getPhoneIDByPlayer ->
Retorna a lista de IDs de celulares de um player - getPlayerByPhoneID ->
Retorna o elemento player pelo ID do celular - bindPhonePlayer ->
Ativa o keybind de abrir celular para o player - unbindPhonePlayer ->
Remove o keybind de abrir celular do player - managerWifiController ->
Gerencia redes Wi-Fi do servidor - equipSpotifyJBL ->
Equipa a JBL do Spotify no player - unEquipSpotifyJBL ->
Desequipa a JBL do Spotify do player - dropSpotifyJBL ->
Dropa a JBL do Spotify no chão - instagramVerifyAccount ->
Verifica ou desverifica uma conta do Instagram
buyPhone
Side:server
Syntax
player(player): jogador que receberá o celular.
- Gera um número de telefone aleatório com base no
config.system.numberType. - Cria o celular na database e vincula à conta do player.
- Respeita a opção
config.haveOnlyOnePhone: setrue, impede que o player tenha mais de um celular. - Executa o callback
config.events.onBuyPhone(player)após a criação.
- Não há retorno explícito. O celular é criado na database e vinculado ao player.
openPhone
Side:server
Syntax
player(player): jogador que terá o celular aberto.
phoneID(number): ID específico do celular a abrir. Se não informado, abre o primeiro celular da conta do player.configurationsOpen(table): configurações adicionais de abertura.forceOpen(boolean): força a abertura mesmo com restrições.
- Se o celular já tiver passado pela configuração inicial, abre na tela de bloqueio.
- Se não, inicia o fluxo de configuração inicial (setup).
- Se o player não tiver celular, envia a mensagem
translate.not_have_phone.
- Não há retorno explícito.
removePhonePlayer
Side:server
Syntax
player(player): jogador que terá o celular removido.
phoneID(number): ID do celular a remover. Se não informado, remove o primeiro celular da conta do player.
truese o celular foi removido com sucesso.falseem falha (player sem celular, ID inválido, etc.).
getPhoneNumberByID
Side:server
Syntax
player(player): jogador alvo.
phoneID(number): ID do celular. Se não informado, busca o número do primeiro celular do player.
stringcom o número de telefone, ex:"91234-5678".falsese não encontrado.
getPhoneIDByPlayer
Side:server
Syntax
player(player): jogador alvo.
tablecom todos os IDs de celular vinculados ao player, ex:{1, 5, 12}.- Tabela vazia
{}se o player não tiver celular ou não estiver logado.
getPlayerByPhoneID
Side:server
Syntax
phoneID(number): ID do celular.
playerelemento do jogador que possui o celular, se ele estiver online.falsese o celular não existir ou o dono não estiver online.
bindPhonePlayer
Side:server
Syntax
player(player): jogador que terá o keybind ativado.
- Ativa o keybind definido em
config.keyOpenpara o player. - Útil quando
config.disableKeyOpenétruee você quer ativar manualmente apenas para alguns players (ex.: players que possuem celular no inventário).
unbindPhonePlayer
Side:server
Syntax
player(player): jogador que terá o keybind removido.
- Remove o keybind definido em
config.keyOpendo player. - Útil para remover o keybind quando o player dropar ou usar o celular no inventário.
managerWifiController
Side:server
Syntax
tableArguments(table): tabela com os argumentos da ação a ser executada. O campotypedefine a ação.
type)
'creationNetwork' — Criar uma rede Wi-Fi
Campos obrigatórios:
type='creationNetwork'name(string): nome da rede.position(table): posição e tamanho da área de cobertura.positionX/positionY(number): coordenadas fixas (opcional, se não informado usa a posição do source).width(number): largura da área.height(number): altura da área.
password(string): senha da rede (padrão: sem senha).public(boolean): se a rede é pública.networkType(string): tipo da rede.player(player): player de referência (quando chamado semsource).
trueem sucesso.
equipSpotifyJBL
Side:server
Syntax
player(player): jogador que irá equipar a JBL.
- Equipa o model da JBL (definido em
config.jblModelObject) no corpo do player. - Ativa o sistema de bluetooth para o player.
unEquipSpotifyJBL
Side:server
Syntax
player(player): jogador que irá desequipar a JBL.
- Remove o model da JBL do corpo do player sem dropar no chão.
dropSpotifyJBL
Side:server
Syntax
player(player): jogador que irá dropar a JBL.
- Remove a JBL do corpo do player e a dropa no chão na posição do player.
- Cria um marker no chão para que outros players possam pegar a JBL.
instagramVerifyAccount
Side:server
Syntax
accountID(number): ID da conta do Instagram.value(boolean):truepara verificar,falsepara remover a verificação.
- Define o status de verificação (selo azul) de uma conta do Instagram.
- Retorno direto da função interna
instagram.verifyAccountAdmin.
Observações
- Todas as exports exigem que o resource já tenha sido liberado pela proteção do sistema.
- As funções acima seguem o que está exportado no
meta.xmldosqh_phone. - Para que
buyPhoneeremovePhonePlayerfuncionem corretamente, o player deve estar logado em uma conta (não guest). - Os comandos
equiparJBLedroparJBLjá existem por padrão no script (quandoconfig.jblCommandsActive = true). As exports são úteis para integração com outros sistemas.