Main Page | Class Hierarchy | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

g_rankings.c File Reference

#include "g_local.h"
#include "g_rankings.h"

Include dependency graph for g_rankings.c:

Include dependency graph

Go to the source code of this file.

Functions

void G_RankCapture (int self)
void G_RankClientDisconnect (int self)
void G_RankDamage (int self, int attacker, int damage, int means_of_death)
void G_RankFireWeapon (int self, int weapon)
void G_RankGameOver (void)
void G_RankPickupAmmo (int self, int weapon, int quantity)
void G_RankPickupArmor (int self, int quantity)
void G_RankPickupHealth (int self, int quantity)
void G_RankPickupHoldable (int self, int holdable)
void G_RankPickupPowerup (int self, int powerup)
void G_RankPickupWeapon (int self, int weapon)
void G_RankPlayerDie (int self, int attacker, int means_of_death)
void G_RankReward (int self, int award)
void G_RankRunFrame ()
void G_RankUseHoldable (int self, int holdable)
void G_RankUserTeamName (int self, char *team_name)
void G_RankWeaponTime (int self, int weapon)


Function Documentation

void G_RankCapture int  self  ) 
 

Definition at line 1004 of file g_rankings.c.

References level, QGR_KEY_FLAG_CAPTURE, and level_locals_t::warmupTime.

01005 {
01006     if( level.warmupTime != 0 )
01007     {
01008         // no reports during warmup period
01009         return;
01010     }
01011     
01012     trap_RankReportInt( self, -1, QGR_KEY_FLAG_CAPTURE, 1, 1 );
01013 }

void G_RankClientDisconnect int  self  ) 
 

Definition at line 1036 of file g_rankings.c.

References gentity_s::client, clientPersistant_t::enterTime, g_entities, gclient_t, level, gclient_s::pers, playerState_s::persistant, gclient_s::ps, QGR_KEY_MATCH_RATING, level_locals_t::time, time(), and level_locals_t::warmupTime.

Referenced by G_RankGameOver().

01037 {
01038     gclient_t*  client;
01039     int         time;
01040     int         match_rating;
01041     
01042     if( level.warmupTime != 0 )
01043     {
01044         // no reports during warmup period
01045         return;
01046     }
01047     
01048     // match rating
01049     client = g_entities[self].client;
01050     time = (level.time - client->pers.enterTime) / 1000;
01051     if( time < 60 )
01052     {
01053         match_rating = 0;
01054     }
01055     else
01056     {
01057         match_rating = client->ps.persistant[PERS_MATCH_RATING] / time;
01058     }
01059     trap_RankReportInt( self, -1, QGR_KEY_MATCH_RATING, match_rating, 0 );
01060 }

Here is the call graph for this function:

void G_RankDamage int  self,
int  attacker,
int  damage,
int  means_of_death
 

Definition at line 227 of file g_rankings.c.

References gentity_s::client, level_locals_t::framenum, g_entities, level, MOD_BFG, MOD_BFG_SPLASH, MOD_CRUSH, MOD_FALLING, MOD_GAUNTLET, MOD_GRAPPLE, MOD_GRENADE, MOD_GRENADE_SPLASH, MOD_LAVA, MOD_LIGHTNING, MOD_MACHINEGUN, MOD_PLASMA, MOD_PLASMA_SPLASH, MOD_RAILGUN, MOD_ROCKET, MOD_ROCKET_SPLASH, MOD_SHOTGUN, MOD_SLIME, MOD_SUICIDE, MOD_TELEFRAG, MOD_TRIGGER_HURT, MOD_WATER, OnSameTeam(), qboolean, QGR_KEY_DAMAGE_GIVEN, QGR_KEY_DAMAGE_TAKEN, QGR_KEY_HIT_GIVEN, QGR_KEY_HIT_TAKEN, QGR_KEY_SHOT_FIRED_GAUNTLET, QGR_KEY_SPLASH_GIVEN, QGR_KEY_SPLASH_TAKEN, QGR_KEY_TEAMMATE_DAMAGE_GIVEN, QGR_KEY_TEAMMATE_DAMAGE_TAKEN, QGR_KEY_TEAMMATE_HIT_GIVEN, QGR_KEY_TEAMMATE_HIT_TAKEN, QGR_KEY_TEAMMATE_SPLASH_GIVEN, QGR_KEY_TEAMMATE_SPLASH_TAKEN, and level_locals_t::warmupTime.

