Twórz gry i nagrody

Zamień prezent, kwotę wsparcia lub polecenie czatu w akcję na transmisji.

Tak, gra może reagować na prezenty TikToka

Social Stream Ninja przechwytuje zdarzenie i wysyła je do strony. Twój JavaScript wybiera efekt: przyspieszenie rakiety, wzrost ogrodu, pojawienie się wroga albo postęp wspólnego celu. Akcję i próg ustalasz w grze. SSN nie zmienia cen prezentów platformy.

Zacznij tutaj: wypróbuj trzy szablony, a następnie wybierz miarę dla reguły: jednostki platformy, tożsamość prezentu lub szacowane USD.

Dla dźwięku, alertu, akcji OBS lub webhooka zacznij od Event Flow. Własna strona HTML przydaje się do planszy lub własnego stanu gry. Gotowe gry znajdziesz w galeria gier.

Trzy małe, edytowalne szablony

Każdy podgląd ma przyciski przykładów i inspektor ostatnio odebranych danych. To fikcyjne zdarzenia, nie zakupy. Podgląd nigdy nie dołącza do sesji na żywo.

  • Rakieta na monety: 10 monet TikToka, 100 Bitsów Twitcha lub 100 Gwiazdek Facebooka daje jedno przyspieszenie. Reszty zbierają się osobno dla każdego widza i platformy. Zmień COST w HTML, aby ustawić kwoty.
  • Wspólny cel wsparcia: łącz szacowane wsparcie USD z czterech platform, by budować bazę księżycową. Zmień GOAL_USD lub zastąp postęp obrażeniami, paliwem albo zegarem.
  • Ogród prezentów i zdarzeń: wybrany prezent TikToka dodaje kwiaty, przechwycone obserwowanie dodaje drzewo, a darmowe !water w czacie dodaje wodę. Ustaw GIFT_ID na przechwycone ID albo ustaw GIFT_NAME na dokładną nazwę. „Demo flower” to fikcyjny przykład.

Otwórz źródło HTML i znajdź EDIT THIS RULE lub EDIT THESE RULES. receive(data) to funkcja, w której zastępujesz przykładową akcję logiką gry. Pomocnicze funkcje połączenia i liczenia są w starter.js; style wyglądu są w starter.css.

Połącz szablon z transmisją

  1. Uruchom SSN i podłącz źródło czatu. Potwierdź, że czat i prezenty/wsparcie docierają do docka. Konfiguracja TikToka: tryby połączenia.
  2. Otwórz szablon bez ?demo, używając identyfikatora sesji SSN. Dodaj hasło sesji, jeśli jest ustawione.
  3. Sprawdź stronę w przeglądarce, potem dodaj ten sam URL jako źródło przeglądarkowe OBS, np. 1000 × 800. Dodaj &clean , aby ukryć inspektor, stan połączenia i przyciski prowadzącego.
https://socialstream.ninja/games/templates/coin-rocket.html?session=YOUR_SESSION&password=YOUR_PASSWORD&clean

Na stronie beta zachowaj /beta/ przed games/. Pomiń parametr hasła, jeśli go nie ustawiono. Nie udostępniaj publicznie linków sesji.

Domyślne połączenie używa tego samego mostu iframe co nakładki SSN. Dla hostowanego WebSocket z przechwyconym czatem włącz w SSN Wysyłaj wiadomości do doku z rozszerzenia przez serwer i dodaj &server2. Zobacz Poradnik WebSocket dla lokalnej konfiguracji; szablony akceptują też &server2&localserver i &localserverport=3000. localserver samo nie włącza ścieżki. Starszy server używa innego kanału i może zależeć od docka, który do niego publikuje.

Utwórz własną kopię

Pobierz źródła beta w ZIP i rozpakuj. Edytuj pliki w games/templates/, zachowując układ katalogów: szablony wczytują także js/local-server-url.js, a cel wsparcia wczytuje currency.js z głównego katalogu repozytorium.

