#!/usr/bin/env perl # Script to help making assertions on guild activity # Usage is at the bottom use strict; my $PLAYERDIR = "/var/crossfire/players"; my $NOW = time; my @black_shield; my @damned_heretics; my @dreaming_sage; my @drunken_barbarian; my @laughing_skull; my @mailed_fist; my @poisoned_dagger; my @purple_butterfly; my @smoking_cauldron; my @ketsueki_itsuryuu; my @nenshou_youso; my @zaseki_dzuki_ryoku; chdir $PLAYERDIR; for my $pl (<*>) { my $mtime = (stat $pl)[9]; my $pldata = do { local $/; open my $fh, "<$pl/$pl.pl" or die; <$fh> }; push @black_shield, $pl if $pldata =~ /black_shield/; push @damned_heretics, $pl if $pldata =~ /damned_heretics/; push @dreaming_sage, $pl if $pldata =~ /dreaming_sage/; push @drunken_barbarian, $pl if $pldata =~ /drunken_barbarian/; push @laughing_skull, $pl if $pldata =~ /laughing_skull/; push @mailed_fist, $pl if $pldata =~ /mailed_fist/; push @poisoned_dagger, $pl if $pldata =~ /poisoned_dagger/; push @purple_butterfly, $pl if $pldata =~ /purple_butterfly/; push @smoking_cauldron, $pl if $pldata =~ /smoking_cauldron/; push @ketsueki_itsuryuu, $pl if $pldata =~ /ketsueki_itsuryuu/; push @nenshou_youso, $pl if $pldata =~ /nenshou_youso/; push @zaseki_dzuki_ryoku, $pl if $pldata =~ /zaseki_dzuki_ryoku/; } my $bs_cnt = @black_shield; my $dh_cnt = @damned_heretics; my $ds_cnt = @dreaming_sage; my $db_cnt = @drunken_barbarian; my $ls_cnt = @laughing_skull; my $mf_cnt = @mailed_fist; my $pd_cnt = @poisoned_dagger; my $pb_cnt = @purple_butterfly; my $sc_cnt = @smoking_cauldron; my $ki_cnt = @ketsueki_itsuryuu; my $ny_cnt = @nenshou_youso; my $zdr_cnt = @zaseki_dzuki_ryoku; sub in_days { my ($secs) = @_; ($NOW - $secs) / 3600 / 24; } sub members_mtime_avg { my ($bs_mtime, $dh_mtime, $ds_mtime, $db_mtime, $ls_mtime, $mf_mtime) = 0; my ($pd_mtime, $pb_mtime, $sc_mtime, $ki_mtime, $ny_mtime, $zdr_mtime) = 0; for my $bs_member (@black_shield) { $bs_mtime += (stat "$bs_member")[9]; } for my $dh_member (@damned_heretics) { $dh_mtime += (stat "$dh_member")[9]; } for my $ds_member (@dreaming_sage) { $ds_mtime += (stat "$ds_member")[9]; } for my $db_member (@drunken_barbarian) { $db_mtime += (stat "$db_member")[9]; } for my $ls_member (@laughing_skull) { $ls_mtime += (stat "$ls_member")[9]; } for my $mf_member (@mailed_fist) { $mf_mtime += (stat "$mf_member")[9]; } for my $pd_member (@poisoned_dagger) { $pd_mtime += (stat "$pd_member")[9]; } for my $pb_member (@purple_butterfly) { $pb_mtime += (stat "$pb_member")[9]; } for my $sc_member (@smoking_cauldron) { $sc_mtime += (stat "$sc_member")[9]; } for my $ki_member (@ketsueki_itsuryuu) { $ki_mtime += (stat "$ki_member")[9]; } for my $ny_member (@nenshou_youso) { $ny_mtime += (stat "$ny_member")[9]; } for my $zdr_member (@zaseki_dzuki_ryoku) { $zdr_mtime += (stat "$zdr_member")[9]; } $bs_mtime = $bs_mtime / $bs_cnt; $dh_mtime = $dh_mtime / $dh_cnt; $ds_mtime = $ds_mtime / $ds_cnt; $db_mtime = $db_mtime / $db_cnt; $ls_mtime = $ls_mtime / $ls_cnt; $mf_mtime = $mf_mtime / $mf_cnt; $pd_mtime = $pd_mtime / $pd_cnt; $pb_mtime = $pb_mtime / $pb_cnt; $sc_mtime = $sc_mtime / $sc_cnt; $ki_mtime = $ki_mtime / $ki_cnt; $ny_mtime = $ny_mtime / $ny_cnt; $zdr_mtime = $zdr_mtime / $zdr_cnt; print "Guild: mtime:\n"; print "black_shield: ".in_days($bs_mtime)."\n"; print "damned_heretics: ".in_days($dh_mtime)."\n"; print "dreaming_sage: ".in_days($ds_mtime)."\n"; print "drunken_barbarian: ".in_days($db_mtime)."\n"; print "laughing_skull: ".in_days($ls_mtime)."\n"; print "mailed_fist: ".in_days($mf_mtime)."\n"; print "poisoned_dagger: ".in_days($pd_mtime)."\n"; print "purple_butterfly: ".in_days($pb_mtime)."\n"; print "smoking_cauldron: ".in_days($sc_mtime)."\n"; print "ketsueki_itsuryuu: ".in_days($ki_mtime)."\n"; print "nenshou_youso: ".in_days($ny_mtime)."\n"; print "zaseki_dzuki_ryoku: ".in_days($zdr_mtime)."\n"; } sub members_mtime_max { my ($bs_mtime, $dh_mtime, $ds_mtime, $db_mtime, $ls_mtime, $mf_mtime) = 0; my ($pd_mtime, $pb_mtime, $sc_mtime, $ki_mtime, $ny_mtime, $zdr_mtime) = 0; for my $bs_member (@black_shield) { $bs_member = (stat "$bs_member")[9]; $bs_mtime = $bs_member if $bs_member > $bs_mtime; } for my $dh_member (@damned_heretics) { $dh_member = (stat "$dh_member")[9]; $dh_mtime = $dh_member if $dh_member > $dh_mtime; } for my $ds_member (@dreaming_sage) { $ds_member = (stat "$ds_member")[9]; $ds_mtime = $ds_member if $ds_member > $ds_mtime; } for my $db_member (@drunken_barbarian) { $db_member = (stat "$db_member")[9]; $db_mtime = $db_member if $db_member > $db_mtime; } for my $ls_member (@laughing_skull) { $ls_member = (stat "$ls_member")[9]; $ls_mtime = $ls_member if $ls_member > $ls_mtime; } for my $mf_member (@mailed_fist) { $mf_member = (stat "$mf_member")[9]; $mf_mtime = $mf_member if $mf_member > $mf_mtime; } for my $pd_member (@poisoned_dagger) { $pd_member = (stat "$pd_member")[9]; $pd_mtime = $pd_member if $pd_member > $pd_mtime; } for my $pb_member (@purple_butterfly) { $pb_member = (stat "$pb_member")[9]; $pb_mtime = $pb_member if $pb_member > $pb_mtime; } for my $sc_member (@smoking_cauldron) { $sc_member = (stat "$sc_member")[9]; $sc_mtime = $sc_member if $sc_member > $sc_mtime; } for my $ki_member (@ketsueki_itsuryuu) { $ki_member = (stat "$ki_member")[9]; $ki_mtime = $ki_member if $ki_member > $ki_mtime; } for my $ny_member (@nenshou_youso) { $ny_member = (stat "$ny_member")[9]; $ny_mtime = $ny_member if $ny_member > $ny_mtime; } for my $zdr_member (@zaseki_dzuki_ryoku) { $zdr_member = (stat "$zdr_member")[9]; $zdr_mtime = $zdr_member if $zdr_member > $zdr_mtime; } print "Guild: mtime:\n"; print "black_shield: ".in_days($bs_mtime)."\n"; print "damned_heretics: ".in_days($dh_mtime)."\n"; print "dreaming_sage: ".in_days($ds_mtime)."\n"; print "drunken_barbarian: ".in_days($db_mtime)."\n"; print "laughing_skull: ".in_days($ls_mtime)."\n"; print "mailed_fist: ".in_days($mf_mtime)."\n"; print "poisoned_dagger: ".in_days($pd_mtime)."\n"; print "purple_butterfly: ".in_days($pb_mtime)."\n"; print "smoking_cauldron: ".in_days($sc_mtime)."\n"; print "ketsueki_itsuryuu: ".in_days($ki_mtime)."\n"; print "nenshou_youso: ".in_days($ny_mtime)."\n"; print "zaseki_dzuki_ryoku: ".in_days($zdr_mtime)."\n"; } sub usage { print <