GW2SDK 2.0.0
dotnet add package GW2SDK --version 2.0.0
NuGet\Install-Package GW2SDK -Version 2.0.0
<PackageReference Include="GW2SDK" Version="2.0.0" />
paket add GW2SDK --version 2.0.0
#r "nuget: GW2SDK, 2.0.0"
// Install GW2SDK as a Cake Addin #addin nuget:?package=GW2SDK&version=2.0.0 // Install GW2SDK as a Cake Tool #tool nuget:?package=GW2SDK&version=2.0.0
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
API access using Gw2Client
:
using System;
using System.Net.Http;
using System.Threading.Tasks;
using GuildWars2;
using GuildWars2.Commerce.Prices;
using GuildWars2.Items;
namespace PackageReadme.Gw2ClientProgram;
internal class Program
{
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);
// Fetch the current prices of all items
await foreach (var itemPrice in gw2.Commerce.GetItemPricesBulk().ValueOnly())
{
// 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).ValueOnly();
// Print the item's name and its current highest buyer and lowest seller
PrintItem(item, itemPrice);
}
}
private static void PrintItem(Item item, ItemPrice price)
{
Console.WriteLine($"{"Item",-15}: {item.Name}");
Console.WriteLine($"{"Highest buyer",-15}: {price.BestBid}");
Console.WriteLine($"{"Lowest seller",-15}: {price.BestAsk}");
Console.WriteLine($"{"Bid-ask spread",-15}: {price.BidAskSpread}");
Console.WriteLine();
}
}
Game client access using GameLink
:
(This example also requires the System.Reactive package to be installed.)
using System;
using System.Net.Http;
using System.Threading.Tasks;
using GuildWars2;
namespace PackageReadme.GameLinkProgram;
internal class Program
{
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()
.AsDictionary(map => map.Id)
.ValueOnly();
// 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[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 was computed. 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. net9.0 is compatible. |
.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.Bcl.HashCode (>= 6.0.0)
- System.Runtime.InteropServices.RuntimeInformation (>= 4.3.0)
- System.Text.Json (>= 9.0.0)
-
.NETStandard 2.0
- Microsoft.Bcl.HashCode (>= 6.0.0)
- System.Text.Json (>= 9.0.0)
-
net8.0
- System.Text.Json (>= 9.0.0)
-
net9.0
- System.Text.Json (>= 9.0.0)
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 |
---|---|---|
2.0.0 | 94 | 12/8/2024 |
1.4.1 | 222 | 11/14/2024 |
1.4.0 | 92 | 11/5/2024 |
1.3.0 | 132 | 11/3/2024 |
1.2.0 | 102 | 10/23/2024 |
1.1.2 | 95 | 10/13/2024 |
1.1.1 | 96 | 10/11/2024 |
1.1.0 | 226 | 10/5/2024 |
1.0.1 | 330 | 7/7/2024 |
1.0.0 | 194 | 5/20/2024 |
1.0.0-rc.3 | 81 | 5/17/2024 |
1.0.0-rc.2 | 180 | 4/6/2024 |
1.0.0-rc.1 | 86 | 3/30/2024 |
1.0.0-preview.15 | 66 | 3/25/2024 |
1.0.0-preview.14 | 114 | 3/25/2024 |
1.0.0-preview.13 | 344 | 2/18/2024 |
1.0.0-preview.12 | 428 | 12/11/2023 |
1.0.0-preview.11 | 116 | 12/5/2023 |
1.0.0-preview.10 | 185 | 11/12/2023 |
1.0.0-preview.9 | 165 | 11/5/2023 |
1.0.0-preview.8 | 86 | 11/4/2023 |
1.0.0-preview.7 | 138 | 10/30/2023 |
1.0.0-preview.6 | 96 | 10/29/2023 |
1.0.0-preview.5 | 118 | 10/28/2023 |
1.0.0-preview.4 | 174 | 10/23/2023 |
1.0.0-preview.3 | 115 | 10/21/2023 |
1.0.0-preview.2 | 86 | 10/18/2023 |
1.0.0-preview.1 | 92 | 10/15/2023 |