ISteamFriends

List of Functions

List of Callbacks

Function Reference

friends.activateGameOverlay(dialog)
Parameters:

dialog (string) – The dialog to open. Valid options are: “friends”, “community”, “players”, “settings”, “officialgamegroup”, “stats”, “achievements”.

Returns:

nothing

SteamWorks:

ActivateGameOverlay

Activates the Steam Overlay to a specific dialog.

Example:

Steam.friends.activateGameOverlay('stats')
friends.activateGameOverlayToWebPage(url)
Parameters:

url (string) – The webpage to open. (A fully qualified address with the protocol is required, e.g. “http://www.steampowered.com”)

Returns:

nothing

SteamWorks:

ActivateGameOverlayToWebPage

Activates Steam Overlay web browser directly to the specified URL.

Example:

Steam.friends.activateGameOverlayToWebPage('https://www.google.com')
friends.getFriendPersonaName(steam_id)
Parameters:

steam_id (uint64) – The Steam ID of the other user.

Returns:

(string) The current users persona name. Returns an empty string (“”), or “[unknown]” if the Steam ID is invalid or not known to the caller.

SteamWorks:

GetFriendPersonaName

Gets the specified user’s persona (display) name.

This will only be known to the current user if the other user is in their friends list, on the same game server, in a chat room or lobby, or in a small Steam group with the local user.

Example:

steam_id = getSteamIdSomehow()
print("Friend's name is:", Steam.friends.getFriendPersonaName(steam_id))
friends.setRichPresence(key, value)
Parameters:
  • key (string) –

    The rich presence key to set. Maximum length is 64 characters.

    Valve has a few special keys which you can read about in their documentation.

    Besides those special keys, you can also use any arbitrary key for substition in steam_display.

  • value (string) – The value to associate with the rich presence key. Maximum length is 256 characters. If this is set to '' then the key is removed if it’s set.

Returns:

(boolean) This function returns true if the rich presence was was set successfully.

It returns false under the following conditions:

  • The key or the value were too long.

  • The user has reached maximum amount of rich presence keys: 20.

SteamWorks:

SetRichPresence

Sets a Rich Presence key/value for the current user that is shared with friends. You can use the Rich Presence Tester to test whether or not this is working.

Example:

local success = Steam.friends.setRichPresence('steam_display', '#StatusFull')
local success = Steam.friends.setRichPresence('text', 'Fighting the Last Boss')

Localization

To get the most out of this feature, you’ll want to set up some Localization options.

You may find that Valve’s suggestion of how to use localization is more difficult to use than it needs to be. In this case, I suggest using a setup like this where you can manage all of the text yourself:

rich_presence_localization.vdf:

"lang"
{
    "english"
    {
        "tokens"
        {
            "#StatusFull" "%text%"
        }
    }
}
friends.inviteUserToGame(steamIDFriend, connect_string)
Parameters:
  • steamIDFriend (uint64) – The Steam ID of the friend to invite.

  • connect_string (string) – A string that lets the friend know how to join the game (I.E. the game server IP). This can not be longer than 256 characters.

Returns:

(boolean) true if invite was sent successfully, false under the following conditions:

  • The Steam ID provided to steamIDFriend` was invalid.

  • The Steam ID provided to steamIDFriend` is not a friend or does not share the same Steam Group as the current user.

  • The value provided to connect_string was too long.

SteamWorks:

InviteUserToGame

Invites the given user steamIDFriend to the game identified by connect_string

The connect_string can be received by the application on the joining player in two ways depending on whether the game is already running or it is being launched.

You should implement the callback friends.onGameRichPresenceJoinRequested() to receive the connect_string on the invitee and ultimately establish the connection on an already running application.

You should also call apps.getLaunchCommandLineParams() on game launch and check if the game was launched with the connect_string, and immediately take steps to establish the connection.

To add UI elements to invite or join the game over the Steam overlay or friends menu, also set the rich presence key connect with the connect_string value and clear it when the game is no longer available to join.

Example:

local friend_id = getSteamIdSomehow()
local success = Steam.friends.inviteUserToGame(friend_id, 'serverID=birthday_party')
friends.getFriendCount(flags)
Parameters:

flags (number) – A combined union (binary “or”) of one or more “friend flags”.

Returns:

(number) The number of users that meet the specified criteria. -1 if the current user is not logged on.

SteamWorks:

GetFriendCount

For the flags parameter, see the steam docs about possible values, they are not duplicated in luasteam. Most of the time, you want to use 0x4, which means “all that user’s friends”. With LuaJIT, you can use bit.bor to do bitwise or.

Gets the number of users the client knows about who meet a specified criteria. (Friends, blocked, users on the same server, etc)

This can be used to iterate over all of the users by calling friends.getFriendByIndex() to get the Steam IDs of each user.

Example:

-- This will print all your friends' name
local count = luasteam.friends.getFriendCount(0x4)
for i = 1, count do
    local id = luasteam.friends.getFriendByIndex(i - 1, 0x4)
    print(luasteam.friends.getFriendPersonaName(id))
end
friends.getFriendByIndex(index, flags)
Parameters:
  • index (number) – An index between 0 and friends.getFriendCount() (this is not 1-indexed!!)

  • flags (number) – A combined union (binary “or”) of one or more “friend flags”. This must be the same value as used in the previous call to friends.getFriendCount()

Returns:

(uint64) SteamID of the user at the given index. 0 on invalid indices.

SteamWorks:

GetFriendByIndex

Gets the Steam ID of the user at the given index.

See friends.getFriendCount() for an example usage.

Note

You must call friends.getFriendCount() before calling this.

Callbacks Reference

Warning

Remember callbacks are functions that you should override in order to receive the events, and not call directly.

Also, you must constantly call Steam.runCallbacks() (preferably in your game loop) in order for your callbacks to be called.

friends.onGameOverlayActivated(data)
Parameters:

data (table) –

A table similar to GameOverlayActivated_t

  • data.active (boolean) – true if it’s just been activated, otherwise false.

Returns:

nothing

SteamWorks:

GameOverlayActivated_t

Posted when the Steam Overlay activates or deactivates. The game can use this to be pause or resume single player games.

Example:

function Steam.friends.onGameOverlayActivated(data)
    print('Overlay active is', data.active)
end
friends.onGameRichPresenceJoinRequested(data)
Parameters:

data (table) –

A table similar to GameRichPresenceJoinRequested_t

  • data.steamIDFriend (uint64) – The friend they joined through. This will be invalid if not directly via a friend.

  • data.connect (string) – The value associated with the “connect” Rich Presence key.

Returns:

nothing

SteamWorks:

GameRichPresenceJoinRequested_t

Called when the user tries to join a game from their friends list or after a user accepts an invite by a friend with friends.inviteUserToGame().

Example:

function Steam.friends.onGameRichPresenceJoinRequested(data)
    if game_state == 'main_menu' then
        initiateJoinGame(data.connect)
    else
        showDialog("you can only join a game from the main menu")
    end
end