📄 g_rankings.c
字号:
case MOD_RAILGUN:
trap_RankReportInt( p1, p2, QGR_KEY_SUICIDE_RAILGUN, 1, 1 );
break;
case MOD_LIGHTNING:
trap_RankReportInt( p1, p2, QGR_KEY_SUICIDE_LIGHTNING, 1, 1 );
break;
case MOD_BFG:
case MOD_BFG_SPLASH:
trap_RankReportInt( p1, p2, QGR_KEY_SUICIDE_BFG, 1, 1 );
break;
case MOD_GRAPPLE:
trap_RankReportInt( p1, p2, QGR_KEY_SUICIDE_GRAPPLE, 1, 1 );
break;
default:
trap_RankReportInt( p1, p2, QGR_KEY_SUICIDE_UNKNOWN, 1, 1 );
break;
}
}
else
{
p1 = attacker;
p2 = self;
trap_RankReportInt( p1, p2, QGR_KEY_FRAG, 1, 1 );
switch( means_of_death )
{
case MOD_GAUNTLET:
trap_RankReportInt( p1, p2, QGR_KEY_FRAG_GAUNTLET, 1, 1 );
break;
case MOD_MACHINEGUN:
trap_RankReportInt( p1, p2, QGR_KEY_FRAG_MACHINEGUN, 1, 1 );
break;
case MOD_SHOTGUN:
trap_RankReportInt( p1, p2, QGR_KEY_FRAG_SHOTGUN, 1, 1 );
break;
case MOD_GRENADE:
case MOD_GRENADE_SPLASH:
trap_RankReportInt( p1, p2, QGR_KEY_FRAG_GRENADE, 1, 1 );
break;
case MOD_ROCKET:
case MOD_ROCKET_SPLASH:
trap_RankReportInt( p1, p2, QGR_KEY_FRAG_ROCKET, 1, 1 );
break;
case MOD_PLASMA:
case MOD_PLASMA_SPLASH:
trap_RankReportInt( p1, p2, QGR_KEY_FRAG_PLASMA, 1, 1 );
break;
case MOD_RAILGUN:
trap_RankReportInt( p1, p2, QGR_KEY_FRAG_RAILGUN, 1, 1 );
break;
case MOD_LIGHTNING:
trap_RankReportInt( p1, p2, QGR_KEY_FRAG_LIGHTNING, 1, 1 );
break;
case MOD_BFG:
case MOD_BFG_SPLASH:
trap_RankReportInt( p1, p2, QGR_KEY_FRAG_BFG, 1, 1 );
break;
case MOD_GRAPPLE:
trap_RankReportInt( p1, p2, QGR_KEY_FRAG_GRAPPLE, 1, 1 );
break;
default:
trap_RankReportInt( p1, p2, QGR_KEY_FRAG_UNKNOWN, 1, 1 );
break;
}
}
}
/*
================
G_RankWeaponTime
================
*/
void G_RankWeaponTime( int self, int weapon )
{
gclient_t* client;
int time;
if( level.warmupTime != 0 )
{
// no reports during warmup period
return;
}
client = g_entities[self].client;
time = (level.time - client->weapon_change_time) / 1000;
client->weapon_change_time = level.time;
if( time <= 0 )
{
return;
}
trap_RankReportInt( self, -1, QGR_KEY_TIME, time, 1 );
switch( weapon )
{
case WP_GAUNTLET:
trap_RankReportInt( self, -1, QGR_KEY_TIME_GAUNTLET, time, 1 );
break;
case WP_MACHINEGUN:
trap_RankReportInt( self, -1, QGR_KEY_TIME_MACHINEGUN, time, 1 );
break;
case WP_SHOTGUN:
trap_RankReportInt( self, -1, QGR_KEY_TIME_SHOTGUN, time, 1 );
break;
case WP_GRENADE_LAUNCHER:
trap_RankReportInt( self, -1, QGR_KEY_TIME_GRENADE, time, 1 );
break;
case WP_ROCKET_LAUNCHER:
trap_RankReportInt( self, -1, QGR_KEY_TIME_ROCKET, time, 1 );
break;
case WP_LIGHTNING:
trap_RankReportInt( self, -1, QGR_KEY_TIME_LIGHTNING, time, 1 );
break;
case WP_RAILGUN:
trap_RankReportInt( self, -1, QGR_KEY_TIME_RAILGUN, time, 1 );
break;
case WP_PLASMAGUN:
trap_RankReportInt( self, -1, QGR_KEY_TIME_PLASMA, time, 1 );
break;
case WP_BFG:
trap_RankReportInt( self, -1, QGR_KEY_TIME_BFG, time, 1 );
break;
case WP_GRAPPLING_HOOK:
trap_RankReportInt( self, -1, QGR_KEY_TIME_GRAPPLE, time, 1 );
break;
default:
break;
}
}
/*
================
G_RankPickupWeapon
================
*/
void G_RankPickupWeapon( int self, int weapon )
{
if( level.warmupTime != 0 )
{
// no reports during warmup period
return;
}
trap_RankReportInt( self, -1, QGR_KEY_PICKUP_WEAPON, 1, 1 );
switch( weapon )
{
case WP_GAUNTLET:
trap_RankReportInt( self, -1, QGR_KEY_PICKUP_GAUNTLET, 1, 1 );
break;
case WP_MACHINEGUN:
trap_RankReportInt( self, -1, QGR_KEY_PICKUP_MACHINEGUN, 1, 1 );
break;
case WP_SHOTGUN:
trap_RankReportInt( self, -1, QGR_KEY_PICKUP_SHOTGUN, 1, 1 );
break;
case WP_GRENADE_LAUNCHER:
trap_RankReportInt( self, -1, QGR_KEY_PICKUP_GRENADE, 1, 1 );
break;
case WP_ROCKET_LAUNCHER:
trap_RankReportInt( self, -1, QGR_KEY_PICKUP_ROCKET, 1, 1 );
break;
case WP_LIGHTNING:
trap_RankReportInt( self, -1, QGR_KEY_PICKUP_LIGHTNING, 1, 1 );
break;
case WP_RAILGUN:
trap_RankReportInt( self, -1, QGR_KEY_PICKUP_RAILGUN, 1, 1 );
break;
case WP_PLASMAGUN:
trap_RankReportInt( self, -1, QGR_KEY_PICKUP_PLASMA, 1, 1 );
break;
case WP_BFG:
trap_RankReportInt( self, -1, QGR_KEY_PICKUP_BFG, 1, 1 );
break;
case WP_GRAPPLING_HOOK:
trap_RankReportInt( self, -1, QGR_KEY_PICKUP_GRAPPLE, 1, 1 );
break;
default:
break;
}
}
/*
================
G_RankPickupAmmo
================
*/
void G_RankPickupAmmo( int self, int weapon, int quantity )
{
if( level.warmupTime != 0 )
{
// no reports during warmup period
return;
}
trap_RankReportInt( self, -1, QGR_KEY_BOXES, 1, 1 );
trap_RankReportInt( self, -1, QGR_KEY_ROUNDS, quantity, 1 );
switch( weapon )
{
case WP_MACHINEGUN:
trap_RankReportInt( self, -1, QGR_KEY_BOXES_BULLETS, 1, 1 );
trap_RankReportInt( self, -1, QGR_KEY_ROUNDS_BULLETS, quantity, 1 );
break;
case WP_SHOTGUN:
trap_RankReportInt( self, -1, QGR_KEY_BOXES_SHELLS, 1, 1 );
trap_RankReportInt( self, -1, QGR_KEY_ROUNDS_SHELLS, quantity, 1 );
break;
case WP_GRENADE_LAUNCHER:
trap_RankReportInt( self, -1, QGR_KEY_BOXES_GRENADES, 1, 1 );
trap_RankReportInt( self, -1, QGR_KEY_ROUNDS_GRENADES, quantity, 1 );
break;
case WP_ROCKET_LAUNCHER:
trap_RankReportInt( self, -1, QGR_KEY_BOXES_ROCKETS, 1, 1 );
trap_RankReportInt( self, -1, QGR_KEY_ROUNDS_ROCKETS, quantity, 1 );
break;
case WP_LIGHTNING:
trap_RankReportInt( self, -1, QGR_KEY_BOXES_LG_AMMO, 1, 1 );
trap_RankReportInt( self, -1, QGR_KEY_ROUNDS_LG_AMMO, quantity, 1 );
break;
case WP_RAILGUN:
trap_RankReportInt( self, -1, QGR_KEY_BOXES_SLUGS, 1, 1 );
trap_RankReportInt( self, -1, QGR_KEY_ROUNDS_SLUGS, quantity, 1 );
break;
case WP_PLASMAGUN:
trap_RankReportInt( self, -1, QGR_KEY_BOXES_CELLS, 1, 1 );
trap_RankReportInt( self, -1, QGR_KEY_ROUNDS_CELLS, quantity, 1 );
break;
case WP_BFG:
trap_RankReportInt( self, -1, QGR_KEY_BOXES_BFG_AMMO, 1, 1 );
trap_RankReportInt( self, -1, QGR_KEY_ROUNDS_BFG_AMMO, quantity, 1 );
break;
default:
break;
}
}
/*
================
G_RankPickupHealth
================
*/
void G_RankPickupHealth( int self, int quantity )
{
if( level.warmupTime != 0 )
{
// no reports during warmup period
return;
}
trap_RankReportInt( self, -1, QGR_KEY_HEALTH, 1, 1 );
trap_RankReportInt( self, -1, QGR_KEY_HEALTH_TOTAL, quantity, 1 );
switch( quantity )
{
case 5:
trap_RankReportInt( self, -1, QGR_KEY_HEALTH_5, 1, 1 );
break;
case 25:
trap_RankReportInt( self, -1, QGR_KEY_HEALTH_25, 1, 1 );
break;
case 50:
trap_RankReportInt( self, -1, QGR_KEY_HEALTH_50, 1, 1 );
break;
case 100:
trap_RankReportInt( self, -1, QGR_KEY_HEALTH_MEGA, 1, 1 );
break;
default:
break;
}
}
/*
================
G_RankPickupArmor
================
*/
void G_RankPickupArmor( int self, int quantity )
{
if( level.warmupTime != 0 )
{
// no reports during warmup period
return;
}
trap_RankReportInt( self, -1, QGR_KEY_ARMOR, 1, 1 );
trap_RankReportInt( self, -1, QGR_KEY_ARMOR_TOTAL, quantity, 1 );
switch( quantity )
{
case 5:
trap_RankReportInt( self, -1, QGR_KEY_ARMOR_SHARD, 1, 1 );
break;
case 50:
trap_RankReportInt( self, -1, QGR_KEY_ARMOR_YELLOW, 1, 1 );
break;
case 100:
trap_RankReportInt( self, -1, QGR_KEY_ARMOR_RED, 1, 1 );
break;
default:
break;
}
}
/*
================
G_RankPickupPowerup
================
*/
void G_RankPickupPowerup( int self, int powerup )
{
if( level.warmupTime != 0 )
{
// no reports during warmup period
return;
}
// ctf flags are treated as powerups
if( (powerup == PW_REDFLAG) || (powerup == PW_BLUEFLAG) )
{
trap_RankReportInt( self, -1, QGR_KEY_FLAG_PICKUP, 1, 1 );
return;
}
trap_RankReportInt( self, -1, QGR_KEY_POWERUP, 1, 1 );
switch( powerup )
{
case PW_QUAD:
trap_RankReportInt( self, -1, QGR_KEY_QUAD, 1, 1 );
break;
case PW_BATTLESUIT:
trap_RankReportInt( self, -1, QGR_KEY_SUIT, 1, 1 );
break;
case PW_HASTE:
trap_RankReportInt( self, -1, QGR_KEY_HASTE, 1, 1 );
break;
case PW_INVIS:
trap_RankReportInt( self, -1, QGR_KEY_INVIS, 1, 1 );
break;
case PW_REGEN:
trap_RankReportInt( self, -1, QGR_KEY_REGEN, 1, 1 );
break;
case PW_FLIGHT:
trap_RankReportInt( self, -1, QGR_KEY_FLIGHT, 1, 1 );
break;
default:
break;
}
}
/*
================
G_RankPickupHoldable
================
*/
void G_RankPickupHoldable( int self, int holdable )
{
if( level.warmupTime != 0 )
{
// no reports during warmup period
return;
}
switch( holdable )
{
case HI_MEDKIT:
trap_RankReportInt( self, -1, QGR_KEY_MEDKIT, 1, 1 );
break;
case HI_TELEPORTER:
trap_RankReportInt( self, -1, QGR_KEY_TELEPORTER, 1, 1 );
break;
default:
break;
}
}
/*
================
G_RankUseHoldable
================
*/
void G_RankUseHoldable( int self, int holdable )
{
if( level.warmupTime != 0 )
{
// no reports during warmup period
return;
}
switch( holdable )
{
case HI_MEDKIT:
trap_RankReportInt( self, -1, QGR_KEY_MEDKIT_USE, 1, 1 );
break;
case HI_TELEPORTER:
trap_RankReportInt( self, -1, QGR_KEY_TELEPORTER_USE, 1, 1 );
break;
default:
break;
}
}
/*
================
G_RankReward
================
*/
void G_RankReward( int self, int award )
{
if( level.warmupTime != 0 )
{
// no reports during warmup period
return;
}
switch( award )
{
case EF_AWARD_IMPRESSIVE:
trap_RankReportInt( self, -1, QGR_KEY_IMPRESSIVE, 1, 1 );
break;
case EF_AWARD_EXCELLENT:
trap_RankReportInt( self, -1, QGR_KEY_EXCELLENT, 1, 1 );
break;
default:
break;
}
}
/*
================
G_RankCapture
================
*/
void G_RankCapture( int self )
{
if( level.warmupTime != 0 )
{
// no reports during warmup period
return;
}
trap_RankReportInt( self, -1, QGR_KEY_FLAG_CAPTURE, 1, 1 );
}
/*
================
G_RankUserTeamName
================
*/
void G_RankUserTeamName( int self, char* team_name )
{
if( level.warmupTime != 0 )
{
// no reports during warmup period
return;
}
trap_RankReportStr( self, -1, QGR_KEY_TEAM_NAME, team_name );
}
/*
================
G_RankClientDisconnect
================
*/
void G_RankClientDisconnect( int self )
{
gclient_t* client;
int time;
int match_rating;
if( level.warmupTime != 0 )
{
// no reports during warmup period
return;
}
// match rating
client = g_entities[self].client;
time = (level.time - client->pers.enterTime) / 1000;
if( time < 60 )
{
match_rating = 0;
}
else
{
match_rating = client->ps.persistant[PERS_MATCH_RATING] / time;
}
trap_RankReportInt( self, -1, QGR_KEY_MATCH_RATING, match_rating, 0 );
}
/*
================
G_RankGameOver
================
*/
void G_RankGameOver( void )
{
int i;
char str[MAX_INFO_VALUE];
int num;
if( level.warmupTime != 0 )
{
// no reports during warmup period
return;
}
for( i = 0; i < level.maxclients; i++ )
{
if( trap_RankUserStatus( i ) == QGR_STATUS_ACTIVE )
{
G_RankClientDisconnect( i );
}
}
// hostname
trap_Cvar_VariableStringBuffer( "sv_hostname", str, sizeof(str) );
trap_RankReportStr( -1, -1, QGR_KEY_HOSTNAME, str );
// map
trap_Cvar_VariableStringBuffer( "mapname", str, sizeof(str) );
trap_RankReportStr( -1, -1, QGR_KEY_MAP, str );
// mod
trap_Cvar_VariableStringBuffer( "fs_game", str, sizeof(str) );
trap_RankReportStr( -1, -1, QGR_KEY_MOD, str );
// gametype
num = trap_Cvar_VariableIntegerValue("g_gametype");
trap_RankReportInt( -1, -1, QGR_KEY_GAMETYPE, num, 0 );
// fraglimit
num = trap_Cvar_VariableIntegerValue("fraglimit");
trap_RankReportInt( -1, -1, QGR_KEY_FRAGLIMIT, num, 0 );
// timelimit
num = trap_Cvar_VariableIntegerValue("timelimit");
trap_RankReportInt( -1, -1, QGR_KEY_TIMELIMIT, num, 0 );
// maxclients
num = trap_Cvar_VariableIntegerValue("sv_maxclients");
trap_RankReportInt( -1, -1, QGR_KEY_MAXCLIENTS, num, 0 );
// maxrate
num = trap_Cvar_VariableIntegerValue("sv_maxRate");
trap_RankReportInt( -1, -1, QGR_KEY_MAXRATE, num, 0 );
// minping
num = trap_Cvar_VariableIntegerValue("sv_minPing");
trap_RankReportInt( -1, -1, QGR_KEY_MINPING, num, 0 );
// maxping
num = trap_Cvar_VariableIntegerValue("sv_maxPing");
trap_RankReportInt( -1, -1, QGR_KEY_MAXPING, num, 0 );
// dedicated
num = trap_Cvar_VariableIntegerValue("dedicated");
trap_RankReportInt( -1, -1, QGR_KEY_DEDICATED, num, 0 );
// version
trap_Cvar_VariableStringBuffer( "version", str, sizeof(str) );
trap_RankReportStr( -1, -1, QGR_KEY_VERSION, str );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -