GW2SDK 1.0.0-preview.13
See the version list below for details.
dotnet add package GW2SDK --version 1.0.0-preview.13
NuGet\Install-Package GW2SDK -Version 1.0.0-preview.13
<PackageReference Include="GW2SDK" Version="1.0.0-preview.13" />
paket add GW2SDK --version 1.0.0-preview.13
#r "nuget: GW2SDK, 1.0.0-preview.13"
// Install GW2SDK as a Cake Addin #addin nuget:?package=GW2SDK&version=1.0.0-preview.13&prerelease // Install GW2SDK as a Cake Tool #tool nuget:?package=GW2SDK&version=1.0.0-preview.13&prerelease
About
GW2SDK provides classes for interacting with the Guild Wars 2 API and game client. This package enables you to fetch information about the game, the player's account, PvP seasons, WvW matches and the in-game economy. It also provides realtime information from the game client such as the player's current character and the current map.
Key features
Gw2Client
provides access to the Guild Wars 2 APIGameLink
provides realtime information from the game client (Windows only)
How to use
How to use the Gw2Client
to fetch the current prices of all tradable items in the game:
using System;
using System.Net.Http;
using System.Threading.Tasks;
using GuildWars2;
namespace PackageReadme;
internal class Gw2ClientProgram
{
public static async Task Main(string[] args)
{
// Create an instance of the Gw2Client, which depends on HttpClient
using var httpClient = new HttpClient();
var gw2 = new Gw2Client(httpClient);
// Print a table header
PrintTableHeader();
// Fetch the current prices of all items
await foreach (var (itemPrice, _) in gw2.Commerce.GetItemPricesBulk())
{
// The item price contains the item's ID, which can be used to fetch the item's name
var (item, _) = await gw2.Items.GetItemById(itemPrice.Id);
// Print the item's name and its current highest buyer and lowest seller
PrintTableRow(item.Name, itemPrice.BestBid, itemPrice.BestAsk);
}
void PrintTableHeader()
{
/*
================================================================================================================================================================
| Item | Highest buyer | Lowest seller |
================================================================================================================================================================
*/
Console.WriteLine(new string('=', 160));
Console.WriteLine($"| {"Item",-50} | {"Highest buyer",-50} | {"Low
void PrintTableHeader()est seller",-50} |");
Console.WriteLine(new string('=', 160));
}
void PrintTableRow(string item, Coin highestBuyer, Coin lowestSeller)
{
/*
| <item> | <highestBuyer> | <lowestSeller> |
*/
Console.WriteLine($"| {item,-50} | {highestBuyer,-50} | {lowestSeller,-50} |");
}
}
}
How to use the GameLink
to print the player's name and current map to the console:
using GuildWars2;
using System;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
using GuildWars2;
namespace PackageReadme;
internal class GameLinkProgram
{
public static async Task Main(string[] args)
{
if (!GameLink.IsSupported())
{
Console.WriteLine("GameLink is only supported on Windows!");
return;
}
Console.WriteLine("GameLink is starting! (Ensure the game is running and that you are loaded into a map.)");
// Pre-fetch all maps from the API, they are used to display the player's current map
using var http = new HttpClient();
var gw2 = new Gw2Client(http);
var (maps, _) = await gw2.Exploration.GetMapSummaries();
// Choose an interval to indicate how often you want to receive fresh data from the game
// For example, at most once every second
// Default: no limit, every change in the game state will be available immediately
var refreshInterval = TimeSpan.FromSeconds(1);
// Open the game link with the chosen refresh interval
var gameLink = GameLink.Open(refreshInterval);
// Subscribe to the game link to start receiving game state updates
var subscription = gameLink.Subscribe(
tick =>
{
// Each 'tick' contains information about the player's character and actions, among other things
var player = tick.GetIdentity();
// The identity can be missing due to JSON errors, always check for null
if (player != null)
{
// Use the player's map ID to find the map name in the pre-fetched list of maps
var map = maps.Single(map => map.Id == player.MapId);
// Print the player's name and current map
Console.WriteLine($"[{tick.UiTick}] Your name is {player.Name}.");
Console.WriteLine(
$"[{tick.UiTick}] You are currently in {map.Name} ({tick.Context.ServerAddress})."
);
Console.WriteLine();
}
}
);
// Wait for the user to press Enter
Console.ReadLine();
// Stop the data stream and close the game link
subscription.Dispose();
gameLink.Dispose();
}
}
Additional documentation
Feedback & contributing
GW2SDK is released as open source under the MIT license. You are welcome to create an issue if you find something is missing or broken, or a discussion for other feedback, questions or ideas. Check out the GitHub page to find more ways to contribute.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 is compatible. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.6.2
- Microsoft.NET.ILLink.Tasks (>= 8.0.2)
- System.Runtime.InteropServices.RuntimeInformation (>= 4.3.0)
- System.Text.Json (>= 8.0.2)
-
.NETStandard 2.0
- Microsoft.NET.ILLink.Tasks (>= 8.0.2)
- System.Text.Json (>= 8.0.2)
-
net6.0
- Microsoft.NET.ILLink.Tasks (>= 8.0.2)
- System.Text.Json (>= 8.0.2)
-
net8.0
- Microsoft.NET.ILLink.Tasks (>= 8.0.2)
- System.Text.Json (>= 8.0.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.4.1 | 110 | 11/14/2024 |
1.4.0 | 83 | 11/5/2024 |
1.3.0 | 122 | 11/3/2024 |
1.2.0 | 94 | 10/23/2024 |
1.1.2 | 89 | 10/13/2024 |
1.1.1 | 88 | 10/11/2024 |
1.1.0 | 216 | 10/5/2024 |
1.0.1 | 324 | 7/7/2024 |
1.0.0 | 186 | 5/20/2024 |
1.0.0-rc.3 | 79 | 5/17/2024 |
1.0.0-rc.2 | 178 | 4/6/2024 |
1.0.0-rc.1 | 84 | 3/30/2024 |
1.0.0-preview.15 | 62 | 3/25/2024 |
1.0.0-preview.14 | 112 | 3/25/2024 |
1.0.0-preview.13 | 342 | 2/18/2024 |
1.0.0-preview.12 | 426 | 12/11/2023 |
1.0.0-preview.11 | 114 | 12/5/2023 |
1.0.0-preview.10 | 183 | 11/12/2023 |
1.0.0-preview.9 | 163 | 11/5/2023 |
1.0.0-preview.8 | 84 | 11/4/2023 |
1.0.0-preview.7 | 136 | 10/30/2023 |
1.0.0-preview.6 | 94 | 10/29/2023 |
1.0.0-preview.5 | 116 | 10/28/2023 |
1.0.0-preview.4 | 170 | 10/23/2023 |
1.0.0-preview.3 | 113 | 10/21/2023 |
1.0.0-preview.2 | 84 | 10/18/2023 |
1.0.0-preview.1 | 90 | 10/15/2023 |