Русский
EnglishEspañolPortuguês (Brasil)РусскийFrançaisDeutsch日本語简体中文繁體中文ItalianoPolski한국어УкраїнськаالعربيةTürkçeČeštinaไทย

Розыгрыши, билеты и призы в баллах

Впервые используете инструмент розыгрышей? Начните с Ваш первый розыгрыш: пошаговое руководство со снимками экрана.

Проводите розыгрыш на одном хосте. Меню, Stream Deck и Event Flow управляют этим хостом; экраны зрителей показывают подтверждённый им результат.

Первый бесплатный розыгрыш

  1. В меню откройте Параметры розыгрыша. Оставьте идентификатор default, ключевое слово — !enter, а цену билета и приз в баллах оставьте равными нулю.
  2. Выберите карточку победителя, ленту имён или колесо сообщества. Просмотрите экран и скопируйте его ссылку в источник «Браузер» OBS.
  3. Выберите Открыть приём заявок. Зрители вступают, отправляя ключевое слово в захватываемый чат.
  4. Выберите Закрыть приём заявок, затем Выбрать победителя. Розыгрыш также закрывает приём заявок, если вы забыли сделать это заранее.
  5. Выберите Новый раунд для начала следующего розыгрыша. Предыдущие победители остаются в истории хоста.

Не закрывайте хост SSN. Взаимодействовать с источником «Браузер» в OBS не требуется. Отдельное колесо сообщества по-прежнему доступно без &managed; баллы и дистанционное управление используют управляемый режим.

Билеты за баллы SSN

  1. Включите существующую Система баллов лояльности в меню. Это баллы SSN, независимые от баллов канала Twitch и очков отдельных игр.
  2. В разделе Билеты и призы в баллах, задайте цену билета в баллах и максимальное число билетов на зрителя. Цена 1 означает один билет за один балл.
  3. Откройте приём заявок. Для розыгрыша с названием friday, зритель покупает пять билетов командой !ticket friday 5.
  4. Проверьте участников в Управление розыгрышами и историей. При успешной покупке баллы списываются одновременно с добавлением заявки. При нехватке средств билеты не создаются.

Покупка билетов сразу резервирует баллы, поэтому их нельзя одновременно потратить на стикеры или другой платный розыгрыш. При выборе победителя эти баллы расходуются. Отменить и вернуть оплату возвращает зарезервированные баллы. Удаление участника до розыгрыша возвращает его резерв. Платный раунд нельзя незаметно удалить кнопкой «Новый раунд».

Правила блокируются после первой заявки. Закрывая и открывая приём, можно приостановить раунд с текущими правилами. Чтобы изменить цену или условия допуска, отмените его и создайте новый. После вступления зритель не может сменить кошелёк или сторону в игре со ставками.

Разыграть баллы

Установите Приз в баллах на победителя и Количество призов перед открытием приёма. Каждый приз добавляет указанное количество баллов SSN на существующий счёт выбранного зрителя. Баллы создаются, а не берутся из выручки за билеты или кошелька оператора. Общая выдача ограничена заданным размером приза и числом победителей.

Если призов несколько, выбирайте победителей по одному. Каждый подтверждённый победитель записывается до начала анимации. Завершённый розыгрыш нельзя отменить, чтобы аннулировать уже известный результат. Исправляйте ошибки явной корректировкой баллов на хосте; смена экрана или переподключение никогда не начисляет награду повторно.

Игры с наградами в баллах

Управляемая Number Hunt

Выберите Number Hunt (под управлением хоста), цену билета 0, один приз и при желании приз в баллах. Хост выбирает число от 1 до 100. Игроки используют !guess friday 50, подставив идентификатор розыгрыша. Правильный ответ один раз награждает первого подходящего победителя; неправильные ответы сужают диапазон для всех. Каждый зритель может отвечать раз в пять секунд.

Используйте управляемый экран розыгрыша или games/numberhunt.html?session=YOUR_SESSION&managed&giveaway=friday. Обычная Number Hunt и другие существующие игры сохраняют прежнюю локальную логику. Их локальные очки и надписи о победителе не начисляют баллы SSN автоматически.

