enum{
	SLIST_HOSTCACHEVIEWCOUNT,
	SLIST_HOSTCACHETOTALCOUNT,
	SLIST_MASTERQUERYCOUNT,
	SLIST_MASTERREPLYCOUNT,
	SLIST_SERVERQUERYCOUNT,
	SLIST_SERVERREPLYCOUNT,
	SLIST_SORTFIELD,
	SLIST_SORTDESCENDING
};
float gethostcachevalue(float val) = #611
string gethostcachestring(float key, string server) =#612
void 	resethostcachemasks(void) = #615;
void 	sethostcachemaskstring(float mask, float fld, string str, float op) = #616;
void	sethostcachemasknumber(float mask, float fld, float num, float op) = #617;
void 	resorthostcache(void) = #618;
void	sethostcachesort(float fld, float descending) = #619;
void	refreshhostcache(void) = #620;
float	gethostcachenumber(float fld, float hostnr) = #621;
float	gethostcacheindexforkey(string key) = #622;
void	addwantedhostcachekey(string key) = #623;
to print out a list of all server addresses:
refreshhostcache();
waitabit();
shownservers = gethostcachevalue(SLIST_HOSTCACHEVIEWCOUNT);
for(i = 0; i < shownservers; i++)
print(gethostcachestring(gethostcacheindexforkey("address"), i), "\n");
obviously cache the result(s) of gethostcacheindexforkey. Other fields include 'map', 'name', 'ping', 'game', 'numplayers', 'maxplayers'. There are some other fields, and servers are potentially able to provide whatever fields they wish via their serverinfo.
more complex use is available if you wish to ask the engine to sort them or filter them, in which case configure that in response to user-clicks, rather than every frame/refresh.
If you're using FTE, the engine might re-sort/filter/add servers to the list each time gethostcachevalue is called to query the counts - note that currently you must query it or FTE might drop packets *cough*.
			