-string rr;
-float grecordtime[RANKINGS_CNT];
-string grecordholder[RANKINGS_CNT];
-string grecorduid[RANKINGS_CNT];
-float worst_time; // last ranked time
-float have_recs; // have we already read the records from the database before?
-float race_GetTime(float pos) {
- if(g_cts)
- rr = CTS_RECORD;
- else
- rr = RACE_RECORD;
-
- if (!have_recs) { // I guess this is better than checking if the first array item is empty, rumor has it that arrays are slow
- float i;
- for(i=0;i<RANKINGS_CNT;++i) {
- grecordtime[i] = stof(db_get(ServerProgsDB, strcat(GetMapname(), rr, "time", ftos(i))));
- grecordholder[i] = strzone(db_get(ServerProgsDB, strcat(GetMapname(), rr, "netname", ftos(i))));
- grecorduid[i] = strzone(db_get(ServerProgsDB, strcat(GetMapname(), rr, "crypto_idfp", ftos(i))));
- }
- grecordtime[0] = stof(db_get(ServerProgsDB, strcat(GetMapname(), rr, "time")));
- grecordholder[0] = strzone(db_get(ServerProgsDB, strcat(GetMapname(), rr, "netname")));
- grecorduid[0] = strzone(db_get(ServerProgsDB, strcat(GetMapname(), rr, "crypto_idfp")));
- worst_time = stof(db_get(ServerProgsDB, strcat(GetMapname(), rr, strcat("time", ftos(RANKINGS_CNT-1)))));
- have_recs = 1;
- }
-
- return grecordtime[pos-1];
-}
-
-string race_GetName(float pos) { // these other functions assume that race_GetTime has been called >= once before
- return grecordholder[pos-1];
-}
-
-float race_CheckUID(string myuid, string net_name) { // return existing UID or player name ranking pos, else 0
- float i;
- if(myuid)
- {
- for (i=RANKINGS_CNT-1;i>=0;--i)
- if(grecorduid[i] == myuid)
- return i+1;
- }
- for (i=RANKINGS_CNT-1;i>=0;--i)
- if(!grecorduid[i])
- if(grecordholder[i] == net_name)
- return i+1;
- return 0;
-}
-
-float race_GetPos(float t) {
- float i;
-
- if(worst_time == 0)
- for (i=0;i<RANKINGS_CNT;++i)
- if (grecordtime[i] == 0 || grecordtime[i] > t)
- return i+1;
-
- for (i=0;i<RANKINGS_CNT;++i)
- if (grecordtime[i] > t)
- return i+1;
- return 0;
-}
-