ISteamUserStats

Note

This documentation is auto-generated. Methods marked with πŸ€– are automatically generated bindings. Methods marked with ✍️ are manually implemented and methods marked with βœ‹ are currently not implemented.

Note

Overloaded Steam methods are exposed as distinct Lua functions using a type suffix (for example GetStatInt32 and SetStatFloat).

List of Functions

List of Callbacks

Function Reference

UserStats.AttachLeaderboardUGC(hSteamLeaderboard, hUGC, callback)

πŸ€– Auto-generated binding

Parameters:
  • hSteamLeaderboard (uint64 - SteamLeaderboard_t) –

  • hUGC (uint64 - UGCHandle_t) –

  • callback (function) – CallResult callback receiving struct LeaderboardUGCSet_t and a boolean

Returns:

(uint64) SteamAPICall_t handle for this async call. The result is delivered via the callback parameter when Steam.RunCallbacks() is called.

SteamWorks:

AttachLeaderboardUGC

UserStats.ClearAchievement(pchName)

πŸ€– Auto-generated binding

Parameters:

pchName (str?) –

Returns:

(bool) Return value

SteamWorks:

ClearAchievement

Example:

Steam.UserStats.ClearAchievement('ach_name')
Steam.UserStats.StoreStats()
UserStats.DownloadLeaderboardEntries(hSteamLeaderboard, eLeaderboardDataRequest, nRangeStart, nRangeEnd, callback)

πŸ€– Auto-generated binding

Parameters:
  • hSteamLeaderboard (uint64 - SteamLeaderboard_t) –

  • eLeaderboardDataRequest (int - ELeaderboardDataRequest) –

  • nRangeStart (int) –

  • nRangeEnd (int) –

  • callback (function) – CallResult callback receiving struct LeaderboardScoresDownloaded_t and a boolean

Returns:

(uint64) SteamAPICall_t handle for this async call. The result is delivered via the callback parameter when Steam.RunCallbacks() is called.

SteamWorks:

DownloadLeaderboardEntries

Example:

-- Download global entries 1-100
Steam.UserStats.DownloadLeaderboardEntries(handle, Steam.k_ELeaderboardDataRequestGlobal, 1, 100, function(data, err)
    if err then
        print('Error happened')
    else
        for i = 0, data.m_cEntryCount - 1 do
            local ok, entry = Steam.UserStats.GetDownloadedLeaderboardEntry(data.m_hSteamLeaderboardEntries, i, 0)
            if ok then
                local name = Steam.Friends.GetFriendPersonaName(entry.m_steamIDUser)
                print('Rank #' .. entry.m_nGlobalRank .. ': ' .. name .. ' - ' .. entry.m_nScore)
            end
        end
    end
end)
UserStats.DownloadLeaderboardEntriesForUsers(hSteamLeaderboard, prgUsers, cUsers, callback)

πŸ€– Auto-generated binding

Parameters:
  • hSteamLeaderboard (uint64 - SteamLeaderboard_t) –

  • prgUsers (uint64[]?) –

  • cUsers (int) – size of the input array prgUsers

  • callback (function) – CallResult callback receiving struct LeaderboardScoresDownloaded_t and a boolean

Returns:

(uint64) SteamAPICall_t handle for this async call. The result is delivered via the callback parameter when Steam.RunCallbacks() is called.

SteamWorks:

DownloadLeaderboardEntriesForUsers

Example:

local friends = {friend1ID, friend2ID}
Steam.UserStats.DownloadLeaderboardEntriesForUsers(handle, friends, #friends, function(data, err)
    if not err then
        for i = 0, data.m_cEntryCount - 1 do
            local ok, entry = Steam.UserStats.GetDownloadedLeaderboardEntry(data.m_hSteamLeaderboardEntries, i, 0)
            if ok then
                print(tostring(entry.m_steamIDUser) .. ': ' .. entry.m_nScore)
            end
        end
    end
end)
UserStats.FindLeaderboard(pchLeaderboardName, callback)

