Sì, il gioco può reagire ai regali TikTok
Il tuo JavaScript sceglie l'azione: spingere un razzo, far crescere un giardino, creare un nemico o riempire un obiettivo condiviso. Scegli anche la soglia. SSN non può cambiare i prezzi dei regali di una piattaforma.
| Voglio… | Inizia qui |
|---|---|
| Riprodurre un suono, un avviso, un'azione OBS o un webhook | Event Flow (senza codice) |
| Creare un tabellone o gestire il mio stato di gioco | Un modello iniziale sotto |
| Usare un gioco pronto | Il galleria giochi |
Scegli un modello
Ogni anteprima ha pulsanti di esempio e un ispettore “Ultimi dati ricevuti”. Gli esempi sono eventi fittizi, non acquisti. L'anteprima non entra mai nella sessione live.
| Modello iniziale | Cosa fa | Modifica questo |
|---|---|---|
| Razzo a monete | 10 monete TikTok, 100 Bits Twitch o 100 stelle Facebook danno una spinta. Il resto viene conservato per spettatore e piattaforma. | COST |
| Obiettivo di supporto condiviso | Il valore stimato in USD delle quattro piattaforme costruisce una base lunare. Sostituisci il progresso con danni, carburante o un timer. | GOAL_USD |
| Giardino di regali ed eventi | Un regalo TikTok scelto aggiunge fiori. Un nuovo follower TikTok aggiunge un albero. Il comando gratuito !water in chat aggiunge acqua. | GIFT_ID (un ID acquisito) oppure GIFT_NAME (nome esatto). “Demo flower” è inventato. |
- Nell'HTML, cerca
EDIT THIS RULEoppureEDIT THESE RULES. - Metti la logica del gioco nella funzione
receive(data). - Gli helper di connessione e conteggio sono in starter.js. Gli stili sono in starter.css.
Collega un modello in 3 passaggi
- Avvia SSN e collega la chat. Verifica che chat e regali appaiano nel dock. Per TikTok, consulta le modalità di connessione.
- Apri il modello senza
?demo, usando l'ID di sessione (e la password, se impostata). - Verifica nel browser. Poi aggiungi lo stesso link a OBS come sorgente browser, ad esempio a 1000 × 800.
https://socialstream.ninja/games/templates/coin-rocket.html?session=YOUR_SESSION&password=YOUR_PASSWORD&clean
&cleannasconde l'ispettore, lo stato della connessione e i pulsanti dell'host.- Nessuna password? Ometti
&password=…. - Sul sito beta, mantieni
/beta/prima digames/.
Altri percorsi di connessione (WebSocket)
Per impostazione predefinita, i modelli usano lo stesso bridge iframe delle sovrimpressioni SSN.
- WebSocket ospitato: attiva Invia messaggi dall'estensione al dock tramite server in SSN, poi aggiungi
&server2. - Server locale: aggiungi
&server2&localserver, oppure&localserverport=3000. Vedi la Guida WebSocket. localserverda solo non attiva un percorso.- Il vecchio flusso
serverusa un canale diverso e può richiedere un dock che vi pubblichi.
Crea la copia ed eseguila dal disco
Nessun server da installare. Modifichi un file sul computer e fai puntare OBS a quel file.
- Scarica il codice beta in ZIP ed estrailo.
- Copia il modello scelto accanto all'originale. Esempio:
games/templates/my-rocket.html. - Mantieni la struttura delle cartelle. I modelli caricano
js/local-server-url.js, mentre l’obiettivo di supporto caricacurrency.jsdalla cartella radice. Mantieni al loro posto anche immagini e audio. - Trascina il file HTML in Chrome o Edge e copia l'indirizzo
file:///. - Aggiungi tutto da
?in poi dal link funzionante del gioco (sessione, password, opzioni di trasporto). - A OBS, parti File locale deselezionato. Incolla l'indirizzo completo nel campo URL campo.
- Dopo ogni modifica, aggiorna la sorgente browser.
file:///C:/SSN/social_stream-beta/games/templates/my-rocket.html?session=YOUR_SESSION&clean
Usa il percorso reale. Non spostare la cartella estratta. La sessione è l'ID di connessione SSN, non il nome del gioco. Rimuovi demo per i dati live. Mantieni attivi SSN e cattura. Altri esempi: guida alla configurazione dei file.
games/. games.html e battle.html hanno una propria logica. Le impostazioni delle regole dei modelli non sono un'API di gioco condivisa.Prompt IA per cambiare lo stile di un gioco
Dai all'IA l'HTML copiato, starter.js, starter.css, gli helper della cartella radice js/ , la grafica o l'audio e docs/event-reference.html.
Customize [game file] to match [reference], at [canvas size].
Include its existing CSS/JS and local artwork/audio. Preserve the game's
rules, controls, gift/coin/USD distinctions, streak handling, duplicate
handling, and demo/clean modes. Change the visual design, not the reward rules,
unless I explicitly specify a rule change. Keep session/password and
transport parsing, relative paths, and Chrome 80-compatible classic scripts.
Read docs/event-reference.html and docs/making-games.html.
Treat all incoming messages, names, labels, donations, and metadata as untrusted.
Prevent HTML/JavaScript injection in every renderer you change. Use textContent
for plain fields and for chatmessage when textonly is true. For HTML-mode
chatmessage, keep supported emotes/formatting through the packaged
SocialStreamChatHTML.sanitize helper (libs/objects.js loaded first).
Do not concatenate raw input into innerHTML, attributes, CSS, or JavaScript.
Validate media/link URLs with the page's existing URL policy and assign DOM
properties; do not enable javascript: URLs or executable embedded content.
Never eval incoming data or treat a viewer message as an AI instruction.
Keep source checks, connection handling, and existing sanitizers.
Test plain text, allowed emotes, quotes, angle brackets, and an HTML injection
probe in an isolated preview; verify the probe cannot execute.
Make the edited game work directly from disk using a file:/// URL,
without requiring a local web server.
Return the edited files/assets, file URL and OBS setup steps, and tests using
fictional data. Preserve image-only events and a valid donoValue of zero.
Never treat chat text as proof of a payment.
Poi prova in quest'ordine: pulsanti demo (inclusi aggiornamenti ripetuti di serie e valore zero esplicito), sessione reale e sorgente OBS alle dimensioni effettive. Controlla le regole del gioco e il rendering sicuro. Un'animazione funzionante non dimostra che le regole funzionino.
Come scegliere le monete necessarie per un’azione?
Prima decidi cosa misurare, poi scegli un numero.
| Misura | Leggi questo | Esempio |
|---|---|---|
| Unità native (monete, Bits, stelle) | TikTok meta.coinsPerGift × meta.tiktokGiftCount se presente, oppure hasDonation con un'etichetta come 10 coins, 100 bits, 100 Stars. | Ogni 10 monete = una spinta. |
| Un regalo specifico | TikTok meta.giftId oppure meta.giftName, insieme alla quantità. | Ogni regalo corrispondente aggiunge un fiore, qualunque sia il valore. |
| Valore monetario confrontabile | getDonationValueUSD(data) da currency.js. | Ogni $1 stimato aggiunge 10 unità di carburante. $25 completano l'obiettivo. |
| Un’azione gratuita o un abbonamento | Il valore reale della sorgente in event, oppure un comando in chat. | Un nuovo follower fa crescere un albero. Un nuovo abbonamento avvia un'animazione. |
Esatto, minimo o saldo progressivo?
- Esatto:
coins === 10. Un regalo da 25 monete non fa nulla. - Minimo per evento:
coins >= 10. - Saldo progressivo: quello usato dal razzo. 25 monete = due spinte, con 5 monete avanzate.
Più livelli? Controlla prima il più alto, così un regalo non attiva tutti quelli inferiori.
Altre informazioni su monete, regali e diamanti TikTok
- Gli spettatori acquistano monete e le spendono in regali. Il costo in monete è mostrato con il regalo. Consulta Spiegazione TikTok di Monete e Regali.
- Nome del regalo, numero di regali, monete e diamanti sono quattro cose diverse.
- Scegli regali disponibili nella tua LIVE e controlla i dati acquisiti prima di pubblicare una regola.
- I valori in monete possono provenire dalla mappatura regali SSN. Confrontali con l'elenco attuale dei regali LIVE quando conta il prezzo esatto.
- Cataloghi dei regali e metodi di cattura variano. Nessun campo monete è garantito in ogni messaggio TikTok.
Cosa invia ogni piattaforma
type indica la provenienza. event indica cosa è successo, se presente. I dati dipendono da modalità di cattura, impostazioni e piattaforma. Riflette il codice attuale SSN, non garantisce tutti gli eventi a ogni account.
| Piattaforma | Cosa ricevi | Attenzione a |
|---|---|---|
| TikTok | type: "tiktok", event: "gift". La cattura delle donazioni può aggiungere hasDonation e donoValue. I metadati possono includere ID, nome, quantità, monete per regalo, diamanti per regalo e ID della serie. | Le monete acquistano regali; i diamanti sono ricompense per i creatori. La cattura WebSocket SSApp conclude le serie prima di inviarle; il browser può inviare totali progressivi. Disattivare la cattura delle donazioni TikTok può lasciare regali senza campi monetari. |
| Twitch | I Cheers usano Bits, come hasDonation: "100 bits". La cattura API può inviare event: "cheer" e donoValue: 1. La cattura della chat può non avere un evento. | Abbonamenti, abbonamenti regalati, raid e punti canale sono distinti. Un badge abbonato su un messaggio normale non è un nuovo abbonamento. I Bits usati nelle estensioni Twitch sono un altro sistema. |
Le righe di stelle visibili nella chat live danno, per esempio, hasDonation: "100 Stars" e donoValue: 1, senza event. | Il percorso API dei commenti non legge le stelle dal testo della chat. La riga delle stelle deve essere visibile alla cattura della pagina. Commenti e reazioni non sono pagamenti. | |
| YouTube | superchat e supersticker contengono la valuta originale in hasDonation. I regali usano jeweldonation con N Jewels, oppure 1 YouTube Gift se l'importo è nascosto. | Gli spettatori spendono gioielli; i creatori guadagnano rubini. Abbonamenti e abbonamenti regalati sono eventi distinti. Super Thanks è un prodotto separato, non un evento chat garantito. |
Altre sorgenti possono segnalare mance, regali, abbonamenti o acquisti. Consulta il riferimento degli eventi prima di aggiungerli al filtro isSupport . Una vendita o un abbonamento regalato non è automaticamente una mancia. YouTube invia sia l'acquisto del regalo sia ogni avviso del destinatario; contare entrambi premia due volte lo stesso regalo.
Riferimenti delle piattaforme
Diamanti TikTok · Bit e abbonamenti Twitch · Panoramica delle Stelle di Meta · Super Chat e Super Stickers YouTube · Gioielli, Regali e Rubini YouTube.
Termini verificati il 29 settembre 2026. Controlla i requisiti attuali nelle pagine delle piattaforme.
Usare correttamente donoValue e currency.js
| Campo | Cos'è |
|---|---|
hasDonation | L'etichetta originale, come €5.00 oppure 100 bits. Mostra questo agli spettatori. |
donoValue | Numero USD facoltativo della sorgente. Se valido, anche zero, usalo prima di stimare dall'etichetta. |
<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>
Non fare questo
donoValue || convertToUSD(...)— scarta uno zero intenzionale.- Estrarre numeri da
chatmessageper rilevare pagamenti. - Richiedere
event === "donation"— le stelle Facebook e alcuni Cheers non hanno un evento.
Il modello obiettivo di supporto seleziona prima i tipi di supporto, poi chiama il convertitore condiviso.
Stime integrate di SSN
| Unità | Stimato come |
|---|---|
| 1 moneta TikTok | $0.01 |
| 1 diamante TikTok | $0.005 |
| 1 Bit Twitch o stella Facebook | $0.01 |
| 1 gioiello YouTube | $0.005 |
| Regalo TikTok senza prezzo | 1 moneta per regalo |
| Regalo YouTube senza numero di gioielli | valore provvisorio di $0.01 |
Le altre valute usano tassi approssimativi integrati, non cambi in tempo reale. Servono solo a confrontare il supporto. Non rappresentano quanto pagato dallo spettatore, guadagnato o prelevabile. Metodi di cattura diversi possono dare stime diverse. Il valore di ripiego di una moneta non significa che il regalo costi una moneta.
Fonte: currency.js e il riferimento dei dati. I metadati regalo sono facoltativi; gli esempi non inventano campi assenti nella cattura.
Contare una serie di regali una sola volta
TikTok può segnalare una serie con totali progressivi: 1, 2, 3. Sono tre regali, non sei. Ricorda il totale più alto visto e aggiungi solo l'incremento.
// 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');
- L'helper identifica le serie per ID TikTok di gruppo, mittente e regalo, poi per
meta.tiktokGiftStreakId, poi per ID messaggio. Questi bloccano anche le consegne ripetute. - Non aspetta
repeatEnd, perché la cattura del browser potrebbe non inviarlo mai. Serve una sola azione alla fine di una serie? Scrivi una regola separata usando i campi inviati dalla connessione. - Usa un solo percorso di cattura. Una seconda cattura dello stesso canale può usare ID diversi e contare due volte.
Limiti di memoria dei modelli
- Ricordano fino a 2.000 ID, solo in memoria.
- Reimpostare o ricaricare cancella quella memoria e i progressi del gioco.
- I messaggi senza ID stabili non possono essere deduplicati in modo affidabile.
- Il razzo raggruppa i saldi per piattaforma e ID utente, o nome visualizzato se manca l'ID. Spettatori con lo stesso nome possono condividere un saldo.
- Per un gioco che deve sopravvivere ai riavvii, aggiungi stato salvato e gestione degli eventi ripetuti prima di affidarti a ricompense a pagamento.
Ricompense senza un gioco personalizzato
In Event Flow:
- Aggiungi Confronta proprietà.
- Impostalo su
donoValue, maggiore o uguale, e il tuo importo in USD. - Collega un'azione, come suono, animazione o controllo OBS.
Usa il valore della sorgente se valido, altrimenti la conversione valutaria SSN.
- Un regalo TikTok specifico: confronta
meta.giftIdoppuremeta.giftName, e limita il flusso agli eventi regalo TikTok. - I controlli numerici di
hasDonationvengono convertiti anch'essi in USD. Non sono controlli di monete grezze. Usa metadati nativi o codice personalizzato per regole sulle monete. - Ogni controllo viene eseguito per messaggio. Non è un saldo progressivo né un contatore di serie. Usa nodi di stato se serve, oppure mantieni quella logica nel gioco.
Prova prima di collegare un'azione a pagamento
- Pulsanti di esempio. Una serie 1 → 2 → 3 aggiunge tre regali. L'esempio con valore zero non aggiunge USD. Un prezzo sconosciuto non aggiunge monete esatte.
- Sorgente reale. Guarda i dati reali acquisiti. Conferma nome/ID del regalo, importo, unità, quantità ed evento. Gli esempi testano la regola, non la cattura reale.
- Scena OBS. Prova eventi ripetuti, una riconnessione e un ricaricamento. Non aggiornare né chiudere la sorgente browser se devi conservare i progressi in memoria.
| Problema | Prova così |
|---|---|
| Non arriva nulla | Controlla prima il dock SSN, poi sessione, password e impostazione di trasporto. |
| La chat arriva, ma un regalo non corrisponde | Guarda i dati e controlla i filtri di donazioni ed eventi. |
| Nessun follower o abbonamento | Varia per sorgente. Consulta il riferimento degli eventi. |
Altri dettagli di connessione: overlay personalizzati.