You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
4.2 KiB
99 lines
4.2 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: interface for game servers to steam stats and achievements |
|
// |
|
//============================================================================= |
|
|
|
#ifndef ISTEAMGAMESERVERSTATS_H |
|
#define ISTEAMGAMESERVERSTATS_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include "isteamclient.h" |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Functions for authenticating users via Steam to play on a game server |
|
//----------------------------------------------------------------------------- |
|
class ISteamGameServerStats |
|
{ |
|
public: |
|
// downloads stats for the user |
|
// returns a GSStatsReceived_t callback when completed |
|
// if the user has no stats, GSStatsReceived_t.m_eResult will be set to k_EResultFail |
|
// these stats will only be auto-updated for clients playing on the server. For other |
|
// users you'll need to call RequestUserStats() again to refresh any data |
|
virtual SteamAPICall_t RequestUserStats( CSteamID steamIDUser ) = 0; |
|
|
|
// requests stat information for a user, usable after a successful call to RequestUserStats() |
|
virtual bool GetUserStat( CSteamID steamIDUser, const char *pchName, int32 *pData ) = 0; |
|
virtual bool GetUserStat( CSteamID steamIDUser, const char *pchName, float *pData ) = 0; |
|
virtual bool GetUserAchievement( CSteamID steamIDUser, const char *pchName, bool *pbAchieved ) = 0; |
|
|
|
// Set / update stats and achievements. |
|
// Note: These updates will work only on stats game servers are allowed to edit and only for |
|
// game servers that have been declared as officially controlled by the game creators. |
|
// Set the IP range of your official servers on the Steamworks page |
|
virtual bool SetUserStat( CSteamID steamIDUser, const char *pchName, int32 nData ) = 0; |
|
virtual bool SetUserStat( CSteamID steamIDUser, const char *pchName, float fData ) = 0; |
|
virtual bool UpdateUserAvgRateStat( CSteamID steamIDUser, const char *pchName, float flCountThisSession, double dSessionLength ) = 0; |
|
|
|
virtual bool SetUserAchievement( CSteamID steamIDUser, const char *pchName ) = 0; |
|
virtual bool ClearUserAchievement( CSteamID steamIDUser, const char *pchName ) = 0; |
|
|
|
// Store the current data on the server, will get a GSStatsStored_t callback when set. |
|
// |
|
// If the callback has a result of k_EResultInvalidParam, one or more stats |
|
// uploaded has been rejected, either because they broke constraints |
|
// or were out of date. In this case the server sends back updated values. |
|
// The stats should be re-iterated to keep in sync. |
|
virtual SteamAPICall_t StoreUserStats( CSteamID steamIDUser ) = 0; |
|
}; |
|
|
|
#define STEAMGAMESERVERSTATS_INTERFACE_VERSION "SteamGameServerStats001" |
|
|
|
// callbacks |
|
#if defined( VALVE_CALLBACK_PACK_SMALL ) |
|
#pragma pack( push, 4 ) |
|
#elif defined( VALVE_CALLBACK_PACK_LARGE ) |
|
#pragma pack( push, 8 ) |
|
#else |
|
#error isteamclient.h must be included |
|
#endif |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: called when the latests stats and achievements have been received |
|
// from the server |
|
//----------------------------------------------------------------------------- |
|
struct GSStatsReceived_t |
|
{ |
|
enum { k_iCallback = k_iSteamGameServerStatsCallbacks }; |
|
EResult m_eResult; // Success / error fetching the stats |
|
CSteamID m_steamIDUser; // The user for whom the stats are retrieved for |
|
}; |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: result of a request to store the user stats for a game |
|
//----------------------------------------------------------------------------- |
|
struct GSStatsStored_t |
|
{ |
|
enum { k_iCallback = k_iSteamGameServerStatsCallbacks + 1 }; |
|
EResult m_eResult; // success / error |
|
CSteamID m_steamIDUser; // The user for whom the stats were stored |
|
}; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Callback indicating that a user's stats have been unloaded. |
|
// Call RequestUserStats again to access stats for this user |
|
//----------------------------------------------------------------------------- |
|
struct GSStatsUnloaded_t |
|
{ |
|
enum { k_iCallback = k_iSteamUserStatsCallbacks + 8 }; |
|
CSteamID m_steamIDUser; // User whose stats have been unloaded |
|
}; |
|
|
|
#pragma pack( pop ) |
|
|
|
|
|
#endif // ISTEAMGAMESERVERSTATS_H
|
|
|