πŸ€– Auto-generated binding

Parameters:
  • pchLeaderboardName (str?) –

  • callback (function) – CallResult callback receiving struct LeaderboardFindResult_t and a boolean

Returns:

(uint64) SteamAPICall_t handle for this async call. The result is delivered via the callback parameter when Steam.RunCallbacks() is called.

SteamWorks:

FindLeaderboard

Asynchronously finds a leaderboard by name.

Example:

Steam.UserStats.FindLeaderboard('TopScores', function(data, err)
    if err or data.m_bLeaderboardFound == 0 then
        print('Leaderboard not found')
    else
        uploadScoresHelper(data.m_hSteamLeaderboard)
    end
end)
UserStats.FindOrCreateLeaderboard(pchLeaderboardName, eLeaderboardSortMethod, eLeaderboardDisplayType, callback)

πŸ€– Auto-generated binding

Parameters:
  • pchLeaderboardName (str?) –

  • eLeaderboardSortMethod (int - ELeaderboardSortMethod) –

  • eLeaderboardDisplayType (int - ELeaderboardDisplayType) –

  • callback (function) – CallResult callback receiving struct LeaderboardFindResult_t and a boolean

Returns:

(uint64) SteamAPICall_t handle for this async call. The result is delivered via the callback parameter when Steam.RunCallbacks() is called.

SteamWorks:

FindOrCreateLeaderboard

Example:

Steam.UserStats.FindOrCreateLeaderboard('TopScores', Steam.k_ELeaderboardSortMethodDescending, Steam.k_ELeaderboardDisplayTypeNumeric, function(data, err)
    if err or data.m_bLeaderboardFound == 0 then
        print('Something happened')
    else
        uploadScoresHelper(data.m_hSteamLeaderboard)
    end
end)
UserStats.GetAchievement(pchName)

πŸ€– Auto-generated binding

Parameters:

pchName (str?) – The β€˜API Name’ of the achievement

Returns:

(bool) Return value

Returns:

(bool) pbAchieved

SteamWorks:

GetAchievement

Gets the unlock status of an Achievement.

Signature differences from C++ API:

  • Parameter pbAchieved is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

Example:

local success, achieved = Steam.UserStats.GetAchievement('ach_name')
if success and achieved then
    print('Yep, you have the achievement')
end
UserStats.GetAchievementAchievedPercent(pchName)

πŸ€– Auto-generated binding

Parameters:

pchName (str?) –

Returns:

(bool) Return value

Returns:

(float) pflPercent

SteamWorks:

GetAchievementAchievedPercent

Signature differences from C++ API:

  • Parameter pflPercent is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

UserStats.GetAchievementAndUnlockTime(pchName)

πŸ€– Auto-generated binding

Parameters:

pchName (str?) –

Returns:

(bool) Return value

Returns:

(bool) pbAchieved

Returns:

(int) punUnlockTime

SteamWorks:

GetAchievementAndUnlockTime

Signature differences from C++ API:

  • Parameter pbAchieved is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

  • Parameter punUnlockTime is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

Example:

local ok, achieved, unlockTime = Steam.UserStats.GetAchievementAndUnlockTime('ach_name')
if ok and achieved then
    print('Unlocked at:', unlockTime)
end
UserStats.GetAchievementDisplayAttribute(pchName, pchKey)

πŸ€– Auto-generated binding

Parameters:
  • pchName (str?) –

  • pchKey (str?) –

Returns:

(str) Return value

SteamWorks:

GetAchievementDisplayAttribute

Example:

local name = Steam.UserStats.GetAchievementDisplayAttribute('ach_name', 'name')
local desc = Steam.UserStats.GetAchievementDisplayAttribute('ach_name', 'desc')
print(name .. ': ' .. desc)
UserStats.GetAchievementIcon(pchName)

πŸ€– Auto-generated binding

Parameters:

pchName (str?) –

Returns:

(int) Return value

SteamWorks:

