rendered paste bodyfile:~/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