00228 {
00229     // state information to avoid counting each shotgun pellet as a hit
00230     static int  last_framenum = -1;
00231     static int  last_self = -1;
00232     static int  last_attacker = -1;
00233     static int  last_means_of_death = MOD_UNKNOWN;
00234 
00235     qboolean    new_hit;
00236     int         splash;
00237     int         key_hit;
00238     int         key_damage;
00239     int         key_splash;
00240 
00241     if( level.warmupTime != 0 )
00242     {
00243         // no reports during warmup period
00244         return;
00245     }
00246     
00247     new_hit = (level.framenum != last_framenum) || 
00248         (self != last_self) || 
00249         (attacker != last_attacker) || 
00250         (means_of_death != last_means_of_death);
00251 
00252     // update state information
00253     last_framenum = level.framenum;
00254     last_self = self;
00255     last_attacker = attacker;
00256     last_means_of_death = means_of_death;
00257 
00258     // the gauntlet only "fires" when it actually hits something
00259     if( (attacker != ENTITYNUM_WORLD) && (attacker != self) && 
00260         (means_of_death == MOD_GAUNTLET)  && 
00261         (g_entities[attacker].client) )
00262     {
00263         trap_RankReportInt( attacker, -1, QGR_KEY_SHOT_FIRED_GAUNTLET, 1, 1 );
00264     }
00265 
00266     // don't track hazard damage, just deaths
00267     switch( means_of_death )
00268     {
00269     case MOD_WATER:
00270     case MOD_SLIME:
00271     case MOD_LAVA:
00272     case MOD_CRUSH:
00273     case MOD_TELEFRAG:
00274     case MOD_FALLING:
00275     case MOD_SUICIDE:
00276     case MOD_TRIGGER_HURT:
00277         return;
00278     default:
00279         break;
00280     }
00281 
00282     // get splash damage
00283     switch( means_of_death )
00284     {
00285     case MOD_GRENADE_SPLASH:
00286     case MOD_ROCKET_SPLASH:
00287     case MOD_PLASMA_SPLASH:
00288     case MOD_BFG_SPLASH:
00289         splash = damage;
00290         break;
00291     default:
00292         splash = 0;
00293         key_splash = -1;
00294         break;
00295     }
00296     
00297     // hit, damage, and splash taken
00298     switch( means_of_death )
00299     {
00300     case MOD_GAUNTLET:
00301         key_hit = QGR_KEY_HIT_TAKEN_GAUNTLET;
00302         key_damage = QGR_KEY_DAMAGE_TAKEN_GAUNTLET;
00303         break;
00304     case MOD_MACHINEGUN:
00305         key_hit = QGR_KEY_HIT_TAKEN_MACHINEGUN;
00306         key_damage = QGR_KEY_DAMAGE_TAKEN_MACHINEGUN;
00307         break;
00308     case MOD_SHOTGUN:
00309         key_hit = QGR_KEY_HIT_TAKEN_SHOTGUN;
00310         key_damage = QGR_KEY_DAMAGE_TAKEN_SHOTGUN;
00311         break;
00312     case MOD_GRENADE:
00313     case MOD_GRENADE_SPLASH:
00314         key_hit = QGR_KEY_HIT_TAKEN_GRENADE;
00315         key_damage = QGR_KEY_DAMAGE_TAKEN_GRENADE;
00316         key_splash = QGR_KEY_SPLASH_TAKEN_GRENADE;
00317         break;
00318     case MOD_ROCKET:
00319     case MOD_ROCKET_SPLASH:
00320         key_hit = QGR_KEY_HIT_TAKEN_ROCKET;
00321         key_damage = QGR_KEY_DAMAGE_TAKEN_ROCKET;
00322         key_splash = QGR_KEY_SPLASH_TAKEN_ROCKET;
00323         break;
00324     case MOD_PLASMA:
00325     case MOD_PLASMA_SPLASH:
00326         key_hit = QGR_KEY_HIT_TAKEN_PLASMA;
00327         key_damage = QGR_KEY_DAMAGE_TAKEN_PLASMA;
00328         key_splash = QGR_KEY_SPLASH_TAKEN_PLASMA;
00329         break;
00330     case MOD_RAILGUN:
00331         key_hit = QGR_KEY_HIT_TAKEN_RAILGUN;
00332         key_damage = QGR_KEY_DAMAGE_TAKEN_RAILGUN;
00333         break;
00334     case MOD_LIGHTNING:
00335         key_hit = QGR_KEY_HIT_TAKEN_LIGHTNING;
00336         key_damage = QGR_KEY_DAMAGE_TAKEN_LIGHTNING;
00337         break;
00338     case MOD_BFG:
00339     case MOD_BFG_SPLASH:
00340         key_hit = QGR_KEY_HIT_TAKEN_BFG;
00341         key_damage = QGR_KEY_DAMAGE_TAKEN_BFG;
00342         key_splash = QGR_KEY_SPLASH_TAKEN_BFG;
00343         break;
00344     case MOD_GRAPPLE:
00345         key_hit = QGR_KEY_HIT_TAKEN_GRAPPLE;
00346         key_damage = QGR_KEY_DAMAGE_TAKEN_GRAPPLE;
00347         break;
00348     default:
00349         key_hit = QGR_KEY_HIT_TAKEN_UNKNOWN;
00350         key_damage = QGR_KEY_DAMAGE_TAKEN_UNKNOWN;
00351         break;
00352     }
00353 
00354     // report general and specific hit taken
00355     if( new_hit )
00356     {
00357         trap_RankReportInt( self, -1, QGR_KEY_HIT_TAKEN, 1, 1 );
00358         trap_RankReportInt( self, -1, key_hit, 1, 1 );
00359     }
00360     
00361     // report general and specific damage taken
00362     trap_RankReportInt( self, -1, QGR_KEY_DAMAGE_TAKEN, damage, 1 );
00363     trap_RankReportInt( self, -1, key_damage, damage, 1 );
00364 
00365     // report general and specific splash taken
00366     if( splash != 0 )
00367     {
00368         trap_RankReportInt( self, -1, QGR_KEY_SPLASH_TAKEN, splash, 1 );
00369         trap_RankReportInt( self, -1, key_splash, splash, 1 );
00370     }
00371 
00372     // hit, damage, and splash given
00373     if( (attacker != ENTITYNUM_WORLD) && (attacker != self) )
00374     {
00375         switch( means_of_death )
00376         {
00377         case MOD_GAUNTLET:
00378             key_hit = QGR_KEY_HIT_GIVEN_GAUNTLET;
00379             key_damage = QGR_KEY_DAMAGE_GIVEN_GAUNTLET;
00380             break;
00381         case MOD_MACHINEGUN:
00382             key_hit = QGR_KEY_HIT_GIVEN_MACHINEGUN;
00383             key_damage = QGR_KEY_DAMAGE_GIVEN_MACHINEGUN;
00384             break;
00385         case MOD_SHOTGUN:
00386             key_hit = QGR_KEY_HIT_GIVEN_SHOTGUN;
00387             key_damage = QGR_KEY_DAMAGE_GIVEN_SHOTGUN;
00388             break;
00389         case MOD_GRENADE:
00390         case MOD_GRENADE_SPLASH:
00391             key_hit = QGR_KEY_HIT_GIVEN_GRENADE;
00392             key_damage = QGR_KEY_DAMAGE_GIVEN_GRENADE;
00393             key_splash = QGR_KEY_SPLASH_GIVEN_GRENADE;
00394             break;
00395         case MOD_ROCKET:
00396         case MOD_ROCKET_SPLASH:
00397             key_hit = QGR_KEY_HIT_GIVEN_ROCKET;
00398             key_damage = QGR_KEY_DAMAGE_GIVEN_ROCKET;
00399             key_splash = QGR_KEY_SPLASH_GIVEN_ROCKET;
00400             break;
00401         case MOD_PLASMA:
00402         case MOD_PLASMA_SPLASH:
00403             key_hit = QGR_KEY_HIT_GIVEN_PLASMA;
00404             key_damage = QGR_KEY_DAMAGE_GIVEN_PLASMA;
00405             key_splash = QGR_KEY_SPLASH_GIVEN_PLASMA;
00406             break;
00407         case MOD_RAILGUN:
00408             key_hit = QGR_KEY_HIT_GIVEN_RAILGUN;
00409             key_damage = QGR_KEY_DAMAGE_GIVEN_RAILGUN;
00410             break;
00411         case MOD_LIGHTNING:
00412             key_hit = QGR_KEY_HIT_GIVEN_LIGHTNING;
00413             key_damage = QGR_KEY_DAMAGE_GIVEN_LIGHTNING;
00414             break;
00415         case MOD_BFG:
00416         case MOD_BFG_SPLASH:
00417             key_hit = QGR_KEY_HIT_GIVEN_BFG;
00418             key_damage = QGR_KEY_DAMAGE_GIVEN_BFG;
00419             key_splash = QGR_KEY_SPLASH_GIVEN_BFG;
00420             break;
00421         case MOD_GRAPPLE:
00422             key_hit = QGR_KEY_HIT_GIVEN_GRAPPLE;
00423             key_damage = QGR_KEY_DAMAGE_GIVEN_GRAPPLE;
00424             break;
00425         default:
00426             key_hit = QGR_KEY_HIT_GIVEN_UNKNOWN;
00427             key_damage = QGR_KEY_DAMAGE_GIVEN_UNKNOWN;
00428             break;
00429         }
00430         
00431         // report general and specific hit given
00432         // jwu 8/26/00
00433         // had a case where attacker is 245 which is grnadeshooter attacker is 
00434         // g_entities index not necessarilly clientnum
00435         if (g_entities[attacker].client) {
00436             if( new_hit )
00437             {
00438                 trap_RankReportInt( attacker, -1, QGR_KEY_HIT_GIVEN, 1, 1 );
00439                 trap_RankReportInt( attacker, -1, key_hit, 1, 1 );
00440             }
00441             
00442             // report general and specific damage given
00443             trap_RankReportInt( attacker, -1, QGR_KEY_DAMAGE_GIVEN, damage, 1 );
00444             trap_RankReportInt( attacker, -1, key_damage, damage, 1 );
00445 
00446             // report general and specific splash given
00447             if( splash != 0 )
00448             {
00449                 trap_RankReportInt( attacker, -1, QGR_KEY_SPLASH_GIVEN, splash, 1 );
00450                 trap_RankReportInt( attacker, -1, key_splash, splash, 1 );
00451             }
00452         }
00453     }
00454 
00455     // friendly fire
00456     if( (attacker != self) && 
00457         OnSameTeam( &(g_entities[self]), &(g_entities[attacker])) &&
00458         (g_entities[attacker].client) )
00459     {
00460         // report teammate hit
00461         if( new_hit )
00462         {
00463             trap_RankReportInt( self, -1, QGR_KEY_TEAMMATE_HIT_TAKEN, 1, 1 );
00464             trap_RankReportInt( attacker, -1, QGR_KEY_TEAMMATE_HIT_GIVEN, 1, 
00465                 1 );
00466         }
00467 
00468         // report teammate damage
00469         trap_RankReportInt( self, -1, QGR_KEY_TEAMMATE_DAMAGE_TAKEN, damage, 
00470             1 );
00471         trap_RankReportInt( attacker, -1, QGR_KEY_TEAMMATE_DAMAGE_GIVEN, 
00472             damage, 1 );
00473             
00474         // report teammate splash
00475         if( splash != 0 )
00476         {
00477             trap_RankReportInt( self, -1, QGR_KEY_TEAMMATE_SPLASH_TAKEN, 
00478                 splash, 1 );
00479             trap_RankReportInt( attacker, -1, QGR_KEY_TEAMMATE_SPLASH_GIVEN, 
00480                 splash, 1 );
00481         }
00482     }
00483 }

