Steamworks 文献库
ISteamUser 接口
访问并对 Steam 用户信息进行使用的函数。

Steam 语音 的 API 也在这里暴露。

成员函数

ISteamUser 的成员函数通过全局访问器函数 SteamUser() 调用。

AdvertiseGame

void AdvertiseGame( CSteamID steamIDGameServer, uint32 unIPServer, uint16 usPortServer );
名称类型描述
steamIDGameServerCSteamID如果您在设置 IP/端口,这应为 k_steamIDNonSteamGS;否则,如果您在进行清除,应为 k_steamIDNil
unIPServeruint32游戏服务器 IP,采用主机序,即 127.0.0.1 == 0x7f000001。
usPortServeruint16游戏服务器的连接端口,采用主机序。

为玩家正在使用的不安全的游戏服务器设置丰富状态数据。 这让好友能查看游戏信息,加入您的游戏。

当您在使用 Steam 验证系统时,完全不需要用到此调用,验证系统会自动设置相应的丰富状态。

BeginAuthSession

EBeginAuthSessionResult BeginAuthSession( const void *pAuthTicket, int cbAuthTicket, CSteamID steamID );
名称类型描述
pAuthTicketconst void *要检验的验证票证。
cbAuthTicketint验证票证的字节大小。 必须为创建此票证的调用所提供的 pcbTicket 大小。
steamIDCSteamID发送此票证的实体的 Steam ID。

验证发自实体 Steam ID 的票证,以确定其有效且非重复使用。 请注意,直到收到回调 ValidateAuthTicketResponse_t 并检查该回调中的返回值以判断是否成功后,身份才会得到确认。

票证通过 GetAuthSessionTicketISteamGameServer::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

关联函数:
GetDurationControl

CancelAuthTicket

void CancelAuthTicket( HAuthTicket hAuthTicket );
名称类型描述
hAuthTicketHAuthTicket要取消的可用验证票证。

取消从 GetAuthSessionTicket 获得的验证票证。 当不再使用指定实体时,应调用此函数。

另见: 用户验证与所有权

DecompressVoice

EVoiceResult DecompressVoice( const void *pCompressed, uint32 cbCompressed, void *pDestBuffer, uint32 cbDestBufferSize, uint32 *nBytesWritten, uint32 nDesiredSampleRate );
名称类型描述
pCompressedconst void *GetVoice 收到的压缩的数据。
cbCompresseduint32传入 pCompressed 的缓冲区的大小。
pDestBuffervoid *要在其中返回原始数据的缓冲区。 这然后可以传入您的音频子系统进行播放。
cbDestBufferSizeuint32传入 pDestBuffer 的缓冲区的大小。
nBytesWrittenuint32 *返回写入 pDestBuffer 的字节数,或者如果 cbDestBufferSize 不够大(并且返回了 k_EVoiceResultBufferTooSmall),则返回解压缩给定数据所需的缓冲区大小。
nDesiredSampleRateuint32将返回的采样率, 可以在 1102548000 之间。您应该采用最适合您的音频播放系统的频率,它很可能考虑到了用户的音频硬件;或者,您可以使用 GetVoiceOptimalSampleRate 获得 Steam 音频解码器的原生采样率。

解码 GetVoice 返回的压缩声音数据。

输出数据为原始的单声道 16 位 PCM 音频。 解码器支持 11025 到 48000 的所有采样率。 参见 GetVoiceOptimalSampleRate,了解更多信息。

我们建议您从 20KiB 缓冲区开始,然后视情况重新分配。

参见 Steam 语音,了解更多信息。

返回: EVoiceResult
Steam 音频解码器的内部采样率。

EndAuthSession

void EndAuthSession( CSteamID steamID );
名称类型描述
steamIDCSteamID要结束与其进行的验证会话的实体。

结束以 BeginAuthSession 开始的验证会话。 当不再使用指定实体时,应调用此函数。

另见: 用户验证与所有权

GetAuthSessionTicket