Udostępnij rozpakowany folder przez lokalny serwer WWW. Jeśli masz Python, uruchom w tym folderze:

python -m http.server 8080 --bind 127.0.0.1

Następnie użyj http://127.0.0.1:8080/games/templates/coin-rocket.html?session=YOUR_SESSION w przeglądarce lub OBS. Przy innym hostingu zachowaj względne ścieżki. Nie potrzeba kompilacji.

Jak wybrać liczbę monet dla akcji?

Najpierw wybierz, co chcesz mierzyć, potem liczbę:

ZasadaPrzeczytajPrzykład
Jednostki platformyTikTok meta.coinsPerGift × meta.tiktokGiftCount , jeśli podano, lub jawną wartość hasDonation z etykietą taką jak 10 coins, 100 bits lub 100 Stars.Co 10 monet przyznawane jest przyspieszenie.
Konkretny prezentTikTok meta.giftId lub meta.giftName, oraz jego liczbę.Każdy pasujący prezent dodaje kwiat, niezależnie od szacowanej wartości USD.
Porównywalna wartość wsparciagetDonationValueUSD(data) z currency.js.Każdy szacowany dolar dodaje 10 paliwa; 25 dolarów kończy cel.
Darmowa akcja lub członkostwoRzeczywista wartość ze źródła w event, lub polecenie czatu.Obserwowanie dodaje drzewo; nowa subskrypcja uruchamia animację.

Zdecyduj, czy kwota oznacza dokładnie (coins === 10), albo minimum na zdarzenie (coins >= 10), lub zbierane saldo. Rakieta zbiera saldo: 25 monet daje dwa przyspieszenia i zostawia pięć monet. Reguła „dokładnie 10” zignorowałaby 25 monet. Jeśli z jednego zdarzenia wybierasz jedną z kilku akcji, sprawdzaj najwyższy próg najpierw, aby nie uruchomić wszystkich niższych poziomów.

Na TikToku widzowie kupują Monety i wydają je na Prezenty; cena jest widoczna przy prezencie. Wybierz prezenty dostępne w swoim LIVE i sprawdź dane przed publikacją reguły. Nazwa prezentu, liczba prezentów, Monety i Diamenty to różne miary. Nie odzyskuj „dokładnych monet” z szacunku USD ani nie traktuj diamentów jak monet. Wyjaśnienie Monet i Prezentów przez TikTok.

Jeśli źródło podaje tylko nazwę/liczbę prezentów lub diamenty, szablon monet pomija zdarzenie bez wyraźnych metadanych monet. Użyj reguły konkretnego prezentu lub szablonu szacowanych USD. Metadane mogą też pochodzić z mapowania prezentów SSN; gdy dokładna cena jest ważna, sprawdź bieżącą ofertę prezentów LIVE. Katalogi i sposoby przechwytywania różnią się; nie ma uniwersalnego pola monet gwarantowanego w każdej wiadomości TikToka.

Co wysyła każda platforma

type identyfikuje źródło; event identyfikuje akcję, jeśli występuje. Dostępność zależy od trybu, ustawień i danych platformy. Przykłady opisują bieżący kod SSN, nie gwarantują każdego zdarzenia dla każdego konta.