Банк игры «Орёл или решка»

Это игра на удачу. Выберите Банк игры «Орёл или решка», цену 1, один результат и дополнительный приз 0. Зрители делают ставки командой !ticket friday 3 heads или !ticket friday 3 tails. На каждой стороне должен быть участник. Закройте приём заявок и проведите розыгрыш: хост выбирает орла или решку с равной вероятностью, независимо от сумм ставок.

Победители получают свои ставки обратно и делят проигравшие ставки пропорционально своим. Остатки целых баллов распределяются по наибольшим дробным долям, а при равенстве — по порядку вступления. Комиссии нет, дополнительные баллы не создаются. При выигравших ставках 2 и 1 против 5 проигравших баллов банк из 8 баллов выплачивает 5 и 3. Отмените раунд до розыгрыша, чтобы вернуть средства всем. Если одна сторона пуста, розыгрыш отклоняется; его можно отменить с возвратом средств.

Несколько розыгрышей

Задайте каждому розыгрышу короткий идентификатор из букв, цифр, дефисов или подчёркиваний. Для покупок зрителя во всех розыгрышах используется один доступный баланс кошелька. Каждый URL для OBS содержит &giveaway=ID. Команды покупки билетов и угадывания явно указывают розыгрыш. Для одновременных бесплатных розыгрышей задайте разные ключевые слова: неоднозначное слово не добавит зрителя сразу в несколько розыгрышей.

Поля меню задают начальные настройки. Обновите статус или откройте менеджер, чтобы проверить правила, сохранённые на хосте. Изменение ссылки для зрителей меняет только оформление экрана, а не правила билетов текущего раунда.

OBS и оформление

Фон управляемого экрана по умолчанию прозрачный. При желании выберите панель с оформлением. Карточка, лента имён и колесо сообщества показывают один результат и используют шесть цветовых стилей. При включённом уменьшении движения анимации показа пропускаются. На колесе отображается не более 120 имён; это анимация результата, а не полное отражение вероятностей каждого билета. Победитель выбирается из полного набора подходящих билетов.

При переподключении экран показывает сохранённый результат. Подключённый экран не сообщает SSN, видна ли сейчас соответствующая сцена OBS. Держите URL управления, идентификаторы сеансов и резервные копии в тайне.

Event Flow

Добавить Розыгрыш / Билеты в действиях с баллами. Выберите «Вступить в бесплатный розыгрыш», «Купить билеты», «Выдать бесплатные билеты», «Закрыть приём», «Выбрать победителя», «Отменить и вернуть средства» или «Запросить состояние». Укажите идентификатор и число билетов; для ставки выберите орла или решку. Действие использует идентификатор захваченного зрителя. Перед выдачей билетов или операторскими командами настройте надёжный триггер или фильтр.

Действие «Купить билеты» уже расходует баллы. Не добавляйте перед ним действие «Потратить баллы». При ошибке зависимые действия останавливаются, а исходное сообщение чата остаётся видимым. Результат доступен в meta.giveawayControlResult. Панель тестирования Event Flow имитирует это действие без покупки настоящих билетов. Для сквозных проверок с реальными изменениями раундов используйте отдельный хост или профиль.

Возможность покупки проверяется по подтверждённому балансу на момент выполнения действия. Не рассчитывайте, что само сообщение с заявкой принесёт последний нужный балл. Собственные идентификаторы сообщений источника обеспечивают постоянную защиту от повторного выполнения; у источников без них гарантии распознавания сообщений после перезапуска слабее. Общие запланированные события без захваченного идентификатора зрителя или сообщения не могут покупать от чьего-либо имени.

Stream Deck и API

Встроенный плагин содержит команды «Открыть розыгрыш», «Закрыть розыгрыш», «Выбрать победителя», «Отменить и вернуть средства», «Новый раунд» и «Состояние розыгрыша». Их идентификатор по умолчанию — default. Укажите {"giveawayId":"friday"} в поле значения для выбора другого раунда. Команда открытия также принимает объект config ; иначе существующий раунд сохраняет записанные правила, а новый идентификатор использует настройки меню по умолчанию.

