summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaweł Redman <pawel.redman@gmail.com>2017-05-18 23:37:50 +0200
committerPaweł Redman <pawel.redman@gmail.com>2017-05-18 23:37:50 +0200
commit2ad1ec6272744c2910749998f779b32ddcae12fd (patch)
tree7a29148893c8f59bcb8c13cf91f59e14650e8c91
parent68d2b3ae9ec3ef78167c20f1c9662c5020ee1f04 (diff)
Improve version checking.
-rw-r--r--src/game/g_admin.c17
-rw-r--r--src/game/g_client.c4
-rw-r--r--src/game/g_local.h3
3 files changed, 16 insertions, 8 deletions
diff --git a/src/game/g_admin.c b/src/game/g_admin.c
index e6b3132..daa01dc 100644
--- a/src/game/g_admin.c
+++ b/src/game/g_admin.c
@@ -10392,11 +10392,26 @@ qboolean G_admin_versions(gentity_t *ent, int skiparg)
for (i = 0; i < level.maxclients; i++) {
gclient_t *client = level.clients + i;
+ char userinfo[ MAX_INFO_STRING ], *p;
if (client->pers.connected == CON_DISCONNECTED)
continue;
- ADMBP(va("% 2d '%s'\n", i, client->pers.version));
+ ADMBP(va("%02i ", i));
+
+ trap_GetUserinfo(i, userinfo, sizeof(userinfo));
+ p = Info_ValueForKey(userinfo, "version");
+
+ if (p[0])
+ ADMBP(va("'%s'\n", p));
+ else {
+ p = Info_ValueForKey(userinfo, "cl_voip");
+
+ if (p[0])
+ ADMBP("probably GPP or newer\n");
+ else
+ ADMBP("probably stock 1.1\n");
+ }
}
ADMBP_end();
diff --git a/src/game/g_client.c b/src/game/g_client.c
index 6044136..f9a72ea 100644
--- a/src/game/g_client.c
+++ b/src/game/g_client.c
@@ -1142,10 +1142,6 @@ void ClientUserinfoChanged( int clientNum, qboolean forceName )
if( !strcmp( s, "localhost" ) )
client->pers.localClient = qtrue;
- // check the version
- s = Info_ValueForKey( userinfo, "version" );
- Q_strncpyz( client->pers.version, s, MAX_CLIENT_VERSION );
-
// check the item prediction
s = Info_ValueForKey( userinfo, "cg_predictItems" );
diff --git a/src/game/g_local.h b/src/game/g_local.h
index 5a8d1f8..a3c02c8 100644
--- a/src/game/g_local.h
+++ b/src/game/g_local.h
@@ -373,8 +373,6 @@ typedef struct
long timeLastViewed;
} statsCounters_level;
-#define MAX_CLIENT_VERSION 80
-
// client data that stays across multiple respawns, but is cleared
// on each level change or team change at ClientBegin()
typedef struct
@@ -442,7 +440,6 @@ typedef struct
qboolean firstConnect; // This is the first map since connect
qboolean useUnlagged;
statsCounters_t statscounters;
- char version[ MAX_CLIENT_VERSION ];
} clientPersistant_t;
#define MAX_UNLAGGED_MARKERS 256