PlatformaDane wsparcia i zdarzeńRozróżniaj
TikToktype: "tiktok", event: "gift". Przechwytywanie wpłat może dostarczać hasDonation i donoValue. Metadane mogą zawierać ID, nazwę, liczbę, monety lub diamenty na prezent oraz identyfikator serii.Monety służą do kupowania Prezentów; Diamenty to nagrody twórców. Przechwytywanie WebSocket w SSApp rozlicza serię przed przekazaniem; przeglądarka może wysyłać narastające aktualizacje. Wyłączenie wpłat TikToka może pozostawić prezenty bez pól kwoty.
TwitchCheery używają Bitsów, np. hasDonation: "100 bits". Przechwytywanie przez API może używać event: "cheer" i donoValue: 1; przechwytywanie wyświetlanego czatu może nie mieć znacznika zdarzenia.Subskrypcje, podarowane subskrypcje, rajdy i Punkty kanału to osobne akcje. Odznaka subskrybenta przy zwykłej wiadomości nie oznacza nowej subskrypcji. Bezpośrednie Cheery i Bitsy w Rozszerzeniach Twitcha to różne integracje.
FacebookWidoczne wiersze Gwiazdek Live Chat podają np. hasDonation: "100 Stars" i donoValue: 1, bez event .API komentarzy nie rozpoznaje Gwiazdek na podstawie tekstu. Przechwytywanie DOM potrzebuje widocznego wiersza Gwiazdek; zwykłe komentarze i reakcje nie potwierdzają wpłaty.
YouTubesuperchat i supersticker przenoszą kwotę w oryginalnej walucie w hasDonation. Prezenty używają jeweldonation z N Jewels lub 1 YouTube Gift , gdy kwota jest ukryta.Widzowie wydają Klejnoty na Prezenty, twórcy otrzymują Rubiny. Wspieranie kanału i podarowane członkostwa to oddzielne zdarzenia, nie Klejnoty. Superpodziękowanie to osobny produkt, bez gwarancji zdarzenia wpłaty na czacie na żywo.

Materiały platform: Diamenty TikToka; Bitsy i subskrypcje Twitcha; Opis Gwiazdek Meta; Superczat i Supernaklejki YouTube; Klejnoty, Prezenty i Rubiny YouTube. Terminologię sprawdzono 29 września 2026 r.; aktualne warunki i dostępność sprawdź na stronach platform.

Inne źródła mogą zgłaszać napiwki, prezenty, członkostwa lub zakupy. Sprawdź dokumentację zdarzeń przed dodaniem do filtra szablonu isSupport . Sprzedaż produktu lub podarowana subskrypcja nie oznacza automatycznie napiwku. YouTube rozróżnia zakup prezentu i powiadomienie o jego odebraniu; liczenie obu nagradzałoby ten sam prezent dwukrotnie.

Poprawnie używaj donoValue i currency.js

hasDonation to oryginalna etykieta wyświetlana, np. €5.00 lub 100 bits. donoValue to opcjonalna liczba USD ze źródła. Uwzględnij poprawnie podaną wartość, także zero, przed szacowaniem z etykiety. Zachowaj oryginalną etykietę do wyświetlania.

<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>

Obecne działanie przelicznika: SSN obecnie szacuje monetę TikToka na 0,01 USD, diament na 0,005 USD, Bit Twitcha lub Gwiazdkę Facebooka na 0,01 USD, a Klejnot YouTube na 0,005 USD. Prezent TikToka bez ceny domyślnie oznacza jedną monetę na sztukę; prezent YouTube bez liczby Klejnotów ma osobny szacunek zastępczy 0,01 USD. Waluty też korzystają z wewnętrznych przybliżonych kursów, nie z serwisu kursów na żywo.

To wartości porównawcze SSN, a nie wspólna definicja wydatków widza, dochodu netto twórcy czy salda do wypłaty. Różne sposoby przechwytywania mogą dać inne szacunki. W szczególności zastępcza jedna moneta dla nieznanego prezentu TikToka nie dowodzi jego ceny.

Nie używaj donoValue || convertToUSD(...): odrzuciłoby to celowo podane zero. Nie wyciągaj cyfr z chatmessage do wykrywania płatności ani nie wymagaj znacznika event === "donation": Gwiazdki Facebooka i część Cheerów nie mają znacznika zdarzenia. Szablon celu najpierw wybiera rodzaje wsparcia, potem wywołuje wspólny przelicznik.

Źródło: currency.js oraz opis danych. Metadane prezentów są opcjonalne; przykłady nie wymyślają brakujących pól.

Licz serię prezentów tylko raz