Используйте существующее P2P-подключение или настроенный WebSocket. Клавиша показывает ответ SSN, но не подтверждает, что OBS ведёт эфир. Если время ожидания ответа истекло, запросите состояние перед новой попыткой розыгрыша.

{"protocol":2,"action":"buygiveawaytickets","get":"callback-1","value":{"giveawayId":"friday","roundId":"ROUND_ID","operationId":"purchase-123","count":5,"actor":{"chatname":"Avery","type":"youtube","userid":"SOURCE_USER_ID"}}}

Идентификатор операции обозначает действие, а идентификатор обратного вызова — ответ. При повторных попытках сохраняйте идентификатор операции. Повторное использование с другими параметрами завершается ошибкой. Для намеренной новой покупки используйте новый идентификатор. Доступ к операторскому API позволяет тратить средства указанного пользователя: не предоставляйте его через общедоступную форму покупки без аутентификации.

История, резервные копии и восстановление

В менеджере доступны раунды, участники и история победителей. Экспортируйте историю в JSON или сохраните полную резервную копию баллов и розыгрышей версии 2. Полная копия одновременно содержит балансы, резервирования, раунды и квитанции операций. Ничего не загружается на сервер.

При перезапуске хоста сохранённые открытые раунды закрываются для проверки. Их билеты остаются зарезервированными. Снова откройте раунд с теми же правилами, проведите розыгрыш или отмените его с возвратом средств. Прерванные транзакции базы данных либо завершаются полностью, либо не оставляют частичных покупок или выплат. Резервирования стикеров без подтверждённой доставки восстанавливаются по истечении срока ожидания.

Полное восстановление доступно на новом хосте без существующих балансов и записей розыгрышей. Восстанавливается весь снимок данных, а раунды остаются закрытыми. Перезаписать хост, на котором уже есть данные, нельзя. Перед возобновлением раундов укажите в меню исходный идентификатор трансляции или сеанса; список сеансов резервной копии указан в результате восстановления. Эта копия не заменяет общие настройки меню. Никогда не запускайте старый и восстановленный хосты как независимые центры управления одной экономикой. Резервная копия — это снимок: она не содержит операций, выполненных после её сохранения.

Импорт только балансов не восстанавливает незавершённые резервирования. Сброс баллов и ручная перезапись отклоняются, если затронутые средства зарезервированы. Сброс баллов не удаляет квитанции и историю розыгрышей. Балансы принадлежат профилю браузера или приложения, а раунды привязаны к сеансу. Отдельные профили и устройства не синхронизируются автоматически. Очистка данных браузера может удалить локальные записи, поэтому храните резервные копии вне этого профиля.

Необязательное резервное копирование и синхронизация с сервером запланированы на будущее и не входят в этот выпуск. Эта реализация не добавляет загрузку на сервер, серверные учётные данные, покупную валюту или вывод средств.

Если что-то не работает

Справочник API · Контракты событий · Опросы и списки ожидания

Пошаговое восстановление резервной копии

  1. Оставьте старый хост выключенным. Откройте SSN в новом профиле браузера и перейдите в менеджер розыгрышей.
  2. В разделе Восстановление на новом хосте, выберите полную резервную копию. Дождитесь сообщения о восстановлении и запишите указанный в нём исходный идентификатор сеанса.
  3. В разделе меню Параметры сеанса, введите этот исходный идентификатор сеанса.
  4. Вернитесь в менеджер, выберите идентификатор розыгрыша и нажмите Обновить. Проверьте правила, участников и историю победителей. Восстановленные открытые раунды закрываются для проверки.
  5. Снова откройте раунд с теми же правилами, проведите розыгрыш или выберите Отменить и вернуть оплату для возврата зарезервированных билетов. Проверив результат, сохраните новую резервную копию.

Для OBS начните с источника «Браузер» размером 1280 × 720. Управляемое колесо подстраивается под оставшуюся высоту источника. По умолчанию фон прозрачный без дополнительного CSS; обычное управление выполняется через меню, менеджер или Stream Deck.