Facepunch.Steamworks Wiki

Revision Difference

Listing_Workshop_Items#523919

<cat>code.workshop</cat> <title>Listing Workshop Items</title> At some point you'll probably want to grab a list of workshop items to show to your players. This could be anything from addons, maps, screenshots, saved games, demo files etc. Valve don't specify what they upload - you do. # Queries I've tried to make things easy and hopefully as a c# user it'll seem familar. The following queries screenshots that have been created by your friends. ``` var q = Ugc.Query.Screenshots.CreatedByFriends(); ``` This is the same except they're sorted by creation date ``` var q = Ugc.Query.Screenshots .CreatedByFriends() .SortByCreationDate(); ``` This is the same except tagged "funny" ``` var q = Ugc.Query.Screenshots .CreatedByFriends() .WithTag( "funny" ) .SortByCreationDate(); ``` # Item Types The types correspond to the enum [EUGCMatchingUGCType](https://partner.steamgames.com/doc/api/ISteamUGC#EUGCMatchingUGCType). Valve does a good job of explaining the categories there. So you can search all items with ak47 in the title/description like: ``` var q = Ugc.Query.Items .WhereSearchText( "ak47" ) .RankedByTextSearch(); ``` # Conditional The query doesn't have to be created on one line ``` var q = Ugc.Query.Items .WithTag( "funny" ); if ( order ) q = q.SortByCreationDate(); else q = q.SortByCreationDateAsc() ``` # Pages Results are returned in pages. And the page number starts at 1. ``` var page = await q.GetPageAsync( 1 ); if ( page.HasValue ) { Log( $"This page has {page.Value.ResultCount}" ); foreach ( Ugc.Item entry in page.Value.Entries ) { Log( $"Entry: {entry.Title}" ); } } ```