HAuthTicket GetAuthSessionTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket, const SteamNetworkingIdentity *pIdentityRemote );
名称类型描述
pTicketvoid *如果调用成功,新验证票证将复制入的缓冲区。
cbMaxTicketint分配给 pTicket 的缓冲区大小, 通常来说 1024 大小的缓冲区就足够了。 但是,在某些情况下(例如,当应用程序具有大量可用 DLC 时),可能需要更大的缓冲区大小。
pcbTicketuint32 *返回实际票证的长度。
pIdentityRemote SteamNetworkingIdentity *将验证票证的远程系统的身份。 如果是 P2P,则为用户 Steam ID。 如果是游戏服务器,且是从可信的第三方获得的,则可以使用游戏服务器的 steam ID,否则使用 IP 地址。 如果是一项服务,则为该服务的字符串标识符(如果有的话)。
注意:此 API 不能用于创建供 ISteamUserAuth/AuthenticateUserTicket Web API 使用的票证。 请改用 GetAuthTicketForWebApi 调用。

获取身份验证票证,以便发送给希望对您进行身份验证的实体。

调用此函数之后,您可以发送票证至实体,该实体然后可以调用 BeginAuthSession/ISteamGameServer::BeginAuthSession,验证此实体的完整性。

返回: HAuthTicket
触发一个 GetAuthSessionTicketResponse_t 回调。
验证票证的句柄。 当您完成与实体的交互时,您必须在句柄上调用 CancelAuthTicket

如果调用失败,返回 k_HAuthTicketInvalid

另见: 用户验证与所有权

GetAuthTicketForWebApi

HAuthTicket GetAuthTicketForWebApi( const char *pchIdentity );
名称类型描述
*pchIdentity const char *将验证票证的远程服务的身份。 该服务应提供一个字符串标识符。 如果未提供,则传入 null。

使用 ISteamUserAuth/AuthenticateUserTicket Web API 获取要发送给欲对您进行身份验证的实体的验证票证。
调用应用程序必须等待 API 调用生成的 GetTicketForWebApiResponse_t 回调才能访问票证。

最佳做法是为每个将使用票证的服务使用标识字符串。
注意:此 API 不能用于创建供 BeginAuthSession/ISteamGameServer::BeginAuthSession 使用的票证。 请改用 GetAuthSessionTicket API。

返回: HAuthTicket
触发一个 GetTicketForWebApiResponse_t 回调。
验证票证的句柄。 当您完成与实体的交互时,您必须在句柄上调用 CancelAuthTicket

如果调用失败,返回 k_HAuthTicketInvalid

另见: 用户验证与所有权

GetAvailableVoice

EVoiceResult GetAvailableVoice( uint32 *pcbCompressed, uint32 *pcbUncompressed_Deprecated = 0, uint32 nUncompressedVoiceDesiredSampleRate_Deprecated = 0 );
名称类型描述
pcbCompresseduint32 *返回可用的音频数据的字节大小。
pcbUncompressed_Deprecateduint32 *已弃用。
nUncompressedVoiceDesiredSampleRate_Deprecateduint32已弃用。

检查是否有 GetVoice 捕获的音频数据可用,并获得数据大小。

多数应用程序将只使用压缩数据,且应该忽略主要用于向后兼容的其他参数。 参见 GetVoice,进一步了解“未压缩的”数据。

参见 Steam 语音,了解更多信息。

返回: EVoiceResult

GetDurationControl

SteamAPICall_t GetDurationControl();

检索当前用户/游戏组合的防沉迷/持续时间控制。


返回: SteamAPICall_tDurationControl_t 调用结果一起使用。
如果无法建立与 Steam 服务器的连接,则返回 k_uAPICallInvalid

关联函数:
BSetDurationControlOnlineState

GetEncryptedAppTicket

bool GetEncryptedAppTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket );
名称类型描述
pTicketvoid *加密的应用票证将复制入此缓冲区。
cbMaxTicketintpTicket 缓冲区的总大小,以字节为单位。
pcbTicketuint32 *返回复制到 pTicket 中的字节数。

获取加密的票证。

应该在使用 RequestEncryptedAppTicket 请求加密应用票证并收到 EncryptedAppTicketResponse_t 调用结果之后,再调用此函数。

然后您应该将此加密票证传入您的安全服务器,以使用您的密钥通过 SteamEncryptedAppTicket::BDecryptTicket 进行解密。

注意: 如果您调用此函数但未调用 RequestEncryptedAppTicket,此调用也许会成功,但是您很可能会获得过期票证。

返回: bool
true, 表示调用成功将应用票证返回到 pTicket中。
false, 表示有以下情况:
  • pcbTicketNULL
  • pTicketNULL
  • pTicket 太小,无法容纳此票证。
  • 没有可用的票证。 (您是否等待了 EncryptedAppTicketResponse_t?)

