Skip to content

Instantly share code, notes, and snippets.

@norbert-k
Created June 26, 2019 18:42
Show Gist options
  • Save norbert-k/fdcb6742010ec27db76c848eadb7b3ab to your computer and use it in GitHub Desktop.
Save norbert-k/fdcb6742010ec27db76c848eadb7b3ab to your computer and use it in GitHub Desktop.
SteamMasterServer.ServerQuery() not calling back SteamMasterServer.QueryCallback callback.
using System;
using SteamKit2;
namespace SteamServerScraper
{
class DebugLogListener : IDebugListener
{
public void WriteLine(string category, string msg)
{
String timestamp = DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss.fffffff ");
Console.WriteLine("DebugLogListener[{2}] - {0}: {1}", category, msg, timestamp);
}
}
class Program
{
private static SteamClient steamClient;
private static SteamUser steamUser;
private static SteamMasterServer steamMasterServer;
private static CallbackManager callbackManager;
private static bool isRunning;
private const uint RustAppId = 252490;
static void Main(string[] args)
{
DebugLog.AddListener(new DebugLogListener());
DebugLog.Enabled = true;
steamClient = new SteamClient();
callbackManager = new CallbackManager(steamClient);
steamUser = steamClient.GetHandler<SteamUser>();
steamMasterServer = steamClient.GetHandler<SteamMasterServer>();
callbackManager.Subscribe<SteamClient.ConnectedCallback>(OnConnected);
callbackManager.Subscribe<SteamClient.DisconnectedCallback>(OnDisconnected);
callbackManager.Subscribe<SteamUser.LoggedOnCallback>(OnLoggedOn);
callbackManager.Subscribe<SteamUser.LoggedOffCallback>(OnLoggedOff);
// Subscribe to SteamMasterServer.ServerQuery callback
callbackManager.Subscribe<SteamMasterServer.QueryCallback>(OnMasterServerQueryCallback);
isRunning = true;
Console.WriteLine("Connecting to Steam...");
steamClient.Connect();
while (isRunning)
{
callbackManager.RunWaitCallbacks();
}
}
private static void OnMasterServerQueryCallback(SteamMasterServer.QueryCallback queryCallback)
{
// Print out server addresses
foreach (var server in queryCallback.Servers)
{
Console.WriteLine(server.EndPoint.Address);
}
}
private static void OnConnected(SteamClient.ConnectedCallback connectedCallback)
{
Console.WriteLine("Connected to Steam! Logging in anonymously");
steamUser.LogOnAnonymous();
}
private static void OnDisconnected(SteamClient.DisconnectedCallback disconnectedCallback)
{
Console.WriteLine("Disconnected from Steam");
isRunning = false;
}
private static void OnLoggedOn(SteamUser.LoggedOnCallback loggedOnCallback)
{
Console.WriteLine("Successfully logged on anonymously!");
// When logged in start ServerQuery
steamMasterServer.ServerQuery(RustServerQueryDetails());
Console.WriteLine("Querying Steam Master Server...");
}
private static void OnLoggedOff(SteamUser.LoggedOffCallback loggedOffCallback)
{
Console.WriteLine("Logged off of Steam: {0}", loggedOffCallback.Result);
}
static SteamMasterServer.QueryDetails RustServerQueryDetails()
{
return new SteamMasterServer.QueryDetails
{
Region = ERegionCode.World,
AppID = RustAppId,
MaxServers = 10000
};
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment