Pular para o conteúdo principal

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
Hero Dark

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

Side: server Syntax
Required arguments
  • player (player): jogador que receberá o celular.
Comportamento
  • 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: se true, impede que o player tenha mais de um celular.
  • Executa o callback config.events.onBuyPhone(player) após a criação.
Return
  • Não há retorno explícito. O celular é criado na database e vinculado ao player.
Example

openPhone

Side: server Syntax
Required arguments
  • player (player): jogador que terá o celular aberto.
Optional arguments
  • 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.
Comportamento
  • 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.
Return
  • Não há retorno explícito.
Example

removePhonePlayer

Side: server Syntax
Required arguments
  • player (player): jogador que terá o celular removido.
Optional arguments
  • phoneID (number): ID do celular a remover. Se não informado, remove o primeiro celular da conta do player.
Return
  • true se o celular foi removido com sucesso.
  • false em falha (player sem celular, ID inválido, etc.).
Example

getPhoneNumberByID

Side: server Syntax
Required arguments
  • player (player): jogador alvo.
Optional arguments
  • phoneID (number): ID do celular. Se não informado, busca o número do primeiro celular do player.
Return
  • string com o número de telefone, ex: "91234-5678".
  • false se não encontrado.
Example

getPhoneIDByPlayer

Side: server Syntax
Required arguments
  • player (player): jogador alvo.
Return
  • table com 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.
Example

getPlayerByPhoneID

Side: server Syntax
Required arguments
  • phoneID (number): ID do celular.
Return
  • player elemento do jogador que possui o celular, se ele estiver online.
  • false se o celular não existir ou o dono não estiver online.
Example

bindPhonePlayer

Side: server Syntax
Required arguments
  • player (player): jogador que terá o keybind ativado.
Comportamento
  • Ativa o keybind definido em config.keyOpen para o player.
  • Útil quando config.disableKeyOpen é true e você quer ativar manualmente apenas para alguns players (ex.: players que possuem celular no inventário).
Example

unbindPhonePlayer

Side: server Syntax
Required arguments
  • player (player): jogador que terá o keybind removido.
Comportamento
  • Remove o keybind definido em config.keyOpen do player.
  • Útil para remover o keybind quando o player dropar ou usar o celular no inventário.
Example

managerWifiController

Side: server Syntax
Required arguments
  • tableArguments (table): tabela com os argumentos da ação a ser executada. O campo type define a ação.
Tipos disponíveis (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.
Campos opcionais:
  • 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 sem source).
Return
  • true em sucesso.
Exemplo — criar rede

equipSpotifyJBL

Side: server Syntax
Required arguments
  • player (player): jogador que irá equipar a JBL.
Comportamento
  • Equipa o model da JBL (definido em config.jblModelObject) no corpo do player.
  • Ativa o sistema de bluetooth para o player.
Example

unEquipSpotifyJBL

Side: server Syntax
Required arguments
  • player (player): jogador que irá desequipar a JBL.
Comportamento
  • Remove o model da JBL do corpo do player sem dropar no chão.
Example

dropSpotifyJBL

Side: server Syntax
Required arguments
  • player (player): jogador que irá dropar a JBL.
Comportamento
  • 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.
Example

instagramVerifyAccount

Side: server Syntax
Required arguments
  • accountID (number): ID da conta do Instagram.
  • value (boolean): true para verificar, false para remover a verificação.
Comportamento
  • Define o status de verificação (selo azul) de uma conta do Instagram.
Return
  • Retorno direto da função interna instagram.verifyAccountAdmin.
Example

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.xml do sqh_phone.
  • Para que buyPhone e removePhonePlayer funcionem corretamente, o player deve estar logado em uma conta (não guest).
  • Os comandos equiparJBL e droparJBL já existem por padrão no script (quando config.jblCommandsActive = true). As exports são úteis para integração com outros sistemas.