Here is the call graph for this function:

void G_RankFireWeapon int  self,
int  weapon
 

Definition at line 172 of file g_rankings.c.

References level, QGR_KEY_SHOT_FIRED, QGR_KEY_SHOT_FIRED_BFG, QGR_KEY_SHOT_FIRED_GRAPPLE, QGR_KEY_SHOT_FIRED_GRENADE, QGR_KEY_SHOT_FIRED_LIGHTNING, QGR_KEY_SHOT_FIRED_MACHINEGUN, QGR_KEY_SHOT_FIRED_PLASMA, QGR_KEY_SHOT_FIRED_RAILGUN, QGR_KEY_SHOT_FIRED_ROCKET, QGR_KEY_SHOT_FIRED_SHOTGUN, level_locals_t::warmupTime, WP_BFG, WP_GRAPPLING_HOOK, WP_GRENADE_LAUNCHER, WP_LIGHTNING, WP_MACHINEGUN, WP_PLASMAGUN, WP_RAILGUN, WP_ROCKET_LAUNCHER, and WP_SHOTGUN.

00173 {
00174     if( level.warmupTime != 0 )
00175     {
00176         // no reports during warmup period
00177         return;
00178     }
00179     
00180     if( weapon == WP_GAUNTLET )
00181     {
00182         // the gauntlet only "fires" when it actually hits something
00183         return;
00184     }
00185     
00186     trap_RankReportInt( self, -1, QGR_KEY_SHOT_FIRED, 1, 1 );
00187     
00188     switch( weapon )
00189     {
00190     case WP_MACHINEGUN:
00191         trap_RankReportInt( self, -1, QGR_KEY_SHOT_FIRED_MACHINEGUN, 1, 1 );
00192         break;
00193     case WP_SHOTGUN:
00194         trap_RankReportInt( self, -1, QGR_KEY_SHOT_FIRED_SHOTGUN, 1, 1 );
00195         break;
00196     case WP_GRENADE_LAUNCHER:
00197         trap_RankReportInt( self, -1, QGR_KEY_SHOT_FIRED_GRENADE, 1, 1 );
00198         break;
00199     case WP_ROCKET_LAUNCHER:
00200         trap_RankReportInt( self, -1, QGR_KEY_SHOT_FIRED_ROCKET, 1, 1 );
00201         break;
00202     case WP_LIGHTNING:
00203         trap_RankReportInt( self, -1, QGR_KEY_SHOT_FIRED_LIGHTNING, 1, 1 );
00204         break;
00205     case WP_RAILGUN:
00206         trap_RankReportInt( self, -1, QGR_KEY_SHOT_FIRED_RAILGUN, 1, 1 );
00207         break;
00208     case WP_PLASMAGUN:
00209         trap_RankReportInt( self, -1, QGR_KEY_SHOT_FIRED_PLASMA, 1, 1 );
00210         break;
00211     case WP_BFG:
00212         trap_RankReportInt( self, -1, QGR_KEY_SHOT_FIRED_BFG, 1, 1 );
00213         break;
00214     case WP_GRAPPLING_HOOK:
00215         trap_RankReportInt( self, -1, QGR_KEY_SHOT_FIRED_GRAPPLE, 1, 1 );
00216         break;
00217     default:
00218         break;
00219     }
00220 }

void G_RankGameOver void   ) 
 

Definition at line 1067 of file g_rankings.c.

References G_RankClientDisconnect(), i, level, level_locals_t::maxclients, QGR_KEY_DEDICATED, QGR_KEY_FRAGLIMIT, QGR_KEY_GAMETYPE, QGR_KEY_HOSTNAME, QGR_KEY_MAP, QGR_KEY_MAXCLIENTS, QGR_KEY_MAXPING, QGR_KEY_MAXRATE, QGR_KEY_MINPING, QGR_KEY_MOD, QGR_KEY_TIMELIMIT, QGR_KEY_VERSION, trap_Cvar_VariableIntegerValue(), trap_Cvar_VariableStringBuffer(), and level_locals_t::warmupTime.

