For the complete documentation index, see llms.txt. This page is also available as Markdown.

Economy

API экономики позволяют создавать собственные валюты (монеты, драгоценные камни, XP и т. д.) и автоматически сохранять их для каждого игрока между сессиями.

  • Каждая валюта хранится для каждого игрока

  • Баланс автоматически сохраняется между сессиями

  • Баланс можно просматривать/редактировать в портале создателя (см. Редактирование/просмотр данных игрока)

Справочник API экономики

Economy :: struct {
    register_currency     :: proc(currency: string, icon: Texture_Asset);
    deposit_currency      :: proc(player: Player, currency: string, amount: s64);
    get_balance           :: proc(player: Player, currency: string) -> s64;
    can_withdraw_currency :: proc(player: Player, currency: string, amount: s64) -> bool;
    withdraw_currency     :: proc(player: Player, currency: string, amount: s64);
    delete_save_data      :: proc(player: Player);
}

Регистрация валюты (один раз)

Прежде чем использовать название валюты, зарегистрируйте его с иконкой.

ao_before_scene_load :: proc() {
    // Выберите иконку из вашей папки /res
    coin_icon := get_asset(Texture_Asset, "ui/coin.png");

    Economy.register_currency("Coins", coin_icon);
    Economy.register_currency("XP", coin_icon); // пример (в идеале используйте другую иконку)
}

Названия валют — это просто строки. Выберите единообразное название и придерживайтесь его (например "Coins" по сравнению с "coins").

Чтение баланса игрока

Выдача валюты (награды)

Используйте deposit_currency каждый раз, когда игрок получает валюту.

Трата валюты (магазины/улучшения)

Всегда проверяйте can_withdraw_currency перед снятием. Суммы пополнения и снятия должны быть неотрицательными.

Встроенные магазины

Магазин содержит категории, а каждая категория содержит товары. Создайте магазин после регистрации его валют. Храните его хэндлы в полевых переменных уровня сцены или глобальных переменных, потому что они действительны только для текущей сцены.

Обработчик покупки должен предоставить товар и вернуть true. Возврат false отклоняет покупку.

Отрисовывайте магазин из кода интерфейса игрока. Shop.draw возвращает true пока магазин остаётся открытым:

Shop.set_purchase_modifier может изменять цену товара или кнопку для каждого игрока. Shop.set_custom_display может заменять отрисовку карточки товара. Оба колбэка используют тот же явный userdata шаблон, что и обработчик покупки.

Сброс экономических данных игрока

Если вам нужно очистить все балансы экономики для игрока (например, кнопка сброса админом или сброс игрового режима), вы можете удалить его сохранённые данные экономики:

Экономика vs Сохранение

  • Используйте Экономика для «валют» (монеты, самоцветы, XP, билеты), где вам нужны автоматическое сохранение + редактирование в портале.

  • Используйте Сохранение для всего остального (настройки, состояние квестов, списки разблокировок, сложные структуры прогресса). См. Система сохранения

Последнее обновление