GetAchievementIcon

UserStats.GetAchievementName(iAchievement)

πŸ€– Auto-generated binding

Parameters:

iAchievement (int) –

Returns:

(str) Return value

SteamWorks:

GetAchievementName

Notes:

UserStats.GetAchievementProgressLimitsFloat(pchName)

πŸ€– Auto-generated binding

Parameters:

pchName (str?) –

Returns:

(bool) Return value

Returns:

(float) pfMinProgress

Returns:

(float) pfMaxProgress

SteamWorks:

GetAchievementProgressLimits

Signature differences from C++ API:

  • In C++, this is an overloaded method called GetAchievementProgressLimits. luasteam exposes each overload as a distinct function with a type suffix.

  • Parameter pfMinProgress is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

  • Parameter pfMaxProgress is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

UserStats.GetAchievementProgressLimitsInt32(pchName)

πŸ€– Auto-generated binding

Parameters:

pchName (str?) –

Returns:

(bool) Return value

Returns:

(int) pnMinProgress

Returns:

(int) pnMaxProgress

SteamWorks:

GetAchievementProgressLimits

Signature differences from C++ API:

  • In C++, this is an overloaded method called GetAchievementProgressLimits. luasteam exposes each overload as a distinct function with a type suffix.

  • Parameter pnMinProgress is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

  • Parameter pnMaxProgress is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

Example:

local ok, minVal, maxVal = Steam.UserStats.GetAchievementProgressLimitsInt32('ach_progress')
if ok then
    print(string.format('Progress range: %d - %d', minVal, maxVal))
end
UserStats.GetDownloadedLeaderboardEntry(hSteamLeaderboardEntries, index, cDetailsMax)

πŸ€– Auto-generated binding

Parameters:
  • hSteamLeaderboardEntries (uint64 - SteamLeaderboardEntries_t) –

  • index (int) –

  • cDetailsMax (int?) – size of the buffer to allocate for pDetails. If nil then the buffer will be NULL.

Returns:

(bool) Return value

Returns:

(LeaderboardEntry_t) pLeaderboardEntry

Returns:

(int[]) pDetails

SteamWorks:

GetDownloadedLeaderboardEntry

Signature differences from C++ API:

  • Parameter pLeaderboardEntry is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

  • Parameter pDetails is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

Notes:

UserStats.GetGlobalStatDouble(pchStatName)

πŸ€– Auto-generated binding

Parameters:

pchStatName (str?) –

Returns:

(bool) Return value

Returns:

(float) pData

SteamWorks:

GetGlobalStat

Signature differences from C++ API:

  • In C++, this is an overloaded method called GetGlobalStat. luasteam exposes each overload as a distinct function with a type suffix.

  • Parameter pData is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

Example:

local ok, total = Steam.UserStats.GetGlobalStatDouble('total_playtime_hours')
if ok then
    print('Total playtime hours worldwide:', total)
end
UserStats.GetGlobalStatHistoryDouble(pchStatName, cubData)

πŸ€– Auto-generated binding

Parameters:
  • pchStatName (str?) –

  • cubData (int?) – size of the buffer to allocate for pData. If nil then the buffer will be NULL.

Returns:

(int) Return value

Returns:

(float[]) pData

SteamWorks:

GetGlobalStatHistory

Signature differences from C++ API:

  • In C++, this is an overloaded method called GetGlobalStatHistory. luasteam exposes each overload as a distinct function with a type suffix.

  • Parameter pData is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

UserStats.GetGlobalStatHistoryInt64(pchStatName, cubData)

πŸ€– Auto-generated binding

Parameters:
  • pchStatName (str?) –

  • cubData (int?) – size of the buffer to allocate for pData. If nil then the buffer will be NULL.

Returns:

(int) Return value

Returns:

(uint64[]) pData

SteamWorks:

GetGlobalStatHistory

Signature differences from C++ API:

  • In C++, this is an overloaded method called GetGlobalStatHistory. luasteam exposes each overload as a distinct function with a type suffix.

  • Parameter pData is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

