ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/util/guilds.pl
(Generate patch)

Comparing deliantra/util/guilds.pl (file contents):
Revision 1.4 by pippijn, Sun Dec 3 00:59:38 2006 UTC vs.
Revision 1.5 by pippijn, Sun Dec 3 01:27:45 2006 UTC

25 zdr => "zaseki_dzuki_ryoku" 25 zdr => "zaseki_dzuki_ryoku"
26); 26);
27 27
28my %members; 28my %members;
29my %count; 29my %count;
30my %mtime;
31 30
32sub init { 31sub init {
33 chdir $PLAYERDIR; 32 chdir $PLAYERDIR;
34 33
35 for my $pl (<*>) { 34 for my $pl (<*>) {
50 my ($secs) = @_; 49 my ($secs) = @_;
51 ($NOW - $secs) / 3600 / 24; 50 ($NOW - $secs) / 3600 / 24;
52} 51}
53 52
54sub guild_list { 53sub guild_list {
55 print "short name full name\n"; 54 print STDERR "short name full name\n";
56 print "-" x 27 . "\n"; 55 print STDERR "-" x 27 . "\n";
57 print "$_" . (length $_ == 3 ? "" : " ") . " " x 15 . $slaying{$_} . "\n" for keys %slaying; 56 print "$_" . (length $_ == 3 ? "" : " ") . " " x 15 . $slaying{$_} . "\n" for keys %slaying;
58} 57}
59 58
60sub members_mtime_avg { 59sub members_mtime_avg {
60 my %mtime;
61 init; 61 init;
62 print "Guild: mtime:\n"; 62 print STDERR "Guild: mtime:\n";
63 print STDERR "-" x 26 . "\n";
63 for my $guild (keys %slaying) { 64 for my $guild (keys %slaying) {
64 for my $member (@{ $members{$guild} }) { 65 for my $member (@{ $members{$guild} }) {
65 $mtime{$guild} += (stat "$member")[9]; 66 $mtime{$guild} += (stat "$member")[9];
66 } 67 }
67 $mtime{$guild} /= $count{$guild}; 68 $mtime{$guild} /= $count{$guild};
68 print $slaying{$guild} . " " x (20 - length $slaying{$guild}) . in_days($mtime{$guild}) . "\n"; 69 print $slaying{$guild} . " " x (20 - length $slaying{$guild}) . in_days($mtime{$guild}) . "\n";
69 } 70 }
70} 71}
71 72
72sub members_mtime_max { 73sub members_mtime_max {
74 my %mtime;
73 init; 75 init;
74 print "Guild: mtime:\n"; 76 print STDERR "Guild: mtime:\n";
77 print STDERR "-" x 26 . "\n";
75 for my $guild (keys %slaying) { 78 for my $guild (keys %slaying) {
76 for my $member (@{ $members{$guild} }) { 79 for my $member (@{ $members{$guild} }) {
77 $mtime{$guild} = max +(stat $member)[9], $mtime{$guild}; 80 $mtime{$guild} = max +(stat $member)[9], $mtime{$guild};
78 } 81 }
79 print $slaying{$guild} . " " x (20 - length $slaying{$guild}) . in_days($mtime{$guild}) . "\n"; 82 print $slaying{$guild} . " " x (20 - length $slaying{$guild}) . in_days($mtime{$guild}) . "\n";
80 } 83 }
81} 84}
82 85
83sub members_cnt { 86sub members_cnt {
84 init; 87 init;
85 print "Guild: members:\n"; 88 print STDERR "Guild: members:\n";
86 print $slaying{$_} . " " x (20 - length $slaying{$_}) . $count{$_} . "\n" 89 print $slaying{$_} . " " x (20 - length $slaying{$_}) . $count{$_} . "\n"
87 for keys %slaying; 90 for keys %slaying;
88} 91}
89 92
90sub members_list { 93sub members_list {
94 my ($guild, $age) = @_;
91 init; 95 init;
92 my ($guild) = @_;
93 96
94 if ($guild) { 97 if ($guild) {
95 print "Members for guild " . $slaying{$guild} . ":\n"; 98 print STDERR "Members for guild " . $slaying{$guild} . ":\n";
96 print "-" x 32 . "\n"; 99 print STDERR "-" x 31 . "\n";
100
101 if ($age) {
102 for my $member (@{ $members{$guild} }) {
103 if ($NOW - (stat $member)[9] < $age * 24 * 3600) {
104 print "$member\n";
105 }
106 }
107 } else {
97 print "$_\n" for @{ $members{$guild} }; 108 print "$_\n" for @{ $members{$guild} };
109 }
98 } else { 110 } else {
99 guild_list; 111 guild_list;
100 return; 112 return;
101 } 113 }
102} 114}
103 115
104sub usage { 116sub usage {
105 print <<USAGE; 117 print <<USAGE;
106Usage: perl guilds.pl [max|avg|cnt|lst <guild>] 118Usage: perl guilds.pl [max|avg|cnt|lst <guild> [<max age>]]
107 119
108 max: max(mtime of all guild members) for each guild 120 max: max(mtime of all guild members) for each guild
109 avg: average mtime of all guild members for each guild 121 avg: average mtime of all guild members for each guild
110 cnt: member count (number of players owning a key) 122 cnt: member count (number of players owning a key)
111 lst: list members for <guild>. lst without <guild> lists all guild names 123 lst: list members for <guild>. lst without <guild> lists all guild names
124 <max age> is the maximum time in days a player can be logged out
125 and still appear on the list
112 126
113Copyright (C) 2006 The Crossfire+ Development Team 127Copyright (C) 2006 The Crossfire+ Development Team
114USAGE 128USAGE
115} 129}
116 130
119} elsif ($ARGV[0] eq "avg") { 133} elsif ($ARGV[0] eq "avg") {
120 members_mtime_avg; 134 members_mtime_avg;
121} elsif ($ARGV[0] eq "cnt") { 135} elsif ($ARGV[0] eq "cnt") {
122 members_cnt; 136 members_cnt;
123} elsif ($ARGV[0] eq "lst") { 137} elsif ($ARGV[0] eq "lst") {
124 members_list $ARGV[1]; 138 members_list $ARGV[1], $ARGV[2];
125} else { 139} else {
126 usage; 140 usage;
127} 141}

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines