From 4d99ea4c344de70d140bd4d765c8aa89718ccfa5 Mon Sep 17 00:00:00 2001 From: div0 Date: Sun, 17 Dec 2006 16:50:50 +0000 Subject: [PATCH] version nag feature - non-SVN clients get a message about different version between server and client once per game. No further action is taken as long as the versions are compatible. git-svn-id: svn://svn.icculus.org/nexuiz/trunk@2050 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/server/cl_client.qc | 18 ++++++++++++++++++ data/qcsrc/server/defs.qh | 3 +++ data/qcsrc/server/miscfunctions.qc | 19 ++++++++++++++++--- 3 files changed, 37 insertions(+), 3 deletions(-) diff --git a/data/qcsrc/server/cl_client.qc b/data/qcsrc/server/cl_client.qc index 4c96660af..83e2f7279 100644 --- a/data/qcsrc/server/cl_client.qc +++ b/data/qcsrc/server/cl_client.qc @@ -667,6 +667,7 @@ void ClientConnect (void) self.classname = "player_joining"; self.flags = self.flags | FL_CLIENT; + self.version_nagtime = time + 10 + random() * 10; if(player_count<0) player_count = 0; @@ -846,6 +847,9 @@ void ClientDisconnect (void) Spawnqueue_Unmark(self); Spawnqueue_Remove(self); } + + // free cvars + GetCvars(-1); } .float buttonchat; @@ -1300,6 +1304,20 @@ Called every frame for each client before the physics are run void() ctf_setstatus; void PlayerPreThink (void) { + // version nagging + if(self.version_nagtime) + if(self.cvar_g_nexuizversion) + if(time > self.version_nagtime) + { + if(strstr(self.cvar_g_nexuizversion, "svn", 0) < 0) + if(self.cvar_g_nexuizversion != cvar_string("g_nexuizversion")) + { + dprint("^1NOTE^7 to ", self.netname, "^7 - the server is running ^3Nexuiz ", cvar_string("g_nexuizversion"), "^7, you have ^3Nexuiz ", self.cvar_g_nexuizversion, "\n"); + sprint(self, strcat("\{1}^1NOTE: ^7the server is running ^3Nexuiz ", cvar_string("g_nexuizversion"), "^7, you have ^3Nexuiz ", self.cvar_g_nexuizversion, "\n")); + } + self.version_nagtime = 0; + } + if(self.classname == "player") { local vector m1, m2; diff --git a/data/qcsrc/server/defs.qh b/data/qcsrc/server/defs.qh index 703f8ee6c..8ea05639b 100644 --- a/data/qcsrc/server/defs.qh +++ b/data/qcsrc/server/defs.qh @@ -258,6 +258,9 @@ float default_weapon_alpha; .float cvar_cl_nogibs; .float cvar_scr_centertime; .float cvar_cl_shownames; +.string cvar_g_nexuizversion; + +.float version_nagtime; #ifdef ALLOW_VARIABLE_LOD .float modelindex_lod0; diff --git a/data/qcsrc/server/miscfunctions.qc b/data/qcsrc/server/miscfunctions.qc index 21fce34a8..12d78e5ee 100644 --- a/data/qcsrc/server/miscfunctions.qc +++ b/data/qcsrc/server/miscfunctions.qc @@ -378,17 +378,29 @@ Called with: */ void GetCvars_handleString(float f, .string field, string name) { - if(f) + if(f < 0) + { + if(self.field) + strunzone(self.field); + } + else if(f > 0) { if(argv(f) == name) - self.field = argv(f + 1); + { + if(self.field) + strunzone(self.field); + self.field = strzone(argv(f + 1)); + } } else stuffcmd(self, strcat("cmd reportcvar ", name, " $", name, "\n")); } void GetCvars_handleFloat(float f, .float field, string name) { - if(f) + if(f < 0) + { + } + else if(f > 0) { if(argv(f) == name) self.field = stof(argv(f + 1)); @@ -402,6 +414,7 @@ void GetCvars(float f) GetCvars_handleFloat(f, cvar_cl_nogibs, "cl_nogibs"); GetCvars_handleFloat(f, cvar_scr_centertime, "scr_centertime"); GetCvars_handleFloat(f, cvar_cl_shownames, "cl_shownames"); + GetCvars_handleString(f, cvar_g_nexuizversion, "g_nexuizversion"); } float fexists(string f) -- 2.39.2