jacklul/q3serverlist

一个用于查询基于Quake 3的主服务器及其游戏服务器的简单库

2.1.0 2023-06-04 17:43 UTC

This package is auto-updated.

Last update: 2024-09-04 20:14:17 UTC


README

一个用于查询基于Quake 3的主服务器及其游戏服务器的简单库。

  • 版本 1.x.x 使用 fsockopen(已不再支持)
  • 版本 2.x.x 使用 sockets 扩展

对于旧版本,请检查分支。

主服务器兼容性

任何基于Quake 3的主服务器,包括

  • Quake 3 Arena (master.quake3arena.com:27950, 协议 68)
  • Enemy Territory (etmaster.idsoftware.com:27950, 协议 84)
  • Return to Castle Wolfenstein (wolfmaster.idsoftware.com:27950, 协议 57)
  • Jedi Knight 2 (masterjk2.ravensoft.com:29060, 协议 16)
  • Jedi Knight: Jedi Academy (masterjk3.ravensoft.com:29060, 协议 26)
  • Call of Duty 4: Modern Warfare (cod4master.activision.com:20810, 协议 6)

... 以及更多!

安装

使用Composer进行安装

$ composer require jacklul/q3serverlist

用法

use jacklul\q3serverlist\MasterServer;
use jacklul\q3serverlist\Server;

require(__DIR__ . '/vendor/autoload.php');

$ms = new MasterServer('master.quake3arena.com', 27950, 68);
$servers = $ms->getServers(); // Second call will always return cached data, same with Server->getInfo and Server->getStatus

/** @var Server $server */
foreach ($servers as $server) { 
	$info = $server->getInfo();	// 'getinfo' request usually returns map name
	
	// Find first server with map 'q3dm17' (The Longest Yard) and print it's status
	if (isset($info['mapname']) && $info['mapname'] === 'q3dm17') {
		print_r($server->getStatus());
		break;
	}
}

// You can get status/info variables magically like this:
$server->getMapname();

// To get variables that include '_' in their name use capitalization:
$server->getSvMaxclients(); // (sv_maxclients)

更多示例可在examples目录中找到。

许可

请参阅LICENSE