访问并对 Steam 用户信息进行使用的函数。
Steam 语音 的 API 也在这里暴露。
成员函数
ISteamUser
的成员函数通过全局访问器函数
SteamUser()
调用。
AdvertiseGame
void AdvertiseGame( CSteamID steamIDGameServer, uint32 unIPServer, uint16 usPortServer );
为玩家正在使用的不安全的游戏服务器设置丰富状态数据。 这让好友能查看游戏信息,加入您的游戏。
当您在使用 Steam 验证系统时,完全不需要用到此调用,验证系统会自动设置相应的丰富状态。
BeginAuthSession
EBeginAuthSessionResult BeginAuthSession( const void *pAuthTicket, int cbAuthTicket, CSteamID steamID );
名称 | 类型 | 描述 |
pAuthTicket | const void * | 要检验的验证票证。 |
cbAuthTicket | int | 验证票证的字节大小。 必须为创建此票证的调用所提供的 pcbTicket 大小。 |
steamID | CSteamID | 发送此票证的实体的 Steam ID。 |
验证发自实体 Steam ID 的票证,以确定其有效且非重复使用。 请注意,直到收到回调
ValidateAuthTicketResponse_t 并检查该回调中的返回值以判断是否成功后,身份才会得到确认。
票证通过
GetAuthSessionTicket 或
ISteamGameServer::GetAuthSessionTicket 创建于实体之上,然后需要通过网络提供给另一端进行验证。
如果实体离线或取消票证,这将额外注册
ValidateAuthTicketResponse_t 回调。 参见
EAuthSessionResponse,了解更多信息。
当多人游戏会话终止时,您必须调用
EndAuthSession。
返回: EBeginAuthSessionResult触发
ValidateAuthTicketResponse_t 回调。
另见: 用户验证与所有权BIsBehindNAT
bool BIsBehindNAT();
查看当前用户是否位于 NAT 设备之后。
只在用户连接到 Steam 服务器时有效,也许不能判定所有 NAT 形式。
返回: bool
true, 表示当前用户在 NAT 之后;否则为
false。
BIsPhoneIdentifying
bool BIsPhoneIdentifying();
检查用户电话号码是否能用于识别该用户一人。
返回: bool
true, 表示当前用户的手机号码能够验证该用户一人; 否则为
false。
BIsPhoneRequiringVerification
bool BIsPhoneRequiringVerification();
检查当前用户的电话号码是否在等待(重新)验证。
返回: bool
true, 表示当前用户的手机号码需要验证; 否则为
false。
BIsPhoneVerified
bool BIsPhoneVerified();
检查是否当前用户已验证过电话号码。
请参阅面向顾客的 Steam 客服站点上的
Steam 令牌手机验证器页面,获取更多信息。
返回: bool
true, 表示当前用户启用了电话验证; 否则为
false。
BIsTwoFactorEnabled
bool BIsTwoFactorEnabled();
检查当前用户的帐户是否启用了 Steam 令牌双重验证。
请参阅面向顾客的 Steam 客服站点上的
Steam 令牌手机验证器页面,获取更多信息。
返回: bool
true, 表示当前用户启用了双重身份验证; 否则为
false。
BLoggedOn
bool BLoggedOn();
检查是否当前用户的 Steam 客户端已连接至 Steam 服务器。
如果未连接,则不会启用 Steamworks API 提供的任何实时服务。 Steam 客户端将尽量频繁地自动尝试重新连接。 当连接恢复时,将发送出一个
SteamServersConnected_t 回调。
您通常不需要自己进行检查。 所有依赖于它的 API 调用将进行内部检查。 当玩家失去访问权限时,强行禁用内容通常会给玩家带来不好的体验,您可能会阻止他们访问不需要实时连接 Steam 的 API。
返回: bool
true, 如果 Steam 客户端当前实时连接到 Steam 服务器;否则,如果由于在本地电脑上出现连接问题,或者由于 Steam 服务器停机/繁忙而没有可用的连接,返回
false。
BSetDurationControlOnlineState
bool BSetDurationControlOnlineState( EDurationControlOnlineState eNewState );
允许游戏为蒸汽平台持续时间控制指定离线/在线游戏状态。
参数: EDurationControlOnlineState返回: bool
true, 表示成功设置了在线状态; 否则为
false。
关联函数:GetDurationControlCancelAuthTicket
void CancelAuthTicket( HAuthTicket hAuthTicket );
取消从
GetAuthSessionTicket 获得的验证票证。 当不再使用指定实体时,应调用此函数。
另见: 用户验证与所有权DecompressVoice
EVoiceResult DecompressVoice( const void *pCompressed, uint32 cbCompressed, void *pDestBuffer, uint32 cbDestBufferSize, uint32 *nBytesWritten, uint32 nDesiredSampleRate );
名称 | 类型 | 描述 |
pCompressed | const void * | 从 GetVoice 收到的压缩的数据。 |
cbCompressed | uint32 | 传入 pCompressed 的缓冲区的大小。 |
pDestBuffer | void * | 要在其中返回原始数据的缓冲区。 这然后可以传入您的音频子系统进行播放。 |
cbDestBufferSize | uint32 | 传入 pDestBuffer 的缓冲区的大小。 |
nBytesWritten | uint32 * | 返回写入 pDestBuffer 的字节数,或者如果 cbDestBufferSize 不够大(并且返回了 k_EVoiceResultBufferTooSmall),则返回解压缩给定数据所需的缓冲区大小。 |
nDesiredSampleRate | uint32 | 将返回的采样率, 可以在 11025 到 48000 之间。您应该采用最适合您的音频播放系统的频率,它很可能考虑到了用户的音频硬件;或者,您可以使用 GetVoiceOptimalSampleRate 获得 Steam 音频解码器的原生采样率。 |
解码
GetVoice 返回的压缩声音数据。
输出数据为原始的单声道 16 位 PCM 音频。 解码器支持 11025 到 48000 的所有采样率。 参见
GetVoiceOptimalSampleRate,了解更多信息。
我们建议您从 20KiB 缓冲区开始,然后视情况重新分配。
参见
Steam 语音,了解更多信息。
返回: EVoiceResultSteam 音频解码器的内部采样率。
EndAuthSession
void EndAuthSession( CSteamID steamID );
结束以
BeginAuthSession 开始的验证会话。 当不再使用指定实体时,应调用此函数。
另见: 用户验证与所有权GetAuthSessionTicket
HAuthTicket GetAuthSessionTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket, const SteamNetworkingIdentity *pIdentityRemote );
名称 | 类型 | 描述 |
pTicket | void * | 如果调用成功,新验证票证将复制入的缓冲区。 |
cbMaxTicket | int | 分配给 pTicket 的缓冲区大小, 通常来说 1024 大小的缓冲区就足够了。 但是,在某些情况下(例如,当应用程序具有大量可用 DLC 时),可能需要更大的缓冲区大小。 |
pcbTicket | uint32 * | 返回实际票证的长度。 |
pIdentityRemote | SteamNetworkingIdentity * | 将验证票证的远程系统的身份。 如果是 P2P,则为用户 Steam ID。 如果是游戏服务器,且是从可信的第三方获得的,则可以使用游戏服务器的 steam ID,否则使用 IP 地址。 如果是一项服务,则为该服务的字符串标识符(如果有的话)。 |
获取身份验证票证,以便发送给希望对您进行身份验证的实体。
调用此函数之后,您可以发送票证至实体,该实体然后可以调用
BeginAuthSession/
ISteamGameServer::BeginAuthSession,验证此实体的完整性。
返回: HAuthTicket触发一个
GetAuthSessionTicketResponse_t 回调。
验证票证的句柄。 当您完成与实体的交互时,您必须在句柄上调用
CancelAuthTicket。
如果调用失败,返回
k_HAuthTicketInvalid。
另见: 用户验证与所有权GetAuthTicketForWebApi
HAuthTicket GetAuthTicketForWebApi( const char *pchIdentity );
名称 | 类型 | 描述 |
*pchIdentity | const char * | 将验证票证的远程服务的身份。 该服务应提供一个字符串标识符。 如果未提供,则传入 null。 |
使用
ISteamUserAuth/AuthenticateUserTicket Web API 获取要发送给欲对您进行身份验证的实体的验证票证。
最佳做法是为每个将使用票证的服务使用标识字符串。
返回: HAuthTicket触发一个
GetTicketForWebApiResponse_t 回调。
验证票证的句柄。 当您完成与实体的交互时,您必须在句柄上调用
CancelAuthTicket。
如果调用失败,返回
k_HAuthTicketInvalid。
另见: 用户验证与所有权GetAvailableVoice
EVoiceResult GetAvailableVoice( uint32 *pcbCompressed, uint32 *pcbUncompressed_Deprecated = 0, uint32 nUncompressedVoiceDesiredSampleRate_Deprecated = 0 );
名称 | 类型 | 描述 |
pcbCompressed | uint32 * | 返回可用的音频数据的字节大小。 |
pcbUncompressed_Deprecated | uint32 * | 已弃用。 |
nUncompressedVoiceDesiredSampleRate_Deprecated | uint32 | 已弃用。 |
检查是否有
GetVoice 捕获的音频数据可用,并获得数据大小。
多数应用程序将只使用压缩数据,且应该忽略主要用于向后兼容的其他参数。 参见
GetVoice,进一步了解“未压缩的”数据。
参见
Steam 语音,了解更多信息。
返回: EVoiceResultGetDurationControl
SteamAPICall_t GetDurationControl();
检索当前用户/游戏组合的防沉迷/持续时间控制。
返回: SteamAPICall_t 与
DurationControl_t 调用结果一起使用。
如果无法建立与 Steam 服务器的连接,则返回
k_uAPICallInvalid 。
关联函数:BSetDurationControlOnlineStateGetEncryptedAppTicket
bool GetEncryptedAppTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket );
名称 | 类型 | 描述 |
pTicket | void * | 加密的应用票证将复制入此缓冲区。 |
cbMaxTicket | int | pTicket 缓冲区的总大小,以字节为单位。 |
pcbTicket | uint32 * | 返回复制到 pTicket 中的字节数。 |
获取加密的票证。
应该在使用
RequestEncryptedAppTicket 请求加密应用票证并收到
EncryptedAppTicketResponse_t 调用结果之后,再调用此函数。
然后您应该将此加密票证传入您的安全服务器,以使用您的密钥通过
SteamEncryptedAppTicket::BDecryptTicket 进行解密。
注意: 如果您调用此函数但未调用
RequestEncryptedAppTicket,此调用也许会成功,但是您很可能会获得过期票证。
返回: bool
true, 表示调用成功将应用票证返回到
pTicket
中。
false, 表示有以下情况:
GetGameBadgeLevel
int GetGameBadgeLevel( int nSeries, bool bFoil );
名称 | 类型 | 描述 |
nSeries | int | 如果只有一组卡,则序列为 1。 |
bFoil | bool | 检查用户是否收到了闪亮徽章。 |
获得用户在您游戏中的 Steam 徽章等级。
用户在一个序列中可以获得两种不同的徽章:普通徽章(最高等级为 5)和闪亮徽章(最高等级为 1)。
返回: int
徽章的等级,若没有,则为 0。
GetHSteamUser
HSteamUser GetHSteamUser();
获取此接口表示的 Steam 用户句柄。
只供此 API 内部以及少数支持多用户的接口使用。
返回: HSteamUserGetPlayerSteamLevel
int GetPlayerSteamLevel();
获得用户的 Steam 社区个人资料中显示的 Steam 等级。
返回: int
当前用户的等级。
GetSteamID
CSteamID GetSteamID();
获取当前登录至 Steam 客户端帐户的 Steam ID。 通常被称为“当前用户”,或“本地用户”。
Steam ID 是 Steam 帐户、Steam 组、大厅和聊天室的唯一标识符,用于在 Steamworks API 各部分中区分用户。
返回: CSteamID示例:CSteamID steamID = SteamUser()->GetSteamID();
GetUserDataFolder
bool GetUserDataFolder( char *pchBuffer, int cubBuffer );
名称 | 类型 | 描述 |
pchBuffer | char * | |
cubBuffer | int | |
已弃用 - 您需要改为使用
ISteamRemoteStorage 的
Steam 云 API。
返回: bool
GetVoice
EVoiceResult GetVoice( bool bWantCompressed, void *pDestBuffer, uint32 cbDestBufferSize, uint32 *nBytesWritten, bool bWantUncompressed_Deprecated = false, void *pUncompressedDestBuffer_Deprecated = 0, uint32 cbUncompressedDestBufferSize_Deprecated = 0, uint32 *nUncompressBytesWritten_Deprecated = 0, uint32 nUncompressedVoiceDesiredSampleRate_Deprecated = 0 );
名称 | 类型 | 描述 |
bWantCompressed | bool | 应始终为 true。 |
pDestBuffer | void * | 音频数据将复制入的缓冲区。 |
cbDestBufferSize | uint32 | 分配给 pDestBuffer 的缓冲区大小。 |
nBytesWritten | uint32 * | 返回写入到 pDestBuffer 中的字节数。 这始终应当是 ISteamUser::GetAvailableVoice 返回的大小。 |
bWantUncompressed_Deprecated | bool | 已弃用。 |
pUncompressedDestBuffer_Deprecated | void * | 已弃用。 |
cbUncompressedDestBufferSize_Deprecated | uint32 | 已弃用。 |
nUncompressBytesWritten_Deprecated | uint32 * | 已弃用。 |
nUncompressedVoiceDesiredSampleRate_Deprecated | uint32 | 已弃用。 |
读取从麦克风缓冲区捕获的音频数据。
压缩数据可以由您的应用程序传输,并在另一端使用
DecompressVoice 解码回原始音频数据。 提供的压缩数据为任意格式,不用于直接播放。
这应该每帧调用一次,最坏情况下,每秒不超过四次,以使麦克风输入延时尽量低。 调用不够,可能导致返回流出现间隙。
我们建议您为压缩音频传入 8 千字节或更大的目标缓冲区。 出于性能考虑,最好使用静态缓冲区。 不过,如果您想要在每次调用前精确分配正确的空间大小,您可以使用
GetAvailableVoice 获得可供读取的数据量。
注意: “未压缩”音频为弃用功能,绝大多数应用程序都不应使用。 这是原始的单声道 16 位 PCM 波形数据,可能已通过预处理滤波器运行和/或已移除静音,因此未压缩的音频的持续时间可能比您预期的短。 在长时间的静音中,也许根本没有任何数据。 而且,提取未压缩音频将导致 GetVoice 丢弃所有遗留的压缩音频,因此,您必须同时提取两种类型。 最后,在请求未压缩大小时,
GetAvailableVoice 并不非常精确。 因此,如果您的确需要使用未压缩音频,您需要频繁使用两个非常大的(20KiB+)输出缓冲区来调用 GetVoice,而非试图分配大小精确的缓冲区。 但是大多数应用程序应该忽略所有这些细节,仅将“未压缩”参数保持为
NULL/
0。
参见
Steam 语音,了解更多信息。
返回: EVoiceResultGetVoiceOptimalSampleRate
uint32 GetVoiceOptimalSampleRate();
获取 Steam 音频解码器的原生采样率。
为
DecompressVoice 使用此采样率,所需的 CPU 处理将最少。 但是,最终的音频质量将取决于音频设备(和/或应用程序的音频输出 SDK)在较低采样率下的处理效果。 您也许会发现,忽略此函数,并使用您的音频输出设备的原生采样率(通常为 48000 或 44100),您会得到最佳音频输出质量。
参见
Steam 语音,了解更多信息。
返回: uint32InitiateGameConnection
int InitiateGameConnection( void *pAuthBlob, int cbMaxAuthBlob, CSteamID steamIDGameServer, uint32 unIPServer, uint16 usPortServer, bool bSecure );
名称 | 类型 | 描述 |
pAuthBlob | void * | 指向空白内存的指针,内存将由验证令牌填充。 |
cbMaxAuthBlob | int | pBlob 中已分配内存的字节数。 应当至少为 2048 字节。 |
steamIDGameServer | CSteamID | 游戏服务器的 Steam ID,由客户端从游戏服务器获得。 |
unIPServer | uint32 | 游戏服务器的 IP 地址,采用主机序,即 127.0.0.1 == 0x7f000001。 |
usPortServer | uint16 | 游戏服务器的连接端口,采用主机序。 |
bSecure | bool | 客户端是否认为游戏服务器将自己报告为安全服务器(也即 VAC 正在运行)。 |
此函数将启动与游戏服务器验证游戏客户端的状态机。
这是客户端、游戏服务器、Steam 服务器之间三方握手的客户端部分。
注意: 您完成连接后,必须调用
TerminateGameConnection。
注意: 这是旧的用户验证 API 的一部分,不应与新 API 混用。
返回: int
写入 pBlob 的字节数。
返回
0 表示失败,代表着传入的
pAuthBlob
缓冲区太小,并且调用失败。
然后
pAuthBlob
的内容应被发送到游戏服务器,以用于完成身份验证过程。
RequestEncryptedAppTicket
SteamAPICall_t RequestEncryptedAppTicket( void *pDataToInclude, int cbDataToInclude );
名称 | 类型 | 描述 |
pDataToInclude | void * | 要加密入票证的数据。 |
cbDataToInclude | int | pDataToInclude 的总大小,以字节记。 |
请求一个应用程序票证,该票证使用“加密的应用票证密钥”加密。
您可以从应用管理页面的
加密应用票证密钥页面获得加密密钥。
只能有一个待处理的
EncryptedAppTicketResponse_t,且此调用有 60 秒的频率限制。
收到响应后,您应该调用
GetEncryptedAppTicket,以获取票证数据,然后您需要将其发送至安全服务器,通过
SteamEncryptedAppTicket 函数进行解密。
返回: SteamAPICall_t 与
EncryptedAppTicketResponse_t 调用结果一起使用。
示例:class CEncryptedAppTicketExample
{
public:
void RetrieveEncryptedAppTicket();
private:
void OnEncryptedAppTicketResponse( EncryptedAppTicketResponse_t *pEncryptedAppTicketResponse, bool bIOFailure );
CCallResult< CEncryptedAppTicketExample, EncryptedAppTicketResponse_t > m_EncryptedAppTicketResponseCallResult;
};
void CEncryptedAppTicketExample::RetrieveEncryptedAppTicket()
{
SteamAPICall_t hSteamAPICall = SteamUser()->RequestEncryptedAppTicket( &k_unSecretData, sizeof( k_unSecretData ) );
m_EncryptedAppTicketResponseCallResult.Set( hSteamAPICall, this, &CEncryptedAppTicketExample::OnEncryptedAppTicketResponse );
}
void CEncryptedAppTicketExample::OnEncryptedAppTicketResponse( EncryptedAppTicketResponse_t *pEncryptedAppTicketResponse, bool bIOFailure )
{
if ( bIOFailure )
{
printf( "There has been an IO Failure when requesting the Encrypted App Ticket.\n" );
return;
}
switch ( pEncryptedAppTicketResponse->m_eResult )
{
case k_EResultOK:
{
uint8 rgubTicket[1024];
uint32 cubTicket;
if ( SteamUser()->GetEncryptedAppTicket( rgubTicket, sizeof( rgubTicket ), &cubTicket ) )
{
// 通常在此时,您会将加密的票证传输到知道解密密钥的可信服务上
// 此代码仅用于展示票证解密库
DecryptTicket( rgubTicket, cubTicket );
}
else
printf( "GetEncryptedAppTicket failed.\n" );
}
break;
case k_EResultNoConnection:
printf( "Calling RequestEncryptedAppTicket while not connected to steam results in this error.\n" );
break;
case k_EResultDuplicateRequest:
printf( "Calling RequestEncryptedAppTicket while there is already a pending request results in this error.\n" );
break;
case k_EResultLimitExceeded:
printf( "Calling RequestEncryptedAppTicket more than once per minute returns this error.\n" );
break;
}
}
RequestStoreAuthURL
SteamAPICall_t RequestStoreAuthURL( const char *pchRedirectURL );
名称 | 类型 | 描述 |
pchRedirectURL | const char * | |
请求一个 URL,为商店内付款验证游戏内浏览器,然后重新定向至指定 URL。
只要游戏内浏览器接受并处理会话 cookie,Steam 小额交易付款页面将自动识别用户,而非提供登录页面。
注意: 为防止历史记录被偷窥而受到攻击,此 URL 的有效时间非常短,因此您应只在即将启动浏览器时调用此 API,或者使用隐藏浏览窗口,立即导航至结果 URL。
注意: 作为结果的授权 cookie 会在一天后失效,因此最好每 12 小时请求并访问一个新的验证 URL。
返回: SteamAPICall_t 与
StoreAuthURLResponse_t 调用结果一起使用。
如果无法建立与 Steam 服务器的连接,则返回
k_uAPICallInvalid 。
StartVoiceRecording
void StartVoiceRecording();
开始录音。
开始后,使用
GetAvailableVoice 和
GetVoice 获取数据,然后在用户松开他们的按键通话快捷键时或游戏会话完成时,调用
StopVoiceRecording。
参见
Steam 语音,了解更多信息。
StopVoiceRecording
void StopVoiceRecording();
停止录音。
由于人们通常提前松开按键通话快捷键,系统将在调用此函数后再继续录制一点。 因此,应继续调用
GetVoice,直至返回
k_EVoiceResultNotRecording,只有到那时,录音才停止。
TerminateGameConnection
void TerminateGameConnection( uint32 unIPServer, uint16 usPortServer );
通知游戏服务器连接正在断开。
这需要在游戏客户端离开指定游戏服务器时发生,需要与
InitiateGameConnection 调用匹配。
注意: 这是旧的用户验证 API 的一部分,不应与新 API 混用。
TrackAppUsageEvent
void TrackAppUsageEvent( CGameID gameID, int eAppUsageEvent, const char *pchExtraInfo = "" );
名称 | 类型 | 描述 |
gameID | CGameID | |
eAppUsageEvent | int | |
pchExtraInfo | const char * | |
已弃用 - 在
统计与成就推出前,仅供部分游戏用于记录使用事件。
UserHasLicenseForApp
EUserHasLicenseForAppResult UserHasLicenseForApp( CSteamID steamID, AppId_t appID );
名称 | 类型 | 描述 |
steamID | CSteamID | 发送验证票证的用户的 Steam ID。 |
appID | AppId_t | 若用户拥有 DLC,要检查的 DLC App ID。 |
查看用户是否拥有特定
可下载内容(DLC)。
只有在将用户验证票证发送至
ISteamGameServer::BeginAuthSession 之后,才能调用。
返回: EUserHasLicenseForAppResult另见: 用户验证与所有权回调
以下是可以通过调用
SteamAPI_RunCallbacks 触发的回调。 其中许多将响应
ISteamUser
的成员函数直接触发。
ClientGameServerDeny_t
由 Steam 服务器发送给客户端,通知客户端与指定的游戏服务器断开连接,该服务器可能正在连接或已连接。
游戏客户端应在收到此消息后立即断开连接。
如果用户没有在游戏服务器上游玩的权限,通常会发生这种情况。
名称 | 类型 | 描述 |
m_uAppID | uint32 | 此调用针对的 App ID。 验证其与 ISteamUtils::GetAppID 提供的当前 App ID 一致。 |
m_unGameServerIP | uint32 | 通知我们断开连接的游戏服务器的 IP,采用主机序,即 127.0.0.1 == 0x7f000001。 |
m_usGameServerPort | uint16 | 通知我们断开连接的游戏服务器的端口,采用主机序。 |
m_bSecure | uint16 | 游戏服务器是 VAC 安全服务器(true)还是非 VAC 安全服务器(false)? |
m_uReason | uint32 | |
DurationControl_t
针对启用了防沉迷/持续时间控制的游戏而发送(适用于启用的用户)。 让游戏知道该功能是否适用于用户,用户是否需要尽快退出游戏以及用户每日剩余的游戏时间。
计时器会异步触发此回调。 调用 GetDurationControl() 时也会触发。
关联函数: GetDurationControlEncryptedAppTicketResponse_t
在收到加密的应用程序票证时调用。
名称 | 类型 | 描述 |
m_eResult | EResult | 调用是否成功? 可能的结果:
|
关联函数: RequestEncryptedAppTicketGameWebCallback_t
根据用户单击 Steam 界面浏览器中的链接后发出的 steam://gamewebcallback/ 命令发送到您的游戏。
您可以使用它来添加对外部站点注册的支持,在进行了网页注册步骤之后最好回到到浏览器中,并可以选择获取有关的详细信息。
名称 | 类型 | 描述 |
m_szURL | char[256] | 用户点击的完整 URL。 |
GetAuthSessionTicketResponse_t
创建验证会话票证的结果。
关联函数: GetAuthSessionTicketGetTicketForWebApiResponse_t
从 GetAuthTicketForWebApi 创建 webapi 票证时的结果。
关联函数: GetAuthTicketForWebApiIPCFailure_t
在此客户端的回调系统处于错误状态(并已刷新待处理的回调)时调用。
收到此消息时,客户端应与 Steam 断开连接,重置存储的所有 Steam 状态,并重新连接。
这一般发生在 Steam 客户端出现某种致命错误的罕见情况下。
LicensesUpdated_t
在用户许可(拥有的程序包)更改时调用。
此回调无字段。
MicroTxnAuthorizationResponse_t
在用户响应了小额交易授权请求时调用。
名称 | 类型 | 描述 |
m_unAppID | uint32 | 此小额交易的 App ID。 |
m_ulOrderID | uint64 | 小额交易的订单 ID。 |
m_bAuthorized | uint8 | 用户授权了此交易(1),还是未授权此交易(0)? |
SteamServerConnectFailure_t
在试图连接失败时调用。
如果 Steam 客户端未连接,并且重新尝试建立连接时失败,这将定期发生。
名称 | 类型 | 描述 |
m_eResult | EResult | 连接失败的原因。 |
m_bStillRetrying | bool | Steam 客户端仍然在尝试连接至服务器吗? |
SteamServersConnected_t
在与 Steam 后端建立连接时调用。
这说明 Steam 客户端现在与 Steam 服务器有了有效连接。 通常这将在游戏启动之前发生,且应该只在用户因网络问题或 Steam 服务器更新而掉线时才发生。
此回调无字段。
SteamServersDisconnected_t
在客户端失去与 Steam 服务器的连接时调用。
实时服务将禁用,直到发送了匹配的
SteamServersConnected_t 时为止。
名称 | 类型 | 描述 |
m_eResult | EResult | 与 Steam 断开连接的原因。 |
StoreAuthURLResponse_t
在调用
RequestStoreAuthURL 之后我们收到验证 URL 时的响应。
名称 | 类型 | 描述 |
m_szURL | char[512] | 验证 URL。 |
关联函数: RequestStoreAuthURLValidateAuthTicketResponse_t
在验证票证获得验证后调用。
关联函数: BeginAuthSession结构
以下是 ISteamUser 中的函数可能返回和/或与之交互的结构。
CallbackMsg_t
此结构包含客户端回调数据。 仅在
SteamAPI_RunCallbacks 内部使用。
名称 | 类型 | 描述 |
m_hSteamUser | HSteamUser | 此回调发送至的用户。 |
m_iCallback | int | 回调唯一 ID。 |
m_pubParam | uint8 * | 回调数据的指针。 |
m_cubParam | int | [param]m_pubParam[/param] 的大小。 |
枚举
以下是经过定义来与 ISteamUser 一起使用的枚举。
EFailureType
指明在
IPCFailure_t 里失败的类型。
名称 | 值 | 描述 |
k_EFailureFlushedCallbackQueue | 0 | |
k_EFailurePipeFail | 1 | |
EDurationControlProgress
一些游戏针对蒸汽平台上的未成年用户启用了持续时间控制/防沉迷,此处描述了应用于这些游戏的游戏时间限制。
名称 | 值 | 描述 |
k_EDurationControlProgress_Full | 0 | 一般游玩 |
k_EDurationControlProgress_Half | 1 | (此值已弃用) |
k_EDurationControlProgress_None | 2 | 用户的游玩时间已用完。 Steam 将于不久后终止游戏。 |
关联函数:GetDurationControlBSetDurationControlOnlineStateEDurationControlNotification
描述哪个通知计时器已过期,用于蒸汽平台持续时间控制功能。 其中一些通知已弃用,不再发送。
名称 | 值 | 描述 |
k_EDurationControlNotification_None | 0 | 回调只是通知您进度,没有通知可显示 |
k_EDurationControlNotification_1Hour | 1 | 游戏已进行了 1 小时——若需要,游戏可以在此时显示一些东西 |
k_EDurationControlNotification_3Hours | 2 | (已弃用) |
k_EDurationControlNotification_HalfProgress | 3 | (已弃用) |
k_EDurationControlNotification_ExitSoon_3h | 4 | 玩家已用尽了所允许的时间,应该退出游戏 |
k_EDurationControlNotification_ExitSoon_5h | 4 | 玩家已用尽了所允许的时间,应该退出游戏 |
k_EDurationControlNotification_ExitSoon_Night | 4 | 玩家已经玩到了当地允许的时间(晚上 10 时),应该退出游戏 |
关联函数:GetDurationControlBSetDurationControlOnlineStateEDurationControlOnlineState
描述游戏的在线/离线游戏状态。 当前,这仅用于支持当用户的游戏时间耗尽时,可以防止 Steam 自动退出的游戏。 如果游戏调用 BSetDurationControlOnlineState(k_EDurationControlOnlineState_OnlineHighPri),则 Steam 不会强制退出游戏——在这种情况下,游戏应自行决定退出游戏! Steam 将继续向游戏发送 Duration_Control_t 通知。 如果游戏以后调用 BSetDurationControlOnlineState 删除 OnlineHighPri 状态,则 Steam 将在此后强制退出游戏。
名称 | 值 | 描述 |
k_EDurationControlOnlineState_Offline | 1 | 线下游玩 |
k_EDurationControlOnlineState_Online | 2 | 线上游玩 |
k_EDurationControlOnlineState_OnlineHighPri | 3 | 线上游玩 - 游戏要求 Steam 不要强制退出游戏 |
关联函数:GetDurationControlBSetDurationControlOnlineState常量
以下是经过定义来与 ISteamUser 一起使用的常量。
名称 | 类型 | 值 | 描述 |
STEAMUSER_INTERFACE_VERSION | const char * | "SteamUser019" | |