Sim, seu jogo pode reagir a presentes do TikTok
O Social Stream Ninja captura um evento e o envia à sua página. Seu JavaScript decide a ação: impulsionar um foguete, cultivar um jardim, gerar um inimigo ou avançar uma meta coletiva. Você escolhe a ação e o limite no jogo. O SSN não altera os preços de presentes da plataforma.
Comece aqui: experimente os três modelos, depois escolha se a regra usa unidades da plataforma, identidade do presente ou USD estimados.
Para som, alerta, ação do OBS ou webhook, comece com Event Flow. Uma página HTML personalizada serve para criar um tabuleiro ou manter o estado do seu jogo. Para jogos prontos, veja a galeria de jogos.
Três modelos pequenos e editáveis
Cada prévia tem botões de exemplo e um inspetor dos últimos dados recebidos. São eventos fictícios, não compras. O modo de prévia nunca entra na sessão ao vivo.
- Foguete de moedas: 10 moedas do TikTok, 100 Bits da Twitch ou 100 Estrelas do Facebook rendem um impulso. As sobras acumulam separadamente por espectador e plataforma. Altere
COSTno HTML para definir seus valores. - Meta de apoio compartilhada: combine apoio estimado em USD das quatro plataformas para construir uma base lunar. Altere
GOAL_USDou substitua o indicador de progresso por dano, combustível ou cronômetro. - Jardim de presentes e eventos: um presente escolhido do TikTok adiciona flores, um novo seguidor capturado adiciona uma árvore e o comando gratuito
!waterno chat adiciona água. DefinaGIFT_IDcomo um ID capturado, ou definaGIFT_NAMEcomo o nome exato. “Demo flower” é um exemplo fictício.
Abra o código HTML e procure EDIT THIS RULE ou EDIT THESE RULES. O receive(data) é onde você troca a ação de exemplo pela lógica do seu jogo. Os auxiliares de conexão e contagem estão em starter.js; os estilos visuais estão em starter.css.
Conecte um modelo à sua transmissão
- Inicie o SSN e conecte a fonte de chat. Confirme que mensagens e presentes/apoio chegam ao dock. Para configurar o TikTok, veja modos de conexão.
- Abra um modelo sem
?demo, usando seu ID de sessão do SSN. Inclua a senha da sessão, se houver. - Confira a página no navegador e adicione a mesma URL como Fonte de navegador no OBS, por exemplo em 1000 × 800. Adicione
&cleanpara ocultar o inspetor, status da conexão e botões do apresentador.
https://socialstream.ninja/games/templates/coin-rocket.html?session=YOUR_SESSION&password=YOUR_PASSWORD&clean
Se usar o site beta, mantenha /beta/ antes de games/. Omita o parâmetro de senha se não houver senha. Mantenha os links de sessão privados.
A conexão padrão usa a mesma ponte iframe das sobreposições do SSN. Para usar a rota hospedada de chat capturado via WebSocket, ative no SSN a opção Enviar mensagens da extensão ao dock pelo servidor e acrescente &server2. Veja o Guia de WebSocket para configuração local; os modelos também aceitam &server2&localserver e &localserverport=3000. localserver sozinho não ativa uma rota. O antigo server usa outro canal e pode depender de um dock publicando nele.
Faça sua própria cópia
Baixe o ZIP do código beta e extraia. Edite os arquivos em games/templates/, preservando a estrutura de pastas: os modelos também carregam js/local-server-url.js, e a meta de apoio carrega currency.js a partir da raiz do repositório.
Sirva a pasta extraída com um servidor web local. Se já tiver Python, execute na pasta:
python -m http.server 8080 --bind 127.0.0.1
Depois use http://127.0.0.1:8080/games/templates/coin-rocket.html?session=YOUR_SESSION no navegador ou OBS. Em outra hospedagem, preserve os caminhos relativos. Não é necessário compilar.
Como escolher a quantidade de moedas de uma ação?
Escolha o que deseja medir antes de escolher um número:
| Regra | Leia | Exemplo |
|---|---|---|
| Unidades da plataforma | TikTok meta.coinsPerGift × meta.tiktokGiftCount quando fornecido, ou um valor explícito em hasDonation com rótulo como 10 coins, 100 bits, ou 100 Stars. | Cada 10 moedas rendem um impulso. |
| Um presente específico | TikTok meta.giftId ou meta.giftName, além da quantidade. | Cada presente correspondente adiciona uma flor, independentemente do valor estimado em USD. |
| Valor de apoio comparável | getDonationValueUSD(data) de currency.js. | Cada US$ 1 estimado adiciona 10 de combustível; US$ 25 completam a meta. |
| Uma ação gratuita ou de assinatura | O valor real da fonte em event, ou um comando de chat. | Seguir faz uma árvore crescer; uma nova inscrição exibe uma animação. |
Decida se a quantia representa exato (coins === 10), um mínimo por evento (coins >= 10), ou um saldo acumulado. O foguete usa saldo acumulado: 25 moedas rendem dois impulsos e deixam cinco moedas. Uma regra de exatamente 10 ignoraria 25 moedas. Ao escolher uma ação entre várias por evento, verifique primeiro o maior limite para não acionar todos os níveis inferiores.
No TikTok, espectadores compram Moedas e as gastam em Presentes; o custo aparece junto ao presente. Escolha presentes disponíveis na sua LIVE e inspecione a captura antes de publicar uma regra. Presente identificado, quantidade de presentes, Moedas e Diamantes são medidas diferentes. Não calcule “moedas exatas” dividindo estimativas em USD nem trate diamantes como moedas. Explicação do TikTok sobre Moedas e Presentes.
Se a captura fornecer apenas nome/quantidade do presente ou um rótulo de diamantes, o modelo de moedas ignora o evento, salvo se houver metadados explícitos de moedas. Use uma regra por identidade do presente ou o modelo de USD estimados. Os metadados também podem vir do mapeamento de presentes do SSN; compare com a bandeja atual de presentes da LIVE quando o preço exato importar. Catálogos e métodos de captura variam; nenhum campo universal de moedas é garantido em todas as mensagens do TikTok.
O que cada plataforma envia
type identifica a fonte; event identifica uma ação quando presente. A disponibilidade depende do modo de captura, das configurações e do que a plataforma expõe. Os exemplos descrevem os caminhos atuais do SSN, sem garantir todos os eventos para todas as contas.
| Plataforma | Dados de apoio e eventos | Mantenha separado |
|---|---|---|
| TikTok | type: "tiktok", event: "gift". A captura de doações pode fornecer hasDonation e donoValue. Os metadados podem incluir ID, nome, quantidade, moedas ou diamantes por presente e identificação da sequência. | Moedas compram Presentes; Diamantes são recompensas dos criadores. A captura WebSocket do SSApp consolida sequências antes de encaminhá-las; a captura pelo navegador pode enviar atualizações cumulativas. Desativar a captura de doações do TikTok pode deixar presentes sem campos monetários. |
| Twitch | Cheers usam Bits, como hasDonation: "100 bits". A captura pela API pode usar event: "cheer" e donoValue: 1; a captura do chat renderizado pode não ter marcador de evento. | Inscrições, inscrições de presente, raids e Pontos do Canal são ações distintas. Um emblema de inscrito numa mensagem comum não é uma nova inscrição. Cheers diretos e Bits usados em Extensões da Twitch são integrações diferentes. |
Linhas visíveis de Estrelas no Live Chat fornecem, por exemplo, hasDonation: "100 Stars" e donoValue: 1, sem event . | A API de comentários não deduz Estrelas do texto. A captura pelo DOM precisa de uma linha visível de Estrelas; comentários e reações comuns não comprovam pagamento. | |
| YouTube | superchat e supersticker trazem o valor na moeda original em hasDonation. Presentes usam jeweldonation com N Jewels, ou 1 YouTube Gift quando o valor está oculto. | Espectadores gastam Joias em Presentes; criadores ganham Rubis. Membros e assinaturas de presente são eventos separados, não Joias. Valeu demais é outro produto e não garante um evento de doação no chat ao vivo. |
Referências das plataformas: Diamantes do TikTok; Bits e inscrições da Twitch; Visão geral das Estrelas da Meta; Super Chat e Super Stickers do YouTube; Joias, Presentes e Rubis do YouTube. Terminologia conferida em 29 de setembro de 2026; consulte as páginas atuais das plataformas sobre disponibilidade e requisitos.
Outras fontes também podem informar gorjetas, presentes, assinaturas ou compras. Inspecione a referência de eventos antes de adicioná-los ao filtro isSupport . Uma venda de produto ou inscrição de presente não é automaticamente uma gorjeta. O YouTube, por exemplo, separa compra de presentes de avisos de resgate pelo destinatário; contar ambos recompensaria o mesmo presente duas vezes.
Use donoValue e currency.js corretamente
hasDonation é o rótulo original exibido, como €5.00 ou 100 bits. donoValue é um valor numérico opcional em USD fornecido pela fonte. Respeite um valor válido, incluindo zero, antes de estimar pelo rótulo. Preserve o rótulo original para exibição.
<script src="../../currency.js"></script> <script> // From games/templates/: use the existing helper, including its zero handling. var usd = getDonationValueUSD(data); // Use usd for your rule; display data.hasDonation for the original amount/unit. </script>
Comportamento atual da conversão: Atualmente, o SSN estima uma moeda do TikTok em US$ 0,01, um diamante em US$ 0,005, um Bit da Twitch ou Estrela do Facebook em US$ 0,01 e uma Joia do YouTube em US$ 0,005. Presentes do TikTok sem preço usam uma moeda por presente; presentes do YouTube sem quantidade de Joias usam uma estimativa provisória de US$ 0,01. A conversão de moedas também usa taxas internas aproximadas, sem cotação em tempo real.
São valores de comparação do SSN, não uma definição comum de gastos do espectador, receita líquida ou saldo para saque. Métodos de captura podem gerar estimativas diferentes. Em especial, a estimativa de uma moeda para um presente desconhecido não comprova seu preço.
Não use donoValue || convertToUSD(...): isso descarta um zero intencional. Não extraia números de chatmessage para detectar pagamentos nem exija o marcador event === "donation": Estrelas do Facebook e alguns Cheers não têm marcador de evento. O modelo de meta seleciona os tipos de apoio antes de chamar o conversor compartilhado.
Fonte: currency.js e o referência dos dados. Os metadados de presentes são opcionais; os exemplos não inventam campos ausentes na captura.
Conte cada sequência de presentes uma vez
O TikTok pode informar contagens cumulativas 1, 2, 3 para a mesma sequência: são três presentes, não seis. Para ações aditivas, guarde a maior contagem ou valor já visto e aplique apenas o aumento. Uma atualização final com o mesmo total não adiciona nada.
// All three events refer to the same streak: // incoming total: 1, 2, 3, 3 // added to game: 1, 1, 1, 0 var newCoins = RewardStarter.increment(data, RewardStarter.coins(data), 'coins');
O auxiliar usa IDs nativos de grupo/remetente/presente do TikTok quando disponíveis, depois meta.tiktokGiftStreakId ou IDs de mensagem. IDs comuns também evitam entregas repetidas. O auxiliar não espera por repeatEnd porque a captura pelo navegador pode nunca fornecer esse campo. Se quiser uma única ação após uma sequência concluída, crie uma regra de conclusão separada com os campos realmente enviados pela conexão.
Os modelos guardam até 2.000 identificadores na memória. Reiniciar ou recarregar apaga essa memória e o progresso. Mensagens sem IDs estáveis não permitem eliminar duplicatas com segurança; uma segunda captura do mesmo canal pode usar outros IDs. Comece com uma única rota. O foguete agrupa saldos por plataforma e ID do usuário, usando o nome de exibição se não houver ID; nomes iguais podem compartilhar saldo. Para um jogo persistente, salve o estado e trate reenvios antes de depender de recompensas pagas após reiniciar.
Recompensas sem jogo personalizado
Em Event Flow, use Comparar propriedade com donoValue, maior ou igual, e seu limite em USD; depois conecte uma ação, como som, animação ou controle do OBS. A comparação usa o valor informado pela fonte quando válido e a conversão existente quando necessário.
Para um presente específico do TikTok, compare meta.giftId ou meta.giftName, e limite o fluxo a eventos de presentes do TikTok. Comparações numéricas de hasDonation também resultam em USD; não comparam moedas brutas. Use metadados nativos ou código próprio para regras de moedas.
Um limite por mensagem recebida é diferente de saldo acumulado ou contador de sequência. Não presuma que um limite no Event Flow acumule valores e trate duplicatas como o modelo. Use os nós de estado quando o fluxo precisar de estado, ou mantenha essa lógica no jogo.
Teste antes de vincular uma ação paga
- Use os botões de exemplo. Uma sequência 1 → 2 → 3 deve valer três presentes; o exemplo com valor explícito zero não deve adicionar USD; preço desconhecido não deve adicionar moedas exatas.
- Conecte a fonte real e inspecione os dados capturados. Confirme nome/ID do presente, valor/unidade, quantidade e evento esperado. Um exemplo comprova a regra, não a captura ao vivo.
- Confira na cena do OBS. Teste eventos repetidos, reconexão e recarga. Evite desligar ou atualizar a Fonte de navegador quando precisar preservar a partida na memória.
Em jogos sem supervisão ou AFK, SSN, captura da fonte e página do jogo precisam continuar funcionando. Suspensão do computador, login expirado ou desconexão interrompem as ações; os modelos não recuperam eventos perdidos nem tratam reembolsos. Reações automáticas não autorizam monetizar transmissões sem supervisão: confira as regras atuais de LIVE e monetização da plataforma para o seu formato.
Se nada chegar, confira primeiro o dock do SSN, depois sessão/senha e transporte. Se o chat chegar mas o presente não corresponder, inspecione os dados e os filtros de doações/eventos. A disponibilidade de eventos de seguir e assinar varia; veja a referência de eventos. Para detalhes da conexão, veja sobreposições personalizadas.