Steamworks 文獻庫
ISteamGameServerStats 介面
供遊戲伺服器設定玩家的統計與成就的函式。

成員函式

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

ClearUserAchievement

bool ClearUserAchievement( CSteamID steamIDUser, const char *pchName );
名稱型別說明
steamIDUserCSteamID要清空成就的使用者 Steam ID。
pchNameconst char *要重設的成就的「API 名稱」。

重設指定使用者已解鎖的成就狀態。

此函式主要僅用於偵錯。

呼叫此函式前,必須先呼叫 RequestUserStats 且須傳回成功才可進行呼叫!

此呼叫只會改變 Steam 內部記憶體的狀態,且消耗的資源很少。 要將統計傳送給伺服器,則需呼叫 StoreUserStats

備註: 此函式只能在允許遊戲伺服器設定的成就上生效。 如果此成就的「設定由」欄位為「Official GS(官方遊戲伺服器)」,那麼就只有您控制的官方伺服器可以設定。 若要使用此方法,須在應用程式管理員的專屬伺服器區設定官方伺服器的 IP 範圍。

傳回: bool
如果此函式執行成功,且符合下列所有條件,便傳回 true,否則傳回 false
  • 指定成就的「API 名稱」存在於 Steamworks 網站的應用程式管理員中,而所有變更皆已發佈
  • RequestUserStats 已完成,且成功傳回給指定使用者的回呼
  • 該統計須允許遊戲伺服器設定

GetUserAchievement

bool GetUserAchievement( CSteamID steamIDUser, const char *pchName, bool *pbAchieved );
名稱型別說明
steamIDUserCSteamID要取得成就的使用者的 Steam ID。
pchNameconst char *成就的「API 名稱」。
pbAchievedbool *傳回該成就的解鎖狀態。

取得成就的解鎖狀態。

傳回: bool
如果此函式執行成功,且符合下列所有條件,便傳回 true,否則傳回 false
  • RequestUserStats 已完成,且成功傳回回呼
  • 指定的統計存在於 Steamworks 網站的應用程式管理員中,而所有變更皆已發佈

若呼叫成功,解鎖狀態便會通過 pbAchieved 參數傳回。

GetUserStat

bool GetUserStat( CSteamID steamIDUser, const char *pchName, int32 *pData ); bool GetUserStat( CSteamID steamIDUser, const char *pchName, float *pData );
名稱型別說明
steamIDUserCSteamID要取得統計的使用者的 Steam ID。
pchNameconst char *統計的「API 名稱」。 不可比 k_cchStatNameMax 中規範的長。
pDataint32 * / float *用來傳回統計數值的變數。

取得指定使用者目前的統計數值。

呼叫此函式前,必須先呼叫 RequestUserStats 且須傳回成功才可進行呼叫。

傳回: bool
如果此函式執行成功,且符合下列所有條件,便傳回 true,否則傳回 false
  • 指定的統計存在於 Steamworks 網站的應用程式管理員中,而所有變更皆已發佈
  • RequestUserStats 已完成,且成功傳回回呼
  • 傳入此函式的型別必須與 Steamworks 網站的應用程式管理員頁面中的類型相同

RequestUserStats

SteamAPICall_t RequestUserStats( CSteamID steamIDUser );
名稱型別說明
steamIDUserCSteamID將要求統計資料的使用者的 Steam ID。

以不同步的方式從伺服器下載指定使用者的統計與成就。

只有目前正在伺服器上進行遊戲的用戶端才會自動更新統計。 如需其他使用者的資料,則須再次呼叫此函式才能更新。

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

SetUserAchievement

bool SetUserAchievement( CSteamID steamIDUser, const char *pchName );
名稱型別說明
steamIDUserCSteamID要解鎖成就的使用者的 Steam ID。
pchNameconst char *要解鎖的成就的「API 名稱」。

為指定的使用者解鎖一項成就。

呼叫此函式前,必須先呼叫 RequestUserStats 且須傳回成功才可進行呼叫!

此呼叫只會改變 Steam 內部記憶體的狀態,且消耗的資源很少。 要將統計傳送給伺服器,則需呼叫 StoreUserStats

備註: 此函式只能在允許遊戲伺服器設定的成就上生效。 如果此成就的「設定由」欄位為「Official GS(官方遊戲伺服器)」,那麼就只有您控制的官方伺服器可以設定。 若要使用此方法,須在應用程式管理員的專屬伺服器區設定官方伺服器的 IP 範圍。

傳回: bool
如果此函式執行成功,且符合下列所有條件,便傳回 true,否則傳回 false
  • 指定成就的「API 名稱」存在於 Steamworks 網站的應用程式管理員中,而所有變更皆已發佈
  • RequestUserStats 已完成,且成功傳回給指定使用者的回呼
  • 該統計須允許遊戲伺服器設定

SetUserStat

bool SetUserStat( CSteamID steamIDUser, const char *pchName, int32 nData ); bool SetUserStat( CSteamID steamIDUser, const char *pchName, float fData );
名稱型別說明
steamIDUserCSteamID要設定統計的使用者的 Steam ID。
pchNameconst char *統計的「API 名稱」。 不可比 k_cchStatNameMax 中規範的長。
nDataint32 / float統計的新值。 必須為絕對值,此函式不會替您增減量。

