]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/g_world.qc
Merge branch 'master' into mirceakitsune/universal_reload_system
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / g_world.qc
index 02d82f27a91cdbfbe579f1e371cb690cc81e2eab..57d0071d2f063d78c0a5a9031f7b087ca795ac8f 100644 (file)
@@ -237,6 +237,10 @@ void cvar_changes_init()
 #define BADPREFIX(p) if(substring(k, 0, strlen(p)) == p) continue
 #define BADPRESUFFIX(p,s) if(substring(k, 0, strlen(p)) == p && substring(k, -strlen(s), -1) == s) continue
 #define BADCVAR(p) if(k == p) continue
+
+               // general excludes and namespaces for server admin used cvars
+               BADPREFIX("help_"); // PN's server has this listed as changed, let's not rat him out for THAT
+
                // internal
                BADPREFIX("csqc_");
                BADPREFIX("cvar_check_");
@@ -437,6 +441,7 @@ void cvar_changes_init()
                BADCVAR("hostname");
                BADCVAR("log_file");
                BADCVAR("maxplayers");
+               BADCVAR("g_maxplayers");
                BADCVAR("minplayers");
                BADCVAR("net_address");
                BADCVAR("port");
@@ -818,8 +823,11 @@ void spawnfunc_worldspawn (void)
        addstat(STAT_FUEL, AS_INT, ammo_fuel);
        addstat(STAT_SHOTORG, AS_INT, stat_shotorg);
        addstat(STAT_LEADLIMIT, AS_FLOAT, stat_leadlimit);
-       addstat(STAT_BULLETS_LOADED, AS_INT, sniperrifle_bulletcounter);
+       addstat(STAT_WEAPON_CLIPLOAD, AS_INT, clip_load);
+       addstat(STAT_WEAPON_CLIPSIZE, AS_INT, clip_size);
        addstat(STAT_LAST_PICKUP, AS_FLOAT, last_pickup);
+       addstat(STAT_HIT_TIME, AS_FLOAT, hit_time);
+       addstat(STAT_TYPEHIT_TIME, AS_FLOAT, typehit_time);
 
        addstat(STAT_NEX_CHARGE, AS_FLOAT, nex_charge);
        addstat(STAT_NEX_CHARGEPOOL, AS_FLOAT, nex_chargepool_ammo);
@@ -1523,11 +1531,6 @@ void DumpStats(float final)
                fputs(file, ":end\n");
                fclose(file);
        }
-
-       // send statistics
-       FOR_EACH_CLIENT(e)
-               PlayerStats_AddGlobalInfo(e);
-       PlayerStats_Shutdown();
 }
 
 void FixIntermissionClient(entity e)
@@ -1596,6 +1599,13 @@ void NextLevel()
 
        DumpStats(TRUE);
 
+       // send statistics
+       entity e;
+       PlayerStats_EndMatch(1);
+       FOR_EACH_CLIENT(e)
+               PlayerStats_AddGlobalInfo(e);
+       PlayerStats_Shutdown();
+
        if(autocvar_sv_eventlog)
                GameLogEcho(":gameover");
 
@@ -2833,16 +2843,16 @@ void EndFrame()
                if(self.classname == "spectator")
                {
                        if(self.enemy.typehitsound)
-                               play2(self, "misc/typehit.wav");
+                               self.typehit_time = time;
                        else if(self.enemy.hitsound && self.cvar_cl_hitsound)
-                               play2(self, "misc/hit.wav");
+                               self.hit_time = time;
                }
                else
                {
                        if(self.typehitsound)
-                               play2(self, "misc/typehit.wav");
+                               self.typehit_time = time;
                        else if(self.hitsound && self.cvar_cl_hitsound)
-                               play2(self, "misc/hit.wav");
+                               self.hit_time = time;
                }
        }
        altime = time + frametime * (1 + autocvar_g_antilag_nudge);
@@ -2940,6 +2950,7 @@ void SV_Shutdown()
                print("Saving persistent data...\n");
                Ban_SaveBans();
 
+               PlayerStats_EndMatch(0);
                FOR_EACH_CLIENT(e)
                        PlayerStats_AddGlobalInfo(e);
                PlayerStats_Shutdown();