예제 #1
0
void XonoticServerList_setSelected(entity me, float i)
{
	float save;
	save = me.selectedItem;
	SUPER(XonoticServerList).setSelected(me, i);
	/*
	if(me.selectedItem == save)
		return;
	*/
	if(me.nItems == 0)
		return;
	if(gethostcachevalue(SLIST_HOSTCACHEVIEWCOUNT) != me.nItems)
		return; // sorry, it would be wrong

	if(me.selectedServer)
		strunzone(me.selectedServer);
	me.selectedServer = strzone(gethostcachestring(SLIST_FIELD_CNAME, me.selectedItem));

	me.ipAddressBox.setText(me.ipAddressBox, me.selectedServer);
	me.ipAddressBox.cursorPos = strlen(me.selectedServer);
	me.ipAddressBoxFocused = -1;
}
void loadServerInfoNexuizServerInfoDialog(entity me, float i, entity slist)
{
	float m;
	string s, typestr, versionstr, rmversion, numh, maxp;

    var ip = gethostcachestring(SLIST_FIELD_CNAME, i);

	SLIST_FIELD_CNAME = gethostcacheindexforkey("cname");
	me.currentServerCName = strzone(ip);
	me.cnameLabel.setText(me.cnameLabel, me.currentServerCName);

    SLIST_FIELD_NAME = gethostcacheindexforkey("name");

    var clrname = db_get(slist.alt_hostnames_db, ip);

    if(clrname == "") {
        me.currentServerName = strzone(gethostcachestring(SLIST_FIELD_NAME, i));
        me.nameLabel.allowColors = FALSE;
    } else {
        me.currentServerName = strzone(clrname);
        me.nameLabel.allowColors = TRUE;
    }

    me.nameLabel.setText(me.nameLabel, me.currentServerName);

	SLIST_FIELD_QCSTATUS = gethostcacheindexforkey("qcstatus");
	s = gethostcachestring(SLIST_FIELD_QCSTATUS, i);
	m = tokenizebyseparator(s, ":");
	if(m > 1)
	{
		typestr = argv (0);
		versionstr = argv(1);
	}
	else
	{
		typestr = "N/A";
		versionstr = "N/A";
	}
	
	m = tokenizebyseparator(versionstr, "_rm-");
	rmversion = argv(1);

	me.currentServerType = gametype_Name_to_LongName(typestr); //strzone(typestr);
	me.typeLabel.setText(me.typeLabel, me.currentServerType);

	SLIST_FIELD_MAP = gethostcacheindexforkey("map");
	me.currentServerMap = strzone(gethostcachestring(SLIST_FIELD_MAP, i));
	me.mapLabel.setText(me.mapLabel, me.currentServerMap);

	SLIST_FIELD_PLAYERS = gethostcacheindexforkey("players");
	me.currentServerPlayers = strzone(gethostcachestring(SLIST_FIELD_PLAYERS, i));
	me.rawPlayerList.setPlayerList(me.rawPlayerList, me.currentServerPlayers);

	SLIST_FIELD_NUMHUMANS = gethostcacheindexforkey("numhumans");
	numh = ftos(gethostcachenumber(SLIST_FIELD_NUMHUMANS, i));
	SLIST_FIELD_MAXPLAYERS = gethostcacheindexforkey("maxplayers");
	maxp = ftos(gethostcachenumber(SLIST_FIELD_MAXPLAYERS, i));
	me.currentServerNumPlayers = strzone(strcat(numh,"/",maxp));
	me.numPlayersLabel.setText(me.numPlayersLabel, me.currentServerNumPlayers);

	SLIST_FIELD_NUMBOTS = gethostcacheindexforkey("numbots");
	s = ftos(gethostcachenumber(SLIST_FIELD_NUMBOTS, i));
	me.currentServerNumBots = strzone(s);
	me.numBotsLabel.setText(me.numBotsLabel, me.currentServerNumBots);

	SLIST_FIELD_MOD = gethostcacheindexforkey("mod");
	me.currentServerMod = strzone(gethostcachestring(SLIST_FIELD_MOD, i));
	me.modLabel.setText(me.modLabel, me.currentServerMod);

	me.currentServerVersion = strzone(versionstr);
	me.versionLabel.setText(me.versionLabel, me.currentServerVersion);
	me.currentServerRMLabel = strzone(if(rmversion && rmversion != "") strcat("This server is running RocketMinsta ", rmversion)
																  else strcat("This server is running Nexuiz ", versionstr));
	me.rmLabel.setText(me.rmLabel, me.currentServerRMLabel);

	SLIST_FIELD_PING = gethostcacheindexforkey("ping");
	s = ftos(gethostcachenumber(SLIST_FIELD_PING, i));
	me.currentServerPing = strzone(s);
	me.pingLabel.setText(me.pingLabel, me.currentServerPing);
}
예제 #3
0
void XonoticServerList_draw(entity me)
{
	float i, found, owned;

	if(me.currentSortField == -1)
	{
		me.setSortOrder(me, SLIST_FIELD_PING, +1);
		me.refreshServerList(me, 2);
	}
	else if(me.needsRefresh == 1)
	{
		me.needsRefresh = 2; // delay by one frame to make sure "slist" has been executed
	}
	else if(me.needsRefresh == 2)
	{
		me.needsRefresh = 0;
		me.refreshServerList(me, 0);
	}

	owned = ((me.selectedServer == me.ipAddressBox.text) && (me.ipAddressBox.text != ""));

	me.nItems = gethostcachevalue(SLIST_HOSTCACHEVIEWCOUNT);

	me.connectButton.disabled = ((me.nItems == 0) && (me.ipAddressBox.text == ""));
	me.infoButton.disabled = ((me.nItems == 0) || !owned);
	me.favoriteButton.disabled = ((me.nItems == 0) && (me.ipAddressBox.text == ""));

	found = 0;
	if(me.selectedServer)
	{
		for(i = 0; i < me.nItems; ++i)
			if(gethostcachestring(SLIST_FIELD_CNAME, i) == me.selectedServer)
			{
				if(i != me.selectedItem)
				{
					me.lastClickedServer = -1;
					me.selectedItem = i;
				}
				found = 1;
				break;
			}
	}
	if(!found)
		if(me.nItems > 0)
		{
			if(me.selectedItem >= me.nItems)
				me.selectedItem = me.nItems - 1;
			if(me.selectedServer)
				strunzone(me.selectedServer);
			me.selectedServer = strzone(gethostcachestring(SLIST_FIELD_CNAME, me.selectedItem));
		}

	if(owned)
	{
		if(me.selectedServer != me.ipAddressBox.text)
		{
			me.ipAddressBox.setText(me.ipAddressBox, me.selectedServer);
			me.ipAddressBox.cursorPos = strlen(me.selectedServer);
			me.ipAddressBoxFocused = -1;
		}
	}

	if(me.ipAddressBoxFocused != me.ipAddressBox.focused)
	{
		if(me.ipAddressBox.focused || me.ipAddressBoxFocused < 0)
			ServerList_Update_favoriteButton(NULL, me);
		me.ipAddressBoxFocused = me.ipAddressBox.focused;
	}

	SUPER(XonoticServerList).draw(me);
}
void XonoticServerInfoDialog_loadServerInfo(entity me, float i)
{
	float m, pure, freeslots, j, numh, maxp, numb;
	string s, typestr, versionstr, k, v;

	if(me.currentServerName)
		strunzone(me.currentServerName);
	me.currentServerName = string_null;
	if(me.currentServerCName)
		strunzone(me.currentServerCName);
	me.currentServerCName = string_null;
	if(me.currentServerType)
		strunzone(me.currentServerType);
	me.currentServerType = string_null;
	if(me.currentServerMap)
		strunzone(me.currentServerMap);
	me.currentServerMap = string_null;
	if(me.currentServerPlayers)
		strunzone(me.currentServerPlayers);
	me.currentServerPlayers = string_null;
	if(me.currentServerNumPlayers)
		strunzone(me.currentServerNumPlayers);
	me.currentServerNumPlayers = string_null;
	if(me.currentServerNumBots)
		strunzone(me.currentServerNumBots);
	me.currentServerNumBots = string_null;
	if(me.currentServerMod)
		strunzone(me.currentServerMod);
	me.currentServerMod = string_null;
	if(me.currentServerVersion)
		strunzone(me.currentServerVersion);
	me.currentServerVersion = string_null;
	if(me.currentServerPing)
		strunzone(me.currentServerPing);
	me.currentServerPing = string_null;
	if(me.currentServerKey)
		strunzone(me.currentServerKey);
	me.currentServerKey = string_null;
	if(me.currentServerID)
		strunzone(me.currentServerID);
	me.currentServerID = string_null;
	// not zoned!
	//if(me.currentServerEncrypt)
	//	strunzone(me.currentServerEncrypt);
	//me.currentServerEncrypt = string_null;
	if(me.currentServerPure)
		strunzone(me.currentServerPure);
	me.currentServerPure = string_null;

	SLIST_FIELD_NAME = gethostcacheindexforkey("name");
	me.currentServerName = strzone(gethostcachestring(SLIST_FIELD_NAME, i));
	me.nameLabel.setText(me.nameLabel, me.currentServerName);

	SLIST_FIELD_CNAME = gethostcacheindexforkey("cname");
	me.currentServerCName = strzone(gethostcachestring(SLIST_FIELD_CNAME, i));
	me.cnameLabel.setText(me.cnameLabel, me.currentServerCName);

	pure = -1;
	typestr = _("N/A");
	versionstr = _("N/A");

	SLIST_FIELD_QCSTATUS = gethostcacheindexforkey("qcstatus");
	s = gethostcachestring(SLIST_FIELD_QCSTATUS, i);
	m = tokenizebyseparator(s, ":");
	if(m >= 2)
	{
		typestr = argv(0);
		versionstr = argv(1);
	}
	freeslots = -1;
	for(j = 2; j < m; ++j)
	{
		if(argv(j) == "")
			break;
		k = substring(argv(j), 0, 1);
		v = substring(argv(j), 1, -1);
		if(k == "P")
			pure = stof(v);
		else if(k == "S")
			freeslots = stof(v);
	}

	me.currentServerType = strzone(typestr);
	me.typeLabel.setText(me.typeLabel, me.currentServerType);

	SLIST_FIELD_MAP = gethostcacheindexforkey("map");
	me.currentServerMap = strzone(gethostcachestring(SLIST_FIELD_MAP, i));
	me.mapLabel.setText(me.mapLabel, me.currentServerMap);

	SLIST_FIELD_PLAYERS = gethostcacheindexforkey("players");
	me.currentServerPlayers = strzone(gethostcachestring(SLIST_FIELD_PLAYERS, i));
	me.rawPlayerList.setPlayerList(me.rawPlayerList, me.currentServerPlayers);

	SLIST_FIELD_NUMHUMANS = gethostcacheindexforkey("numhumans");
	numh = gethostcachenumber(SLIST_FIELD_NUMHUMANS, i);
	SLIST_FIELD_MAXPLAYERS = gethostcacheindexforkey("maxplayers");
	maxp = gethostcachenumber(SLIST_FIELD_MAXPLAYERS, i);
	SLIST_FIELD_NUMBOTS = gethostcacheindexforkey("numbots");
	numb = gethostcachenumber(SLIST_FIELD_NUMBOTS, i);
	if(freeslots < 0)
		freeslots = maxp - numh - numb;
	me.currentServerNumPlayers = strzone(sprintf(_("%d/%d, %d free player slots"), numh, maxp, freeslots));
	me.numPlayersLabel.setText(me.numPlayersLabel, me.currentServerNumPlayers);

	s = ftos(numb);
	me.currentServerNumBots = strzone(s);
	me.numBotsLabel.setText(me.numBotsLabel, me.currentServerNumBots);

	SLIST_FIELD_MOD = gethostcacheindexforkey("mod");
	me.currentServerMod = strzone(gethostcachestring(SLIST_FIELD_MOD, i));
	me.modLabel.setText(me.modLabel, me.currentServerMod);

	me.currentServerVersion = strzone(versionstr);
	me.versionLabel.setText(me.versionLabel, me.currentServerVersion);

	me.currentServerPure = ((pure < 0) ? "N/A" : (pure == 0) ? _("Official settings") : sprintf(_("%d modified settings"), pure));
	me.currentServerPure = strzone(me.currentServerPure);
	me.pureLabel.setText(me.pureLabel, me.currentServerPure);

	SLIST_FIELD_PING = gethostcacheindexforkey("ping");
	s = ftos(gethostcachenumber(SLIST_FIELD_PING, i));
	me.currentServerPing = strzone(s);
	me.pingLabel.setText(me.pingLabel, me.currentServerPing);

	s = crypto_getidfp(me.currentServerCName);
	if not(s)
		s = _("N/A");
	me.currentServerID = strzone(s);
	me.idLabel.setText(me.idLabel, me.currentServerID);

	s = crypto_getkeyfp(me.currentServerCName);
	if not(s)
		s = _("N/A");
	me.currentServerKey = strzone(s);
	me.keyLabel.setText(me.keyLabel, me.currentServerKey);

	s = crypto_getencryptlevel(me.currentServerCName);
	if(s == "")
	{
		if(cvar("crypto_aeslevel") >= 3)
			me.currentServerEncrypt = _("N/A (can't connect)");
		else
			me.currentServerEncrypt = _("N/A");
	}
	else switch(stof(substring(s, 0, 1)))
	{
		case 0:
			if(cvar("crypto_aeslevel") >= 3)
				me.currentServerEncrypt = _("not supported (can't connect)");
			else
				me.currentServerEncrypt = _("not supported (won't encrypt)");
			break;
		case 1:
			if(cvar("crypto_aeslevel") >= 2)
				me.currentServerEncrypt = _("supported (will encrypt)");
			else
				me.currentServerEncrypt = _("supported (won't encrypt)");
			break;
		case 2:
			if(cvar("crypto_aeslevel") >= 1)
				me.currentServerEncrypt = _("requested (will encrypt)");
			else
				me.currentServerEncrypt = _("requested (won't encrypt)");
			break;
		case 3:
			if(cvar("crypto_aeslevel") <= 0)
				me.currentServerEncrypt = _("required (can't connect)");
			else
				me.currentServerEncrypt = _("required (will encrypt)");
			break;
	}
	me.encryptLabel.setText(me.encryptLabel, me.currentServerEncrypt);
}
void loadServerInfoNexuizServerInfoDialog(entity me, float i)
{
	float m;
	string s, typestr, versionstr, numh, maxp;

	SLIST_FIELD_NAME = gethostcacheindexforkey("name");
	me.currentServerName = strzone(gethostcachestring(SLIST_FIELD_NAME, i));
	me.nameLabel.setText(me.nameLabel, me.currentServerName);

	SLIST_FIELD_CNAME = gethostcacheindexforkey("cname");
	me.currentServerCName = strzone(gethostcachestring(SLIST_FIELD_CNAME, i));
	me.cnameLabel.setText(me.cnameLabel, me.currentServerCName);

	SLIST_FIELD_QCSTATUS = gethostcacheindexforkey("qcstatus");
	s = gethostcachestring(SLIST_FIELD_QCSTATUS, i);
	m = tokenizebyseparator(s, ":");
	if(m > 1)
	{
		typestr = argv (0);
		versionstr = argv(1);
	}
	else
	{
		typestr = "N/A";
		versionstr = "N/A";
	}
	me.currentServerType = strzone(typestr);
	me.typeLabel.setText(me.typeLabel, me.currentServerType);


	SLIST_FIELD_MAP = gethostcacheindexforkey("map");
	me.currentServerMap = strzone(gethostcachestring(SLIST_FIELD_MAP, i));
	me.mapLabel.setText(me.mapLabel, me.currentServerMap);

	SLIST_FIELD_PLAYERS = gethostcacheindexforkey("players");
	me.currentServerPlayers = strzone(gethostcachestring(SLIST_FIELD_PLAYERS, i));
	me.rawPlayerList.setPlayerList(me.rawPlayerList, me.currentServerPlayers);

	SLIST_FIELD_NUMHUMANS = gethostcacheindexforkey("numhumans");
	numh = ftos(gethostcachenumber(SLIST_FIELD_NUMHUMANS, i));
	SLIST_FIELD_MAXPLAYERS = gethostcacheindexforkey("maxplayers");
	maxp = ftos(gethostcachenumber(SLIST_FIELD_MAXPLAYERS, i));
	me.currentServerNumPlayers = strzone(strcat(numh,"/",maxp));
	me.numPlayersLabel.setText(me.numPlayersLabel, me.currentServerNumPlayers);

	SLIST_FIELD_NUMBOTS = gethostcacheindexforkey("numbots");
	s = ftos(gethostcachenumber(SLIST_FIELD_NUMBOTS, i));
	me.currentServerNumBots = strzone(s);
	me.numBotsLabel.setText(me.numBotsLabel, me.currentServerNumBots);

	SLIST_FIELD_MOD = gethostcacheindexforkey("mod");
	me.currentServerMod = strzone(gethostcachestring(SLIST_FIELD_MOD, i));
	me.modLabel.setText(me.modLabel, me.currentServerMod);

	me.currentServerVersion = strzone(versionstr);
	me.versionLabel.setText(me.versionLabel, me.currentServerVersion);

	SLIST_FIELD_PING = gethostcacheindexforkey("ping");
	s = ftos(gethostcachenumber(SLIST_FIELD_PING, i));
	me.currentServerPing = strzone(s);
	me.pingLabel.setText(me.pingLabel, me.currentServerPing);
}