Створюйте ігри й нагороди

Перетворіть подарунок, суму підтримки чи команду чату на дію в трансляції.

Так, ваша гра може реагувати на подарунки TikTok

Social Stream Ninja отримує подію та надсилає її вашій сторінці. JavaScript вирішує, що станеться: прискорення ракети, ріст саду, поява ворога чи поступ спільної цілі. Дію та поріг ви задаєте в грі. SSN не змінює ціни подарунків платформи.

Почніть тут: спробуйте три шаблони, а потім виберіть міру для правила: одиниці платформи, ідентифікатор подарунка чи оцінені USD.

Для звуку, сповіщення, дії OBS чи webhook почніть із Потоки подій. Власна HTML-сторінка зручна для ігрового поля чи власного стану гри. Готові ігри є в галереї ігор.

Три невеликі редаговані шаблони

Кожен перегляд має кнопки прикладів та інспектор останніх отриманих даних. Це вигадані події, а не покупки. Режим перегляду ніколи не під’єднується до живого сеансу.

  • Монетна ракета: 10 монет TikTok, 100 Bits Twitch або 100 зірок Facebook дають одне прискорення. Залишки накопичуються окремо за глядачами та платформами. Змініть COST у HTML для налаштування сум.
  • Спільна ціль підтримки: об’єднуйте оцінену підтримку USD чотирьох платформ для місячної бази. Змініть GOAL_USD або замініть показ поступу шкодою, пальним чи таймером.
  • Сад подарунків і подій: вибраний подарунок TikTok додає квіти, отримане стеження TikTok додає дерево, а безкоштовна команда !water у чаті додає воду. Задайте GIFT_ID як отриманий ID або задайте GIFT_NAME як точну назву. «Demo flower» — вигаданий приклад.

Відкрийте HTML-код і знайдіть EDIT THIS RULE або EDIT THESE RULES. receive(data) — функція, де приклад дії замінюється логікою гри. Допоміжні функції підключення й підрахунку містяться в starter.js; оформлення міститься в starter.css.

Під’єднайте шаблон до трансляції

  1. Запустіть SSN і під’єднайте джерело чату. Переконайтеся, що чат і подарунки/підтримка доходять до dock. Налаштування TikTok: режими підключення.
  2. Відкрийте шаблон без ?demo, зі своїм ID сеансу SSN. Додайте пароль сеансу, якщо його задано.
  3. Перевірте сторінку в браузері, потім додайте ту саму URL як джерело «Браузер» в OBS, наприклад 1000 × 800. Додайте &clean , щоб приховати інспектор, стан з’єднання й кнопки ведучого.
https://socialstream.ninja/games/templates/coin-rocket.html?session=YOUR_SESSION&password=YOUR_PASSWORD&clean

На сайті beta збережіть /beta/ перед games/. Якщо пароля немає, пропустіть його параметр. Не публікуйте посилання сеансу.

Типове з’єднання використовує той самий міст iframe, що й накладки SSN. Для розміщеного WebSocket-каналу захопленого чату увімкніть у SSN Send messages to Dock from Extension via server і додайте &server2. Дивіться Посібник WebSocket для локального налаштування; шаблони також приймають &server2&localserver і &localserverport=3000. localserver сама по собі не вмикає канал. Старий server використовує інший канал і може залежати від dock, який публікує туди дані.

Створіть власну копію

Завантажити код beta у ZIP і розпакуйте. Редагуйте файли в games/templates/, зберігаючи структуру папок: шаблони також завантажують js/local-server-url.js, а ціль підтримки завантажує currency.js з кореня репозиторію.

Надайте доступ до розпакованої папки через локальний вебсервер. Якщо встановлено Python, виконайте в цій папці:

python -m http.server 8080 --bind 127.0.0.1

Потім використайте http://127.0.0.1:8080/games/templates/coin-rocket.html?session=YOUR_SESSION у браузері або OBS. Для іншого хостингу зберігайте відносні шляхи. Збирання не потрібне.

Як вибрати кількість монет для дії?

Перш ніж вибрати число, визначте, що вимірювати:

ПравилоПрочитайтеПриклад
Одиниці платформиTikTok meta.coinsPerGift × meta.tiktokGiftCount , якщо передано, або явне значення hasDonation із підписом, наприклад 10 coins, 100 bits, або 100 Stars.Кожні 10 монет дають прискорення.
Конкретний подарунокTikTok meta.giftId або meta.giftName, та його кількість.Кожен відповідний подарунок додає квітку незалежно від оцінки в USD.
Порівнювана цінність підтримкиgetDonationValueUSD(data) з currency.js.Кожен оцінений долар додає 10 пального; 25 доларів завершують ціль.
Безкоштовна дія або членствоФактичне значення джерела в event, або команду чату.Стеження вирощує дерево; нова платна підписка запускає анімацію.