UserStats.GetGlobalStatInt64(pchStatName)

πŸ€– Auto-generated binding

Parameters:

pchStatName (str?) –

Returns:

(bool) Return value

Returns:

(uint64) pData

SteamWorks:

GetGlobalStat

Signature differences from C++ API:

  • In C++, this is an overloaded method called GetGlobalStat. luasteam exposes each overload as a distinct function with a type suffix.

  • Parameter pData is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

Example:

local ok, total = Steam.UserStats.GetGlobalStatInt64('total_kills')
if ok then
    print('Total kills across all players:', total)
end
UserStats.GetLeaderboardDisplayType(hSteamLeaderboard)

πŸ€– Auto-generated binding

Parameters:

hSteamLeaderboard (uint64 - SteamLeaderboard_t) –

Returns:

(int - ELeaderboardDisplayType) Return value

SteamWorks:

GetLeaderboardDisplayType

Notes:

UserStats.GetLeaderboardEntryCount(hSteamLeaderboard)

πŸ€– Auto-generated binding

Parameters:

hSteamLeaderboard (uint64 - SteamLeaderboard_t) –

Returns:

(int) Return value

SteamWorks:

GetLeaderboardEntryCount

Notes:

UserStats.GetLeaderboardName(hSteamLeaderboard)

πŸ€– Auto-generated binding

Parameters:

hSteamLeaderboard (uint64 - SteamLeaderboard_t) –

Returns:

(str) Return value

SteamWorks:

GetLeaderboardName

Example:

local function printLeaderboardInfo(handle)
    print('Leaderboard name: ' .. Steam.UserStats.GetLeaderboardName(handle))
    print('Entries: ' .. Steam.UserStats.GetLeaderboardEntryCount(handle))
    print('Sort Method: ' .. Steam.UserStats.GetLeaderboardSortMethod(handle))
    print('Display Type: ' .. Steam.UserStats.GetLeaderboardDisplayType(handle))
end
UserStats.GetLeaderboardSortMethod(hSteamLeaderboard)

πŸ€– Auto-generated binding

Parameters:

hSteamLeaderboard (uint64 - SteamLeaderboard_t) –

Returns:

(int - ELeaderboardSortMethod) Return value

SteamWorks:

GetLeaderboardSortMethod

Notes:

UserStats.GetMostAchievedAchievementInfo(unNameBufLen)

πŸ€– Auto-generated binding

Parameters:

unNameBufLen (int?) – size of the buffer to allocate for pchName. If nil then the buffer will be NULL.

Returns:

(int) Return value

Returns:

(str) pchName

Returns:

(float) pflPercent

Returns:

(bool) pbAchieved

SteamWorks:

GetMostAchievedAchievementInfo

Signature differences from C++ API:

  • Parameter pchName is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

  • Parameter pflPercent is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

  • Parameter pbAchieved is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

Example:

local iter, name, percent, achieved = Steam.UserStats.GetMostAchievedAchievementInfo(256)
while iter ~= -1 do
    print(string.format('%s: %.1f%%', name, percent))
    iter, name, percent, achieved = Steam.UserStats.GetNextMostAchievedAchievementInfo(iter, 256)
end
UserStats.GetNextMostAchievedAchievementInfo(iIteratorPrevious, unNameBufLen)

πŸ€– Auto-generated binding

Parameters:
  • iIteratorPrevious (int) –

  • unNameBufLen (int?) – size of the buffer to allocate for pchName. If nil then the buffer will be NULL.

Returns:

(int) Return value

Returns:

(str) pchName

Returns:

(float) pflPercent

Returns:

(bool) pbAchieved

SteamWorks:

GetNextMostAchievedAchievementInfo

Signature differences from C++ API:

  • Parameter pchName is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

  • Parameter pflPercent is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

  • Parameter pbAchieved is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

UserStats.GetNumAchievements()

