成就 link
成就(Achievement)模块允许开发者让用户解锁成就,清除成就,以及判断某个成就是否已经解锁。也允许根据根据进度获得成就。
默认情况下,成就在持久化文件中存储信息。如果Steam平台支持可用并且被启用,成就信息会自动与Steam同步。
- achievement.Sync() link
调用achievement.sync()函数的行为。只有当成就未同步的情况下才可用。
- achievement.clear(name) link
清除名为 name 的成就。
- achievement.clear_all() link
清除所有成就。
- achievement.get_progress(name) link
根据成就名返回成就完成进度。如果没有任何注册进度或成就未知时,将返回0。
- achievement.grant(name) link
解锁名为 name 的成就,前提是该成就尚未解锁。
- achievement.has(name) link
如果用户已经解锁成就 name 就返回True。
- achievement.progress(name, complete) link
报告成就 name 的完成进度,前提是该成就未解锁。成就 name 必须先定义各完成度。
- name
成就名,而不是成就的stat。
- complete
一个整数,给定了达成成就的单位数量。
- achievement.register(name, **kwargs) link
注册一个成就。成就并不强制需要注册,但这样做可以将成就信息传给后端。
- name
注册的成就名。
下列关键词参数是可选的。
- steam
在Steam上使用的成就名。如果没有指定,默认与 name 相同。
- stat_max
解锁成就的stat整数值。
- stat_modulo
如果使用 stat_max 对进度取模结果为0,就向用户显示进度。例如,如果stat_modula是10,当进度为10、20、30时分别会想用户显示进度信息。如果未给出该值,默认为0。
- achievement.sync() link
同步本地存储和其他后端(例如,Steam)的注册成就。
控制成就的配置项包括:
- achievement.steam_position = None link
若值不是None,该配置项设置steam弹出通知的位置。该值必须是一个字符串,可使用的内容包括“top left”,“top right”,“bottom left”和“bottom right”。
- define config.steam_appid = None link
若非None,该项应是Steam appid。Ren’Py会在启动时自动设置此appid。需要使用define语句设置该项。
define config.steam_appid = 12345
Steamworks API link
当Steam可用时,基于ctypes库的Steamworks API绑定也将可用,并对外表现为为 achievement.steamapi 。 这些绑定是steamapi模块的一个实例,将C++版本的Steamworks API通过机器转换为Python版本,具体内容可以看 这里。
此外,仅当Steamworks API可用时,我们才能访问achievement.steam对象中的一大堆函数。
- achievement.steam link
Steam初始化成功后,该项标识高级(high-level)Steam方法所在的命名空间。 如果Steam未完成初始化,该项的值为None。 在调用任意Steam方法前,最好先检查该项是否为None。
Steam Apps link
- achievement.steam.dlc_installed(appid) link
已安装 dlc 就返回True,否则返回False。
- achievement.steam.dlc_progress(appid) link
表示DLC下载进度。
- achievement.steam.get_app_build_id() link
返回已安装游戏版本号的Build ID。
- achievement.steam.get_current_beta_name() link
如果当前有可用的beta版则返回名称,否则返回None。
- achievement.steam.get_current_game_language() link
返回用户选择语言名。
- achievement.steam.get_steam_ui_language() link
返回用户正在使用的Steam UI名。
- achievement.steam.install_dlc(appid) link
安装 appid 对应的DLC。
- achievement.steam.is_subscribed_app(appid) link
若用户已拥有 appid 对应的应用就返回True,否咋返回False。
- achievement.steam.uninstall_dlc(appid) link
卸载 appid 对应的DLC。
Steam Overlay link
- achievement.steam.activate_overlay(dialog) link
激活Steam社区叠加界面。
- dialog
需要打开的叠加界面名称。可以是以下界面之一: “Friends”、”Community”、”Players”、”Settings”、”OfficialGameGroup”、”Stats”、”Achievements” (分别对应好友、社区、玩家、设置、官方游戏组、状态、成就)。
- achievement.steam.activate_overlay_to_store(appid, flag=None) link
以叠加界面形式打开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) link
激活Steam社区叠加界面。并直接打开网页 url 。
- achievement.steam.is_overlay_enabled() link
若Steam已启用叠加界面,返回True。(游戏启动后可能需要等一小段时间后才会返回True。)
- achievement.steam.overlay_needs_present() link
若Steam已启用叠加界面,返回True。(游戏启动后可能需要等一小段时间后才会返回True。)
- achievement.steam.set_overlay_notification_position(position) link
设置Steam叠加界面的位置。position 应是4种枚举值achievement.steam.POSITION_TOP_LEFT、achievement.steam.POSITION_TOP_RIGHT、achievement.steam.POSITION_BOTTOM_LEFT、achievement.steam.POSITION_BOTTOM_RIGHT其中之一。
Steam Stats link
- achievement.steam.clear_achievement(name) link
清除名为 name 的成就。之后调用
_renpysteam.store_stats()
可以将更改同步到服务器端。
- achievement.steam.get_achievement(name) link
获取名为 name 的成就状态。如果成就已达成就返回True,否则返回False。如果没有同名成就或发生错误会返回None。
- achievement.steam.get_float_stat(name) link
返回名为 name 的成就相关数值。如果没有同名成就会返回None。
- achievement.steam.get_int_stat(name) link
返回名为 name 的成就相关数值。如果没有同名成就会返回None。
- achievement.steam.grant_achievement(name) link
解锁名为 name 的成就。之后调用
_renpysteam.store_stats()
可以将更改同步到服务器端。
- achievement.steam.indicate_achievement_progress(name, cur_progress, max_progress) link
向用户展示成就进度,但 不会 解锁成就。
- achievement.steam.list_achievements() link
返回所有成就名的列表。
- achievement.steam.retrieve_stats() link
从Steam服务器端同步所有成就和统计数据。
- achievement.steam.set_float_stat(name, value) link
将名为 name 的成就相关数值设置为 value,注意 value 必须是浮点型数值。之后调用
_renpysteam.store_stats()
可以将更改同步到服务器端。
- achievement.steam.set_int_stat(name, value) link
将名为 name 的成就相关数值设置为 value,注意 value 必须是整型数值。之后调用
_renpysteam.store_stats()
可以将更改同步到服务器端。
- achievement.steam.store_stats() link
将所有统计数据和成就同步到Steam服务器端/
Steam Timeline link
- achievement.steam.add_timeline_event(icon, title, description, priority=0, start_offset=0.0, duration=0.0, possible_clip=None) link
Adds an event to the timeline. 向游戏时间中添加一个事件(event)。
- icon
该事件显示的图标。该项应该是一个字符串,表示基础的Steam图标名,或者玩家上传到Steam的图标名。
- title
事件的标题。
- description
事件的描述。
- priority
事件的优先级,用于解决事件冲突。该项应该是一个0到1000之间的整数。
- start_offset
从事件开始到现在的时间差,单位为秒。
- duration
事件持续时长,单位为秒。
- possible_clip
表示该事件是否可以被clip。该项应该是achievement.steam.CLIP_PRIORITY中的枚举值,包括CLIP_PRIORITY_NONE、CLIP_PRIORITY_STANDARD和CLIP_PRIORITY_FEATURED。
- achievement.steam.clear_timeline_state_description(time_delta) link
清除游戏时间线上当前状态的所有描述。
- achievement.steam.set_timeline_state_description(description, time_delta=0.0) link
设置游戏时间线上当前状态的描述。
- description
一个描述当前状态的字符串。
- time_delta
上次状态更改的时间,与当前时间的差值。
Steam User link
- achievement.steam.cancel_ticket() link
取消
achievement.steam.get_session_ticket()
返回的ticket结果。
- achievement.steam.get_account_id() link
返回用户的帐号ID。
- achievement.steam.get_csteam_id() link
返回用户的完整CSteamID。该值是一个64bit位的数字。
- achievement.steam.get_game_badge_level(series, foil) link
获取用户的Steam徽章(badge)等级,并用于该游戏中。
- achievement.steam.get_persona_name() link
返回用户公开可见的玩家名。
- achievement.steam.get_session_ticket() link
获取一个ticket,可以发送到服务器端实现用户验证。
Steam Workshop link
- achievement.steam.get_subscribed_item_path(item_id) link
如果安装了用户制作游戏内容的某个道具(item),则返回安装路径。 如果没有安装该道具,则返回None。
- item_id
道具(item)ID。