Enemy Territory - Wolfenstein server status and master server list query tool.

  • 5 heads
  • 4 releases
  • git clone https://www.klva.cz/src/etwolf/status-master-query.git
  • Reverted the package name. 0671cdb, 30 Nov 2020
    src/
    tests/
    .gitattributes
    .gitignore
    composer.json
    readme.md

    Wolfenstein: ET server status and master server list query tool

    This simple library provides easy ET server status and master server list retrieval. I'm not going to implement any more features, enhancements nor fixes, since the codes does what I expect and I' not aware of any critical issue.

    Installation

    composer require amk/etwsl
    

    Getting serverlist

    All you need to know is the hostname of a master server. Currently, there are two reliable master servers:

    Getting the list is pretty easy!

    $servers = ETWSL\MasterQuery::read('etmaster.idsoftware.com');
    

    Returned array will contain addresses of indexed servers formatted as ip:port.

    Array (
    	'12.13.14.15:27961',
    	'237.12.12.10:27960',
    	'237.12.12.10:27800',
    )
    

    There is about 400 servers these days. Hey, only 2.60b (2.60d respectively) are returned (protocol 84). Fork and make the protocol optional, if you care.

    Keep in mind, that the fetching list takes few seconds, now there is 10 seconds timeout (third argument). It will work with about 3 - 4 seconds too (less servers may be retured).

    Getting serverstatus

    Server status is returned almost raw, just represented as the array.

    $status = ETWSL\ServerQuery::read('237.12.12.10', 27960);
    

    This is what the result can look like (it's really up to server):

    Array (
    	'mod_version' => '3.2.6',
    	'g_bluelimbotime' => 20000,
    	'g_redlimbotime' => 30000,
    	'gamename' => 'etpro',
    	'g_gametype' => 3,
    	'g_antilag' => 1,
    	'g_voteFlags' => 0,
    	'g_needpass' => 0,
    	'g_friendlyFire' => 1,
    	'mapname' => 'sp_delivery_te',
    	'protocol' => 84,
    	'timelimit' => 20,
    	'version' => 'ET 2.60d linux-i386 Feb  6 2012',
    	'sv_hostname' => '^1Server hostname ^7with colors',
    	'sv_privateClients' => 2,
    	'sv_maxclients' => 18,
    	'players' => Array (
    		Array (
    			'name' => '^7hacafrakus^1*',
    			'ping' => 48,
    			'score' => 187,
    			'team' => 2
    		),
    		Array (
    			'name' => '^0slax',
    			'ping' => 48,
    			'score' => 215,
    			'team' => 1
    		),
    		Array (
    			'name' => 'a pervert',
    			'ping' => 69,
    			'score' => 0,
    			'team' => 0
    		)
    	)
    )
    

    Licence

    Seriously, Do What The Fuck You Want To.