πŸ€– Auto-generated binding

Returns:

(int) Return value

SteamWorks:

GetNumAchievements

Example:

local count = Steam.UserStats.GetNumAchievements()
for i = 0, count - 1 do
    local name = Steam.UserStats.GetAchievementName(i)
    local ok, achieved = Steam.UserStats.GetAchievement(name)
    print(name .. ': ' .. (achieved and 'unlocked' or 'locked'))
end
UserStats.GetNumberOfCurrentPlayers(callback)

πŸ€– Auto-generated binding

Parameters:

callback (function) – CallResult callback receiving struct NumberOfCurrentPlayers_t and a boolean

Returns:

(uint64) SteamAPICall_t handle for this async call. The result is delivered via the callback parameter when Steam.RunCallbacks() is called.

SteamWorks:

GetNumberOfCurrentPlayers

Example:

Steam.UserStats.GetNumberOfCurrentPlayers(function(data, err)
    if not err and data.m_bSuccess ~= 0 then
        print('Players online right now:', data.m_cPlayers)
    end
end)
UserStats.GetStatFloat(pchName)

πŸ€– Auto-generated binding

Parameters:

pchName (str?) –

Returns:

(bool) Return value

Returns:

(float) pData

SteamWorks:

GetStat

Signature differences from C++ API:

  • In C++, this is an overloaded method called GetStat. luasteam exposes each overload as a distinct function with a type suffix.

  • Parameter pData is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

Example:

local success, value = Steam.UserStats.GetStatFloat('accuracy')
if success then
    print('Accuracy: ' .. value)
end
UserStats.GetStatInt32(pchName)

πŸ€– Auto-generated binding

Parameters:

pchName (str?) –

Returns:

(bool) Return value

Returns:

(int) pData

SteamWorks:

GetStat

Signature differences from C++ API:

  • In C++, this is an overloaded method called GetStat. luasteam exposes each overload as a distinct function with a type suffix.

  • Parameter pData is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

Example:

local success, value = Steam.UserStats.GetStatInt32('kills')
if success then
    print('Kills: ' .. value)
end
UserStats.GetUserAchievement(steamIDUser, pchName)

πŸ€– Auto-generated binding

Parameters:
  • steamIDUser (uint64 - CSteamID) –

  • pchName (str?) –

Returns:

(bool) Return value

Returns:

(bool) pbAchieved

SteamWorks:

GetUserAchievement

Signature differences from C++ API:

  • Parameter pbAchieved is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

Example:

local ok, achieved = Steam.UserStats.GetUserAchievement(playerSteamID, 'ach_name')
if ok then
    print('Achievement status:', achieved)
end
UserStats.GetUserAchievementAndUnlockTime(steamIDUser, pchName)

πŸ€– Auto-generated binding

Parameters:
  • steamIDUser (uint64 - CSteamID) –

  • pchName (str?) –

Returns:

(bool) Return value

Returns:

(bool) pbAchieved

Returns:

(int) punUnlockTime

SteamWorks:

GetUserAchievementAndUnlockTime

Signature differences from C++ API:

  • Parameter pbAchieved is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

  • Parameter punUnlockTime is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

UserStats.GetUserStatFloat(steamIDUser, pchName)

πŸ€– Auto-generated binding

Parameters:
  • steamIDUser (uint64 - CSteamID) –

  • pchName (str?) –

Returns:

(bool) Return value

Returns:

(float) pData

SteamWorks:

GetUserStat

Signature differences from C++ API:

  • In C++, this is an overloaded method called GetUserStat. luasteam exposes each overload as a distinct function with a type suffix.

  • Parameter pData is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

UserStats.GetUserStatInt32(steamIDUser, pchName)

πŸ€– Auto-generated binding

Parameters:
  • steamIDUser (uint64 - CSteamID) –

  • pchName (str?) –

Returns:

(bool) Return value

Returns:

(int) pData

SteamWorks:

GetUserStat

