]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/race.qc
make the warning a backtrace instead
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / race.qc
index 3786edbe5137d25c431da79d37036f9ea7b97361..9817b3b0e1afaa45675b4755f45989da50afe0d6 100644 (file)
@@ -167,6 +167,13 @@ void race_setTime(string map, float t, string myuid, string mynetname, entity e)
 
        // if we didn't hit a return yet, we have a new record!
 
+       // if the player does not have a UID we can unfortunately not store the record, as the rankings system relies on UIDs
+       if(myuid == "")
+       {
+               bprint(mynetname, "^1 scored a new record with ^7", TIME_ENCODED_TOSTRING(t), "^1, but lacks a UID, so the record will unfortunately be lost.\n");
+               return;
+       }
+
        oldrec = race_readTime(GetMapname(), newpos);
        oldrec_holder = race_readName(GetMapname(), newpos);
        
@@ -270,8 +277,8 @@ void race_SendTime(entity e, float cp, float t, float tvalid)
                        PlayerScore_Add(e, SP_RACE_TIME, snew - s);
                        l = PlayerTeamScore_Add(e, SP_RACE_LAPS, ST_RACE_LAPS, 1);
 
-                       if(cvar("fraglimit"))
-                               if(l >= cvar("fraglimit"))
+                       if(autocvar_fraglimit)
+                               if(l >= autocvar_fraglimit)
                                        race_StartCompleting();
 
                        if(race_completing)
@@ -299,9 +306,9 @@ void race_SendTime(entity e, float cp, float t, float tvalid)
                                if(cp == race_timed_checkpoint)
                                {
                                        race_setTime(GetMapname(), t, e.crypto_idfp, e.netname, e);
-                                       if(g_cts && cvar("g_cts_finish_kill_delay"))
+                                       if(g_cts && autocvar_g_cts_finish_kill_delay)
                                        {
-                                               CTS_ClientKill(cvar("g_cts_finish_kill_delay"));
+                                               CTS_ClientKill(e);
                                        }
                                }
                                if(t < recordtime || recordtime == 0)
@@ -735,11 +742,21 @@ void trigger_race_checkpoint_verify()
                for(trigger = world; (trigger = find(trigger, classname, "trigger_multiple")); )
                        for(targ = world; (targ = find(targ, targetname, trigger.target)); )
                                if (targ.classname == "target_checkpoint" || targ.classname == "target_startTimer" || targ.classname == "target_stopTimer") {
-                                       targ.wait = -2;
+                                       trigger.wait = 0;
+                                       trigger.delay = 0;
+                                       targ.wait = 0;
                                        targ.delay = 0;
 
-                                       setsize(targ, trigger.mins, trigger.maxs);
-                                       setorigin(targ, trigger.origin);
+                    // These just make the game crash on some maps with oddly shaped triggers. 
+                    // (on the other hand they used to fix the case when two players ran through a checkpoint at once, 
+                    // and often one of them just passed through without being registered. Hope it's fixed  in a better way now.
+                    // (happened on item triggers too)
+                    //
+                                       //targ.wait = -2;
+                                       //targ.delay = 0;
+
+                                       //setsize(targ, trigger.mins, trigger.maxs);
+                                       //setorigin(targ, trigger.origin);
                                        //remove(trigger);
                                }
        }