GetGameBadgeLevel

int GetGameBadgeLevel( int nSeries, bool bFoil );
名称类型描述
nSeriesint如果只有一组卡,则序列为 1
bFoilbool检查用户是否收到了闪亮徽章。

获得用户在您游戏中的 Steam 徽章等级。

用户在一个序列中可以获得两种不同的徽章:普通徽章(最高等级为 5)和闪亮徽章(最高等级为 1)。

返回: int
徽章的等级,若没有,则为 0。

GetHSteamUser

HSteamUser GetHSteamUser();
获取此接口表示的 Steam 用户句柄。

只供此 API 内部以及少数支持多用户的接口使用。

返回: HSteamUser

GetPlayerSteamLevel

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 );
名称类型描述
pchBufferchar *
cubBufferint

已弃用 - 您需要改为使用 ISteamRemoteStorageSteam 云 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 );
名称类型描述
bWantCompressedbool应始终为 true
pDestBuffervoid *音频数据将复制入的缓冲区。
cbDestBufferSizeuint32分配给 pDestBuffer 的缓冲区大小。
nBytesWrittenuint32 *返回写入到 pDestBuffer 中的字节数。 这始终应当是 ISteamUser::GetAvailableVoice 返回的大小。
bWantUncompressed_Deprecatedbool已弃用。
pUncompressedDestBuffer_Deprecatedvoid *已弃用。
cbUncompressedDestBufferSize_Deprecateduint32已弃用。
nUncompressBytesWritten_Deprecateduint32 *已弃用。
nUncompressedVoiceDesiredSampleRate_Deprecateduint32已弃用。

读取从麦克风缓冲区捕获的音频数据。

压缩数据可以由您的应用程序传输,并在另一端使用 DecompressVoice 解码回原始音频数据。 提供的压缩数据为任意格式,不用于直接播放。

这应该每帧调用一次,最坏情况下,每秒不超过四次,以使麦克风输入延时尽量低。 调用不够,可能导致返回流出现间隙。

我们建议您为压缩音频传入 8 千字节或更大的目标缓冲区。 出于性能考虑,最好使用静态缓冲区。 不过,如果您想要在每次调用前精确分配正确的空间大小,您可以使用 GetAvailableVoice 获得可供读取的数据量。

注意: “未压缩”音频为弃用功能,绝大多数应用程序都不应使用。 这是原始的单声道 16 位 PCM 波形数据,可能已通过预处理滤波器运行和/或已移除静音,因此未压缩的音频的持续时间可能比您预期的短。 在长时间的静音中,也许根本没有任何数据。 而且,提取未压缩音频将导致 GetVoice 丢弃所有遗留的压缩音频,因此,您必须同时提取两种类型。 最后,在请求未压缩大小时,GetAvailableVoice 并不非常精确。 因此,如果您的确需要使用未压缩音频,您需要频繁使用两个非常大的(20KiB+)输出缓冲区来调用 GetVoice,而非试图分配大小精确的缓冲区。 但是大多数应用程序应该忽略所有这些细节,仅将“未压缩”参数保持为 NULL/0

参见 Steam 语音,了解更多信息。

返回: EVoiceResult

GetVoiceOptimalSampleRate

uint32 GetVoiceOptimalSampleRate();
获取 Steam 音频解码器的原生采样率。

DecompressVoice 使用此采样率,所需的 CPU 处理将最少。 但是,最终的音频质量将取决于音频设备(和/或应用程序的音频输出 SDK)在较低采样率下的处理效果。 您也许会发现,忽略此函数,并使用您的音频输出设备的原生采样率(通常为 48000 或 44100),您会得到最佳音频输出质量。

参见 Steam 语音,了解更多信息。

返回: uint32

InitiateGameConnection

int InitiateGameConnection( void *pAuthBlob, int cbMaxAuthBlob, CSteamID steamIDGameServer, uint32 unIPServer, uint16 usPortServer, bool bSecure );
名称类型描述
pAuthBlobvoid *指向空白内存的指针,内存将由验证令牌填充。
cbMaxAuthBlobintpBlob 中已分配内存的字节数。 应当至少为 2048 字节。
steamIDGameServerCSteamID游戏服务器的 Steam ID,由客户端从游戏服务器获得。
unIPServeruint32游戏服务器的 IP 地址,采用主机序,即 127.0.0.1 == 0x7f000001。
usPortServeruint16游戏服务器的连接端口,采用主机序。
bSecurebool客户端是否认为游戏服务器将自己报告为安全服务器(也即 VAC 正在运行)。

此函数将启动与游戏服务器验证游戏客户端的状态机。

这是客户端、游戏服务器、Steam 服务器之间三方握手的客户端部分。

注意: 您完成连接后,必须调用 TerminateGameConnection

注意: 这是旧的用户验证 API 的一部分,不应与新 API 混用。

返回: int
写入 pBlob 的字节数。

返回 0 表示失败,代表着传入的 pAuthBlob 缓冲区太小,并且调用失败。

然后 pAuthBlob 的内容应被发送到游戏服务器,以用于完成身份验证过程。

RequestEncryptedAppTicket

SteamAPICall_t RequestEncryptedAppTicket( void *pDataToInclude, int cbDataToInclude );
名称类型描述
pDataToIncludevoid *要加密入票证的数据。
cbDataToIncludeintpDataToInclude 的总大小,以字节记。

请求一个应用程序票证,该票证使用“加密的应用票证密钥”加密。

您可以从应用管理页面的加密应用票证密钥页面获得加密密钥。

只能有一个待处理的 EncryptedAppTicketResponse_t,且此调用有 60 秒的频率限制。

收到响应后,您应该调用 GetEncryptedAppTicket,以获取票证数据,然后您需要将其发送至安全服务器,通过 SteamEncryptedAppTicket 函数进行解密。

返回: SteamAPICall_tEncryptedAppTicketResponse_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 );
名称类型描述
pchRedirectURLconst char *

请求一个 URL,为商店内付款验证游戏内浏览器,然后重新定向至指定 URL。

只要游戏内浏览器接受并处理会话 cookie,Steam 小额交易付款页面将自动识别用户,而非提供登录页面。

注意: 为防止历史记录被偷窥而受到攻击,此 URL 的有效时间非常短,因此您应只在即将启动浏览器时调用此 API,或者使用隐藏浏览窗口,立即导航至结果 URL。

注意: 作为结果的授权 cookie 会在一天后失效,因此最好每 12 小时请求并访问一个新的验证 URL。

返回: SteamAPICall_tStoreAuthURLResponse_t 调用结果一起使用。
如果无法建立与 Steam 服务器的连接,则返回 k_uAPICallInvalid

StartVoiceRecording

void StartVoiceRecording();
开始录音。

开始后,使用 GetAvailableVoiceGetVoice 获取数据,然后在用户松开他们的按键通话快捷键时或游戏会话完成时,调用 StopVoiceRecording

参见 Steam 语音,了解更多信息。

StopVoiceRecording

void StopVoiceRecording();
停止录音。

由于人们通常提前松开按键通话快捷键,系统将在调用此函数后再继续录制一点。 因此,应继续调用 GetVoice,直至返回 k_EVoiceResultNotRecording,只有到那时,录音才停止。

TerminateGameConnection

void TerminateGameConnection( uint32 unIPServer, uint16 usPortServer );
名称类型描述
unIPServeruint32
usPortServeruint16

通知游戏服务器连接正在断开。

这需要在游戏客户端离开指定游戏服务器时发生,需要与 InitiateGameConnection 调用匹配。

注意: 这是旧的用户验证 API 的一部分,不应与新 API 混用。

TrackAppUsageEvent

void TrackAppUsageEvent( CGameID gameID, int eAppUsageEvent, const char *pchExtraInfo = "" );
名称类型描述
gameIDCGameID
eAppUsageEventint
pchExtraInfoconst char *

已弃用 - 在统计与成就推出前,仅供部分游戏用于记录使用事件。

UserHasLicenseForApp

EUserHasLicenseForAppResult UserHasLicenseForApp( CSteamID steamID, AppId_t appID );
名称类型描述
steamIDCSteamID发送验证票证的用户的 Steam ID。
appIDAppId_t若用户拥有 DLC,要检查的 DLC App ID。

查看用户是否拥有特定可下载内容(DLC)

只有在将用户验证票证发送至 ISteamGameServer::BeginAuthSession 之后,才能调用。

返回: EUserHasLicenseForAppResult