設定或更新指定使用者的一項統計。

呼叫此函式前,必須先呼叫 RequestUserStats 且須傳回成功才可進行呼叫!

此呼叫只會改變 Steam 內部記憶體的狀態,且消耗的資源很少。 要將統計傳送給伺服器,則需呼叫 StoreUserStats

備註: 此更新只能在允許遊戲伺服器編輯的統計上生效。 如果此統計的「設定由」欄位為「Official GS(官方遊戲伺服器)」,那麼就只有您控制的官方伺服器可以設定。 若要使用此方法,須在應用程式管理員的專屬伺服器區設定官方伺服器的 IP 範圍。

傳回: bool
如果此函式執行成功,且符合下列所有條件,便傳回 true,否則傳回 false
  • 指定的統計存在於 Steamworks 網站的應用程式管理員中,而所有變更皆已發佈
  • RequestUserStats 已完成,且成功傳回給指定使用者的回呼
  • 傳入此函式的型別必須與 Steamworks 網站的應用程式管理員頁面中的類型相同
  • 該統計須允許遊戲伺服器設定

StoreUserStats

SteamAPICall_t StoreUserStats( CSteamID steamIDUser );
名稱型別說明
steamIDUserCSteamID要儲存統計資料的使用者的 Steam ID。

將為指定使用者變更的統計與成就資料傳送至伺服器永久保存。

如果失敗,便不會傳送任何東西給伺服器。 建議您在成功之前持續嘗試。

此函式可被速率限制。 呼叫頻率應使用分鐘,而非秒鐘計算。 您應只有在重大狀態變更時呼叫此函式,例如回合結束、變更地圖,或使用者要離開伺服器時。

當您的應用程式處理程序結束,但還有儲存於本機且尚未上傳的統計或成就時,便會自動呼叫此函式。

更多偵錯資訊皆紀錄於 %steam_install%\\logs\\stats_log.txt 檔案中。

傳回: 用於 GSStatsStored_t 呼叫結果的 SteamAPICall_t
如果 m_eResult 的結果為 k_EResultInvalidParam,便表示上傳的一個或以上的統計遭拒,原因為破壞了限制或版本過舊其中之一。 如發生這種狀況,伺服器會傳回要更新的值,並應將該統計存於本機之中,以保持同步。

UpdateUserAvgRateStat

bool UpdateUserAvgRateStat( CSteamID steamIDUser, const char *pchName, float flCountThisSession, double dSessionLength );
名稱型別說明
steamIDUserCSteamID要更新 AVGRATE 的使用者的 Steam ID。
pchNameconst char *統計的「API 名稱」。 不可比 k_cchStatNameMax 中規範的長。
flCountThisSessionfloat上一次呼叫此函式到現在所累積的值。
dSessionLengthdouble上一次呼叫此函式到現在的秒數。

以新的數值更新指定使用者的 AVGRATE 統計。

呼叫此函式前,必須先呼叫 RequestUserStats 且須傳回成功才可進行呼叫!

此呼叫只會改變 Steam 內部記憶體的狀態,且消耗的資源很少。 要將統計傳送給伺服器,則需呼叫 StoreUserStats

備註: 此更新只能在允許遊戲伺服器編輯的統計上生效。 如果此統計的「設定由」欄位為「Official GS(官方遊戲伺服器)」,那麼就只有您控制的官方伺服器可以設定。 若要使用此方法,須在應用程式管理員的專屬伺服器區設定官方伺服器的 IP 範圍。

傳回: bool
如果此函式執行成功,且符合下列所有條件,便傳回 true,否則傳回 false
  • 指定的統計存在於 Steamworks 網站的應用程式管理員中,而所有變更皆已發佈
  • RequestUserStats 已完成,且成功傳回給指定使用者的回呼
  • Steamworks 合作夥伴後端的型別(類型)也是 AVGRATE
  • 該統計須允許遊戲伺服器設定

回呼

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

GSStatsReceived_t

從伺服器取得使用者最新的統計和成就資料的結果。

名稱型別說明
m_eResultEResult傳回呼叫是否成功。 如果使用者沒有統計,便會設置為 k_EResultFail
m_steamIDUserCSteamID提取了這位使用者的統計資料。

關聯函式: RequestUserStats

GSStatsStored_t

要求儲存使用者統計的結果。

名稱型別說明
m_eResultEResult傳回呼叫是否成功。
m_steamIDUserCSteamID儲存了統計的使用者。

關聯函式: StoreUserStats

GSStatsUnloaded_t

表示使用者的統計被解除載入的回呼。

再次呼叫 RequestUserStats 以存取此使用者的統計。

名稱型別說明
m_steamIDUserCSteamID統計被解除載入的使用者。

常數

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

名稱型別說明
STEAMGAMESERVERSTATS_INTERFACE_VERSIONconst char *"SteamGameServerStats001"