Визначте, чи означає сума точний збіг (coins === 10), мінімум за подію (coins >= 10), або накопичений баланс. Ракета накопичує залишок: 25 монет дають два прискорення та залишають п’ять монет. Правило «рівно 10» пропустить 25 монет. Якщо подія має вибрати одну з кількох дій, спочатку перевіряйте найвищий поріг, щоб не спрацювали всі нижчі рівні.

У TikTok глядачі купують монети й витрачають їх на подарунки із зазначеною ціною. Виберіть подарунки, доступні у вашому LIVE, і перевірте дані до публікації правила. Назва подарунка, кількість подарунків, монети й діаманти — різні міри. Не обчислюйте «точні монети» діленням оцінки USD і не прирівнюйте діаманти до монет. Пояснення монет і подарунків TikTok.

Якщо джерело дає лише назву/кількість подарунків або діаманти, монетний шаблон пропускає подію без явних метаданих монет. Використайте правило конкретного подарунка або шаблон оцінених USD. Метадані можуть походити і з таблиці подарунків SSN; коли важлива точна ціна, звіряйтеся з поточним меню подарунків LIVE. Каталоги та способи захоплення різні; універсального поля монет у кожному повідомленні TikTok не гарантовано.

Що надсилає кожна платформа

type позначає джерело; event позначає дію, якщо є. Доступність залежить від режиму, налаштувань і даних платформи. Приклади описують поточний код SSN, не гарантуючи всі події кожному обліковому запису.

ПлатформаДані підтримки й подійРозрізняйте
TikToktype: "tiktok", event: "gift". Захоплення пожертв може передавати hasDonation і donoValue. Метадані можуть містити ID, назву, кількість, монети чи діаманти за подарунок та ідентифікатор серії.За монети купують подарунки; діаманти — нагороди авторів. Захоплення WebSocket у SSApp завершує серії перед передаванням; браузер може надсилати накопичувальні оновлення. Вимкнення захоплення пожертв TikTok може залишити подарунки без грошових полів.
TwitchCheers використовують Bits, наприклад hasDonation: "100 bits". Захоплення через API може використовувати event: "cheer" і donoValue: 1; захоплення відображеного чату може не мати позначки події.Підписки, подаровані підписки, рейди й бали каналу — окремі дії. Значок підписника біля звичайного повідомлення не означає нову підписку. Прямі Cheers і Bits у розширеннях Twitch — різні інтеграції.
FacebookВидимі рядки зірок Live Chat передають, наприклад, hasDonation: "100 Stars" і donoValue: 1, без event .API коментарів не визначає зірки з тексту чату. Захоплення DOM потребує видимого рядка зірок; звичайні коментарі й реакції не підтверджують сплачену суму.
YouTubesuperchat і supersticker передають суму в початковій валюті в hasDonation. Подарунки використовують jeweldonation з N Jewels, або 1 YouTube Gift , коли суму приховано.Глядачі витрачають Jewels на подарунки, автори отримують Rubies. Спонсорство й подароване спонсорство — окремі події, не Jewels. Super Thanks — окремий продукт без гарантії події пожертви в живому чаті.

Матеріали платформ: Діаманти TikTok; Bits і підписки Twitch; Огляд зірок Meta; YouTube Super Chat і Super Stickers; YouTube Jewels, Gifts і Rubies. Терміни перевірено 29 вересня 2026 року; актуальні умови й доступність дивіться на сайтах платформ.

Інші джерела можуть повідомляти чайові, подарунки, членства чи покупки. Перегляньте довідник подій перед додаванням до фільтра шаблону isSupport . Продаж товару чи подарована підписка не обов’язково є чайовими. Наприклад, YouTube розрізняє купівлю подарунка й повідомлення про отримання; врахування обох двічі винагородить той самий подарунок.

Правильно використовуйте donoValue та currency.js

hasDonation — початковий відображуваний підпис, наприклад €5.00 або 100 bits. donoValue — необов’язкова числова сума USD від джерела. Врахуйте коректно задане значення, включно з нулем, до оцінювання за підписом. Збережіть початковий підпис для показу.

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