01068 {
01069     int     i;
01070     char    str[MAX_INFO_VALUE];
01071     int     num;
01072     
01073     if( level.warmupTime != 0 )
01074     {
01075         // no reports during warmup period
01076         return;
01077     }
01078     
01079     for( i = 0; i < level.maxclients; i++ )
01080     {
01081         if( trap_RankUserStatus( i ) == QGR_STATUS_ACTIVE )
01082         {
01083             G_RankClientDisconnect( i );
01084         }
01085     }
01086     
01087     // hostname
01088     trap_Cvar_VariableStringBuffer( "sv_hostname", str, sizeof(str) );
01089     trap_RankReportStr( -1, -1, QGR_KEY_HOSTNAME, str );
01090 
01091     // map
01092     trap_Cvar_VariableStringBuffer( "mapname", str, sizeof(str) );
01093     trap_RankReportStr( -1, -1, QGR_KEY_MAP, str );
01094 
01095     // mod
01096     trap_Cvar_VariableStringBuffer( "fs_game", str, sizeof(str) );
01097     trap_RankReportStr( -1, -1, QGR_KEY_MOD, str );
01098 
01099     // gametype
01100     num = trap_Cvar_VariableIntegerValue("g_gametype");
01101     trap_RankReportInt( -1, -1, QGR_KEY_GAMETYPE, num, 0 );
01102     
01103     // fraglimit
01104     num = trap_Cvar_VariableIntegerValue("fraglimit");
01105     trap_RankReportInt( -1, -1, QGR_KEY_FRAGLIMIT, num, 0 );
01106     
01107     // timelimit
01108     num = trap_Cvar_VariableIntegerValue("timelimit");
01109     trap_RankReportInt( -1, -1, QGR_KEY_TIMELIMIT, num, 0 );
01110 
01111     // maxclients
01112     num = trap_Cvar_VariableIntegerValue("sv_maxclients");
01113     trap_RankReportInt( -1, -1, QGR_KEY_MAXCLIENTS, num, 0 );
01114 
01115     // maxrate
01116     num = trap_Cvar_VariableIntegerValue("sv_maxRate");
01117     trap_RankReportInt( -1, -1, QGR_KEY_MAXRATE, num, 0 );
01118 
01119     // minping
01120     num = trap_Cvar_VariableIntegerValue("sv_minPing");
01121     trap_RankReportInt( -1, -1, QGR_KEY_MINPING, num, 0 );
01122 
01123     // maxping
01124     num = trap_Cvar_VariableIntegerValue("sv_maxPing");
01125     trap_RankReportInt( -1, -1, QGR_KEY_MAXPING, num, 0 );
01126 
01127     // dedicated
01128     num = trap_Cvar_VariableIntegerValue("dedicated");
01129     trap_RankReportInt( -1, -1, QGR_KEY_DEDICATED, num, 0 );
01130 
01131     // version
01132     trap_Cvar_VariableStringBuffer( "version", str, sizeof(str) );
01133     trap_RankReportStr( -1, -1, QGR_KEY_VERSION, str );
01134 }

Here is the call graph for this function:

void G_RankPickupAmmo int  self,
int  weapon,
int  quantity
 

Definition at line 757 of file g_rankings.c.

References level, QGR_KEY_BOXES, QGR_KEY_BOXES_BFG_AMMO, QGR_KEY_BOXES_BULLETS, QGR_KEY_BOXES_CELLS, QGR_KEY_BOXES_GRENADES, QGR_KEY_BOXES_LG_AMMO, QGR_KEY_BOXES_ROCKETS, QGR_KEY_BOXES_SHELLS, QGR_KEY_BOXES_SLUGS, QGR_KEY_ROUNDS, QGR_KEY_ROUNDS_BFG_AMMO, QGR_KEY_ROUNDS_BULLETS, QGR_KEY_ROUNDS_CELLS, QGR_KEY_ROUNDS_GRENADES, QGR_KEY_ROUNDS_LG_AMMO, QGR_KEY_ROUNDS_ROCKETS, QGR_KEY_ROUNDS_SHELLS, QGR_KEY_ROUNDS_SLUGS, level_locals_t::warmupTime, WP_BFG, WP_GRENADE_LAUNCHER, WP_LIGHTNING, WP_MACHINEGUN, WP_PLASMAGUN, WP_RAILGUN, WP_ROCKET_LAUNCHER, and WP_SHOTGUN.

00758 {
00759     if( level.warmupTime != 0 )
00760     {
00761         // no reports during warmup period
00762         return;
00763     }
00764     
00765     trap_RankReportInt( self, -1, QGR_KEY_BOXES, 1, 1 );
00766     trap_RankReportInt( self, -1, QGR_KEY_ROUNDS, quantity, 1 );
00767     
00768     switch( weapon )
00769     {
00770     case WP_MACHINEGUN:
00771         trap_RankReportInt( self, -1, QGR_KEY_BOXES_BULLETS, 1, 1 );
00772         trap_RankReportInt( self, -1, QGR_KEY_ROUNDS_BULLETS, quantity, 1 );
00773         break;
00774     case WP_SHOTGUN:
00775         trap_RankReportInt( self, -1, QGR_KEY_BOXES_SHELLS, 1, 1 );
00776         trap_RankReportInt( self, -1, QGR_KEY_ROUNDS_SHELLS, quantity, 1 );
00777         break;
00778     case WP_GRENADE_LAUNCHER:
00779         trap_RankReportInt( self, -1, QGR_KEY_BOXES_GRENADES, 1, 1 );
00780         trap_RankReportInt( self, -1, QGR_KEY_ROUNDS_GRENADES, quantity, 1 );
00781         break;
00782     case WP_ROCKET_LAUNCHER:
00783         trap_RankReportInt( self, -1, QGR_KEY_BOXES_ROCKETS, 1, 1 );
00784         trap_RankReportInt( self, -1, QGR_KEY_ROUNDS_ROCKETS, quantity, 1 );
00785         break;
00786     case WP_LIGHTNING:
00787         trap_RankReportInt( self, -1, QGR_KEY_BOXES_LG_AMMO, 1, 1 );
00788         trap_RankReportInt( self, -1, QGR_KEY_ROUNDS_LG_AMMO, quantity, 1 );
00789         break;
00790     case WP_RAILGUN:
00791         trap_RankReportInt( self, -1, QGR_KEY_BOXES_SLUGS, 1, 1 );
00792         trap_RankReportInt( self, -1, QGR_KEY_ROUNDS_SLUGS, quantity, 1 );
00793         break;
00794     case WP_PLASMAGUN:
00795         trap_RankReportInt( self, -1, QGR_KEY_BOXES_CELLS, 1, 1 );
00796         trap_RankReportInt( self, -1, QGR_KEY_ROUNDS_CELLS, quantity, 1 );
00797         break;
00798     case WP_BFG:
00799         trap_RankReportInt( self, -1, QGR_KEY_BOXES_BFG_AMMO, 1, 1 );
00800         trap_RankReportInt( self, -1, QGR_KEY_ROUNDS_BFG_AMMO, quantity, 1 );
00801         break;
00802     default:
00803         break;
00804     }
00805 }

void G_RankPickupArmor int  self,
int  quantity
 

Definition at line 847 of file g_rankings.c.

References level, QGR_KEY_ARMOR, QGR_KEY_ARMOR_RED, QGR_KEY_ARMOR_SHARD, QGR_KEY_ARMOR_TOTAL, QGR_KEY_ARMOR_YELLOW, and level_locals_t::warmupTime.

00848 {
00849     if( level.warmupTime != 0 )
00850     {
00851         // no reports during warmup period
00852         return;
00853     }
00854     
00855     trap_RankReportInt( self, -1, QGR_KEY_ARMOR, 1, 1 );
00856     trap_RankReportInt( self, -1, QGR_KEY_ARMOR_TOTAL, quantity, 1 );
00857 
00858     switch( quantity )
00859     {
00860     case 5:
00861         trap_RankReportInt( self, -1, QGR_KEY_ARMOR_SHARD, 1, 1 );
00862         break;
00863     case 50:
00864         trap_RankReportInt( self, -1, QGR_KEY_ARMOR_YELLOW, 1, 1 );
00865         break;
00866     case 100:
00867         trap_RankReportInt( self, -1, QGR_KEY_ARMOR_RED, 1, 1 );
00868         break;
00869     default:
00870         break;
00871     }
00872 }

