Достижения
Модуль достижений позволяет разработчику присваивать достижения игроку, очищать достижения и определять, было ли присвоено достижение. Он также позволяет записывать прогресс в достижении.
По умолчанию достижения хранят информацию в persistent-файле. Если поддержка Steam доступна и включена, информация о достижениях автоматически синхронизируется со Steam.
Поддержка Steam должна быть добавлена в Ren'Py, чтобы гарантировать, что она распространяется только создателями, которые были приняты в партнерскую программу Steam. Чтобы установить ее, выберите "preferences", "Install libraries", "Install Steam Support".
- achievement.Sync()
Действие, вызывающее achievement.sync(). Активно, только если достижения не синхронизированы.
- achievement.clear(name)
Стирает достижение с именем name.
- achievement.clear_all()
Стирает все достижения.
- achievement.get_progress(name)
Возвращает текущий прогресс в достижении, идентифицированном по name, или 0, если для него не был зарегистрирован прогресс, или если достижение неизвестно.
- achievement.grant(name)
Присуждает достижение с именем name, если оно еще не было присуждено.
- achievement.has(name)
Возвращает true, если игроку было присуждено достижение с именем name.
- achievement.progress(name, complete)
Сообщает о прогрессе в достижении с именем name, если это достижение еще не было присуждено. Достижение должно быть определено с указанием количества для завершения.
- name
Имя достижения. Это должно быть имя достижения, а не статистики.
- complete
Целое число, указывающее количество выполненных единиц для достижения.
- achievement.register(name, **kwargs)
Регистрирует достижение. Достижения не обязательно регистрировать, но это позволяет передавать информацию бэкендам.
- name
Имя регистрируемого достижения.
Следующие именованные параметры необязательны.
- steam
Имя, которое будет использоваться в Steam. Если не указано, по умолчанию используется name.
- stat_max
Целочисленное значение статистики, при котором достижение разблокируется.
- stat_modulo
Если остаток от деления прогресса на stat_max равен 0, прогресс отображается пользователю. Например, если stat_modulo равно 10, прогресс будет отображаться пользователю, когда он достигнет 10, 20, 30 и т.д. Если не указано, по умолчанию равно 0.
- achievement.sync()
Синхронизирует зарегистрированные достижения между локальным хранилищем и другими бэкендами (например, Steam).
Переменные, которые управляют достижениями:
- achievement.steam_position = None
Если не None, устанавливает положение всплывающего уведомления Steam. Это должна быть строка, одна из: "top left", "top right", "bottom left" или "bottom right".
- define config.steam_appid = None
Если не None, это должен быть appid Steam. Ren'Py автоматически установит этот appid при запуске. Это нужно установить с помощью оператора define:
define config.steam_appid = 12345
- define config.automatic_steam_timeline = True
Если true, то при запуске через Steam игра будет автоматически обновлять Steam Timeline.
В настоящее время это включает:
Обновление фазы игры в соответствии с
save_name, если эта переменная установлена.Обновление режима игры, чтобы отразить, когда игрок находится в меню.
API Steamworks
Когда Steam доступен, привязка к API Steamworks на основе ctypes доступна как
achievement.steamapi. Привязка является экземпляром модуля
steamapi, который можно найти здесь,
и представляет собой машинный перевод API C++ Steamworks на Python.
Кроме того, большое количество функций доступно в объекте achievement.steam, если и только если API Steamworks доступен.
- achievement.steam
Если Steam инициализировался успешно, это пространство имен с высокоуровневыми методами Steam. Если Steam не инициализировался, это None. Всегда проверяйте, что это не None, перед вызовом метода.
Приложения Steam
- achievement.steam.dlc_installed(appid)
Возвращает True, если DLC установлен, иначе False.
- achievement.steam.dlc_progress(appid)
Сообщает о прогрессе загрузки DLC.
- achievement.steam.get_app_build_id()
Возвращает ID сборки (build ID) установленной игры.
- achievement.steam.get_current_beta_name()
Возвращает имя текущей бета-версии или None, если это невозможно.
- achievement.steam.get_current_game_language()
Возвращает имя языка, выбранного пользователем.
- achievement.steam.get_steam_ui_language()
Возвращает имя языка, используемого в интерфейсе Steam.
- achievement.steam.install_dlc(appid)
Запрашивает установку DLC с указанным appid.
- achievement.steam.is_subscribed_app(appid)
Возвращает true, если пользователь владеет приложением с appid, иначе false.
- achievement.steam.uninstall_dlc(appid)
Запрашивает удаление DLC с указанным appid.
Оверлей Steam
- achievement.steam.activate_overlay(dialog)
Активирует оверлей Steam.
- dialog
Диалог, который нужно открыть в оверлее. Один из: "Friends", "Community", "Players", "Settings", "OfficialGameGroup", "Stats", "Achievements"
- achievement.steam.activate_overlay_to_store(appid, flag=None)
Открывает оверлей Steam на странице магазина.
- appid
appid приложения, которое нужно открыть.
- flag
Один из: achievement.steam.STORE_NONE, .STORE_ADD_TO_CART или .STORE_ADD_TO_CART_AND_SHOW.
- achievement.steam.activate_overlay_to_web_page(url)
Активирует оверлей Steam и открывает веб-страницу по адресу url.
- achievement.steam.is_overlay_enabled()
Возвращает true, если оверлей Steam включен. (Может пройти некоторое время после запуска игры, прежде чем функция начнет возвращать true.)
- achievement.steam.overlay_needs_present()
Возвращает true, если оверлей Steam включен. (Может пройти некоторое время после запуска игры, прежде чем функция начнет возвращать true.)
- achievement.steam.set_overlay_notification_position(position)
Устанавливает позицию оверлея Steam. position должен быть одним из achievement.steam.POSITION_TOP_LEFT, .POSITION_TOP_RIGHT, .POSITION_BOTTOM_LEFT или .POSITION_BOTTOM_RIGHT.
Статистика Steam
- achievement.steam.clear_achievement(name)
Сбрасывает достижение с именем name. Вызовите
_renpysteam.store_stats(), чтобы отправить это изменение на сервер.
- achievement.steam.get_achievement(name)
Получает состояние достижения с именем name. Возвращает True, если достижение получено, False, если нет, и None, если достижение неизвестно или произошла ошибка.
- achievement.steam.get_float_stat(name)
Возвращает значение статистики с именем name или None, если такой статистики не существует.
- achievement.steam.get_int_stat(name)
Возвращает значение статистики с именем name или None, если такой статистики не существует.
- achievement.steam.grant_achievement(name)
Выдает достижение с именем name. Вызовите
_renpysteam.store_stats(), чтобы отправить это изменение на сервер.
- achievement.steam.indicate_achievement_progress(name, cur_progress, max_progress)
Показывает пользователю прогресс достижения. Это не открывает достижение.
- achievement.steam.list_achievements()
Возвращает список имен достижений.
- achievement.steam.retrieve_stats()
Получает достижения и статистику из Steam.
- achievement.steam.set_float_stat(name, value)
Устанавливает значение статистики с именем name, которая должна иметь тип FLOAT. Вызовите
_renpysteam.store_stats(), чтобы отправить это изменение на сервер.
- achievement.steam.set_int_stat(name, value)
Устанавливает значение статистики с именем name, которая должна иметь тип INT. Вызовите
_renpysteam.store_stats(), чтобы отправить это изменение на сервер.
- achievement.steam.store_stats()
Сохраняет статистику и достижения на сервере Steam.
Хронология Steam
- achievement.steam.add_timeline_event(icon, title, description, priority=0, start_offset=0.0, duration=0.0, possible_clip=None)
Добавляет событие на временную шкалу (timeline). Обратите внимание, что порядок аргументов здесь отличается от Steam API.
- icon
Иконка для отображения события. Это должна быть строка с названием одной из стандартных иконок Steam или той, что вы загрузили в Steam.
- title
Заголовок события.
- description
Описание события.
- priority
Приоритет события, используется для разрешения конфликтов. Должно быть целым числом от 0 до 1000.
- start_offset
Смещение начала события от текущего времени, в секундах.
- duration
Продолжительность события, в секундах.
- possible_clip
Определяет, может ли событие быть обрезано. Должно быть одной из констант achievement.steam.CLIP_PRIORITY... : CLIP_PRIORITY_NONE, CLIP_PRIORITY_STANDARD или CLIP_PRIORITY_FEATURED.
- achievement.steam.clear_timeline_state_description(time_delta)
Очищает описание текущего состояния на временной шкале.
- achievement.steam.set_timeline_state_description(description, time_delta=0.0)
Устанавливает описание текущего состояния на временной шкале.
- description
Строка, задающая описание текущего состояния.
- time_delta
Время, прошедшее с последнего изменения состояния.
Пользователь Steam
- achievement.steam.cancel_ticket()
Отменяет тикет, возвращенный
achievement.steam.get_session_ticket().
- achievement.steam.get_account_id()
Возвращает ID аккаунта пользователя.
- achievement.steam.get_csteam_id()
Возвращает полный CSteamID пользователя в виде 64-битного числа.
- achievement.steam.get_game_badge_level(series, foil)
Получает уровень значка Steam пользователя для вашей игры.
- achievement.steam.get_persona_name()
Возвращает публично видимое имя пользователя.
- achievement.steam.get_session_ticket(identity=None)
Получает тикет, который можно отправить на сервер для аутентификации этого пользователя.
Мастерская Steam
- achievement.steam.get_subscribed_item_path(item_id)
Возвращает путь, по которому был установлен элемент пользовательского контента. Возвращает None, если элемент не был установлен.
- item_id
ID элемента.
- achievement.steam.get_subscribed_items(include_disabled=False)
Возвращает список ID элементов из мастерской Steam, на которые подписан пользователь.
- include_disabled
Если true, включает в список отключенные элементы.