Наявна поведінка перетворення: Зараз SSN оцінює монету TikTok у 0,01 USD, діамант у 0,005 USD, Bit Twitch чи зірку Facebook у 0,01 USD, а Jewel YouTube у 0,005 USD. Подарунок TikTok без ціни типово рахується як одна монета за штуку; подарунок YouTube без кількості Jewels має окрему тимчасову оцінку 0,01 USD. Валюти також перетворюються за внутрішніми приблизними курсами, а не через службу поточних курсів.

Це порівняльні значення SSN, а не єдине визначення витрат глядача, чистого доходу автора чи доступного виведення. Різні способи захоплення можуть давати різні оцінки. Зокрема, підстановка однієї монети для невідомого подарунка TikTok не доводить його ціну.

Не використовуйте donoValue || convertToUSD(...): це відкине навмисно заданий нуль. Не видобувайте цифри з chatmessage для визначення платежів і не вимагайте позначку event === "donation": зірки Facebook і деякі Cheers не мають позначки події. Шаблон цілі спочатку вибирає види підтримки, потім викликає спільний конвертер.

Джерело: currency.js і довіднику даних. Метадані подарунків необов’язкові; приклади не вигадують відсутні поля.

Рахуйте серію подарунків лише раз

TikTok може повідомляти накопичені значення 1, 2, 3 для однієї серії. Це три подарунки, не шість. Для додавання запам’ятовуйте найбільшу отриману кількість чи суму та застосовуйте лише приріст. Завершальне оновлення з тим самим підсумком нічого не додає.

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

Допоміжна функція спершу використовує доступні нативні ID групи/відправника/подарунка TikTok, потім meta.tiktokGiftStreakId або ID повідомлень. Звичайні ID теж прибирають повторне доставлення. Функція не чекає на repeatEnd , оскільки браузерне захоплення може ніколи його не передати. Для єдиної дії після завершення серії потрібне окреме правило завершення з полів, які реально надсилає з’єднання.

Навчальні шаблони зберігають у пам’яті до 2000 ідентифікаторів. Скидання та перезавантаження стирають пам’ять і поступ. Без сталих ID не можна надійно прибрати дублікати; друге захоплення того самого каналу може мати інші ID. Почніть з одного шляху. Ракета групує баланс за платформою та ID користувача, а без ID — за відображуваним іменем; тезки можуть мати спільний баланс. Для тривалої гри додайте збереження стану та обробку повторів, перш ніж покладатися на збереження платних нагород після перезапуску.

Нагороди без власної гри

У розділі Потоки подій, використовуйте Порівняти властивість з donoValue, більше або дорівнює, і поріг у USD, а потім під’єднайте звук, анімацію чи керування OBS. Порівняння враховує коректне значення джерела та за потреби використовує наявне перетворення валют.

Для конкретного подарунка TikTok порівняйте meta.giftId або meta.giftName, і обмежте потік подіями подарунків TikTok. Числові порівняння поля hasDonation також зводяться до USD, а не порівнюють сирі монети. Для правил у монетах використовуйте нативні метадані чи власний код.

Поріг для кожного повідомлення відрізняється від накопиченого балансу чи лічильника серії. Не вважайте, що поріг Event Flow автоматично накопичує значення й прибирає дублікати як шаблон. Використовуйте вузли стану , коли потоку потрібен стан, або залиште цю логіку в грі.

Перевірте перед підключенням платної дії

  1. Скористайтеся кнопками прикладів. Серія 1 → 2 → 3 має додати вартість трьох подарунків; явний нуль не має додавати USD; невідома ціна не має давати точну кількість монет.
  2. Під’єднайте справжнє джерело та перегляньте отримані дані. Перевірте назву/ID подарунка, суму/одиницю, кількість і очікувану подію. Приклад перевіряє правило, а не живе захоплення платформи.
  3. Перевірте у сцені OBS повтори подій, перепідключення й перезавантаження. Не вимикайте та не оновлюйте джерело «Браузер», коли важливо зберегти гру в пам’яті.

Для гри без нагляду або AFK мають постійно працювати SSN, захоплення джерела та сторінка гри. Сон комп’ютера, завершення сеансу входу чи розрив зв’язку переривають дії; шаблони не відновлюють пропущені події та не обробляють повернення коштів. Автоматичні реакції не дають дозволу монетизувати трансляцію без нагляду: перевірте чинні правила LIVE і монетизації для свого формату.

Якщо нічого не надходить, перевірте dock SSN, потім сеанс/пароль і транспорт. Якщо чат надходить, а подарунок не відповідає правилу, перевірте дані та фільтри пожертв/подій. Доступність стеження й підписок залежить від джерела; див. довідник подій. Докладніше про підключення: власні накладки.