void G_RankPickupHealth int  self,
int  quantity
 

Definition at line 812 of file g_rankings.c.

References level, QGR_KEY_HEALTH, QGR_KEY_HEALTH_25, QGR_KEY_HEALTH_5, QGR_KEY_HEALTH_50, QGR_KEY_HEALTH_MEGA, QGR_KEY_HEALTH_TOTAL, and level_locals_t::warmupTime.

00813 {
00814     if( level.warmupTime != 0 )
00815     {
00816         // no reports during warmup period
00817         return;
00818     }
00819     
00820     trap_RankReportInt( self, -1, QGR_KEY_HEALTH, 1, 1 );
00821     trap_RankReportInt( self, -1, QGR_KEY_HEALTH_TOTAL, quantity, 1 );
00822 
00823     switch( quantity )
00824     {
00825     case 5:
00826         trap_RankReportInt( self, -1, QGR_KEY_HEALTH_5, 1, 1 );
00827         break;
00828     case 25:
00829         trap_RankReportInt( self, -1, QGR_KEY_HEALTH_25, 1, 1 );
00830         break;
00831     case 50:
00832         trap_RankReportInt( self, -1, QGR_KEY_HEALTH_50, 1, 1 );
00833         break;
00834     case 100:
00835         trap_RankReportInt( self, -1, QGR_KEY_HEALTH_MEGA, 1, 1 );
00836         break;
00837     default:
00838         break;
00839     }
00840 }

void G_RankPickupHoldable int  self,
int  holdable
 

Definition at line 926 of file g_rankings.c.

References HI_MEDKIT, HI_TELEPORTER, level, QGR_KEY_MEDKIT, QGR_KEY_TELEPORTER, and level_locals_t::warmupTime.

00927 {
00928     if( level.warmupTime != 0 )
00929     {
00930         // no reports during warmup period
00931         return;
00932     }
00933     
00934     switch( holdable )
00935     {
00936     case HI_MEDKIT:
00937         trap_RankReportInt( self, -1, QGR_KEY_MEDKIT, 1, 1 );
00938         break;
00939     case HI_TELEPORTER:
00940         trap_RankReportInt( self, -1, QGR_KEY_TELEPORTER, 1, 1 );
00941         break;
00942     default:
00943         break;
00944     }
00945 }

void G_RankPickupPowerup int  self,
int  powerup
 

Definition at line 879 of file g_rankings.c.

References level, PW_BATTLESUIT, PW_FLIGHT, PW_HASTE, PW_INVIS, PW_QUAD, PW_REGEN, QGR_KEY_FLAG_PICKUP, QGR_KEY_FLIGHT, QGR_KEY_HASTE, QGR_KEY_INVIS, QGR_KEY_POWERUP, QGR_KEY_QUAD, QGR_KEY_REGEN, QGR_KEY_SUIT, and level_locals_t::warmupTime.

00880 {
00881     if( level.warmupTime != 0 )
00882     {
00883         // no reports during warmup period
00884         return;
00885     }
00886     
00887     // ctf flags are treated as powerups
00888     if( (powerup == PW_REDFLAG) || (powerup == PW_BLUEFLAG) )
00889     {
00890         trap_RankReportInt( self, -1, QGR_KEY_FLAG_PICKUP, 1, 1 );
00891         return;
00892     }
00893 
00894     trap_RankReportInt( self, -1, QGR_KEY_POWERUP, 1, 1 );
00895     
00896     switch( powerup )
00897     {
00898     case PW_QUAD:
00899         trap_RankReportInt( self, -1, QGR_KEY_QUAD, 1, 1 );
00900         break;
00901     case PW_BATTLESUIT:
00902         trap_RankReportInt( self, -1, QGR_KEY_SUIT, 1, 1 );
00903         break;
00904     case PW_HASTE:
00905         trap_RankReportInt( self, -1, QGR_KEY_HASTE, 1, 1 );
00906         break;
00907     case PW_INVIS:
00908         trap_RankReportInt( self, -1, QGR_KEY_INVIS, 1, 1 );
00909         break;
00910     case PW_REGEN:
00911         trap_RankReportInt( self, -1, QGR_KEY_REGEN, 1, 1 );
00912         break;
00913     case PW_FLIGHT:
00914         trap_RankReportInt( self, -1, QGR_KEY_FLIGHT, 1, 1 );
00915         break;
00916     default:
00917         break;
00918     }
00919 }

void G_RankPickupWeapon int  self,
int  weapon
 

Definition at line 706 of file g_rankings.c.

References level, QGR_KEY_PICKUP_BFG, QGR_KEY_PICKUP_GAUNTLET, QGR_KEY_PICKUP_GRAPPLE, QGR_KEY_PICKUP_GRENADE, QGR_KEY_PICKUP_LIGHTNING, QGR_KEY_PICKUP_MACHINEGUN, QGR_KEY_PICKUP_PLASMA, QGR_KEY_PICKUP_RAILGUN, QGR_KEY_PICKUP_ROCKET, QGR_KEY_PICKUP_SHOTGUN, QGR_KEY_PICKUP_WEAPON, level_locals_t::warmupTime, WP_BFG, WP_GAUNTLET, WP_GRAPPLING_HOOK, WP_GRENADE_LAUNCHER, WP_LIGHTNING, WP_MACHINEGUN, WP_PLASMAGUN, WP_RAILGUN, WP_ROCKET_LAUNCHER, and WP_SHOTGUN.

00707 {
00708     if( level.warmupTime != 0 )
00709     {
00710         // no reports during warmup period
00711         return;
00712     }
00713     
00714     trap_RankReportInt( self, -1, QGR_KEY_PICKUP_WEAPON, 1, 1 );
00715     switch( weapon )
00716     {
00717     case WP_GAUNTLET:
00718         trap_RankReportInt( self, -1, QGR_KEY_PICKUP_GAUNTLET, 1, 1 );
00719         break;
00720     case WP_MACHINEGUN:
00721         trap_RankReportInt( self, -1, QGR_KEY_PICKUP_MACHINEGUN, 1, 1 );
00722         break;
00723     case WP_SHOTGUN:
00724         trap_RankReportInt( self, -1, QGR_KEY_PICKUP_SHOTGUN, 1, 1 );
00725         break;
00726     case WP_GRENADE_LAUNCHER:
00727         trap_RankReportInt( self, -1, QGR_KEY_PICKUP_GRENADE, 1, 1 );
00728         break;
00729     case WP_ROCKET_LAUNCHER:
00730         trap_RankReportInt( self, -1, QGR_KEY_PICKUP_ROCKET, 1, 1 );
00731         break;
00732     case WP_LIGHTNING:
00733         trap_RankReportInt( self, -1, QGR_KEY_PICKUP_LIGHTNING, 1, 1 );
00734         break;
00735     case WP_RAILGUN:
00736         trap_RankReportInt( self, -1, QGR_KEY_PICKUP_RAILGUN, 1, 1 );
00737         break;
00738     case WP_PLASMAGUN:
00739         trap_RankReportInt( self, -1, QGR_KEY_PICKUP_PLASMA, 1, 1 );
00740         break;
00741     case WP_BFG:
00742         trap_RankReportInt( self, -1, QGR_KEY_PICKUP_BFG, 1, 1 );
00743         break;
00744     case WP_GRAPPLING_HOOK:
00745         trap_RankReportInt( self, -1, QGR_KEY_PICKUP_GRAPPLE, 1, 1 );
00746         break;
00747     default:
00748         break;
00749     }
00750 }

