All pastes #29253 Raw Edit

q3stat awk

public text v1 · immutable
#29253 ·published 2005-11-19 16:20 UTC
rendered paste body
file:~/bin/q3stat
----------
 
 grep -irA13 ": $1" ~/.q3a/osp/stats/ |
 awk '{if ($1 ~ /Damage/ && $2 ~ /Given/ && $3>6000) { split($1,stats,/\//); split(stats[8],file,/\-/); print stats[7] "/" file[1]}}
' |
 xargs -i% grep -hiA13 ": $1" ~/.q3a/osp/stats/% |
 awk -f ~/bin/_q3stat.awk -v name=$1
 grep -hirA25 "MATCH COMPLETE" ~/.q3a/osp/stats/ | awk -f ~/bin/_q3stat2.awk -v name=$1

----------
EOF

file:~/bin/_q3stat.awk
----------

BEGIN {
 games = 0
 gaunt_k = 0
 gaunt_d = 0
 gannt_maxk = 0
 gaunt_maxd = 0
 mg_h = 0
 mg_a = 0
 mg_k = 0
 mg_d = 0
 mg_maxk = 0
 mg_maxd = 0
 mg_maxacc = 0
 sg_h = 0
 sg_a = 0
 sg_k = 0
 sg_d = 0
 sg_maxk = 0
 sg_maxd = 0
 sg_maxacc = 0
 gl_h = 0
 gl_a = 0
 gl_k = 0
 gl_d = 0
 gl_maxk = 0
 gl_maxd = 0
 gl_maxacc = 0
 rl_h = 0
 rl_a = 0
 rl_k = 0
 rl_d = 0
 rl_maxk = 0
 rl_maxd = 0
 rl_maxacc = 0
 lg_h = 0
 lg_a = 0
 lg_k = 0
 lg_d = 0
 lg_maxk = 0
 lg_maxd = 0
 lg_maxacc = 0
 rg_h = 0
 rg_a = 0
 rg_k = 0
 rg_d = 0
 rg_maxk = 0
 rg_maxd = 0
 rg_maxacc = 0
};
{
 if ($1 ~ /Gauntlet/) {
   gaunt_k += $3
   gaunt_d += $4
   if ($3 > gaunt_maxk) { gaunt_maxk = $3 }
   if ($4 > gaunt_maxd) { gaunt_maxd = $4 }
 }  
 if ($1 ~ /MachineGun/) {
   games++
   if ($3 + 0 > mg_maxacc) { mg_maxacc = $3 + 0 }
   split ($4,acc,/\//)
   mg_h += acc[1] +0
   mg_a += acc[2] +0
   mg_k += $5 
   mg_d += $6
   if ($5 > mg_maxk) { mg_maxk = $5 }  
   if ($6 > mg_maxd) { mg_maxd = $6 }
 }
 if ($1 ~ /Shotgun/) {
   if ($3 + 0 > sg_maxacc) { sg_maxacc = $3 + 0 }
   split ($4,acc,/\//)
   sg_h += acc[1] +0
   sg_a += acc[2] +0
   sg_k += $5 
   sg_d += $6
   if ($5 > sg_maxk) { sg_maxk = $5 }
   if ($6 > sg_maxd) { sg_maxd = $6 }
 }
 if ($1 ~ /G\.Launcher/) {
   if ($3 + 0 > gl_maxacc) { gl_maxacc = $3 + 0 }
   split ($4,acc,/\//)
   gl_h += acc[1] +0
   gl_a += acc[2] +0
   gl_k += $5 
   gl_d += $6
   if ($5 > gl_maxk) { gl_maxk = $5 }
   if ($6 > gl_maxd) { gl_maxd = $6 }
 }
 if ($1 ~ /R\.Launcher/) {
   if ($3 + 0 > rl_maxacc) { rl_maxacc = $3 + 0 }
   split ($4,acc,/\//)
   rl_h += acc[1] +0
   rl_a += acc[2] +0
   rl_k += $5
   rl_d += $6
   if ($5 > rl_maxk) { rl_maxk = $5 }
   if ($6 > rl_maxd) { rl_maxd = $6 }
 }
 if ($1 ~ /LightningGun/) {
   if ($2 + 0 > lg_maxacc) { lg_maxacc = $2 + 0 }
   split ($3,acc,/\//)
   lg_h += acc[1] +0
   lg_a += acc[2] +0
   lg_k += $4
   lg_d += $5
   if ($4 > lg_maxk) { lg_maxk = $4 }
   if ($5 > lg_maxd) { lg_maxd = $5 }
 }
 if ($1 ~ /Railgun/) {
   if ($3 + 0 > rg_maxacc) { rg_maxacc = $3 + 0 }
   split ($4,acc,/\//)
   rg_h += acc[1] +0
   rg_a += acc[2] +0
   rg_k += $5
   rg_d += $6
   if ($5 > rg_maxk) { rg_maxk = $5 }
   if ($6 > rg_maxd) { rg_maxd = $6 }
 }
 if ($1 ~ /Plasmagun/) {
   if ($3 + 0 > pg_maxacc) { pg_maxacc = $3 + 0 }
   split ($4,acc,/\//)
   pg_h += acc[1] +0
   pg_a += acc[2] +0
   pg_k += $5
   pg_d += $6
   if ($5 > pg_maxk) { pg_maxk = $5 }
   if ($6 > pg_maxd) { pg_maxd = $6 }
 }
};
END {
total_k = gaunt_k+mg_k+sg_k+gl_k+rl_k+lg_k+rg_k+pg_k
total_d =  gaunt_d+mg_d+sg_d+gl_d+rl_d+lg_d+rg_d+pg_d
total_dmg = ((7*mg_h)+(10*sg_h)+(100*gl_h)+(100*rl_h)+(8*lg_h)+(100*rg_h)+(20*pg_h))/1000

avg_acc = (mg_h+sg_h+gl_h+rl_h+lg_h+rg_h+pg_h) / (mg_a+sg_a+gl_a+rl_a+lg_a+rg_a+pg_a)*100
avg_eff = (gaunt_k+mg_k+sg_k+gl_k+rl_k+lg_k+rg_k+pg_k) / (gaunt_d+mg_d+sg_d+gl_d+rl_d+lg_d+rg_d+pg_d)*100
avg_maxacc = (mg_maxacc+sg_maxacc+_maxacc+gl_maxacc+rl_maxacc+lg_maxacc+rg_maxacc+pg_maxacc)/7

printf "Accuracy info for %s (%s games):\n\
Weapon        Accrcy   Hits/Atts   Kills   Deaths   Efficency   Max_Accrcy   Damage\n\
--------------------------------------------------------------------------------------\n\
Gauntlet    :                     %4d (%03d)  %3d (%03d)   %5.1f%%         \n\
MachineGun  :   %.1f%% %5d/%5d %4d (%03d)  %3d (%03d)   %5.1f%%     %3.1f%%     %5.1fk\n\
Shotgun     :   %.1f%% %5d/%5d %4d (%03d)  %3d (%03d)   %5.1f%%     %3.1f%%     %5.1fk\n\
G.Launcher  :   %.1f%% %5d/%5d %4d (%03d)  %3d (%03d)   %5.1f%%     %3.1f%%     %5.1fk\n\
R.Launcher  :   %.1f%% %5d/%5d %4d (%03d)  %3d (%03d)   %5.1f%%     %3.1f%%     %5.1fk\n\
LightningGun:   %.1f%% %5d/%5d %4d (%03d)  %3d (%03d)   %5.1f%%     %3.1f%%     %5.1fk\n\
Railgun     :   %.1f%% %5d/%5d %4d (%03d)  %3d (%03d)   %5.1f%%     %3.1f%%     %5.1fk\n\
Plasmagun   :   %.1f%% %5d/%5d %4d (%03d)  %3d (%03d)   %5.1f%%     %3.1f%%     %5.1fk\n\
--------------------------------------------------------------------------------------\n\
Totals      :                     %4d       %4d                              %5.1fk\n\
Averages    :   %3.1f%%             %4d       %4d         %4.1f%%     %3.1f%%      %4.1fk\n",
name, games,
gaunt_k, gaunt_maxk, gaunt_d, gaunt_maxd, gaunt_k/gaunt_d*100,
mg_h/mg_a*100, mg_h, mg_a, mg_k, mg_maxk, mg_d, mg_maxd, mg_k/mg_d*100, mg_maxacc, 7*mg_h/1000,
sg_h/sg_a*100, sg_h, sg_a, sg_k, sg_maxk, sg_d, sg_maxd, sg_k/sg_d*100, sg_maxacc, 10*sg_h/1000,
gl_h/gl_a*100, gl_h, gl_a, gl_k, gl_maxk, gl_d, gl_maxd, gl_k/gl_d*100, gl_maxacc, 100*gl_h/1000,
rl_h/rl_a*100, rl_h, rl_a, rl_k, rl_maxk, rl_d, rl_maxd, rl_k/rl_d*100, rl_maxacc, 100*rl_h/1000,
lg_h/lg_a*100, lg_h, lg_a, lg_k, lg_maxk, lg_d, lg_maxd, lg_k/lg_d*100, lg_maxacc, 8*lg_h/1000,
rg_h/rg_a*100, rg_h, rg_a, rg_k, rg_maxk, rg_d, rg_maxd, rg_k/rg_d*100, rg_maxacc, 100*rg_h/1000,
pg_h/pg_a*100, pg_h, pg_a, pg_k, pg_maxk, pg_d, pg_maxd, pg_k/pg_d*100, pg_maxacc, 20*pg_h/1000,
total_k, total_d, total_dmg,
avg_acc, total_k/games, total_d/games, avg_eff, avg_maxacc, total_dmg/games
};

---------
EOF

file:~/bin/_q3stat2.awk
---------

BEGIN {
games = 0
caps = 0
assists = 0 
defence = 0
recovery = 0
score_avg = 0
score_hi = 0
score_lo = 10
regex =  name 
};
{
 if ($2 ~ regex ) {
  games++
  caps += $5
  assists += $7
  defence += $8
  recovery += $9
  score_avg += $10
  if ($10 > score_hi) { score_hi = $10 }
  if ($10 < score_lo) { score_lo = $10 }
 }
}
END {
printf "\n\
Score (avg/min/max): %d/%d/%d\n\
%2d Flag caps, %2d Assists, %2d Defences, %2d Recoveries \n",
score_avg/games, score_lo, score_hi,
caps, assists, defence, recovery
};

--------
EOF

sample output:
--------
Accuracy info for (63 games):
Weapon        Accrcy   Hits/Atts   Kills   Deaths   Efficency   Max_Accrcy   Damage
--------------------------------------------------------------------------------------
Gauntlet    :                        0 (000)   44 (006)     0.0%         
MachineGun  :   22.2%  7601/34228  371 (012)  297 (012)   124.9%     27.1%      53.2k
Shotgun     :   22.6%  5588/24739  408 (018)  244 (009)   167.2%     38.8%      55.9k
G.Launcher  :   10.5%    99/  944   61 (012)   74 (006)    82.4%     30.0%       9.9k
R.Launcher  :   46.4%  2987/ 6436  979 (040)  781 (028)   125.4%     75.7%     298.7k
LightningGun:   27.5% 10386/37820  616 (048)  357 (019)   172.5%     39.8%      83.1k
Railgun     :   43.8%  2329/ 5315 1242 (117)  762 (064)   163.0%     67.7%     232.9k
Plasmagun   :   16.3%  2634/16188  337 (016)  209 (014)   161.2%     25.0%      52.7k
--------------------------------------------------------------------------------------
Totals      :                     4014       2768                              786.4k
Averages    :   25.2%               63         43         145.0%     43.4%      12.5k

Score (avg/min/max): 73/2/219
25 Flag caps, 29 Assists, 847 Defences, 197 Recoveries