Signature differences from C++ API:

  • In C++, this is an overloaded method called GetUserStat. luasteam exposes each overload as a distinct function with a type suffix.

  • Parameter pData is not a parameter in Lua β€” it is an output-only pointer in C++ and is returned as an additional return value.

Example:

local ok, value = Steam.UserStats.GetUserStatInt32(playerSteamID, 'kills')
if ok then
    print('Player kills:', value)
end
UserStats.IndicateAchievementProgress(pchName, nCurProgress, nMaxProgress)

πŸ€– Auto-generated binding

Parameters:
  • pchName (str?) –

  • nCurProgress (int) –

  • nMaxProgress (int) –

Returns:

(bool) Return value

SteamWorks:

IndicateAchievementProgress

Example:

-- Show progress notification without unlocking yet
Steam.UserStats.IndicateAchievementProgress('ach_kills', currentKills, 100)
UserStats.RequestGlobalAchievementPercentages(callback)

πŸ€– Auto-generated binding

Parameters:

callback (function) – CallResult callback receiving struct GlobalAchievementPercentagesReady_t and a boolean

Returns:

(uint64) SteamAPICall_t handle for this async call. The result is delivered via the callback parameter when Steam.RunCallbacks() is called.

SteamWorks:

RequestGlobalAchievementPercentages

Example:

Steam.UserStats.RequestGlobalAchievementPercentages(function(data, err)
    if not err and data.m_eResult == Steam.k_EResultOK then
        local ok, pct = Steam.UserStats.GetAchievementAchievedPercent('ach_name')
        print('Worldwide unlock rate:', pct .. '%')
    end
end)
UserStats.RequestGlobalStats(nHistoryDays, callback)

πŸ€– Auto-generated binding

Parameters:
  • nHistoryDays (int) –

  • callback (function) – CallResult callback receiving struct GlobalStatsReceived_t and a boolean

Returns:

(uint64) SteamAPICall_t handle for this async call. The result is delivered via the callback parameter when Steam.RunCallbacks() is called.

SteamWorks:

RequestGlobalStats

Example:

Steam.UserStats.RequestGlobalStats(7, function(data, err)
    if not err and data.m_eResult == Steam.k_EResultOK then
        local ok, total = Steam.UserStats.GetGlobalStatInt64('total_kills')
        print('Global kills (last 7 days):', total)
    end
end)
UserStats.RequestUserStats(steamIDUser, callback)

πŸ€– Auto-generated binding

Parameters:
  • steamIDUser (uint64 - CSteamID) –

  • callback (function) – CallResult callback receiving struct UserStatsReceived_t and a boolean

Returns:

(uint64) SteamAPICall_t handle for this async call. The result is delivered via the callback parameter when Steam.RunCallbacks() is called.

SteamWorks:

RequestUserStats

Example:

Steam.UserStats.RequestUserStats(playerSteamID, function(data, err)
    if err or data.m_eResult ~= Steam.k_EResultOK then
        print('Failed to get user stats')
        return
    end
    local ok, kills = Steam.UserStats.GetUserStatInt32(playerSteamID, 'kills')
    print('Player kills:', kills)
end)
UserStats.ResetAllStats(bAchievementsToo)

πŸ€– Auto-generated binding

Parameters:

bAchievementsToo (bool) –

Returns:

(bool) Return value

SteamWorks:

ResetAllStats

Example:

if dev_mode and keypressed('f10') then
    Steam.UserStats.ResetAllStats(true)
end
UserStats.SetAchievement(pchName)

πŸ€– Auto-generated binding

Parameters:

pchName (str?) – The β€˜API Name’ of the achievement

Returns:

(bool) Return value

SteamWorks:

SetAchievement

Unlocks an achievement. Call StoreStats() to persist.

Example:

if achievementConditionSatisfied() then
    Steam.UserStats.SetAchievement('ach_name')
    Steam.UserStats.StoreStats()  -- shows overlay notification
end
UserStats.SetStatFloat(pchName, fData)

