ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/util/guilds.pl
Revision: 1.1
Committed: Fri Dec 1 01:56:50 2006 UTC (17 years, 6 months ago) by pippijn
Content type: text/plain
Branch: MAIN
Log Message:
Added script for guild activity measuring

File Contents

# User Rev Content
1 pippijn 1.1 #!/usr/bin/env perl
2    
3     # Script to help making assertions on guild activity
4     # Usage is at the bottom
5    
6     use strict;
7    
8     my $PLAYERDIR = "/var/crossfire/players";
9    
10     my $NOW = time;
11    
12     my @black_shield;
13     my @damned_heretics;
14     my @dreaming_sage;
15     my @drunken_barbarian;
16     my @laughing_skull;
17     my @mailed_fist;
18     my @poisoned_dagger;
19     my @purple_butterfly;
20     my @smoking_cauldron;
21     my @ketsueki_itsuryuu;
22     my @nenshou_youso;
23     my @zaseki_dzuki_ryoku;
24    
25     chdir $PLAYERDIR;
26    
27     for my $pl (<*>) {
28     my $mtime = (stat $pl)[9];
29     my $pldata = do { local $/; open my $fh, "<$pl/$pl.pl" or die; <$fh> };
30    
31     push @black_shield, $pl if $pldata =~ /black_shield/;
32     push @damned_heretics, $pl if $pldata =~ /damned_heretics/;
33     push @dreaming_sage, $pl if $pldata =~ /dreaming_sage/;
34     push @drunken_barbarian, $pl if $pldata =~ /drunken_barbarian/;
35     push @laughing_skull, $pl if $pldata =~ /laughing_skull/;
36     push @mailed_fist, $pl if $pldata =~ /mailed_fist/;
37     push @poisoned_dagger, $pl if $pldata =~ /poisoned_dagger/;
38     push @purple_butterfly, $pl if $pldata =~ /purple_butterfly/;
39     push @smoking_cauldron, $pl if $pldata =~ /smoking_cauldron/;
40     push @ketsueki_itsuryuu, $pl if $pldata =~ /ketsueki_itsuryuu/;
41     push @nenshou_youso, $pl if $pldata =~ /nenshou_youso/;
42     push @zaseki_dzuki_ryoku, $pl if $pldata =~ /zaseki_dzuki_ryoku/;
43     }
44    
45     my $bs_cnt = @black_shield;
46     my $dh_cnt = @damned_heretics;
47     my $ds_cnt = @dreaming_sage;
48     my $db_cnt = @drunken_barbarian;
49     my $ls_cnt = @laughing_skull;
50     my $mf_cnt = @mailed_fist;
51     my $pd_cnt = @poisoned_dagger;
52     my $pb_cnt = @purple_butterfly;
53     my $sc_cnt = @smoking_cauldron;
54     my $ki_cnt = @ketsueki_itsuryuu;
55     my $ny_cnt = @nenshou_youso;
56     my $zdr_cnt = @zaseki_dzuki_ryoku;
57    
58     sub in_days {
59     my ($secs) = @_;
60     ($NOW - $secs) / 3600 / 24;
61     }
62    
63     sub members_mtime_avg {
64     my ($bs_mtime, $dh_mtime, $ds_mtime, $db_mtime, $ls_mtime, $mf_mtime) = 0;
65     my ($pd_mtime, $pb_mtime, $sc_mtime, $ki_mtime, $ny_mtime, $zdr_mtime) = 0;
66    
67     for my $bs_member (@black_shield) {
68     $bs_mtime += (stat "$bs_member")[9];
69     }
70    
71     for my $dh_member (@damned_heretics) {
72     $dh_mtime += (stat "$dh_member")[9];
73     }
74    
75     for my $ds_member (@dreaming_sage) {
76     $ds_mtime += (stat "$ds_member")[9];
77     }
78    
79     for my $db_member (@drunken_barbarian) {
80     $db_mtime += (stat "$db_member")[9];
81     }
82    
83     for my $ls_member (@laughing_skull) {
84     $ls_mtime += (stat "$ls_member")[9];
85     }
86    
87     for my $mf_member (@mailed_fist) {
88     $mf_mtime += (stat "$mf_member")[9];
89     }
90    
91     for my $pd_member (@poisoned_dagger) {
92     $pd_mtime += (stat "$pd_member")[9];
93     }
94    
95     for my $pb_member (@purple_butterfly) {
96     $pb_mtime += (stat "$pb_member")[9];
97     }
98    
99     for my $sc_member (@smoking_cauldron) {
100     $sc_mtime += (stat "$sc_member")[9];
101     }
102    
103     for my $ki_member (@ketsueki_itsuryuu) {
104     $ki_mtime += (stat "$ki_member")[9];
105     }
106    
107     for my $ny_member (@nenshou_youso) {
108     $ny_mtime += (stat "$ny_member")[9];
109     }
110    
111     for my $zdr_member (@zaseki_dzuki_ryoku) {
112     $zdr_mtime += (stat "$zdr_member")[9];
113     }
114    
115     $bs_mtime = $bs_mtime / $bs_cnt;
116     $dh_mtime = $dh_mtime / $dh_cnt;
117     $ds_mtime = $ds_mtime / $ds_cnt;
118     $db_mtime = $db_mtime / $db_cnt;
119     $ls_mtime = $ls_mtime / $ls_cnt;
120     $mf_mtime = $mf_mtime / $mf_cnt;
121     $pd_mtime = $pd_mtime / $pd_cnt;
122     $pb_mtime = $pb_mtime / $pb_cnt;
123     $sc_mtime = $sc_mtime / $sc_cnt;
124     $ki_mtime = $ki_mtime / $ki_cnt;
125     $ny_mtime = $ny_mtime / $ny_cnt;
126     $zdr_mtime = $zdr_mtime / $zdr_cnt;
127    
128     print "Guild: mtime:\n";
129     print "black_shield: ".in_days($bs_mtime)."\n";
130     print "damned_heretics: ".in_days($dh_mtime)."\n";
131     print "dreaming_sage: ".in_days($ds_mtime)."\n";
132     print "drunken_barbarian: ".in_days($db_mtime)."\n";
133     print "laughing_skull: ".in_days($ls_mtime)."\n";
134     print "mailed_fist: ".in_days($mf_mtime)."\n";
135     print "poisoned_dagger: ".in_days($pd_mtime)."\n";
136     print "purple_butterfly: ".in_days($pb_mtime)."\n";
137     print "smoking_cauldron: ".in_days($sc_mtime)."\n";
138     print "ketsueki_itsuryuu: ".in_days($ki_mtime)."\n";
139     print "nenshou_youso: ".in_days($ny_mtime)."\n";
140     print "zaseki_dzuki_ryoku: ".in_days($zdr_mtime)."\n";
141     }
142    
143     sub members_mtime_max {
144     my ($bs_mtime, $dh_mtime, $ds_mtime, $db_mtime, $ls_mtime, $mf_mtime) = 0;
145     my ($pd_mtime, $pb_mtime, $sc_mtime, $ki_mtime, $ny_mtime, $zdr_mtime) = 0;
146    
147     for my $bs_member (@black_shield) {
148     $bs_member = (stat "$bs_member")[9];
149     $bs_mtime = $bs_member if $bs_member > $bs_mtime;
150     }
151    
152     for my $dh_member (@damned_heretics) {
153     $dh_member = (stat "$dh_member")[9];
154     $dh_mtime = $dh_member if $dh_member > $dh_mtime;
155     }
156    
157     for my $ds_member (@dreaming_sage) {
158     $ds_member = (stat "$ds_member")[9];
159     $ds_mtime = $ds_member if $ds_member > $ds_mtime;
160     }
161    
162     for my $db_member (@drunken_barbarian) {
163     $db_member = (stat "$db_member")[9];
164     $db_mtime = $db_member if $db_member > $db_mtime;
165     }
166    
167     for my $ls_member (@laughing_skull) {
168     $ls_member = (stat "$ls_member")[9];
169     $ls_mtime = $ls_member if $ls_member > $ls_mtime;
170     }
171    
172     for my $mf_member (@mailed_fist) {
173     $mf_member = (stat "$mf_member")[9];
174     $mf_mtime = $mf_member if $mf_member > $mf_mtime;
175     }
176    
177     for my $pd_member (@poisoned_dagger) {
178     $pd_member = (stat "$pd_member")[9];
179     $pd_mtime = $pd_member if $pd_member > $pd_mtime;
180     }
181    
182     for my $pb_member (@purple_butterfly) {
183     $pb_member = (stat "$pb_member")[9];
184     $pb_mtime = $pb_member if $pb_member > $pb_mtime;
185     }
186    
187     for my $sc_member (@smoking_cauldron) {
188     $sc_member = (stat "$sc_member")[9];
189     $sc_mtime = $sc_member if $sc_member > $sc_mtime;
190     }
191    
192     for my $ki_member (@ketsueki_itsuryuu) {
193     $ki_member = (stat "$ki_member")[9];
194     $ki_mtime = $ki_member if $ki_member > $ki_mtime;
195     }
196    
197     for my $ny_member (@nenshou_youso) {
198     $ny_member = (stat "$ny_member")[9];
199     $ny_mtime = $ny_member if $ny_member > $ny_mtime;
200     }
201    
202     for my $zdr_member (@zaseki_dzuki_ryoku) {
203     $zdr_member = (stat "$zdr_member")[9];
204     $zdr_mtime = $zdr_member if $zdr_member > $zdr_mtime;
205     }
206    
207     print "Guild: mtime:\n";
208     print "black_shield: ".in_days($bs_mtime)."\n";
209     print "damned_heretics: ".in_days($dh_mtime)."\n";
210     print "dreaming_sage: ".in_days($ds_mtime)."\n";
211     print "drunken_barbarian: ".in_days($db_mtime)."\n";
212     print "laughing_skull: ".in_days($ls_mtime)."\n";
213     print "mailed_fist: ".in_days($mf_mtime)."\n";
214     print "poisoned_dagger: ".in_days($pd_mtime)."\n";
215     print "purple_butterfly: ".in_days($pb_mtime)."\n";
216     print "smoking_cauldron: ".in_days($sc_mtime)."\n";
217     print "ketsueki_itsuryuu: ".in_days($ki_mtime)."\n";
218     print "nenshou_youso: ".in_days($ny_mtime)."\n";
219     print "zaseki_dzuki_ryoku: ".in_days($zdr_mtime)."\n";
220     }
221    
222     sub usage {
223     print <<USAGE;
224     Usage: perl guilds.pl [max|avg]
225    
226     max: max(mtime of all guild members) for each guild
227     avg: average mtime of all guild members for each guild
228    
229     Copyright (C) 2006 The Crossfire+ Development Team
230     USAGE
231     }
232    
233     if ($ARGV[0] eq "max") {
234     members_mtime_max;
235     } elsif ($ARGV[0] eq "avg") {
236     members_mtime_avg;
237     } else {
238     usage;
239     }