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}" );⤶ }⤶ }⤶ ```⤶ ⤶