为应用程序和
可下载内容(DLC)暴露各类信息与操作。
成员函数
ISteamApp
的成员函数通过全局访问器函数
SteamApp()
调用。
BGetDLCDataByIndex
bool BGetDLCDataByIndex( int iDLC, AppId_t *pAppID, bool *pbAvailable, char *pchName, int cchNameBufferSize );
名称 | 类型 | 描述 |
iDLC | int | 获得 0 与 ISteamApps::GetDLCCount 之间的 DLC 索引。 |
pAppID | AppId_t * | 返回该 DLC 的 AppID。 |
pbAvailable | bool * | 返回 DLC 当前是否在 Steam 商店中可用。 如果 DLC 没有可见的商店页面,则为 false。 |
pchName | char * | 将 DLC 名称复制入此缓冲区后返回。 |
cchNameBufferSize | int | pchName 的缓冲区长度。 |
按索引返回 DLC 元数据。
返回: bool
true 表明当前 AppID 关联有 DLC 且
iDLC
在 0 与
ISteamApps::GetDLCCount 的范围内,否则返回
false。
示例:int32 DLCCount = SteamApps()->GetDLCCount();
for ( int i = 0; i < DLCCount; ++i ) {
AppId_t appId;
bool available;
char name[128];
bool success = SteamApps()->BGetDLCDataByIndex( i, &appId, &available, name, 128 );
if ( success ) {
// 处理 DLC 数据
}
}
BIsAppInstalled
bool BIsAppInstalled( AppId_t appID );
名称 | 类型 | 描述 |
appID | AppId_t | 要检查的应用程序的 AppID。 |
检查某特定应用是否已安装。
当前用户也许并不拥有此应用,只是通过免费周末等活动进行过安装。
此函数只对基础应用程序有效,对
可下载内容(DLC) 无效。 针对 DLC 请使用
ISteamApps::BIsDlcInstalled。
返回: bool
true 表明指定 AppID 已安装;否则返回
false。
BIsCybercafe
bool BIsCybercafe();
检查当前 AppID 是否供网吧使用。
返回: bool
true 表明此许可用于网吧;否则返回
false。
已弃用 - 不再使用。
BIsDlcInstalled
bool BIsDlcInstalled( AppId_t appID );
名称 | 类型 | 描述 |
appID | AppId_t | 要检查的 DLC 的 AppID。 |
检查用户是否拥有特定 DLC 且该 DLC 已安装。
返回: bool
true 表明该用户拥有 DLC 且已安装;否则返回
false。
注意: 应只用于简单的客户端检查,不能用于授予游戏中物品。
BIsLowViolence
bool BIsLowViolence();
检查用户拥有的许可是否提供低暴力 depot。
在对内容有限制的国家,低暴力 depot 有利于游戏销售。
返回: bool
true 表明用户拥有的许可提供低暴力 depot;否则返回
false。
另见: Depot 装载规则BIsSubscribed
bool BIsSubscribed();
检查活跃用户是否订阅了当前 App ID。
注意: 如果您使用 Steam DRM 或调用
SteamAPI_RestartAppIfNecessary,此函数将始终返回
true。
返回: bool
true 表明该活跃用户拥有当前 AppId;否则返回
false。
BIsSubscribedApp
bool BIsSubscribedApp( AppId_t appID );
检查活跃用户是否订阅了特定 AppId。
只有在需要检查与您游戏有关的另一个游戏(如试用版)的所有权时,才使用此函数。
返回: bool
true 表明该活跃用户订阅了特定 App ID;否则返回
false。
BIsSubscribedFromFamilySharing
bool BIsSubscribedFromFamilySharing();
检查活跃用户是否正通过其他用户拥有的临时家庭共享许可访问当前 AppID。
如果需要确定该许可的永久所有者的 Steam ID,请使用
GetAppOwner。
返回: bool
true 表明该活跃用户正在通过家庭共享访问当前 appID,否则返回
false。
BIsSubscribedFromFreeWeekend
bool BIsSubscribedFromFreeWeekend();
检查该用户是否通过免费周末订阅了当前 appID。
在使用此函数前请通过
Steamworks 讨论板联系 Valve 技术客户经理,来为免费周末活动制作相应程序包,确保活动能顺利开展。
返回: bool
true 表明该活跃用户通过免费周末订阅了当前 App Id;如果为其他任何类型的许可,则返回
false 。
BIsTimedTrial
bool BIsTimedTrial(uint32* punSecondsAllowed, uint32* punSecondsPlayed);
名称 | 类型 | 描述 |
punSecondsAllowed | uint32 * | 返回限时试用将列出的秒数。 |
punSecondsPlayed | uint32 * | 返回用户到目前为止游玩的秒数。 |
检查该用户是否通过限时试用订阅了当前 appID。 如果是,返回 true 并给出限时试用可以玩的总时间,以及用户当前共玩了多少时间。
返回: bool
true 表明该活跃用户通过限时试用订阅了当前 appID;如果为其他任何类型的许可,则返回
false 。
另见: ISteamApps::TimedTrialStatus_tBIsVACBanned
bool BIsVACBanned();
检查用户帐户是否受到 VAC 封禁。
返回: bool
true 表明该用户帐户受到 VAC 封禁;否则返回
false。
GetAppBuildId
int GetAppBuildId();
获取此应用的 buildid,可能根据游戏的后端更新而随时改变。
返回: int
此应用的当前 Build Id。如您未运行从 Steam 下载的生成版本,则默认为 0。
GetAppInstallDir
uint32 GetAppInstallDir( AppId_t appID, char *pchFolder, uint32 cchFolderBufferSize );
名称 | 类型 | 描述 |
appID | AppId_t | 要获得安装目录的 AppID。 |
pchFolder | char * | 文件夹路径将被复制入的字符串缓冲区。 |
cchFolderBufferSize | uint32 | pchFolder 缓冲区的字节大小。 |
获取特定 AppID 的安装文件夹。
即使应用程序未安装,该函数仍可按游戏将在 Steam 库的默认安装位置进行调用。
返回: uint32 将安装目录路径作为字符串返回至 pchFolder 中提供的缓冲区,并返回复制入该缓冲区的字节数。
GetAppOwner
CSteamID GetAppOwner();
获取当前应用真正拥有者的 Steam ID。如当前用户是通过“家庭共享”访问的游戏,则与当前用户的不同。
返回: CSteamID当前应用的原拥有者。
GetAvailableGameLanguages
const char * GetAvailableGameLanguages();
获取当前应用支持的语言列表,以逗号分隔。
参见
本地化和语言,了解可能会返回的语言的完整列表。
返回: const char *
返回以逗号分隔的语言列表。
另见: ISteamApps::GetCurrentGameLanguage,
ISteamUtils::GetSteamUILanguageGetCurrentBetaName
bool GetCurrentBetaName( char *pchName, int cchNameBufferSize );
名称 | 类型 | 描述 |
pchName | char * | 测试版名称要复制入的缓冲区。 |
cchNameBufferSize | int | pchName 缓冲区的总大小。 |
检查用户是否从一个测试版分支运行。如是,获取测试版分支名称。
返回: bool
true 表示用户运行的是测试版分支;否则返回
false。
GetNumBetas
int GetNumBetas( int *pnAvailable, int *pnPrivate );
名称 | 类型 | 描述 |
pnAvailable | int* | 当前用户可用的测试版分支数量。 |
pnPrivate | int* | 其中有多少是私密测试。 |
返回可用 GetBetaInfo() 遍历的已知应用分支的总数(包括默认的“public”分支)
返回: int
已知应用分支的数量
GetBetaInfo
bool GetBetaInfo( int iBetaIndex, uint32 *punFlags, uint32 *punBuildID, char *pchBetaName, int cchBetaName, char *pchDescription, int cchDescription );
名称 | 类型 | 描述 |
iBetaIndex | int | 分支索引从 0 开始,而这始终是默认分支。 |
punFlags | uint32 * | 描述当前分支状态的标记集(EBetaBranchFlags)。 |
punBuildID | uint32 * | 已在此分支设置为上线的内容 BuildID。 |
pchBetaName | char * | 测试版分支名称。 |
cchBetaName | int | 调用者提供的 pchBetaName 大小。 |
pchDescription | char * | 测试版分支描述。 |
cchDescription | int | 调用者提供的 pchDescription 大小。 |
获取应用测试版分支的详情,例如名称、描述和状态等。
返回: bool
如果所传入的分支索引有效,为 true;否则为 false。
示例:int32 betaCount = SteamApps()->GetNumBetas( nullptr, nullptr );
for ( int betaIndex = 0; betaIndex < betaCount; ++betaIndex )
{
char name[128];
char description[1024];
uint32 flags = 0; // EBetaBranchFlags
uint32 buildID = 0;
SteamApps()->GetBetaInfo( betaIndex, &flags, &buildID, name, sizeof( name ), description, sizeof( description ) );
}
SetActiveBeta
bool SetActiveBeta( const char *pchBetaName );
名称 | 类型 | 描述 |
pchBetaName | const char * | 游戏想要切换至的测试版名称。 |
为此应用选择一个测试版分支作为使用中的分支,也许需要游戏重启,以便 Steam 更新该分支的内容。
返回: bool
GetCurrentGameLanguage
const char * GetCurrentGameLanguage();
获取用户当前设置的语言。
如果用户未明确选择产品语言,则回退至 Steam UI 语言。
参见
支持的语言,查看完整语言列表。
返回: const char *
另见: ISteamApps::GetAvailableGameLanguages,
ISteamUtils::GetSteamUILanguageGetDLCCount
int GetDLCCount();
获取当前应用的 DLC 数量。
此函数通常与
ISteamApps::BGetDLCDataByIndex 一起使用,在各 DLC 之间循环,获取各 DLC 的信息。
返回: int
当前应用的 DLC 数量。请注意,视用户有多少未拥有的 DLC 而定,可能仅显示最大值 64。 如果您的应用有大量的 DLC,您应当设置自己内部的已知 DLC 列表,以进行对比查看。
示例:int32 DLCCount = SteamApps()->GetDLCCount();
for ( int i = 0; i < DLCCount; ++i ) {
AppId_t appId;
bool available;
char name[128];
bool success = SteamApps()->BGetDLCDataByIndex( i, &appId, &available, name, 128 );
if ( success ) {
// 处理 DLC 数据
}
}
GetDlcDownloadProgress
bool GetDlcDownloadProgress( AppId_t nAppID, uint64 *punBytesDownloaded, uint64 *punBytesTotal );
名称 | 类型 | 描述 |
nAppID | AppId_t | 要监控的 DLC 的 AppID。 |
punBytesDownloaded | uint64 * | 返回已下载的字节数。 |
punBytesTotal | uint64 * | 返回已下载的总字节大小。 |
获取可选 DLC 的下载进度。
返回: bool
true 表明指定 DLC 存在且当前正在下载;否则返回
false。
GetEarliestPurchaseUnixTime
uint32 GetEarliestPurchaseUnixTime( AppId_t nAppID );
名称 | 类型 | 描述 |
nAppID | AppId_t | 要获得其购买时间的 App ID。 |
获取指定应用的购买时间,以 Unix 时间戳(1970 年 1 月 1 日起的秒数)表示。
这可有助于根据用户的初始购买日期来奖励用户。
返回: uint32最早购买时间,以 Unix 时间戳(1970 年 1 月 1 日起的秒数)表示。
GetFileDetails
SteamAPICall_t GetFileDetails( const char*pszFileName );
名称 | 类型 | 描述 |
pszFileName | const char* | 文件的绝对路径及名称。 |
在 depot 清单中异步获取特定文件的元数据详情。
目前提供:
文件字节大小。
文件的 SHA1 哈希。
文件标志。
返回: SteamAPICall_t,与
FileDetailsResult_t 调用结果一起使用。
GetInstalledDepots
uint32 GetInstalledDepots( AppId_t appID, DepotId_t *pvecDepots, uint32 cMaxDepots );
名称 | 类型 | 描述 |
appID | AppId_t | 要为其列出 depot 的应用。 |
pvecDepots | DepotId_t * | 将填入 depot 列表的预分配数组。 |
cMaxDepots | uint32 | 可获得的 depot 的最大数量,通常为 pvecDepot 的大小。 |
按装入顺序获取给定 AppID 所有已安装的 depot 列表。
返回: uint32返回的 depot 数量。
GetLaunchCommandLine
int GetLaunchCommandLine( char *pszCommandLine, int cubCommandLine );
名称 | 类型 | 描述 |
pszCommandLine | char * | 命令行将被复制入的字符串缓冲区。 |
cubCommandLine | int | pszCommandLine 缓冲区的字节大小。 |
如果游戏通过 Steam URL 如 steam://run/<appid>//<command line>/ 启动,获取命令行。 此方法优于通过操作系统用命令行启动,后者可能存在安全隐患。 为了使丰富状态加入能使用此方式,而不被置于操作系统命令行,您必须在您应用的“安装”>“通用安装”页面上启用“使用启动命令行”。
返回: int
将命令行作为字符串返回至 pszCommandLine 提供的缓冲区,并返回复制入该缓冲区的字节数。
另见: ISteamApps::NewUrlLaunchParameters_tGetLaunchQueryParam
const char * GetLaunchQueryParam( const char *pchKey );
名称 | 类型 | 描述 |
pchKey | const char * | 要测试的启动序列号, 例:param1 |
如果游戏通过 steam://run/<appid>/?param1=value1;param2=value2;param3=value3 等运行,则获取关联的启动参数。
以“@”字符开始的参数名保留作内部使用,始终返回空字符串。
以下划线“_”开始的参数名保留供 Steam 功能使用,可由游戏查询,但建议您自己的功能的参数名不要以下划线开始。
返回: const char *
所提供的序列号关联的值。 若指定键并不存在,则返回空白字符串("")。
另见: ISteamApps::NewLaunchQueryParameters_tInstallDLC
void InstallDLC( AppId_t nAppID );
允许您安装可选的 DLC。
返回: void
触发
DlcInstalled_t 回调。
MarkContentCorrupt
bool MarkContentCorrupt( bool bMissingFilesOnly );
名称 | 类型 | 描述 |
bMissingFilesOnly | bool | 只扫描丢失文件,不验证每个文件的校验和。 |
允许您下次启动时强制验证游戏内容。
如果您检测到游戏已过期(比如客户端检测到与服务器版本不匹配),
您可以调用 MarkContentCorrupt 强制进行验证,向用户显示一条消息,然后退出。
返回: bool
RequestAllProofOfPurchaseKeys
void RequestAllProofOfPurchaseKeys();
已弃用。
RequestAppProofOfPurchaseKey
void RequestAppProofOfPurchaseKey( AppId_t nAppID );
已弃用。
UninstallDLC
void UninstallDLC( AppId_t nAppID );
允许您卸载可选的 DLC。
回调
以下是可以通过调用
SteamAPI_RunCallbacks 触发的回调。 其中许多将响应
ISteamApps
的成员函数直接触发。
AppProofOfPurchaseKeyResponse_t
只在 Steam 内部使用。
DlcInstalled_t
在当前用户获得 DLC 所有权且该 DLC 安装后触发。
名称 | 类型 | 描述 |
m_nAppID | AppId_t | 已安装的 DLC 的 App ID。 |
关联函数: ISteamApps::InstallDLCFileDetailsResult_t
在请求指定文件的详情后调用。
关联函数: ISteamApps::GetFileDetailsNewUrlLaunchParameters_t
在用户于游戏已运行时使用命令行或查询参数(如
steam://run/<appid>//?param1=value1;param2=value2;param3=value3;
)执行 Steam URL 后发布。 可使用
ISteamApps::GetLaunchCommandLine 和
ISteamApps::GetLaunchQueryParam 查询新的参数。
此回调无字段。
NewLaunchQueryParameters_t
在用户于游戏已运行时使用查询参数(如
steam://run/<appid>//?param1=value1;param2=value2;param3=value3;
)执行 Steam URL 后发布。 可使用
ISteamApps::GetLaunchQueryParam 查询新的参数。
此回调无字段。
RegisterActivationCodeResponse_t
只在 Steam 内部使用。
TimedTrialStatus_t
如果是通过限时试用拥有 appID 的,每分钟发送一次。
名称 | 类型 | 描述 |
m_unAppID | AppId_t | 限时试用中的 AppID。 |
m_bIsOffline | bool | 若为 true,表示用户当前离线。 允许/游玩的时间是指离线时间,而不是总时间。 |
m_unSecondsAllowed | uint32 | 应用程序总共可以玩多少秒。 |
m_unSecondsPlayed | uint32 | 应用程序已游玩了多少秒。 |
另见: ISteamApps::BIsTimedTrial枚举
以下为定义来与 ISteamApps 一起使用的枚举。
ERegisterActivationCodeResult
只在 Steam 内部使用。
名称 | 值 | 描述 |
k_ERegisterActivationCodeResultOK | 0 | |
k_ERegisterActivationCodeResultFail | 1 | |
k_ERegisterActivationCodeResultAlreadyRegistered | 2 | |
k_ERegisterActivationCodeResultTimeout | 3 | |
k_ERegisterActivationCodeAlreadyOwned | 4 | |
常量
以下是定义来与 ISteamApps 一起使用的常量。
名称 | 类型 | 值 | 描述 |
k_cubAppProofOfPurchaseKeyMax | int | 240 | 只在 Steam 内部使用。 |
STEAMAPPS_INTERFACE_VERSION | const char * | "STEAMAPPS_INTERFACE_VERSION008" | |