Как посмотреть, купили ли Game Pass в Roblox: проверка и монетизация

Как проверить покупку Game Pass в Roblox: полное руководство для разработчика

Разработка игры в Roblox — это не только создание механик и миров, но и грамотная монетизация. Game Pass — один из ключевых инструментов, позволяющий продавать игрокам уникальные привилегии за Robux. Однако после создания pass у многих разработчиков возникает закономерный вопрос: как посмотреть, купили ли его, и как отследить продажи? В этой статье мы детально разберем все способы проверки покупок, настройку мониторинга и типичные ошибки.

Где посмотреть статистику продаж Game Pass в Creator Dashboard

Самый простой способ узнать, купили ли ваш gamepass, — использовать встроенную аналитику Roblox. Она доступна в разделе Creator Dashboard (ранее — Developer Hub). Вам не нужно писать ни строчки кода, чтобы увидеть базовую информацию о продажах.

Чтобы перейти к статистике, выполните следующие шаги:

  1. Зайдите на сайт create.roblox.com и авторизуйтесь.
  2. В левом меню выберите раздел Monetization (Монетизация).
  3. Нажмите на пункт Passes (Пропуска).
  4. Выберите нужный gamepass из списка, чтобы открыть страницу управления.

На этой странице вы увидите основную информацию: название, описание, цену и иконку (thumbnail). Однако для просмотра детальной статистики покупок вам нужно перейти в раздел Sales (Продажи) или Analytics (Аналитика). Обратите внимание, что данные о продажах могут обновляться с небольшой задержкой, поэтому не паникуйте, если свежая покупка не отобразилась мгновенно.

Совет эксперта: В Creator Dashboard данные о продажах группируются по дням. Если вы хотите увидеть пиковые часы продаж, используйте фильтр по дате и сравнивайте показатели за разные периоды. Это поможет понять, когда ваши пользователи наиболее активны.

Использование скриптов для проверки владения pass

Встроенная аналитика показывает общую картину, но что делать, если вам нужно проверить покупку конкретного игрока в реальном времени, например, для выдачи ему награды? Для этого используется серверный скрипт с вызовом функции UserOwnsGamePassAsync(). Этот метод является основным инструментом для проверки инвентаря пользователя.

Базовый скрипт проверки

Вставьте следующий код в обычный Script (не LocalScript), расположенный в ServerScriptService:

local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
-- Замените этот ID на ID вашего gamepass
local passID = 123456789
local function onPlayerAdded(player)
    local success, hasPass = pcall(function()
        return MarketplaceService:UserOwnsGamePassAsync(player.UserId, passID)
    end)
    if success then
        if hasPass then
            print(player.Name .. " купил этот pass!")
            -- Здесь вы можете выдать игроку привилегии
        else
            print(player.Name .. " не имеет этого pass.")
        end
    else
        warn("Ошибка проверки pass для игрока " .. player.Name)
    end
end
Players.PlayerAdded:Connect(onPlayerAdded)

Этот скрипт проверяет наличие pass при входе игрока на сервер. Вы можете вызывать функцию UserOwnsGamePassAsync в любой момент, например, когда игрок нажимает кнопку "Активировать".

Как получить ID gamepass

Чтобы использовать скрипт, вам понадобится числовой идентификатор (ID) вашего gamepass. Найти его очень просто:

  1. Перейдите в Creator DashboardMonetizationPasses.
  2. Наведите курсор на превью (thumbnail) нужного pass.
  3. Нажмите на кнопку с тремя точками ().
  4. В выпадающем меню выберите Copy Asset ID (Копировать ID ассета).

Этот ID является уникальным для каждого gamepass и используется во всех скриптах для взаимодействия с MarketplaceService.

Продвинутая монетизация: обработка покупки через PromptGamePassPurchase

Простая проверка владения — это лишь половина дела. Чтобы игрок мог купить ваш gamepass прямо в игре, используйте функцию PromptGamePassPurchase(). Она вызывает стандартное окно покупки Roblox. После завершения покупки срабатывает событие PromptGamePassPurchaseFinished, которое позволяет выдать награду.

Вот пример обработчика покупки:

local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local passID = 123456789 -- Ваш ID
local function promptPurchase(player)
    local hasPass = false
    local success = pcall(function()
        hasPass = MarketplaceService:UserOwnsGamePassAsync(player.UserId, passID)
    end)
    if success and not hasPass then
        MarketplaceService:PromptGamePassPurchase(player, passID)
    elseif hasPass then
        print("Игрок уже купил этот pass")
    end