TikTok może zgłosić narastające liczby 1, 2, 3 dla jednej serii. To trzy prezenty, nie sześć. Dla dodawanych akcji zapamiętaj największą dotychczasową liczbę lub kwotę i dodawaj tylko przyrost. Końcowa aktualizacja z tą samą sumą nic nie dodaje.

// 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');

Funkcja pomocnicza używa natywnych ID grupy/nadawcy/prezentu TikToka, jeśli są dostępne, następnie meta.tiktokGiftStreakId lub ID wiadomości. Zwykłe ID także usuwają ponowne dostarczenie. Funkcja nie czeka na repeatEnd , ponieważ przeglądarka może nigdy nie dostarczyć tego pola. Jeśli akcja ma wykonać się tylko po zakończeniu serii, dodaj osobną regułę zakończenia z rzeczywiście otrzymywanych pól.

Szablony zapamiętują do 2000 identyfikatorów w pamięci. Reset i odświeżenie usuwają tę pamięć oraz postęp. Wiadomości bez stałych ID nie dają się wiarygodnie odfiltrować jako duplikaty; druga kopia przechwytywania kanału może używać innych ID. Zacznij od jednej ścieżki. Rakieta grupuje saldo według platformy i ID użytkownika, a bez ID według nazwy; identyczne nazwy mogą współdzielić saldo. Dla trwałej gry dodaj zapis stanu i obsługę powtórzeń, zanim zaczniesz polegać na zachowaniu płatnych nagród po restarcie.

Nagrody bez własnej gry

W sekcji Event Flow, użyj Porównaj właściwość z donoValue, większe lub równe, oraz próg w USD, a następnie podłącz dźwięk, animację lub sterowanie OBS. Porównanie uwzględnia poprawną wartość ze źródła, a w razie potrzeby istniejące przeliczanie walut.

Dla konkretnego prezentu TikToka porównaj meta.giftId lub meta.giftName, i ogranicz przepływ do prezentów TikToka. Porównania liczbowe pola hasDonation również oznaczają USD, nie surowe liczby monet. Reguły monet wymagają natywnych metadanych lub własnego kodu.

Próg oceniany dla każdej wiadomości to coś innego niż zbierane saldo lub licznik serii. Nie zakładaj, że próg Event Flow automatycznie sumuje wartości i usuwa powtórzenia tak jak szablon. Użyj węzły stanu , gdy przepływ wymaga stanu, albo zachowaj logikę w grze.

Wypróbuj przed podłączeniem płatnej akcji

  1. Użyj przycisków przykładów. Seria 1 → 2 → 3 ma dać wartość trzech prezentów; jawne zero nie może dodać USD; nieznana cena nie może dodać dokładnych monet.
  2. Podłącz prawdziwe źródło i sprawdź przechwycone dane: nazwę/ID prezentu, kwotę/jednostkę, liczbę i oczekiwane zdarzenie. Przykład potwierdza regułę, nie przechwytywanie na żywo.
  3. Sprawdź scenę OBS: powtórzone zdarzenia, ponowne połączenie i odświeżenie. Nie wyłączaj ani nie odświeżaj źródła przeglądarkowego, gdy chcesz zachować rozgrywkę w pamięci.

Gra bez nadzoru lub AFK wymaga ciągłego działania SSN, przechwytywania źródła i strony gry. Uśpienie komputera, wygasłe logowanie lub rozłączenie przerywa akcje; szablony nie uzupełniają pominiętych zdarzeń i nie obsługują zwrotów. Automatyczne reakcje nie uprawniają do zarabiania na transmisji bez nadzoru: sprawdź aktualne zasady LIVE i monetyzacji dla swojego formatu.

Jeśli nic nie dociera, sprawdź dock SSN, potem sesję/hasło i transport. Gdy czat działa, ale prezent nie pasuje, sprawdź dane i filtry wpłat/zdarzeń. Dostępność obserwowań i subskrypcji zależy od źródła; zobacz dokumentację zdarzeń. Więcej o połączeniu: własne nakładki.