source_server 2.0.1-beta source_server: ^2.0.1-beta copied to clipboard
A dart implementation of Source's Query Protocol and RCON from the developer.valvesoftware.com wiki.
SourceSerer #
A library to connect to Source Dedicated Servers [CS:GO, CSS, TF2, ...] and support for Minecraft Query Protocol
Get started #
Import the library (make sure to check for the latest version).
depedencies:
source_server: ^1.1.0
And call the SourceServer
constructor.
It contains both RconServer
and QueryServer
instances, if you wish to use just one protocol you can still use one of those classes.
// The SourceServer constructor requires an InternetAddress and a port, if you wish to
// use the rcon connection as well you need to provide a password as well.
var server = SourceServer((await InternetAddress.lookup('hexah.net')).first, 27015);
The only required parameter is the first, password, the ip and port by default are: localhost:27015
To establish a connection to the server call the connect
method. It will return a Future<void>
that will be completed when the connection to the server is successfully established.
await server.connect();
Sending commands to the RCON #
Use
var reply = await server.send('status');
the method command
will return a Future<String>
what will return the command reply.
the SourceServer
provides also a way to parse the status command.
var status = wait server.getStatus();
Example reply:
{
server:
{
hostname: Server name,
version: 1.36.8.2/13682 886/7424 secure [G:1:xxxxxxx],
udp/ip: xxx.xx.xxx.xx:27015 (public ip: xxx.xx.xxx.xx),
os: Linux,
type: community dedicated,
map: de_mirage,
players: 0 humans, 0 bots (16/0 max) (not hibernating)
},
//If the server is not empty it will return a list containing all the players in the server (and it's info)
players: []
}
Sending commands using the query protocol #
Look in the API documentation for all the available methods, here is an example:
var info = server.getInfo();
Returns a Future<Map>
holding all the (parsed) server info.
Example for Minecraft Implementation #
(Currently it's only supported the RconProtocol)
var server = MinecraftServer(InternetAddress('127.0.0.1'), 27015, 'mypassword');
await server.connect();
print(await server.send('say hello'));
server.close();
TODO #
Check the issues page on github