另见: 用户验证与所有权

回调

以下是可以通过调用 SteamAPI_RunCallbacks 触发的回调。 其中许多将响应 ISteamUser 的成员函数直接触发。

ClientGameServerDeny_t

由 Steam 服务器发送给客户端,通知客户端与指定的游戏服务器断开连接,该服务器可能正在连接或已连接。
游戏客户端应在收到此消息后立即断开连接。
如果用户没有在游戏服务器上游玩的权限,通常会发生这种情况。

名称类型描述
m_uAppIDuint32此调用针对的 App ID。 验证其与 ISteamUtils::GetAppID 提供的当前 App ID 一致。
m_unGameServerIPuint32通知我们断开连接的游戏服务器的 IP,采用主机序,即 127.0.0.1 == 0x7f000001。
m_usGameServerPortuint16通知我们断开连接的游戏服务器的端口,采用主机序。
m_bSecureuint16游戏服务器是 VAC 安全服务器(true)还是非 VAC 安全服务器(false)?
m_uReasonuint32

DurationControl_t


针对启用了防沉迷/持续时间控制的游戏而发送(适用于启用的用户)。 让游戏知道该功能是否适用于用户,用户是否需要尽快退出游戏以及用户每日剩余的游戏时间。

计时器会异步触发此回调。 调用 GetDurationControl() 时也会触发。

名称类型描述
m_eResultEResult调用结果(对于基于异步计时器的通知,始终为 k_EResultOK)
m_appidAppId_t产生游戏时间的 appid
m_bApplicablebool持续时间控制是否适用于用户 + 游戏组合
m_csecsLast5hint32在之前 5 小时窗口期以及当前会话中的游戏时间(以秒为单位)
m_progressEDurationControlProgress描述是否应当退出游戏
m_notificationEDurationControlNotification要显示的通知(若有)(对于 API 调用,始终为 k_EDurationControlNotification_None)

关联函数: GetDurationControl

EncryptedAppTicketResponse_t

在收到加密的应用程序票证时调用。

名称类型描述
m_eResultEResult调用是否成功?
可能的结果:

关联函数: RequestEncryptedAppTicket

GameWebCallback_t

根据用户单击 Steam 界面浏览器中的链接后发出的 steam://gamewebcallback/ 命令发送到您的游戏。
您可以使用它来添加对外部站点注册的支持,在进行了网页注册步骤之后最好回到到浏览器中,并可以选择获取有关的详细信息。

名称类型描述
m_szURLchar[256]用户点击的完整 URL。

GetAuthSessionTicketResponse_t

创建验证会话票证的结果。

名称类型描述
m_hAuthTicketHAuthTicket创建的票证的句柄。
m_eResultEResult操作结果。

关联函数: GetAuthSessionTicket

GetTicketForWebApiResponse_t

从 GetAuthTicketForWebApi 创建 webapi 票证时的结果。

名称类型描述
m_hAuthTicketHAuthTicket创建的票证的句柄。
m_eResultEResult操作结果。
m_cubTicketint 创建的票证的长度。
m_rgubTicketuint8[2560]创建的票证。

关联函数: GetAuthTicketForWebApi

IPCFailure_t

在此客户端的回调系统处于错误状态(并已刷新待处理的回调)时调用。
收到此消息时,客户端应与 Steam 断开连接,重置存储的所有 Steam 状态,并重新连接。
这一般发生在 Steam 客户端出现某种致命错误的罕见情况下。

名称类型描述
m_eFailureTypeuint8这是 EFailureType

LicensesUpdated_t

在用户许可(拥有的程序包)更改时调用。

此回调无字段。

MicroTxnAuthorizationResponse_t

在用户响应了小额交易授权请求时调用。

名称类型描述
m_unAppIDuint32此小额交易的 App ID。
m_ulOrderIDuint64小额交易的订单 ID。
m_bAuthorizeduint8用户授权了此交易(1),还是未授权此交易(0)?

SteamServerConnectFailure_t

在试图连接失败时调用。
如果 Steam 客户端未连接,并且重新尝试建立连接时失败,这将定期发生。

名称类型描述
m_eResultEResult连接失败的原因。
m_bStillRetryingboolSteam 客户端仍然在尝试连接至服务器吗?

SteamServersConnected_t