πŸ€– Auto-generated binding

Parameters:
  • pchName (str?) –

  • fData (float) –

Returns:

(bool) Return value

SteamWorks:

SetStat

Signature differences from C++ API:

  • In C++, this is an overloaded method called SetStat. luasteam exposes each overload as a distinct function with a type suffix.

Example:

Steam.UserStats.SetStatFloat('accuracy', 0.75)
Steam.UserStats.StoreStats()
UserStats.SetStatInt32(pchName, nData)

πŸ€– Auto-generated binding

Parameters:
  • pchName (str?) –

  • nData (int) –

Returns:

(bool) Return value

SteamWorks:

SetStat

Signature differences from C++ API:

  • In C++, this is an overloaded method called SetStat. luasteam exposes each overload as a distinct function with a type suffix.

Example:

Steam.UserStats.SetStatInt32('kills', 43)
Steam.UserStats.StoreStats()
UserStats.StoreStats()

πŸ€– Auto-generated binding

Returns:

(bool) Return value

SteamWorks:

StoreStats

Stores the current stats and achievements on the server. This will cause a callback when complete.

Example:

Steam.UserStats.SetStatInt32('kills', 100)
Steam.UserStats.StoreStats()
UserStats.UpdateAvgRateStat(pchName, flCountThisSession, dSessionLength)

πŸ€– Auto-generated binding

Parameters:
  • pchName (str?) –

  • flCountThisSession (float) –

  • dSessionLength (float) –

Returns:

(bool) Return value

SteamWorks:

UpdateAvgRateStat

Example:

-- Track rolling average of score per session length
Steam.UserStats.UpdateAvgRateStat('avg_score_per_hour', sessionScore, sessionSeconds / 3600)
Steam.UserStats.StoreStats()
UserStats.UploadLeaderboardScore(hSteamLeaderboard, eLeaderboardUploadScoreMethod, nScore, pScoreDetails, cScoreDetailsCount, callback)

πŸ€– Auto-generated binding

Parameters:
  • hSteamLeaderboard (uint64 - SteamLeaderboard_t) –

  • eLeaderboardUploadScoreMethod (int - ELeaderboardUploadScoreMethod) –

  • nScore (int) –

  • pScoreDetails (int[]?) –

  • cScoreDetailsCount (int) – size of the input array pScoreDetails

  • callback (function) – CallResult callback receiving struct LeaderboardScoreUploaded_t and a boolean

Returns:

(uint64) SteamAPICall_t handle for this async call. The result is delivered via the callback parameter when Steam.RunCallbacks() is called.

SteamWorks:

UploadLeaderboardScore

Uploads a user score to a specified leaderboard.

Example:

local function uploadScoresHelper(handle)
    local score = getScore()
    local KeepBest = Steam.k_ELeaderboardUploadScoreMethodKeepBest
    Steam.UserStats.UploadLeaderboardScore(handle, KeepBest, score, nil, 0, function(data, err)
        if err or data.m_bSuccess == 0 then
            print('Upload score failed')
        else
            print('Upload score success. New rank is: ' .. data.m_nGlobalRankNew)
        end
    end)
end

Callbacks

UserStats.OnUserStatsReceived()

Callback for UserStatsReceived_t

callback(data) receives:

  • data.m_nGameID (uint64)

  • data.m_eResult (int - EResult)

  • data.m_steamIDUser (uint64 - CSteamID)

Example:

function Steam.UserStats.OnUserStatsReceived(data)
    if data.m_eResult == Steam.k_EResultOK then
        print('Stats loaded for user:', tostring(data.m_steamIDUser))
    end
end
UserStats.OnUserStatsStored()

Callback for UserStatsStored_t

callback(data) receives:

  • data.m_nGameID (uint64)

  • data.m_eResult (int - EResult)

Example:

function Steam.UserStats.OnUserStatsStored(data)
    if data.m_eResult == Steam.k_EResultOK then
        print('Stats saved successfully')
    else
        print('Stats save failed:', data.m_eResult)
    end
