Documentação do Pulse Phone
Requisitos
2. Requisitos
| O quê | Obrigatório? | O que acontece sem ele |
|---|---|---|
| OneSync ativado | Obrigatório | A verificação de inicialização falha com OneSync ... off. Adicione set onesync on. |
| Game build 2699 ou mais recente | Obrigatório | O modelo do celular não faz stream. Defina sv_enforceGameBuild. |
| oxmysql (ou ghmattimysql, mysql-async) em MariaDB 10.6+ ou MySQL 8 | Recomendado | Sem nenhum resource de SQL rodando, os dados ficam no armazenamento key/value do servidor. Eles persistem, mas não dá para consultá-los, e acima de uns 30 jogadores você deve usar um banco de dados. |
| Um script de voz: pma-voice, mumble-voip, SaltyChat, TokoVOIP ou YACA | Recomendado | As chamadas conectam, mas sem áudio. |
| screenshot-basic | Recomendado (o resource padrão, ou a cópia mais leve do seu download: veja o guia rápido, passo 6) | A câmera enquadra, mas não consegue salvar fotos. |
| Um framework | Opcional | O celular roda em standalone: celulares vinculados à licença do jogador, e o celular mantém um banco próprio. |
Um bloco completo de server.cfg:
set onesync on
set sv_enforceGameBuild 2699 # or newer
ensure oxmysql
# ... your framework, then your inventory, banking, garage and housing scripts ...
ensure pma-voice
ensure screenshot-basic
ensure phone
# ... scripts that use the phone ...O banco de dados. Qual armazenamento o celular usa é decidido a cada inicialização:
| Seu servidor | Onde o celular guarda os dados |
|---|---|
| oxmysql, mysql-async ou ghmattimysql rodando, e o banco de dados responde | O banco de dados. As tabelas são criadas na primeira inicialização e as novas são adicionadas sozinhas após cada atualização. |
| Nenhum resource de SQL rodando | O armazenamento key/value do servidor, automaticamente. Ele persiste entre reinícios, mas não pode ser consultado. Acima de uns 30 jogadores, ou se o console avisar que salvar o armazenamento está lento, use um banco de dados. |
| Um resource de SQL rodando, mas o banco de dados não responde em 30 segundos | Nada é armazenado até ele responder. O console diz o motivo, e o celular tenta de novo a cada 15 a 60 segundos e termina de iniciar sozinho quando o banco de dados responde. |
No último caso, você pode mandar o celular usar o armazenamento key/value com set phone_db_fallback "kvp" no server.cfg; esses dados ficam no armazenamento key/value e nunca são copiados para o banco de dados depois, então use isso num servidor de testes, não como forma de contornar uma conexão quebrada. Toda consulta também tem um prazo de 10 segundos: uma consulta que o banco nunca responde é informada como falha ao app que pediu, e o console cita essa consulta uma vez.
Bancos de dados suportados: MariaDB 10.6 ou mais recente, ou MySQL 8.0 ou mais recente. O phone.sql de cada versão é verificado em um banco MariaDB novo rodando o SQL mode do MySQL 8 antes de o pacote ser montado. Versões mais antigas (MariaDB 10.4 ou 10.5, MySQL 5.7) não são testadas nem suportadas, mesmo que possam funcionar.
O phone.sql é só para hospedagens que não deixam um resource criar tabelas. Nenhum collation é definido nele: vale o padrão utf8mb4 do seu servidor, como quando o próprio celular cria as tabelas. É seguro rodar em um banco de dados existente, e rodar o novo de novo após uma atualização só adiciona o que estiver faltando.
O sv_stateBagStrictMode pode ficar ativado. Tudo o que os outros jogadores veem de um celular (a animação de segurar, o aparelho na mão, a tela, a lanterna) é definido pelo servidor depois de verificar o valor, nunca pelo jogo do jogador.
Trocando de celular
Tabelas de outro celular. Se um celular que você usava antes deixou tabelas com os mesmos nomes (por exemplo phone_messages), elas são renomeadas para old_<name> na primeira inicialização, para o Pulse Phone poder criar as dele. Nada é apagado. Se o usuário do seu banco de dados não puder renomear tabelas, a verificação de inicialização mostra [FAIL] Database com os nomes das tabelas: dê ao usuário permissão de ALTER, ou renomeie cada uma para old_<name> na sua ferramenta de banco de dados (HeidiSQL, phpMyAdmin), e reinicie.