[nexuiz-commits] r7633 - trunk/data/qcsrc/server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Sat Sep 5 06:19:47 EDT 2009


Author: div0
Date: 2009-09-05 06:19:46 -0400 (Sat, 05 Sep 2009)
New Revision: 7633

Modified:
   trunk/data/qcsrc/server/cl_physics.qc
   trunk/data/qcsrc/server/race.qc
   trunk/data/qcsrc/server/race.qh
Log:
race: use a time accumulator fed by player physics instead of comparing start and current time. Improves race timer accuracy, and prevents speedhacks from having an effect on race times.


Modified: trunk/data/qcsrc/server/cl_physics.qc
===================================================================
--- trunk/data/qcsrc/server/cl_physics.qc	2009-09-05 09:54:17 UTC (rev 7632)
+++ trunk/data/qcsrc/server/cl_physics.qc	2009-09-05 10:19:46 UTC (rev 7633)
@@ -549,6 +549,8 @@
 		}
 	}
 
+	self.race_movetime += frametime;
+
 	buttons = self.BUTTON_ATCK + 2 * self.BUTTON_JUMP + 4 * self.BUTTON_ATCK2 + 8 * self.BUTTON_ZOOM + 16 * self.BUTTON_CROUCH + 32 * self.BUTTON_HOOK + 64 * self.BUTTON_USE + 128 * (self.movement_x < 0) + 256 * (self.movement_x > 0) + 512 * (self.movement_y < 0) + 1024 * (self.movement_y > 0);
 
 	if(!buttons)

Modified: trunk/data/qcsrc/server/race.qc
===================================================================
--- trunk/data/qcsrc/server/race.qc	2009-09-05 09:54:17 UTC (rev 7632)
+++ trunk/data/qcsrc/server/race.qc	2009-09-05 10:19:46 UTC (rev 7633)
@@ -52,7 +52,7 @@
 	return f;
 }
 
-void race_SendNextCheckpoint(entity e, float spec)
+void race_SendNextCheckpoint(entity e, float spec) // qualifying only
 {
 	float recordtime;
 	string recordholder;
@@ -75,7 +75,8 @@
 		if(spec)
 		{
 			WriteByte(MSG_ONE, RACE_NET_CHECKPOINT_NEXT_SPEC_QUALIFYING);
-			WriteCoord(MSG_ONE, e.race_laptime - e.race_penalty_accumulator);
+			//WriteCoord(MSG_ONE, e.race_laptime - e.race_penalty_accumulator);
+			WriteCoord(MSG_ONE, time - e.race_movetime - e.race_penalty_accumulator);
 		}
 		else
 			WriteByte(MSG_ONE, RACE_NET_CHECKPOINT_NEXT_QUALIFYING);
@@ -287,6 +288,7 @@
 {
 	e.race_checkpoint = -1;
 	e.race_laptime = 0;
+	e.race_movetime = 0;
 	e.race_penalty_accumulator = 0;
 	e.race_lastpenalty = world;
 
@@ -385,11 +387,12 @@
 
 		other.race_checkpoint = race_NextCheckpoint(self.race_checkpoint);
 
-		race_SendTime(other, self.race_checkpoint, time - other.race_laptime, !!other.race_laptime);
+		race_SendTime(other, self.race_checkpoint, other.race_movetime, !!other.race_laptime);
 
 		if(!self.race_checkpoint) // start line
 		{
 			other.race_laptime = time;
+			other.race_movetime = 0;
 			other.race_penalty_accumulator = 0;
 			other.race_lastpenalty = world;
 		}

Modified: trunk/data/qcsrc/server/race.qh
===================================================================
--- trunk/data/qcsrc/server/race.qh	2009-09-05 09:54:17 UTC (rev 7632)
+++ trunk/data/qcsrc/server/race.qh	2009-09-05 10:19:46 UTC (rev 7633)
@@ -19,3 +19,4 @@
 float race_completing;
 void race_ImposePenaltyTime(entity pl, float penalty, string reason);
 void race_StartCompleting();
+.float race_movetime;



More information about the nexuiz-commits mailing list