供遊戲伺服器設定玩家的統計與成就的函式。
成員函式
ISteamGameServerStats
的成員函式可透過全域存取子函式
SteamGameServerStats()
呼叫。
ClearUserAchievement
bool ClearUserAchievement( CSteamID steamIDUser, const char *pchName );
名稱 | 型別 | 說明 |
steamIDUser | CSteamID | 要清空成就的使用者 Steam ID。 |
pchName | const char * | 要重設的成就的「API 名稱」。 |
重設指定使用者已解鎖的成就狀態。
此函式主要僅用於偵錯。
呼叫此函式前,必須先呼叫
RequestUserStats 且須傳回成功才可進行呼叫!
此呼叫只會改變 Steam 內部記憶體的狀態,且消耗的資源很少。 要將統計傳送給伺服器,則需呼叫
StoreUserStats。
備註: 此函式只能在允許遊戲伺服器設定的成就上生效。 如果此成就的「設定由」欄位為「Official GS(官方遊戲伺服器)」,那麼就只有您控制的官方伺服器可以設定。 若要使用此方法,須在應用程式管理員的
專屬伺服器區設定官方伺服器的 IP 範圍。
傳回: bool
如果此函式執行成功,且符合下列所有條件,便傳回
true,否則傳回
false。
- 指定成就的「API 名稱」存在於 Steamworks 網站的應用程式管理員中,而所有變更皆已發佈
- RequestUserStats 已完成,且成功傳回給指定使用者的回呼
- 該統計須允許遊戲伺服器設定
GetUserAchievement
bool GetUserAchievement( CSteamID steamIDUser, const char *pchName, bool *pbAchieved );
名稱 | 型別 | 說明 |
steamIDUser | CSteamID | 要取得成就的使用者的 Steam ID。 |
pchName | const char * | 成就的「API 名稱」。 |
pbAchieved | bool * | 傳回該成就的解鎖狀態。 |
取得成就的解鎖狀態。
傳回: bool
如果此函式執行成功,且符合下列所有條件,便傳回
true,否則傳回
false。
若呼叫成功,解鎖狀態便會通過
pbAchieved
參數傳回。
GetUserStat
bool GetUserStat( CSteamID steamIDUser, const char *pchName, int32 *pData );
bool GetUserStat( CSteamID steamIDUser, const char *pchName, float *pData );
取得指定使用者目前的統計數值。
呼叫此函式前,必須先呼叫
RequestUserStats 且須傳回成功才可進行呼叫。
傳回: bool
如果此函式執行成功,且符合下列所有條件,便傳回
true,否則傳回
false。
- 指定的統計存在於 Steamworks 網站的應用程式管理員中,而所有變更皆已發佈
- RequestUserStats 已完成,且成功傳回回呼
- 傳入此函式的型別必須與 Steamworks 網站的應用程式管理員頁面中的類型相同
RequestUserStats
SteamAPICall_t RequestUserStats( CSteamID steamIDUser );
名稱 | 型別 | 說明 |
steamIDUser | CSteamID | 將要求統計資料的使用者的 Steam ID。 |
以不同步的方式從伺服器下載指定使用者的統計與成就。
只有目前正在伺服器上進行遊戲的用戶端才會自動更新統計。 如需其他使用者的資料,則須再次呼叫此函式才能更新。
傳回: 用於
GSStatsReceived_t 呼叫結果的
SteamAPICall_t。
SetUserAchievement
bool SetUserAchievement( CSteamID steamIDUser, const char *pchName );
名稱 | 型別 | 說明 |
steamIDUser | CSteamID | 要解鎖成就的使用者的 Steam ID。 |
pchName | const 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 );
名稱 | 型別 | 說明 |
steamIDUser | CSteamID | 要設定統計的使用者的 Steam ID。 |
pchName | const char * | 統計的「API 名稱」。 不可比 k_cchStatNameMax 中規範的長。 |
nData | int32 / float | 統計的新值。 必須為絕對值,此函式不會替您增減量。 |
設定或更新指定使用者的一項統計。
呼叫此函式前,必須先呼叫
RequestUserStats 且須傳回成功才可進行呼叫!
此呼叫只會改變 Steam 內部記憶體的狀態,且消耗的資源很少。 要將統計傳送給伺服器,則需呼叫
StoreUserStats。
備註: 此更新只能在允許遊戲伺服器編輯的統計上生效。 如果此統計的「設定由」欄位為「Official GS(官方遊戲伺服器)」,那麼就只有您控制的官方伺服器可以設定。 若要使用此方法,須在應用程式管理員的
專屬伺服器區設定官方伺服器的 IP 範圍。
傳回: bool
如果此函式執行成功,且符合下列所有條件,便傳回
true,否則傳回
false。
- 指定的統計存在於 Steamworks 網站的應用程式管理員中,而所有變更皆已發佈
- RequestUserStats 已完成,且成功傳回給指定使用者的回呼
- 傳入此函式的型別必須與 Steamworks 網站的應用程式管理員頁面中的類型相同
- 該統計須允許遊戲伺服器設定
StoreUserStats
SteamAPICall_t StoreUserStats( CSteamID steamIDUser );
名稱 | 型別 | 說明 |
steamIDUser | CSteamID | 要儲存統計資料的使用者的 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 );
名稱 | 型別 | 說明 |
steamIDUser | CSteamID | 要更新 AVGRATE 的使用者的 Steam ID。 |
pchName | const char * | 統計的「API 名稱」。 不可比 k_cchStatNameMax 中規範的長。 |
flCountThisSession | float | 上一次呼叫此函式到現在所累積的值。 |
dSessionLength | double | 上一次呼叫此函式到現在的秒數。 |
以新的數值更新指定使用者的 AVGRATE 統計。
呼叫此函式前,必須先呼叫
RequestUserStats 且須傳回成功才可進行呼叫!
此呼叫只會改變 Steam 內部記憶體的狀態,且消耗的資源很少。 要將統計傳送給伺服器,則需呼叫
StoreUserStats。
備註: 此更新只能在允許遊戲伺服器編輯的統計上生效。 如果此統計的「設定由」欄位為「Official GS(官方遊戲伺服器)」,那麼就只有您控制的官方伺服器可以設定。 若要使用此方法,須在應用程式管理員的
專屬伺服器區設定官方伺服器的 IP 範圍。
傳回: bool
如果此函式執行成功,且符合下列所有條件,便傳回
true,否則傳回
false。
- 指定的統計存在於 Steamworks 網站的應用程式管理員中,而所有變更皆已發佈
- RequestUserStats 已完成,且成功傳回給指定使用者的回呼
- Steamworks 合作夥伴後端的型別(類型)也是 AVGRATE
- 該統計須允許遊戲伺服器設定
回呼
以下為呼叫
SteamAPI_RunCallbacks 後可能會發出的回呼。 之中許多函式會應
ISteamGameServerStats
的成員函式直接執行。
GSStatsReceived_t
從伺服器取得使用者最新的統計和成就資料的結果。
關聯函式: RequestUserStatsGSStatsStored_t
要求儲存使用者統計的結果。
關聯函式: StoreUserStatsGSStatsUnloaded_t
表示使用者的統計被解除載入的回呼。
再次呼叫
RequestUserStats 以存取此使用者的統計。
名稱 | 型別 | 說明 |
m_steamIDUser | CSteamID | 統計被解除載入的使用者。 |
常數
以下為定義來用於 ISteamGameServerStats 中的常數。
名稱 | 型別 | 值 | 說明 |
STEAMGAMESERVERSTATS_INTERFACE_VERSION | const char * | "SteamGameServerStats001" | |