end
UserStats.OnUserAchievementStored()

Callback for UserAchievementStored_t

callback(data) receives:

  • data.m_nGameID (uint64)

  • data.m_bGroupAchievement (bool)

  • data.m_rgchAchievementName (string)

  • data.m_nCurProgress (int)

  • data.m_nMaxProgress (int)

Example:

function Steam.UserStats.OnUserAchievementStored(data)
    print('Achievement stored:', data.m_rgchAchievementName)
    if data.m_nMaxProgress > 0 then
        print(data.m_nCurProgress .. '/' .. data.m_nMaxProgress)
    end
end
UserStats.OnLeaderboardFindResult()

Callback for LeaderboardFindResult_t

callback(data) receives:

  • data.m_hSteamLeaderboard (uint64 - SteamLeaderboard_t)

  • data.m_bLeaderboardFound (int)

Example:

function Steam.UserStats.OnLeaderboardFindResult(data)
    if data.m_bLeaderboardFound then
        print('Leaderboard handle:', tostring(data.m_hSteamLeaderboard))
    end
end
UserStats.OnLeaderboardScoresDownloaded()

Callback for LeaderboardScoresDownloaded_t

callback(data) receives:

  • data.m_hSteamLeaderboard (uint64 - SteamLeaderboard_t)

  • data.m_hSteamLeaderboardEntries (uint64 - SteamLeaderboardEntries_t)

  • data.m_cEntryCount (int)

UserStats.OnLeaderboardScoreUploaded()

Callback for LeaderboardScoreUploaded_t

callback(data) receives:

  • data.m_bSuccess (int)

  • data.m_hSteamLeaderboard (uint64 - SteamLeaderboard_t)

  • data.m_nScore (int)

  • data.m_bScoreChanged (int)

  • data.m_nGlobalRankNew (int)

  • data.m_nGlobalRankPrevious (int)

Example:

function Steam.UserStats.OnLeaderboardScoreUploaded(data)
    if data.m_bSuccess ~= 0 then
        print('New rank:', data.m_nGlobalRankNew)
    end
end
UserStats.OnNumberOfCurrentPlayers()

Callback for NumberOfCurrentPlayers_t

callback(data) receives:

  • data.m_bSuccess (int)

  • data.m_cPlayers (int)

UserStats.OnUserStatsUnloaded()

Callback for UserStatsUnloaded_t

callback(data) receives:

  • data.m_steamIDUser (uint64 - CSteamID)

UserStats.OnUserAchievementIconFetched()

Callback for UserAchievementIconFetched_t

callback(data) receives:

  • data.m_nGameID (uint64 - CGameID)

  • data.m_rgchAchievementName (string)

  • data.m_bAchieved (bool)

  • data.m_nIconHandle (int)

UserStats.OnGlobalAchievementPercentagesReady()

Callback for GlobalAchievementPercentagesReady_t

callback(data) receives:

  • data.m_nGameID (uint64)

  • data.m_eResult (int - EResult)

Example:

function Steam.UserStats.OnGlobalAchievementPercentagesReady(data)
    if data.m_eResult == Steam.k_EResultOK then
        local ok, pct = Steam.UserStats.GetAchievementAchievedPercent('first_kill')
        print('First kill achievement: ' .. pct .. '% of players')
    end
end
UserStats.OnLeaderboardUGCSet()

Callback for LeaderboardUGCSet_t

callback(data) receives:

  • data.m_eResult (int - EResult)

  • data.m_hSteamLeaderboard (uint64 - SteamLeaderboard_t)

UserStats.OnGlobalStatsReceived()

Callback for GlobalStatsReceived_t

callback(data) receives:

  • data.m_nGameID (uint64)

  • data.m_eResult (int - EResult)

UserStats.OnGSStatsUnloaded()

Callback for GSStatsUnloaded_t

callback(data) receives:

  • data.m_steamIDUser (uint64 - CSteamID)