Take tied ranking positions into account when determining offset

This commit is contained in:
Pragmatic Software 2015-02-17 01:47:28 -08:00
parent e0971e8158
commit 341cad090e
1 changed files with 10 additions and 6 deletions

View File

@ -219,19 +219,23 @@ if (lc $command eq 'rank') {
@$players = sort $sort_method @$players; @$players = sort $sort_method @$players;
my @ranking; my @ranking;
my $i = 0; my $rank = 0;
$offset--; my $last_value = -1;
foreach my $player (@$players) { foreach my $player (@$players) {
next if $player->{nick} eq 'keep2play'; next if $player->{nick} eq 'keep2play';
next if $i++ < $offset;
my $entry = $ranks{$opt}->{print}->($player); my $entry = $ranks{$opt}->{print}->($player);
push @ranking, "#$i $entry" if defined $entry; if (defined $entry) {
my ($value) = $entry =~ /[^:]+:\s+(.*)/;
$rank++ if $value ne $last_value;
$last_value = $value;
next if $rank < $offset;
push @ranking, "#$rank $entry" if defined $entry;
last if scalar @ranking >= 15; last if scalar @ranking >= 15;
} }
}
if (not scalar @ranking) { if (not scalar @ranking) {
if ($offset) { if ($offset) {
$offset++;
print "No rankings available for $channel at offset #$offset.\n"; print "No rankings available for $channel at offset #$offset.\n";
} else { } else {
print "No rankings available for $channel yet.\n"; print "No rankings available for $channel yet.\n";