Steamworks 文獻庫
ISteamApps 介面
ISteamApps 介面廣泛提供與應用程式和可下載內容(DLC)相關的動作與資訊。

成員函式

ISteamApps 的成員函式可透過全域存取子函式 SteamApps() 呼叫。

BGetDLCDataByIndex

bool BGetDLCDataByIndex( int iDLC, AppId_t *pAppID, bool *pbAvailable, char *pchName, int cchNameBufferSize );
名稱型別說明
iDLCintDLC 的索引值,介於 0 與 GetDLCCount 之間。
pAppIDAppId_t *傳回 DLC 的 App ID。
pbAvailablebool *傳回 DLC 目前在 Steam 商店上是否可用。 若 DLC 沒有可見的商店頁面,則傳回 false。
pchNamechar *以複製進此緩衝區的方式,傳回 DLC 名稱。
cchNameBufferSizeintpchName 緩衝區的長度。

根據索引值傳回 DLC 的中繼資料。

傳回: bool
true ,如果目前的 App ID 有關聯的 DLC,且 iDLC 範圍落在 0 和 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 );
名稱型別說明
appIDAppId_t待檢查的應用程式之 App ID。

檢查特定應用程式是否已安裝。

該應用程式或許非目前使用者所有,可能是以前免費週末時下載過,並未刪除。

此函式只對主程式有效,可下載內容(DLC)無法使用, 針對 DLC,請用 BIsDlcInstalled 代替。

傳回: bool
true ,如果指定 App ID 已安裝;若否,傳回 false

BIsCybercafe

bool BIsCybercafe();
檢查目前的 App ID 是否為網咖專用。

傳回: bool
true ,如果此授權用於網咖;若否,傳回 false
已棄用 - 不再使用。

BIsDlcInstalled

bool BIsDlcInstalled( AppId_t appID );
名稱型別說明
appIDAppId_t待檢查的 DLC 之 App ID。

檢查使用者是否擁有特定 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 ,如果作用中使用者擁有目前的 App ID;若否,傳回 false。

BIsSubscribedApp

bool BIsSubscribedApp( AppId_t appID );
名稱型別說明
appIDAppId_t待檢查的 App ID。

檢查作用中使用者是否已訂閱特定 App ID。

請只在需要檢查與您的遊戲有關的其他遊戲(如試玩版)之所有權時,才使用此函式。

傳回: bool
true ,如果作用中使用者已訂閱特定的 App ID;若否,傳回 false

BIsSubscribedFromFamilySharing

bool BIsSubscribedFromFamilySharing();

檢查作用中使用者是否正在透過另一位使用者擁有的授權,暫時性地以親友同享存取目前的 App ID。

若需要知道該授權的永久擁有者的 Steam ID,請使用 GetAppOwner

傳回: bool
true ,如果作用中使用者正在透過親友同享存取目前的 App ID;若否,傳回 false。

BIsSubscribedFromFreeWeekend

bool BIsSubscribedFromFreeWeekend();

檢查使用者目前的 App ID 訂閱是否來自免費週末。

在使用本函式前,請至 Steamworks 討論區與 Valve 技術帳戶經理聯繫,妥善包裝您的免費週末並加強其安全性。

傳回: bool
true ,如果作用中使用者目前的 App ID 訂閱是透過免費週末;若否,傳回 false

BIsTimedTrial

bool BIsTimedTrial(uint32* punSecondsAllowed, uint32* punSecondsPlayed);
名稱型別說明
punSecondsAlloweduint32 *傳回列出的限時試玩秒數。
punSecondsPlayeduint32 *傳回使用者目前已遊玩的秒數。

檢查使用者目前的 App ID 訂閱是否來自限時試玩。 若是,回傳 true 並提供允許限時試玩的總時間,以及目前使用者已遊玩的時間。

傳回: bool
true ,如果作用中使用者目前的 App ID 訂閱是透過限時試玩;若是其它授權,傳回 false

另外請見: TimedTrialStatus_t

BIsVACBanned

bool BIsVACBanned();
檢查使用者的帳戶是否受到 VAC 封鎖。

傳回: bool
true ,若使用者帳戶受到 VAC 封鎖;若否,傳回 false

GetAppBuildId

int GetAppBuildId();
獲得此應用程式的組建 ID,可能會依據遊戲的後端更新隨時變動。

傳回: int
此應用程式目前的組建 ID。若正在執行的組建並非從 Steam 下載,則預設為 0。

GetAppInstallDir

uint32 GetAppInstallDir( AppId_t appID, char *pchFolder, uint32 cchFolderBufferSize );
名稱型別說明
appIDAppId_t要取得其安裝目錄的 App ID。
pchFolderchar *資料夾路徑要複製至的字串緩衝區。
cchFolderBufferSizeuint32pchFolder 緩衝區的位元組大小。

獲取特定 App ID 的安裝資料夾。

即使未安裝應用程式,也可以提供遊戲在 Steam 收藏庫中的預設安裝位置。

