Phone Smartphone
Módulo do celular. Traz ligações, mensagens, redes sociais, jogos, serviços e o painel de moderação. A tela é do phone: este resource só roda no servidor.
Precisa de: phone
Instalação
ensure phone
ensure phone_smartphoneColoque depois do phone. As tabelas vêm do install.sql do phone. Veja a ordem de instalação.
Sem este módulo, ninguém abre o celular: os modelos de celular saem da loja e /celular não existe. O tablet continua funcionando. O phone_watch depende deste módulo.
Este módulo não tem arquivo de configuração. As opções ficam em phone/shared-side/config.lua.
Apps
| Grupo | Apps |
|---|---|
| Comunicação | Telefone, Mensagens, Contatos |
| Redes sociais | Birdy, Instapic, Trendy, Flash, Match, DarkChat, Páginas |
| Utilidades | Calendário, Casa, Serviços, Tempo, Notícias, Gravador, Toques, Rádio, Saúde, Cripto |
| Jogos | Onde É?, Cobrinha, Blocos, Voo, Tijolos, Torre, Memória, Campo Minado |
| Administração | Admin |
Veja ID, instalação e função de cada um na tabela de apps.
Número
O personagem ganha uma linha de 6 dígitos, no formato 123-456, na primeira vez que precisa dela.
Ligações
- Atender:
Y. Recusar:N. - Ligação de vídeo entre dois celulares.
- Recado de voz de até 60 segundos. Exige envio de mídia.
- Viva-voz: quem está a até 3 m ouve a ligação.
- Modos do celular: avião, silencioso e não perturbe.
A ligação de vídeo funciona sem configuração, com STUN. Para usar TURN, informe uma chave TURN da Cloudflare:
| Convar | O que é |
|---|---|
cf_turn_key_id | ID da chave TURN |
cf_turn_token | Token da chave TURN. Use set, nunca setr |
Orelhão
Os orelhões do mapa viram ponto de uso, por target ou pela tecla E, conforme Interaction. A ligação custa Payphone.Cost em dinheiro e o valor volta se ninguém atender. Sair a mais de 3 m encerra a ligação.
Serviços e empresas
O app Serviços abre chamados e liga para as empresas. A lista está fixa em server-side/services.lua:
| Linha | Grupo | Código |
|---|---|---|
| Polícia | Policia | 190 |
| Hospital | Paramedico | 192 |
| Mecânica | Bennys | Oficina |
| Bahamas | Bahamas | |
| Restaurante | Restaurante |
Quem está em serviço no grupo vê os chamados, assume, comenta e encerra. Cargos 1 a 3 do grupo redistribuem chamados de outros membros. Chamados encerrados somem depois de 3 dias.
Alertas para a cidade
Os grupos de Alert.Groups enviam, pelo app Serviços, um alerta para todos os jogadores.
Toques
O jogador usa os toques gratuitos, compra os pagos em dinheiro ou no banco e cria toques próprios a partir do Gravador ou de um link. Toque próprio só toca depois de aprovado no app Admin.
Permissão
O app Admin exige o grupo Admin. Cada ação negada aparece no log do canal Phone.
| Ação | Regra |
|---|---|
| Buscar jogador | Por passaporte, número ou nome |
| Trocar número | Sorteia outra linha |
| Bloquear celular | Até 1440 minutos |
| Notificação | Para um jogador ou para todos |
| Apps | Liga e desliga qualquer app que não seja fixo |
| Moderação | Apaga posts de Birdy, Instapic, Páginas e Notícias |
| Toques | Aprova ou recusa toques próprios |
| Estatísticas | Mensagens e ligações do dia |
Os grupos de News.Groups publicam no app Notícias.
Configuração
Tudo fica em phone/shared-side/config.lua.
Redes sociais
| Opção | Padrão | O que muda |
|---|---|---|
Flash.Friends | 200 | Máximo de amigos |
Flash.Recipients | 20 | Destinatários por foto |
Flash.Caption | 80 | Tamanho da legenda |
Flash.Expire | 86400 | Segundos até a foto expirar |
Match.Likes | 50 | Curtidas por dia |
Match.Interests | 18 interesses | Interesses que o jogador escolhe |
Ligações e orelhão
| Opção | Padrão | O que muda |
|---|---|---|
Payphone.Cost | 5 | Preço da ligação no orelhão |
Calls.CompanyAnonymous | false | true deixa o jogador esconder o número ao ligar para empresas |
Alertas e notícias
| Opção | Padrão | O que muda |
|---|---|---|
Alert.Groups | Polícia, Hospital, Prefeitura | Quem envia. Duty = true exige estar em serviço |
Alert.Cooldown | 300 | Segundos entre alertas do mesmo jogador |
Alert.Global | 60 | Segundos entre alertas de qualquer jogador |
Alert.History | 20 | Alertas guardados |
News.Groups | Admin, como Redação | Quem publica |
News.Categories | 6 categorias | Categorias das notícias |
News.Cooldown | 600 | Segundos entre notícias urgentes da mesma redação |
Cripto
| Opção | Padrão | O que muda |
|---|---|---|
Crypto.Coins | KRO, PXL, GRN, NEO | Moedas: Id, Name, Symbol, Color, Price, Volatility e Drift |
Crypto.Tick | 60 | Segundos entre mudanças de preço |
Crypto.Revert | 0.0005 | Força que puxa o preço de volta ao valor de Price |
Crypto.Keep | 7 | Dias de histórico de preço |
Crypto.Fee | 1.5 | Taxa, em % |
Crypto.DailyLimit | 250000 | Limite diário de compra e venda |
Crypto.MinOrder | 50 | Valor mínimo da ordem |
Crypto.Transfer | true | Permite enviar para outro jogador |
As 8 ações do app são fixas no código.
Jogos
Games guarda a pontuação máxima aceita em cada jogo. Acima do teto, a pontuação é recusada e o servidor dispara krs:security:Flagged.
| Jogo | Max |
|---|---|
cobrinha | 4000 |
blocos | 4000000 |
voo | 5000 |
tijolos | 3000000 |
stack | 10000 |
memoria | 100000 |
campo | 100000 |
Para programadores
Exports do servidor, em exports.phone_smartphone ou exports.phone:
exports.phone:Number(passaporte) -- número, ou false
exports.phone:Source(numero) -- source do dono online, ou false
exports.phone:Formatted(passaporte) -- "123-456", ou "Nenhum"
exports.phone:Format(numero)
exports.phone:All() -- { [passaporte] = numero }
exports.phone:Renumber(passaporte) -- sorteia outro número
exports.phone:Move(de, para) -- passa linha e dados de um passaporte para outro
exports.phone:CreateCall(source, numero)
exports.phone:PayphoneCall(source, numero)
exports.phone:EndCall(source)
exports.phone:OwnsRingtone(passaporte, id)
exports.phone:GrantRingtone(passaporte, id)Eventos de servidor: phone:CallStarted, phone:CallAnswered e phone:CallEnded. Todos recebem uma tabela com Id, From, FromSource, FromNumber, To, ToSource, ToNumber, Company, Anonymous, State, Started, Answered e Ended.
Problemas comuns
| Mensagem | Causa |
|---|---|
Celular indisponível. | O resource phone não está ligado |
Seu celular foi bloqueado pela administração. | Bloqueio feito no app Admin |
Ninguém disponível para atender agora. | Empresa sem ninguém em serviço |
A ligação custa $5 em dinheiro. | O jogador não tem o dinheiro para o orelhão |
Chegue mais perto do orelhão. | O jogador está a mais de 2 m |
Clima indisponível no momento. | O resource time_system não está ligado |
[phone] o TURN da Cloudflare recusou a credencial | cf_turn_key_id ou cf_turn_token errado. O vídeo volta a usar só STUN |
