示例#1
0
文件: sv_main.c 项目: darkshade9/aq2w
/*
 * Sv_StatusString
 *
 * Returns a string fit for heartbeats and status replies.
 */
static const char *Sv_StatusString(void) {
	char player[1024];
	static char status[MAX_MSG_SIZE - 16];
	sv_client_t *cl;
	size_t status_len, player_len;
	int i;

	strcpy(status, Cvar_ServerInfo());
	strcat(status, "\n");

	status_len = strlen(status);

	for (i = 0; i < sv_max_clients->integer; i++) {

		cl = &svs.clients[i];

		if (cl->state == SV_CLIENT_CONNECTED || cl->state == SV_CLIENT_ACTIVE) {

			snprintf(player, sizeof(player), "%d %u \"%s\"\n",
					cl->edict->client->ps.stats[STAT_FRAGS], cl->ping, cl->name);

			player_len = strlen(player);

			if (status_len + player_len >= sizeof(status))
				break; // can't hold any more

			strcpy(status + status_len, player);
			status_len += player_len;
		}
	}

	return status;
}
示例#2
0
/*
 * @brief Returns a string fit for heartbeats and status replies.
 */
static const char *Sv_StatusString(void) {
	static char status[MAX_MSG_SIZE - 16];
	int32_t i;

	g_snprintf(status, sizeof(status), "%s\n", Cvar_ServerInfo());
	size_t status_len = strlen(status);

	for (i = 0; i < sv_max_clients->integer; i++) {

		const sv_client_t *cl = &svs.clients[i];

		if (cl->state == SV_CLIENT_CONNECTED || cl->state == SV_CLIENT_ACTIVE) {
			char player[MAX_TOKEN_CHARS];
			const uint32_t ping = cl->edict->client->ping;

			g_snprintf(player, sizeof(player), "%d %u \"%s\"\n", i, ping, cl->name);
			const size_t player_len = strlen(player);

			if (status_len + player_len + 1 >= sizeof(status))
				break; // can't hold any more

			strcat(status, player);
			status_len += player_len;
		}
	}

	return status;
}
示例#3
0
/*
 * Sv_Serverinfo_f
 *
 * Dumps the serverinfo info string
 */
static void Sv_Info_f(void) {
	const cvar_t *cvar;
	char line[MAX_STRING_CHARS];

	if (!sv_client) { // print to server console
		Com_PrintInfo(Cvar_ServerInfo());
		return;
	}

	for (cvar = cvar_vars; cvar; cvar = cvar->next) {

		if (!(cvar->flags & CVAR_SERVER_INFO))
			continue; //only print serverinfo cvars

		snprintf(line, sizeof(line), "%s %s\n", cvar->name, cvar->string);
		Sv_ClientPrint(sv_client->edict, PRINT_MEDIUM, "%s", line);
	}
}