Sì, il gioco può reagire ai regali TikTok
Social Stream Ninja cattura un evento e lo invia alla pagina. Il tuo JavaScript decide l’azione: spingere un razzo, far crescere un giardino, generare un nemico o avanzare un obiettivo comune. Scegli azione e soglia nel gioco. SSN non modifica i prezzi dei regali delle piattaforme.
Inizia qui: prova i tre modelli, poi scegli se la regola usa unità della piattaforma, identità del regalo o USD stimati.
Per suoni, avvisi, azioni OBS o webhook, parti da Event Flow. Una pagina HTML personalizzata serve per un tabellone o uno stato di gioco proprio. Per i giochi pronti, consulta la galleria giochi.
Tre piccoli modelli modificabili
Ogni anteprima ha pulsanti di esempio e un ispettore degli ultimi dati ricevuti. Gli eventi sono fittizi, non acquisti. La modalità anteprima non entra mai nella sessione dal vivo.
- Razzo a monete: 10 monete TikTok, 100 Bit Twitch o 100 Stelle Facebook danno una spinta. I resti si accumulano separatamente per spettatore e piattaforma. Modifica
COSTnel codice HTML per scegliere gli importi. - Obiettivo di supporto condiviso: combina supporto stimato in USD dalle quattro piattaforme per costruire una base lunare. Modifica
GOAL_USDoppure sostituisci l’indicatore di progresso con danni, carburante o un timer. - Giardino di regali ed eventi: un regalo TikTok scelto aggiunge fiori, un follow catturato aggiunge un albero e il comando gratuito
!waterin chat aggiunge acqua. ImpostaGIFT_IDsu un ID catturato, oppure impostaGIFT_NAMEsul nome esatto. «Demo flower» è un esempio fittizio.
Apri il sorgente HTML e cerca EDIT THIS RULE oppure EDIT THESE RULES. La receive(data) è la funzione in cui sostituisci l’azione di esempio con la logica del gioco. Gli helper di connessione e conteggio sono in starter.js; gli stili visivi sono in starter.css.
Collegare un modello alla diretta
- Avvia SSN e collega la fonte chat. Verifica che messaggi e regali/supporto arrivino al dock. Per TikTok, consulta modalità di connessione.
- Apri un modello senza
?demo, con il tuo ID sessione SSN. Includi la password della sessione, se impostata. - Controlla la pagina nel browser, poi aggiungi lo stesso URL come fonte Browser OBS, ad esempio a 1000 × 800. Aggiungi
&cleanper nascondere ispettore, stato della connessione e controlli.
https://socialstream.ninja/games/templates/coin-rocket.html?session=YOUR_SESSION&password=YOUR_PASSWORD&clean
Se usi il sito beta, mantieni /beta/ prima di games/. Ometti il parametro password se non è impostata. Mantieni privati i link della sessione.
La connessione predefinita usa lo stesso ponte iframe degli overlay SSN. Per la chat catturata via WebSocket ospitato, abilita in SSN Invia messaggi dall'estensione al dock tramite server e aggiungi &server2. Vedi la Guida WebSocket per la configurazione locale; i modelli accettano anche &server2&localserver e &localserverport=3000. localserver da solo non abilita un percorso. Il vecchio server usa un canale diverso e può dipendere da un dock che vi pubblica.
Crea la tua copia
Scarica il codice beta in ZIP ed estrailo. Modifica i file in games/templates/, mantenendo la struttura delle cartelle: i modelli caricano anche js/local-server-url.js, mentre l’obiettivo di supporto carica currency.js dalla radice del repository.
Servi la cartella estratta con un server web locale. Se hai già Python, esegui dalla cartella:
python -m http.server 8080 --bind 127.0.0.1
Quindi usa http://127.0.0.1:8080/games/templates/coin-rocket.html?session=YOUR_SESSION nel browser o in OBS. Per un altro hosting, conserva gli stessi percorsi relativi. Non serve compilare.
Come scegliere le monete necessarie per un’azione?
Scegli cosa misurare prima di scegliere un numero:
| Regola | Leggi | Esempio |
|---|---|---|
| Unità della piattaforma | TikTok meta.coinsPerGift × meta.tiktokGiftCount quando fornito, oppure un valore esplicito in hasDonation con un’etichetta come 10 coins, 100 bits, oppure 100 Stars. | Ogni 10 monete danno una spinta. |
| Un regalo specifico | TikTok meta.giftId oppure meta.giftName, insieme alla quantità. | Ogni regalo corrispondente aggiunge un fiore, indipendentemente dal valore stimato in USD. |
| Valore di supporto confrontabile | getDonationValueUSD(data) da currency.js. | Ogni dollaro stimato aggiunge 10 unità di carburante; 25 dollari completano l’obiettivo. |
| Un’azione gratuita o un abbonamento | Il valore reale della fonte in event, oppure un comando in chat. | Un follow fa crescere un albero; un nuovo abbonamento avvia un’animazione. |
Decidi se l’importo è esatto (coins === 10), un minimo per evento (coins >= 10), oppure un saldo cumulativo. Il razzo usa un saldo cumulativo: 25 monete danno due spinte e lasciano cinque monete. Una regola «esattamente 10» ignorerebbe 25 monete. Per scegliere una sola azione tra più livelli, controlla prima la soglia più alta, così un evento non attiva tutti i livelli inferiori.
Su TikTok gli spettatori acquistano Monete e le spendono in Regali, il cui costo è indicato. Scegli regali disponibili nella tua LIVE e verifica la cattura prima di pubblicare una regola. Regalo identificato, quantità, Monete e Diamanti sono misure diverse. Non ricavare «monete esatte» dividendo una stima USD né trattare i diamanti come monete. Spiegazione TikTok di Monete e Regali.
Se la cattura fornisce solo nome/quantità del regalo o un’etichetta di diamanti, il modello a monete ignora l’evento salvo metadati espliciti sulle monete. Usa una regola per identità del regalo o il modello in USD stimati. I metadati possono provenire anche dalla mappatura SSN: confrontali con il catalogo LIVE corrente se conta il prezzo esatto. Cataloghi e metodi variano; nessun campo monete universale è garantito per tutti i messaggi TikTok.
Cosa invia ogni piattaforma
type identifica la fonte; event identifica un’azione, se presente. La disponibilità dipende da modalità, impostazioni e dati esposti dalla piattaforma. Gli esempi descrivono i percorsi attuali di SSN, senza garantire tutti gli eventi per ogni account.
| Piattaforma | Dati di supporto ed eventi | Da distinguere |
|---|---|---|
| TikTok | type: "tiktok", event: "gift". La cattura delle donazioni può fornire hasDonation e donoValue. Possono includere ID, nome, quantità, monete o diamanti per regalo e identificatore della serie. | Le Monete acquistano Regali; i Diamanti sono ricompense per i creator. La cattura WebSocket di SSApp consolida le serie prima di inoltrarle; quella del browser può inviare aggiornamenti cumulativi. Disattivando la cattura delle donazioni TikTok, i regali possono arrivare senza campi monetari. |
| Twitch | I Cheer usano Bit, per esempio hasDonation: "100 bits". La cattura API può usare event: "cheer" e donoValue: 1; la cattura della chat visualizzata può non avere un indicatore evento. | Abbonamenti, abbonamenti regalati, raid e Punti canale sono azioni distinte. Un badge abbonato su un messaggio comune non è un nuovo abbonamento. Cheer diretti e Bit usati nelle Estensioni Twitch sono integrazioni diverse. |
Le righe Stelle visibili nel Live Chat forniscono, ad esempio, hasDonation: "100 Stars" e donoValue: 1, senza event . | L’API commenti non deduce Stelle dal testo. La cattura DOM richiede una riga Stelle visibile; commenti e reazioni comuni non dimostrano un importo pagato. | |
| YouTube | superchat e supersticker contengono l’importo nella valuta originale in hasDonation. I regali usano jeweldonation con N Jewels, oppure 1 YouTube Gift quando l’importo è nascosto. | Gli spettatori spendono Gioielli in Regali; i creator guadagnano Rubini. Abbonamenti e abbonamenti regalati sono eventi distinti, non Gioielli. Super Grazie è un prodotto separato e non garantisce un evento donazione in chat dal vivo. |
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. Terminologia verificata il 29 settembre 2026; consulta le pagine aggiornate delle piattaforme per requisiti e disponibilità.
Altre fonti possono riportare mance, regali, abbonamenti o acquisti. Ispeziona la riferimento degli eventi prima di aggiungerli al filtro isSupport . Una vendita o un abbonamento regalato non è automaticamente una mancia. YouTube distingue, ad esempio, gli acquisti dei regali dalle notifiche di riscatto; contarli entrambi ricompenserebbe lo stesso regalo due volte.
Usare correttamente donoValue e currency.js
hasDonation è l’etichetta originale visualizzata, come €5.00 oppure 100 bits. donoValue è un importo numerico facoltativo in USD fornito dalla fonte. Rispetta un valore valido, incluso zero, prima di stimare dall’etichetta. Conserva l’etichetta originale per la visualizzazione.
<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 attuale della conversione: SSN stima attualmente una moneta TikTok a 0,01 USD, un diamante a 0,005 USD, un Bit Twitch o una Stella Facebook a 0,01 USD e un Gioiello YouTube a 0,005 USD. Un regalo TikTok senza prezzo usa una moneta per regalo; un regalo YouTube senza numero di Gioielli usa una stima provvisoria di 0,01 USD. Anche le valute usano tassi interni approssimativi, senza cambi in tempo reale.
Sono valori di confronto SSN, non una definizione comune di spesa dello spettatore, ricavo netto o saldo prelevabile. Metodi diversi possono dare stime diverse. La stima di una moneta per un regalo TikTok sconosciuto non ne dimostra il prezzo.
Non usare donoValue || convertToUSD(...): scarterebbe uno zero intenzionale. Non estrarre cifre da chatmessage per rilevare pagamenti, né richiedere l’indicatore event === "donation": le Stelle Facebook e alcuni Cheer non hanno un indicatore evento. Il modello dell’obiettivo seleziona prima i tipi di supporto, poi chiama il convertitore condiviso.
Fonte: currency.js e il riferimento dei dati. I metadati dei regali sono facoltativi; gli esempi non inventano campi assenti dalla cattura.
Contare una serie di regali una sola volta
TikTok può riportare conteggi cumulativi 1, 2, 3 per la stessa serie: sono tre regali, non sei. Per azioni additive, conserva il massimo conteggio o importo già ricevuto e applica solo l’aumento. Un aggiornamento finale con lo stesso totale non aggiunge nulla.
// 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 usa gli ID nativi di gruppo/mittente/regalo TikTok se disponibili, poi meta.tiktokGiftStreakId o gli ID messaggio. Questi ultimi eliminano anche invii ripetuti. L’helper non attende repeatEnd perché la cattura browser potrebbe non fornirlo mai. Per una sola azione a serie conclusa serve una regola di completamento separata, basata sui campi realmente inviati dalla connessione.
I modelli conservano fino a 2.000 identificatori in memoria. Ripristino e ricaricamento cancellano memoria e progressi. Senza ID stabili non è possibile eliminare i duplicati in modo affidabile; due catture dello stesso canale possono usare ID diversi. Inizia con un solo percorso. Il razzo raggruppa i saldi per piattaforma e ID utente, usando altrimenti il nome visualizzato; omonimi possono condividere il saldo. Per la persistenza, aggiungi salvataggio e gestione delle ripetizioni prima di affidarti a ricompense pagate che sopravvivano ai riavvii.
Ricompense senza un gioco personalizzato
In Event Flow, usa Confronta proprietà con donoValue, maggiore o uguale, e la soglia in USD, poi collega un suono, un’animazione o un comando OBS. Il confronto rispetta il valore fornito dalla fonte se valido e usa la conversione esistente quando serve.
Per un regalo TikTok specifico, confronta meta.giftId oppure meta.giftName, e limita il flusso agli eventi regalo TikTok. I confronti numerici di hasDonation si risolvono anch’essi in USD; non confrontano monete grezze. Usa metadati nativi o codice proprio per regole sulle monete.
Una soglia per messaggio ricevuto è diversa da un saldo cumulativo o un contatore di serie. Non presumere che una soglia Event Flow accumuli valori e gestisca duplicati come il modello. Usa i nodi di stato quando il flusso richiede uno stato, oppure conserva questa logica nel gioco.
Prova prima di collegare un’azione a pagamento
- Usa gli esempi. Una serie 1 → 2 → 3 deve aggiungere tre regali; il valore esplicito zero non deve aggiungere USD; un prezzo sconosciuto non deve aggiungere monete esatte.
- Collega la fonte reale e ispeziona i dati catturati. Conferma nome/ID del regalo, importo/unità, quantità ed evento previsto. Un esempio verifica la regola, non la cattura dal vivo.
- Verifica nella scena OBS eventi ripetuti, riconnessione e ricaricamento. Evita di spegnere o aggiornare la fonte Browser se devi conservare la partita in memoria.
Per un gioco incustodito o AFK, SSN, cattura e pagina del gioco devono restare attivi. Sospensione del computer, accesso scaduto o disconnessione interrompono le azioni; i modelli non recuperano eventi persi e non gestiscono rimborsi. Le reazioni automatiche non autorizzano a monetizzare dirette incustodite: verifica le regole LIVE e di monetizzazione attuali per il tuo formato.
Se non arriva nulla, controlla prima il dock SSN, poi sessione/password e trasporto. Se arriva la chat ma il regalo non corrisponde, verifica dati e filtri donazioni/eventi. Follow e abbonamenti disponibili variano per fonte; consulta la riferimento degli eventi. Per altri dettagli sulla connessione, consulta overlay personalizzati.