傳回: uint32
以字串傳回安裝目錄路徑至 pchFolder 中提供的緩衝區,並傳回複製至該緩衝區的位元組大小。

GetAppOwner

CSteamID GetAppOwner();
獲取目前應用程式實際擁有者的 Steam ID。若是透過親友同享取用此應用程式,則會與目前的使用者不同。

傳回: CSteamID
目前應用程式的原持有者。

GetAvailableGameLanguages

const char * GetAvailableGameLanguages();
獲取目前應用程式支援的語言清單(以逗號分隔)。

欲查看可能傳回的完整語言清單,請見在地化​​與語言支援

傳回: const char *
回傳以逗號分隔的語言清單。

另外請見: GetCurrentGameLanguageISteamUtils::GetSteamUILanguage

GetCurrentBetaName

bool GetCurrentBetaName( char *pchName, int cchNameBufferSize );
名稱型別說明
pchNamechar *測試名稱要複製至的緩衝區。
cchNameBufferSizeintpchName 緩衝區的總計大小。

檢查使用者是否從測試分支執行,若是,則獲取該分支的名稱。

傳回: bool
true ,若使用者使用測試分支;若否,傳回 false

GetCurrentGameLanguage

const char * GetCurrentGameLanguage();
獲取使用者目前設定的語言。

若使用者並未明確挑選遊戲語言,將退回顯示 Steam 使用者介面語言。

欲查看完整的語言清單,請見支援的語言

傳回: const char *


另外請見: GetAvailableGameLanguagesISteamUtils::GetSteamUILanguage

GetDLCCount

int GetDLCCount();
獲取目前應用程式的 DLC 數量。

這通常會在對所有 DLC 執行迴圈時使用,並以 BGetDLCDataByIndex 獲取每個 DLC 的資訊。

傳回: int
目前應用程式的 DLC 數量。請注意,此值可能在 64 便達到最大值,根據使用者有多少無主 DLC 而定。 若您的應用程式擁有大量的 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 );
名稱型別說明
nAppIDAppId_t待監測的 DLC 之 App ID。
punBytesDownloadeduint64 *傳回已下載的位元組大小。
punBytesTotaluint64 *傳回總下載量的位元組大小。

獲取非必要的 DLC 的下載進度。

傳回: bool
true ,如果特定 DLC 已存在並正在下載;若否,傳回 false

GetEarliestPurchaseUnixTime

uint32 GetEarliestPurchaseUnixTime( AppId_t nAppID );
名稱型別說明
nAppIDAppId_t要取得其購買時間的 App ID。

獲取特定應用程式的購買時間,以 Unix 紀元格式(從 1970 年 1 月 1 日以來的秒數)表示。

此函式可用於根據使用者初次購買日期來獎勵他們。

傳回: uint32
以 Unix 紀元格式(從 1970 年 1 月 1 日以來的秒數)表示最早購買時間。

GetFileDetails

SteamAPICall_t GetFileDetails( const char*pszFileName );
名稱型別說明
pszFileNameconst char*檔案的絕對路徑和名稱。

以非同步方式擷取 Depot 資訊清單中特定檔案的中繼資料詳細資訊。

目前提供:
檔案的位元組大小。
檔案的 SHA1 雜湊。
檔案的標記。

傳回: 用於 FileDetailsResult_t 呼叫結果的 SteamAPICall_t

GetInstalledDepots

uint32 GetInstalledDepots( AppId_t appID, DepotId_t *pvecDepots, uint32 cMaxDepots );
名稱型別說明
appIDAppId_t要列出其 Depot 的應用程式。
pvecDepotsDepotId_t *用於填入 Depot 清單的預先分配陣列。
cMaxDepotsuint32要獲取的 Depot 最大數量,通常是 pvecDepots 的大小。

以掛載順序取得特定 App ID 的已安裝 Depot 清單。

傳回: uint32
傳回的 Depot 數量。

GetLaunchCommandLine

int GetLaunchCommandLine( char *pszCommandLine, int cubCommandLine );
名稱型別說明
pszCommandLinechar *命令列要複製至的字串緩衝區。
cubCommandLine intpszCommandLine 緩衝區的位元組大小。

