ISteamApps 介面廣泛提供與應用程式和
可下載內容(DLC)相關的動作與資訊。
成員函式
ISteamApps
的成員函式可透過全域存取子函式
SteamApps()
呼叫。
BGetDLCDataByIndex
bool BGetDLCDataByIndex( int iDLC, AppId_t *pAppID, bool *pbAvailable, char *pchName, int cchNameBufferSize );
名稱 | 型別 | 說明 |
iDLC | int | DLC 的索引值,介於 0 與 GetDLCCount 之間。 |
pAppID | AppId_t * | 傳回 DLC 的 App ID。 |
pbAvailable | bool * | 傳回 DLC 目前在 Steam 商店上是否可用。 若 DLC 沒有可見的商店頁面,則傳回 false。 |
pchName | char * | 以複製進此緩衝區的方式,傳回 DLC 名稱。 |
cchNameBufferSize | int | pchName 緩衝區的長度。 |
根據索引值傳回 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 );
名稱 | 型別 | 說明 |
appID | AppId_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 );
名稱 | 型別 | 說明 |
appID | AppId_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 );
檢查作用中使用者是否已訂閱特定 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);
名稱 | 型別 | 說明 |
punSecondsAllowed | uint32 * | 傳回列出的限時試玩秒數。 |
punSecondsPlayed | uint32 * | 傳回使用者目前已遊玩的秒數。 |
檢查使用者目前的 App ID 訂閱是否來自限時試玩。 若是,回傳 true 並提供允許限時試玩的總時間,以及目前使用者已遊玩的時間。
傳回: bool
true ,如果作用中使用者目前的 App ID 訂閱是透過限時試玩;若是其它授權,傳回
false。
另外請見: TimedTrialStatus_tBIsVACBanned
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 );
名稱 | 型別 | 說明 |
appID | AppId_t | 要取得其安裝目錄的 App ID。 |
pchFolder | char * | 資料夾路徑要複製至的字串緩衝區。 |
cchFolderBufferSize | uint32 | pchFolder 緩衝區的位元組大小。 |
獲取特定 App ID 的安裝資料夾。
即使未安裝應用程式,也可以提供遊戲在 Steam 收藏庫中的預設安裝位置。
傳回: uint32以字串傳回安裝目錄路徑至 pchFolder 中提供的緩衝區,並傳回複製至該緩衝區的位元組大小。
GetAppOwner
CSteamID GetAppOwner();
獲取目前應用程式實際擁有者的 Steam ID。若是透過親友同享取用此應用程式,則會與目前的使用者不同。
傳回: CSteamID目前應用程式的原持有者。
GetAvailableGameLanguages
const char * GetAvailableGameLanguages();
獲取目前應用程式支援的語言清單(以逗號分隔)。
欲查看可能傳回的完整語言清單,請見
在地化與語言支援。
傳回: const char *
回傳以逗號分隔的語言清單。
另外請見: GetCurrentGameLanguage、
ISteamUtils::GetSteamUILanguageGetCurrentBetaName
bool GetCurrentBetaName( char *pchName, int cchNameBufferSize );
名稱 | 型別 | 說明 |
pchName | char * | 測試名稱要複製至的緩衝區。 |
cchNameBufferSize | int | pchName 緩衝區的總計大小。 |
檢查使用者是否從測試分支執行,若是,則獲取該分支的名稱。
傳回: bool
true ,若使用者使用測試分支;若否,傳回
false。
GetCurrentGameLanguage
const char * GetCurrentGameLanguage();
獲取使用者目前設定的語言。
若使用者並未明確挑選遊戲語言,將退回顯示 Steam 使用者介面語言。
欲查看完整的語言清單,請見
支援的語言。
傳回: const char *
另外請見: GetAvailableGameLanguages、
ISteamUtils::GetSteamUILanguageGetDLCCount
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 );
名稱 | 型別 | 說明 |
nAppID | AppId_t | 待監測的 DLC 之 App ID。 |
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 雜湊。
檔案的標記。
傳回: 用於
FileDetailsResult_t 呼叫結果的
SteamAPICall_t。
GetInstalledDepots
uint32 GetInstalledDepots( AppId_t appID, DepotId_t *pvecDepots, uint32 cMaxDepots );
名稱 | 型別 | 說明 |
appID | AppId_t | 要列出其 Depot 的應用程式。 |
pvecDepots | DepotId_t * | 用於填入 Depot 清單的預先分配陣列。 |
cMaxDepots | uint32 | 要獲取的 Depot 最大數量,通常是 pvecDepots 的大小。 |
以掛載順序取得特定 App ID 的已安裝 Depot 清單。
傳回: uint32傳回的 Depot 數量。
GetLaunchCommandLine
int GetLaunchCommandLine( char *pszCommandLine, int cubCommandLine );
名稱 | 型別 | 說明 |
pszCommandLine | char * | 命令列要複製至的字串緩衝區。 |
cubCommandLine | int | pszCommandLine 緩衝區的位元組大小。 |
若遊戲透過 Steam 網址啟動(例:steam://run/<appid>//<command line>/),則獲取命令列。 此方法偏好透過作業系統啟動命令列,而這可能造成安全風險。 為了讓透過豐富狀態加入遊戲的情況也能使用此方法,且不被置在作業系統命令列上,您必須在應用程式中的安裝 > 一般頁面上啟用「使用啟動命令列」。
傳回: int
將命令列以字串形式傳回至 pszCommandLine 中提供的緩衝區,並傳回複製至該緩衝區的位元組大小。
另外請見: NewUrlLaunchParameters_tGetLaunchQueryParam
const char * GetLaunchQueryParam( const char *pchKey );
名稱 | 型別 | 說明 |
pchKey | const char * | 要測試的啟動參數代碼。 例:param1 |
若遊戲是透過 steam://run/<appid>/?param1=value1;param2=value2;param3=value3 等執行,則獲取相關啟動參數。
以「@」字元開頭的參數名稱保留給內部使用,且將永遠傳回空字串。
以「_」底線開頭的參數名稱保留給 Steam 功能使用,可由遊戲查詢,但建議您不要為自身遊戲的功能使用底線開頭的參數名稱。
傳回: const char *
提供的參數代碼所關聯的值。 若指定的參數代碼不存在,則傳回空字串("")。
另外請見: 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。 |
關聯函式: InstallDLCFileDetailsResult_t
在請求特定檔案的詳細資訊後呼叫。
關聯函式: GetFileDetailsNewUrlLaunchParameters_t
於使用者在遊戲執行期間,透過命令列或查詢參數執行 Steam 網址(如
steam://run/<appid>//?param1=value1;param2=value2;param3=value3;
)後發佈。 新的參數可使用
GetLaunchCommandLine 和
GetLaunchQueryParam 查詢。
此回呼沒有欄位。
NewLaunchQueryParameters_t
於使用者在遊戲執行期間,透過查詢參數執行 Steam 網址(如
steam://run/<appid>//?param1=value1;param2=value2;param3=value3;
)後發佈。 新的參數可使用
GetLaunchQueryParam 查詢。
此回呼沒有欄位。
RegisterActivationCodeResponse_t
僅於 Steam 內部使用。
TimedTrialStatus_t
若 AppID 是透過限時試玩所擁有,則每分鐘傳送一次。
名稱 | 型別 | 說明 |
m_unAppID | AppId_t | 限時試玩中的 AppID。 |
m_bIsOffline | bool | 若為 true,使用者目前為離線。 允許 / 遊玩的時間指的是離線時間,而非總時間。 |
m_unSecondsAllowed | uint32 | 應用程式可遊玩的總秒數。 |
m_unSecondsPlayed | uint32 | 應用程式已遊玩的秒數。 |
另外請見: 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" | |