void G_RankPlayerDie int  self,
int  attacker,
int  means_of_death
 

Definition at line 490 of file g_rankings.c.

References level, MOD_BFG, MOD_BFG_SPLASH, MOD_CRUSH, MOD_FALLING, MOD_GAUNTLET, MOD_GRAPPLE, MOD_GRENADE, MOD_GRENADE_SPLASH, MOD_LAVA, MOD_LIGHTNING, MOD_MACHINEGUN, MOD_PLASMA, MOD_PLASMA_SPLASH, MOD_RAILGUN, MOD_ROCKET, MOD_ROCKET_SPLASH, MOD_SHOTGUN, MOD_SLIME, MOD_SUICIDE, MOD_TELEFRAG, MOD_TRIGGER_HURT, MOD_WATER, p2, QGR_KEY_CRUSH, QGR_KEY_FALLING, QGR_KEY_FRAG, QGR_KEY_FRAG_BFG, QGR_KEY_FRAG_GAUNTLET, QGR_KEY_FRAG_GRAPPLE, QGR_KEY_FRAG_GRENADE, QGR_KEY_FRAG_LIGHTNING, QGR_KEY_FRAG_MACHINEGUN, QGR_KEY_FRAG_PLASMA, QGR_KEY_FRAG_RAILGUN, QGR_KEY_FRAG_ROCKET, QGR_KEY_FRAG_SHOTGUN, QGR_KEY_FRAG_UNKNOWN, QGR_KEY_HAZARD_DEATH, QGR_KEY_HAZARD_MISC, QGR_KEY_LAVA, QGR_KEY_SLIME, QGR_KEY_SUICIDE, QGR_KEY_SUICIDE_BFG, QGR_KEY_SUICIDE_CMD, QGR_KEY_SUICIDE_GAUNTLET, QGR_KEY_SUICIDE_GRAPPLE, QGR_KEY_SUICIDE_GRENADE, QGR_KEY_SUICIDE_LIGHTNING, QGR_KEY_SUICIDE_MACHINEGUN, QGR_KEY_SUICIDE_PLASMA, QGR_KEY_SUICIDE_RAILGUN, QGR_KEY_SUICIDE_ROCKET, QGR_KEY_SUICIDE_SHOTGUN, QGR_KEY_SUICIDE_UNKNOWN, QGR_KEY_TELEFRAG, QGR_KEY_TRIGGER_HURT, QGR_KEY_WATER, and level_locals_t::warmupTime.

00491 {
00492     int p1;
00493     int p2;
00494 
00495     if( level.warmupTime != 0 )
00496     {
00497         // no reports during warmup period
00498         return;
00499     }
00500     
00501     if( attacker == ENTITYNUM_WORLD )
00502     {
00503         p1 = self;
00504         p2 = -1;
00505         
00506         trap_RankReportInt( p1, p2, QGR_KEY_HAZARD_DEATH, 1, 1 );
00507 
00508         switch( means_of_death )
00509         {
00510         case MOD_WATER:
00511             trap_RankReportInt( p1, p2, QGR_KEY_WATER, 1, 1 );
00512             break;
00513         case MOD_SLIME:
00514             trap_RankReportInt( p1, p2, QGR_KEY_SLIME, 1, 1 );
00515             break;
00516         case MOD_LAVA:
00517             trap_RankReportInt( p1, p2, QGR_KEY_LAVA, 1, 1 );
00518             break;
00519         case MOD_CRUSH:
00520             trap_RankReportInt( p1, p2, QGR_KEY_CRUSH, 1, 1 );
00521             break;
00522         case MOD_TELEFRAG:
00523             trap_RankReportInt( p1, p2, QGR_KEY_TELEFRAG, 1, 1 );
00524             break;
00525         case MOD_FALLING:
00526             trap_RankReportInt( p1, p2, QGR_KEY_FALLING, 1, 1 );
00527             break;
00528         case MOD_SUICIDE:
00529             trap_RankReportInt( p1, p2, QGR_KEY_SUICIDE_CMD, 1, 1 );
00530             break;
00531         case MOD_TRIGGER_HURT:
00532             trap_RankReportInt( p1, p2, QGR_KEY_TRIGGER_HURT, 1, 1 );
00533             break;
00534         default:
00535             trap_RankReportInt( p1, p2, QGR_KEY_HAZARD_MISC, 1, 1 );
00536             break;
00537         }
00538     }
00539     else if( attacker == self )
00540     {
00541         p1 = self;
00542         p2 = -1;
00543         
00544         trap_RankReportInt( p1, p2, QGR_KEY_SUICIDE, 1, 1 );
00545         
00546         switch( means_of_death )
00547         {
00548         case MOD_GAUNTLET:
00549             trap_RankReportInt( p1, p2, QGR_KEY_SUICIDE_GAUNTLET, 1, 1 );
00550             break;
00551         case MOD_MACHINEGUN:
00552             trap_RankReportInt( p1, p2, QGR_KEY_SUICIDE_MACHINEGUN, 1, 1 );
00553             break;
00554         case MOD_SHOTGUN:
00555             trap_RankReportInt( p1, p2, QGR_KEY_SUICIDE_SHOTGUN, 1, 1 );
00556             break;
00557         case MOD_GRENADE:
00558         case MOD_GRENADE_SPLASH:
00559             trap_RankReportInt( p1, p2, QGR_KEY_SUICIDE_GRENADE, 1, 1 );
00560             break;
00561         case MOD_ROCKET:
00562         case MOD_ROCKET_SPLASH:
00563             trap_RankReportInt( p1, p2, QGR_KEY_SUICIDE_ROCKET, 1, 1 );
00564             break;
00565         case MOD_PLASMA:
00566         case MOD_PLASMA_SPLASH:
00567             trap_RankReportInt( p1, p2, QGR_KEY_SUICIDE_PLASMA, 1, 1 );
00568             break;
00569         case MOD_RAILGUN:
00570             trap_RankReportInt( p1, p2, QGR_KEY_SUICIDE_RAILGUN, 1, 1 );
00571             break;
00572         case MOD_LIGHTNING:
00573             trap_RankReportInt( p1, p2, QGR_KEY_SUICIDE_LIGHTNING, 1, 1 );
00574             break;
00575         case MOD_BFG:
00576         case MOD_BFG_SPLASH:
00577             trap_RankReportInt( p1, p2, QGR_KEY_SUICIDE_BFG, 1, 1 );
00578             break;
00579         case MOD_GRAPPLE:
00580             trap_RankReportInt( p1, p2, QGR_KEY_SUICIDE_GRAPPLE, 1, 1 );
00581             break;
00582         default:
00583             trap_RankReportInt( p1, p2, QGR_KEY_SUICIDE_UNKNOWN, 1, 1 );
00584             break;
00585         }
00586     }
00587     else
00588     {
00589         p1 = attacker;
00590         p2 = self;
00591 
00592         trap_RankReportInt( p1, p2, QGR_KEY_FRAG, 1, 1 );
00593         
00594         switch( means_of_death )
00595         {
00596         case MOD_GAUNTLET:
00597             trap_RankReportInt( p1, p2, QGR_KEY_FRAG_GAUNTLET, 1, 1 );
00598             break;
00599         case MOD_MACHINEGUN:
00600             trap_RankReportInt( p1, p2, QGR_KEY_FRAG_MACHINEGUN, 1, 1 );
00601             break;
00602         case MOD_SHOTGUN:
00603             trap_RankReportInt( p1, p2, QGR_KEY_FRAG_SHOTGUN, 1, 1 );
00604             break;
00605         case MOD_GRENADE:
00606         case MOD_GRENADE_SPLASH:
00607             trap_RankReportInt( p1, p2, QGR_KEY_FRAG_GRENADE, 1, 1 );
00608             break;
00609         case MOD_ROCKET:
00610         case MOD_ROCKET_SPLASH:
00611             trap_RankReportInt( p1, p2, QGR_KEY_FRAG_ROCKET, 1, 1 );
00612             break;
00613         case MOD_PLASMA:
00614         case MOD_PLASMA_SPLASH:
00615             trap_RankReportInt( p1, p2, QGR_KEY_FRAG_PLASMA, 1, 1 );
00616             break;
00617         case MOD_RAILGUN:
00618             trap_RankReportInt( p1, p2, QGR_KEY_FRAG_RAILGUN, 1, 1 );
00619             break;
00620         case MOD_LIGHTNING:
00621             trap_RankReportInt( p1, p2, QGR_KEY_FRAG_LIGHTNING, 1, 1 );
00622             break;
00623         case MOD_BFG:
00624         case MOD_BFG_SPLASH:
00625             trap_RankReportInt( p1, p2, QGR_KEY_FRAG_BFG, 1, 1 );
00626             break;
00627         case MOD_GRAPPLE:
00628             trap_RankReportInt( p1, p2, QGR_KEY_FRAG_GRAPPLE, 1, 1 );
00629             break;
00630         default:
00631             trap_RankReportInt( p1, p2, QGR_KEY_FRAG_UNKNOWN, 1, 1 );
00632             break;
00633         }
00634     }
00635 }

