Игроки могут покупать товары (пропуски в игру + расходуемые предметы) за Sparks в вашей игре. Когда происходит покупка, All Out вызывает ваш обработчик покупки так что вы можете выдать предмет или функцию.
Чтобы начать процесс покупки, вызовите Purchasing.prompt_purchase с ID товара.
ID товара отображается на странице монетизации/товаров в портале создателя (его можно нажать, чтобы скопировать). См. Внутриигровые товары.
Проверка, владеет ли игрок товаром (пропуски в игру)
Для пропусков в игру вы можете ограничивать игровые функции, проверяя владение.
Расходуемые предметы можно покупать несколько раз; owns_product не следует использовать для их выдачи. Расходуемые предметы обычно выдаются в вашем обработчике покупки (монеты, предметы, баффы и т. д.).
Чтение информации о товаре (название/цена/иконка)
Если вы хотите показать интерфейс «Купить» или записать информацию о товаре в журнал, получите определение товара по ID:
Обработчик покупки (выдача)
Когда игрок покупает товар в вашей игре, All Out вызывает:
Вам следует:
Проверять ID товара через switch
Выдавать предмет/функцию
Возвращать true если выдача успешна
Возвращать false если выдача не удалась (инвентарь полон, отсутствует необходимое условие и т. д.)
Сбои выдачи и повторные попытки
Если ваш обработчик покупки возвращает false, покупка помечается как сбой выдачи.
Сбои выдачи отображаются в портале создателя
Они автоматически повторяются, когда игрок входит в игру, пока не увенчаются успехом
Вы можете вручную повторно запустить обработчик покупки, пометив покупку как «невыданную» в интерфейсе данных игрока
COIN_PACK_ID :: "prod_coin_pack_small";
DOUBLE_JUMP_ID :: "prod_double_jump";
ao_purchase_handler :: proc(player: Player, id: string) -> bool {
switch id {
case COIN_PACK_ID: {
// Пример: выдать монеты (расходуемый предмет)
Economy.deposit_currency(player, "Coins", 500);
Notifier.notify(player, "Спасибо! +500 монет");
return true;
}
case DOUBLE_JUMP_ID: {
// Пример: разблокировка пропуска в игру (постоянная)
// Обычно вы просто включаете её через проверки owns_product() в других местах.
// Всё равно верните true, чтобы покупка считалась выданной.
Notifier.notify(player, "Двойной прыжок разблокирован!");
return true;
}
}
// Неизвестный ID
return false;
}