在与 Steam 后端建立连接时调用。
这说明 Steam 客户端现在与 Steam 服务器有了有效连接。 通常这将在游戏启动之前发生,且应该只在用户因网络问题或 Steam 服务器更新而掉线时才发生。

此回调无字段。

SteamServersDisconnected_t

在客户端失去与 Steam 服务器的连接时调用。
实时服务将禁用,直到发送了匹配的 SteamServersConnected_t 时为止。

名称类型描述
m_eResultEResult与 Steam 断开连接的原因。

StoreAuthURLResponse_t

在调用 RequestStoreAuthURL 之后我们收到验证 URL 时的响应。

名称类型描述
m_szURLchar[512]验证 URL。

关联函数: RequestStoreAuthURL

ValidateAuthTicketResponse_t

在验证票证获得验证后调用。

名称类型描述
m_SteamIDCSteamID提供验证票证的实体的 Steam ID。
m_eAuthSessionResponseEAuthSessionResponse验证结果。
m_OwnerSteamIDCSteamID拥有游戏的 Steam ID,如果是通过 Steam 家庭共享访问的游戏,则与 m_SteamID 不同。

关联函数: BeginAuthSession

结构

以下是 ISteamUser 中的函数可能返回和/或与之交互的结构。

CallbackMsg_t

此结构包含客户端回调数据。 仅在 SteamAPI_RunCallbacks 内部使用。

名称类型描述
m_hSteamUserHSteamUser此回调发送至的用户。
m_iCallbackint回调唯一 ID。
m_pubParamuint8 *回调数据的指针。
m_cubParamint[param]m_pubParam[/param] 的大小。

枚举

以下是经过定义来与 ISteamUser 一起使用的枚举。

EFailureType

指明在 IPCFailure_t 里失败的类型。

名称描述
k_EFailureFlushedCallbackQueue0
k_EFailurePipeFail1

EDurationControlProgress

一些游戏针对蒸汽平台上的未成年用户启用了持续时间控制/防沉迷,此处描述了应用于这些游戏的游戏时间限制。

名称描述
k_EDurationControlProgress_Full0一般游玩
k_EDurationControlProgress_Half1(此值已弃用)
k_EDurationControlProgress_None2用户的游玩时间已用完。 Steam 将于不久后终止游戏。

关联函数:
GetDurationControl
BSetDurationControlOnlineState

EDurationControlNotification

描述哪个通知计时器已过期,用于蒸汽平台持续时间控制功能。 其中一些通知已弃用,不再发送。

名称描述
k_EDurationControlNotification_None0回调只是通知您进度,没有通知可显示
k_EDurationControlNotification_1Hour1游戏已进行了 1 小时——若需要,游戏可以在此时显示一些东西
k_EDurationControlNotification_3Hours2(已弃用)
k_EDurationControlNotification_HalfProgress3(已弃用)
k_EDurationControlNotification_ExitSoon_3h4玩家已用尽了所允许的时间,应该退出游戏
k_EDurationControlNotification_ExitSoon_5h4玩家已用尽了所允许的时间,应该退出游戏
k_EDurationControlNotification_ExitSoon_Night4玩家已经玩到了当地允许的时间(晚上 10 时),应该退出游戏

关联函数:
GetDurationControl
BSetDurationControlOnlineState

EDurationControlOnlineState

描述游戏的在线/离线游戏状态。 当前,这仅用于支持当用户的游戏时间耗尽时,可以防止 Steam 自动退出的游戏。 如果游戏调用 BSetDurationControlOnlineState(k_EDurationControlOnlineState_OnlineHighPri),则 Steam 不会强制退出游戏——在这种情况下,游戏应自行决定退出游戏! Steam 将继续向游戏发送 Duration_Control_t 通知。 如果游戏以后调用 BSetDurationControlOnlineState 删除 OnlineHighPri 状态,则 Steam 将在此后强制退出游戏。

名称描述
k_EDurationControlOnlineState_Offline1线下游玩
k_EDurationControlOnlineState_Online2线上游玩
k_EDurationControlOnlineState_OnlineHighPri3线上游玩 - 游戏要求 Steam 不要强制退出游戏

关联函数:
GetDurationControl
BSetDurationControlOnlineState

常量

以下是经过定义来与 ISteamUser 一起使用的常量。

名称类型描述
STEAMUSER_INTERFACE_VERSIONconst char *"SteamUser019"