void G_RankReward int  self,
int  award
 

Definition at line 978 of file g_rankings.c.

References EF_AWARD_EXCELLENT, EF_AWARD_IMPRESSIVE, level, QGR_KEY_EXCELLENT, QGR_KEY_IMPRESSIVE, and level_locals_t::warmupTime.

00979 {
00980     if( level.warmupTime != 0 )
00981     {
00982         // no reports during warmup period
00983         return;
00984     }
00985     
00986     switch( award )
00987     {
00988     case EF_AWARD_IMPRESSIVE:
00989         trap_RankReportInt( self, -1, QGR_KEY_IMPRESSIVE, 1, 1 );
00990         break;
00991     case EF_AWARD_EXCELLENT:
00992         trap_RankReportInt( self, -1, QGR_KEY_EXCELLENT, 1, 1 );
00993         break;
00994     default:
00995         break;
00996     }
00997 }

void G_RankRunFrame  ) 
 

Definition at line 32 of file g_rankings.c.

References gentity_s::client, entityState_s::clientNum, ClientSpawn(), DeathmatchScoreboardMessage(), clientPersistant_t::enterTime, EXEC_INSERT, g_entities, g_fraglimit, g_gametype, g_timelimit, gentity_t, i, vmCvar_t::integer, level_locals_t::intermissiontime, gentity_s::inuse, j, level, level_locals_t::maxclients, clientPersistant_t::netname, gclient_s::pers, playerState_s::persistant, gclient_s::ps, QGR_KEY_PLAYED_WITH, gentity_s::r, gentity_s::s, gclient_s::sess, clientSession_t::sessionTeam, SetTeam(), clientSession_t::spectatorState, entityShared_t::svFlags, level_locals_t::time, time(), trap_Cvar_Set(), trap_SendConsoleCommand(), trap_SendServerCommand(), and va().

00033 {
00034     gentity_t*      ent;
00035     gentity_t*      ent2;
00036     grank_status_t  old_status;
00037     grank_status_t  status;
00038     int             time;
00039     int             i;
00040     int             j;
00041 
00042     if( !trap_RankCheckInit() ) 
00043     {
00044         trap_RankBegin( GR_GAMEKEY );
00045     }
00046 
00047     trap_RankPoll();
00048     
00049     if( trap_RankActive() )
00050     {
00051         for( i = 0; i < level.maxclients; i++ )
00052         {
00053             ent = &(g_entities[i]);
00054             if ( !ent->inuse )
00055                 continue;
00056             if ( ent->client == NULL )
00057                 continue;
00058             if ( ent->r.svFlags & SVF_BOT)
00059             {
00060                 // no bots in ranked games
00061                 trap_SendConsoleCommand( EXEC_INSERT, va("kick %s\n", 
00062                     ent->client->pers.netname) );
00063                 continue;
00064             }
00065 
00066             old_status = ent->client->client_status;
00067             status = trap_RankUserStatus( i );
00068             
00069             if( ent->client->client_status != status )
00070             {
00071                 // inform client of current status
00072                 // not needed for client side log in
00073                 trap_SendServerCommand( i, va("rank_status %i\n",status) );
00074                 if ( i == 0 )
00075                 {
00076                     int j = 0;
00077                 }
00078                 ent->client->client_status = status;
00079             }
00080             
00081             switch( status )
00082             {
00083             case QGR_STATUS_NEW:
00084             case QGR_STATUS_SPECTATOR:
00085                 if( ent->client->sess.sessionTeam != TEAM_SPECTATOR )
00086                 {
00087                     ent->client->sess.sessionTeam = TEAM_SPECTATOR;
00088                     ent->client->sess.spectatorState = SPECTATOR_FREE;
00089                     ClientSpawn( ent );
00090                     // make sure by now CS_GRAND rankingsGameID is ready
00091                     trap_SendServerCommand( i, va("rank_status %i\n",status) );
00092                     trap_SendServerCommand( i, "rank_menu\n" );
00093                 }
00094                 break;
00095             case QGR_STATUS_NO_USER:
00096             case QGR_STATUS_BAD_PASSWORD:
00097             case QGR_STATUS_TIMEOUT:
00098             case QGR_STATUS_NO_MEMBERSHIP:
00099             case QGR_STATUS_INVALIDUSER:
00100             case QGR_STATUS_ERROR:
00101                 if( (ent->r.svFlags & SVF_BOT) == 0 )
00102                 {
00103                     trap_RankUserReset( ent->s.clientNum );
00104                 }
00105                 break;
00106             case QGR_STATUS_ACTIVE:
00107                 if( (ent->client->sess.sessionTeam == TEAM_SPECTATOR) &&
00108                     (g_gametype.integer < GT_TEAM) )
00109                 {
00110                     SetTeam( ent, "free" );
00111                 }
00112 
00113                 if( old_status != QGR_STATUS_ACTIVE )
00114                 {
00115                     // player has just become active
00116                     for( j = 0; j < level.maxclients; j++ )
00117                     {
00118                         ent2 = &(g_entities[j]);
00119                         if ( !ent2->inuse )
00120                             continue;
00121                         if ( ent2->client == NULL )
00122                             continue;
00123                         if ( ent2->r.svFlags & SVF_BOT)
00124                             continue;
00125 
00126                         if( (i != j) && (trap_RankUserStatus( j ) == QGR_STATUS_ACTIVE) )
00127                         {
00128                             trap_RankReportInt( i, j, QGR_KEY_PLAYED_WITH, 1, 0 );
00129                         }
00130 
00131                         // send current scores so the player's rank will show 
00132                         // up under the crosshair immediately
00133                         DeathmatchScoreboardMessage( ent2 );
00134                     }
00135                 }
00136                 break;
00137             default:
00138                 break;
00139             }
00140         }
00141 
00142         // don't let ranked games last forever
00143         if( ((g_fraglimit.integer == 0) || (g_fraglimit.integer > 100)) && 
00144             ((g_timelimit.integer == 0) || (g_timelimit.integer > 1000)) )
00145         {
00146             trap_Cvar_Set( "timelimit", "1000" );
00147         }
00148     }
00149 
00150     // tell time to clients so they can show current match rating
00151     if( level.intermissiontime == 0 )
00152     {
00153         for( i = 0; i < level.maxclients; i++ )
00154         {
00155             ent = &(g_entities[i]);
00156             if( ent->client == NULL )
00157             {
00158                 continue;
00159             }
00160 
00161             time = (level.time - ent->client->pers.enterTime) / 1000;
00162             ent->client->ps.persistant[PERS_MATCH_TIME] = time;
00163         }
00164     }
00165 }

