[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