若遊戲透過 Steam 網址啟動(例:steam://run/<appid>//<command line>/),則獲取命令列。 此方法偏好透過作業系統啟動命令列,而這可能造成安全風險。 為了讓透過豐富狀態加入遊戲的情況也能使用此方法,且不被置在作業系統命令列上,您必須在應用程式中的安裝 > 一般頁面上啟用「使用啟動命令列」。

傳回: int
將命令列以字串形式傳回至 pszCommandLine 中提供的緩衝區,並傳回複製至該緩衝區的位元組大小。

另外請見: NewUrlLaunchParameters_t

GetLaunchQueryParam

const char * GetLaunchQueryParam( const char *pchKey );
名稱型別說明
pchKeyconst char *要測試的啟動參數代碼。 例:param1

若遊戲是透過 steam://run/<appid>/?param1=value1;param2=value2;param3=value3 等執行,則獲取相關啟動參數。

以「@」字元開頭的參數名稱保留給內部使用,且將永遠傳回空字串。
以「_」底線開頭的參數名稱保留給 Steam 功能使用,可由遊戲查詢,但建議您不要為自身遊戲的功能使用底線開頭的參數名稱。

傳回: const char *
提供的參數代碼所關聯的值。 若指定的參數代碼不存在,則傳回空字串("")。

另外請見: NewLaunchQueryParameters_t

InstallDLC

void InstallDLC( AppId_t nAppID );
名稱型別說明
nAppIDAppId_t欲安裝的 DLC。

允許安裝一項非必要的 DLC。

傳回: void

觸發 DlcInstalled_t 回呼。

MarkContentCorrupt

bool MarkContentCorrupt( bool bMissingFilesOnly );
名稱型別說明
bMissingFilesOnlybool僅掃描缺少的檔案,不會驗證每個檔案的總和檢查碼。

允許您在下次啟動時強制驗證遊戲內容。

如果您偵測到遊戲版本過舊(例如:用戶端偵測到遊戲版本與伺服器不相符),
您可以呼叫並使用 MarkContentCorrupt 強制驗證、向使用者顯示訊息,接著關閉遊戲。

傳回: bool

RequestAllProofOfPurchaseKeys

void RequestAllProofOfPurchaseKeys();
已棄用。

RequestAppProofOfPurchaseKey

void RequestAppProofOfPurchaseKey( AppId_t nAppID );
名稱型別說明
nAppIDAppId_t

已棄用。

UninstallDLC

void UninstallDLC( AppId_t nAppID );
名稱型別說明
nAppIDAppId_t欲解除安裝的 DLC。

允許解除安裝一項非必要的 DLC。

回呼

以下為呼叫 SteamAPI_RunCallbacks 後可能會發出的回呼。 其中有許多函式會回應 ISteamApps 的成員函式而直接執行。

AppProofOfPurchaseKeyResponse_t

僅於 Steam 內部使用。

名稱型別說明
m_eResultEResult
m_nAppIDuint32
m_cchKeyLengthuint32
m_rgchKeychar[k_cubAppProofOfPurchaseKeyMax

DlcInstalled_t

在目前使用者獲得 DLC 擁有權,且該 DLC 已安裝後觸發。

名稱型別說明
m_nAppIDAppId_t已安裝的 DLC 的 App ID。

關聯函式: InstallDLC

FileDetailsResult_t

在請求特定檔案的詳細資訊後呼叫。

名稱型別說明
m_eResultEResult呼叫是否成功? 若成功,k_EResultOK;若找不到檔案,則 k_EResultFileNotFound。 若呼叫不成功,則不會填入其它欄位。
m_ulFileSizeuint64原始檔案的位元組大小。
m_FileSHAuint8[20]原始檔案的 SHA1 雜湊。
m_unFlagsuint32

關聯函式: GetFileDetails

NewUrlLaunchParameters_t

於使用者在遊戲執行期間,透過命令列或查詢參數執行 Steam 網址(如 steam://run/<appid>//?param1=value1;param2=value2;param3=value3;)後發佈。 新的參數可使用 GetLaunchCommandLineGetLaunchQueryParam 查詢。

此回呼沒有欄位。

NewLaunchQueryParameters_t

於使用者在遊戲執行期間,透過查詢參數執行 Steam 網址(如 steam://run/<appid>//?param1=value1;param2=value2;param3=value3;)後發佈。 新的參數可使用 GetLaunchQueryParam 查詢。

此回呼沒有欄位。

RegisterActivationCodeResponse_t

僅於 Steam 內部使用。

名稱型別說明
m_eResultERegisterActivationCodeResult
m_unPackageRegistereduint32

TimedTrialStatus_t

若 AppID 是透過限時試玩所擁有,則每分鐘傳送一次。

名稱型別說明
m_unAppIDAppId_t限時試玩中的 AppID。
m_bIsOfflinebool若為 true,使用者目前為離線。 允許 / 遊玩的時間指的是離線時間,而非總時間。
m_unSecondsAlloweduint32應用程式可遊玩的總秒數。
m_unSecondsPlayeduint32應用程式已遊玩的秒數。

另外請見: BIsTimedTrial

列舉

以下為定義來用於 ISteamApps 中的列舉。

ERegisterActivationCodeResult

僅於 Steam 內部使用。

名稱說明
k_ERegisterActivationCodeResultOK0
k_ERegisterActivationCodeResultFail1
k_ERegisterActivationCodeResultAlreadyRegistered2
k_ERegisterActivationCodeResultTimeout3
k_ERegisterActivationCodeAlreadyOwned4

常數

以下為定義來用於 ISteamApps 中的常數。

名稱型別說明
k_cubAppProofOfPurchaseKeyMaxint240僅於 Steam 內部使用。
STEAMAPPS_INTERFACE_VERSIONconst char *"STEAMAPPS_INTERFACE_VERSION008"