Here is the call graph for this function:

void G_RankUseHoldable int  self,
int  holdable
 

Definition at line 952 of file g_rankings.c.

References HI_MEDKIT, HI_TELEPORTER, level, QGR_KEY_MEDKIT_USE, QGR_KEY_TELEPORTER_USE, and level_locals_t::warmupTime.

00953 {
00954     if( level.warmupTime != 0 )
00955     {
00956         // no reports during warmup period
00957         return;
00958     }
00959     
00960     switch( holdable )
00961     {
00962     case HI_MEDKIT:
00963         trap_RankReportInt( self, -1, QGR_KEY_MEDKIT_USE, 1, 1 );
00964         break;
00965     case HI_TELEPORTER:
00966         trap_RankReportInt( self, -1, QGR_KEY_TELEPORTER_USE, 1, 1 );
00967         break;
00968     default:
00969         break;
00970     }
00971 }

void G_RankUserTeamName int  self,
char *  team_name
 

Definition at line 1020 of file g_rankings.c.

References level, QGR_KEY_TEAM_NAME, and level_locals_t::warmupTime.

01021 {
01022     if( level.warmupTime != 0 )
01023     {
01024         // no reports during warmup period
01025         return;
01026     }
01027     
01028     trap_RankReportStr( self, -1, QGR_KEY_TEAM_NAME, team_name );
01029 }

void G_RankWeaponTime int  self,
int  weapon
 

Definition at line 642 of file g_rankings.c.

References gentity_s::client, g_entities, gclient_t, level, QGR_KEY_TIME, QGR_KEY_TIME_BFG, QGR_KEY_TIME_GAUNTLET, QGR_KEY_TIME_GRAPPLE, QGR_KEY_TIME_GRENADE, QGR_KEY_TIME_LIGHTNING, QGR_KEY_TIME_MACHINEGUN, QGR_KEY_TIME_PLASMA, QGR_KEY_TIME_RAILGUN, QGR_KEY_TIME_ROCKET, QGR_KEY_TIME_SHOTGUN, level_locals_t::time, time(), level_locals_t::warmupTime, WP_BFG, WP_GAUNTLET, WP_GRAPPLING_HOOK, WP_GRENADE_LAUNCHER, WP_LIGHTNING, WP_MACHINEGUN, WP_PLASMAGUN, WP_RAILGUN, WP_ROCKET_LAUNCHER, and WP_SHOTGUN.

00643 {
00644     gclient_t*  client;
00645     int         time;
00646 
00647     if( level.warmupTime != 0 )
00648     {
00649         // no reports during warmup period
00650         return;
00651     }
00652     
00653     client = g_entities[self].client;
00654     time = (level.time - client->weapon_change_time) / 1000;
00655     client->weapon_change_time = level.time;
00656 
00657     if( time <= 0 )
00658     {
00659         return;
00660     }
00661     
00662     trap_RankReportInt( self, -1, QGR_KEY_TIME, time, 1 );
00663 
00664     switch( weapon )
00665     {
00666     case WP_GAUNTLET:
00667         trap_RankReportInt( self, -1, QGR_KEY_TIME_GAUNTLET, time, 1 );
00668         break;
00669     case WP_MACHINEGUN:
00670         trap_RankReportInt( self, -1, QGR_KEY_TIME_MACHINEGUN, time, 1 );
00671         break;
00672     case WP_SHOTGUN:
00673         trap_RankReportInt( self, -1, QGR_KEY_TIME_SHOTGUN, time, 1 );
00674         break;
00675     case WP_GRENADE_LAUNCHER:
00676         trap_RankReportInt( self, -1, QGR_KEY_TIME_GRENADE, time, 1 );
00677         break;
00678     case WP_ROCKET_LAUNCHER:
00679         trap_RankReportInt( self, -1, QGR_KEY_TIME_ROCKET, time, 1 );
00680         break;
00681     case WP_LIGHTNING:
00682         trap_RankReportInt( self, -1, QGR_KEY_TIME_LIGHTNING, time, 1 );
00683         break;
00684     case WP_RAILGUN:
00685         trap_RankReportInt( self, -1, QGR_KEY_TIME_RAILGUN, time, 1 );
00686         break;
00687     case WP_PLASMAGUN:
00688         trap_RankReportInt( self, -1, QGR_KEY_TIME_PLASMA, time, 1 );
00689         break;
00690     case WP_BFG:
00691         trap_RankReportInt( self, -1, QGR_KEY_TIME_BFG, time, 1 );
00692         break;
00693     case WP_GRAPPLING_HOOK:
00694         trap_RankReportInt( self, -1, QGR_KEY_TIME_GRAPPLE, time, 1 );
00695         break;
00696     default:
00697         break;
00698     }
00699 }

Here is the call graph for this function:


Generated on Thu Aug 25 13:56:43 2005 for Quake III Arena by  doxygen 1.3.9.1