end
-- Пример: привязка к нажатию кнопки
-- script.Parent.Activated:Connect(function()
--  local player = Players.LocalPlayer
--  promptPurchase(player)
--end)
MarketplaceService.PromptGamePassPurchaseFinished:Connect(function(player, purchasedPassID, purchasePromptResult)
    if purchasedPassID == passID and purchasePromptResult == Enum.PurchasePromptResult.Purchased then
        print("Покупка успешна! Выдаем привилегии игроку: " .. player.Name)
        -- Здесь код выдачи награды
    end
end)

Совет эксперта: Всегда проверяйте purchasePromptResult. Если игрок закрыл окно покупки, результат будет Enum.PurchasePromptResult.Cancelled. Не выдавайте награду в этом случае, иначе вы рискуете раздать привилегии бесплатно.

Как продавать gamepass: страница игры и внутриигровой магазин

Существует два основных способа продажи вашего gamepass. Выбор зависит от того, как вы хотите взаимодействовать с пользователями.

Продажа через страницу игры

Это самый простой способ. Каждый gamepass автоматически отображается на странице вашей игры в разделе "Магазин" (Store). Пользователи могут просмотреть описание, посмотреть на thumbnail и купить pass, не заходя в саму игру. Это удобно для пассивной монетизации, когда игроки сами находят ваши предложения.

Продажа через внутриигровой магазин

Более эффективный способ — продажа через интерфейс игры. Вы можете создать витрину (Shop), где игроки увидят ваш gamepass, его цену (price) и описание. Для этого используется функция GetProductInfo(), которая позволяет получить актуальную информацию о товаре, включая цену и статус продажи (IsForSale).

local MarketplaceService = game:GetService("MarketplaceService")
local productId = 123456789 -- ID вашего gamepass
local success, productInfo = pcall(function()
    return MarketplaceService:GetProductInfo(productId, Enum.InfoType.GamePass)
end)
if success and productInfo then
    if productInfo.IsForSale then
        print("Pass продается!")
        print("Название: " .. productInfo.Name)
        print("Цена: " .. productInfo.PriceInRobux .. " Robux")
    else
        print("Этот pass не продается (снят с продажи)")
    end
end

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

Скрытые возможности: подарки и передача gamepass

Многие разработчики не знают, что gamepass можно дарить. Это отличный способ монетизации и привлечения аудитории. Пользователи могут купить ваш pass в качестве подарка для друга. Для этого в интерфейсе покупки есть специальная опция "Купить в подарок" (Gift).

Когда игрок дарит pass, вы получаете Robux, а получатель — привилегии. С точки зрения скриптов, проверка владения работает точно так же: вы используете UserOwnsGamePassAsync для ID получателя. Вам не нужно писать дополнительный код для обработки подарков — Roblox делает все автоматически.

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

Типичные ошибки и способы их избежать

При работе с gamepass разработчики часто совершают несколько типичных ошибок. Рассмотрим их, чтобы вы могли их избежать.

Ошибка 1: Проверка на клиенте

Никогда не проверяйте владение pass на стороне клиента (в LocalScript). Злоумышленники могут взломать клиент и подделать результат проверки. Всегда используйте серверные скрипты для проверки UserOwnsGamePassAsync. Это гарантирует, что привилегии получат только реальные покупатели.

Ошибка 2: Игнорирование ошибок API

Функция UserOwnsGamePassAsync может вернуть ошибку, если сервер Roblox перегружен или указан неверный ID. Используйте pcall() для обработки ошибок, как показано в примерах выше. Если вы проигнорируете ошибку, скрипт может упасть, и игрок не получит свою награду.

Ошибка 3: Неправильный thumbnail

Иконка (thumbnail) вашего gamepass — это первое, что видит пользователь. Убедитесь, что изображение имеет размер 512x512 пикселей и не содержит важных деталей за пределами круга (так как Roblox обрезает иконку по кругу). Плохой thumbnail снижает конверсию в покупку.

Сравнение способов проверки покупок

Для наглядности сведем все способы проверки в таблицу:

Способ Где используется Скорость Сложность Применение
Creator Dashboard Веб-интерфейс Низкая (задержка) Низкая Общая статистика, анализ продаж
UserOwnsGamePassAsync Серверный скрипт Высокая (мгновенно) Средняя Выдача наград, проверка прав
GetProductInfo Серверный скрипт Высокая Средняя Отображение цены и статуса товара

Заключение: как построить эффективную систему монетизации

Теперь вы знаете, как посмотреть, купили ли Game Pass в Roblox, и как использовать эту информацию для монетизации. Ключевой момент — комбинировать встроенную аналитику для отслеживания общих трендов и серверные скрипты для мгновенной выдачи привилегий.

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

Используйте все доступные инструменты: Creator Dashboard для аналитики, UserOwnsGamePassAsync для проверки и PromptGamePassPurchase для продажи. Это позволит вам построить прозрачную и прибыльную систему монетизации, которая будет радовать и вас, и ваших игроков.