Достижения

Модуль достижений позволяет разработчику присваивать достижения игроку, очищать достижения и определять, было ли присвоено достижение. Он также позволяет записывать прогресс в достижении.

По умолчанию достижения хранят информацию в 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, включает в список отключенные элементы.