Sorry it took so long....
Code:
#!/usr/bin/perl
use Net::Telnet;
use strict;
my $server = "Website title : Who's online";
my $titleimg = "http://kmra.fliphost.net/themes/Illusion/images/head/banner.jpg";
my $host = "localhost";
my $user = "johndoe";
my $pass = "password";
my %players;
my $telnet = new Net::Telnet( Port=>9000, Timeout=>200, Errmode=>'die', Prompt=>'/knightz> $/i');
# print "Connecting...\n";
$telnet->open($host);
sleep 1;
$telnet->print($user);
$telnet->waitfor("/:/");
$telnet->print($pass);
$telnet->waitfor("/>/");
my @wholist = $telnet->cmd('who');
$telnet->close();
print "Content-type: text/html\n\n";
print "<title>$server online user list</title>";
print "<meta http-equiv='REFRESH' content='60;url=whoson.pl'>";
print "<body topmargin='0'>";
print "<center><img src='$titleimg'>";
print "<h3>$server</h3>";
foreach my $line (@wholist) {
if($line =~/^ +\[.*/) { # regular players
my ($v_userinfo, $v_zone, $v_account_id, $v_account_name, $v_lsid, $v_status) = split(/[a-zA-Z]+:/, $line);
# clean up the spaces and other garbage
$v_userinfo =~s/^ +//;
$v_userinfo =~s/ +$//;
$v_userinfo =~s/RolePlay |ANON //;
$v_zone =~s/^ +([a-z]+) +$/$1/;
# if no guild
if($v_userinfo =~/^\[([0-9]+) ([A-Za-z ]+)\] ([A-Za-z_]+) \(([A-Za-z ]+)\)$/) {
if($1>0) {
$players{$3}{"level"} = $1;
$players{$3}{"class"} = $2;
$players{$3}{"race"} = $4;
$players{$3}{"guild"} = "\ ";
$players{$3}{"zone"} = $v_zone;
} else {
$players{$3}{"level"} = "\ ";
$players{$3}{"class"} = "\ ";
$players{$3}{"race"} = "\ ";
$players{$3}{"guild"} = "\ ";
$players{$3}{"zone"} = "zoning";
}
# if in a guild
} elsif($v_userinfo =~/^\[([0-9]+) ([A-Za-z ]+)\] ([A-Za-z_]+) \(([A-Za-z ]+)\) \<(.*)\>$/) {
if($1>0) {
$players{$3}{"level"} = $1;
$players{$3}{"class"} = $2;
$players{$3}{"race"} = $4;
$players{$3}{"guild"} = $5;
$players{$3}{"zone"} = $v_zone;
} else {
$players{$3}{"level"} = "\ ";
$players{$3}{"class"} = "\ ";
$players{$3}{"race"} = "\ ";
$players{$3}{"guild"} = "\ ";
$players{$3}{"zone"} = "zoning";
}
}
} elsif($line =~/\* GM-.*/) { # GMs
$line =~s/\* GM-[A-Za-z]+ \*//;
my ($v_userinfo, $v_zone, $v_account_id, $v_account_name, $v_lsid, $v_status) = split(/[a-zA-Z]+:/, $line);
# clean up the spaces and other garbage
$v_userinfo =~s/^ +//;
$v_userinfo =~s/ +$//;
$v_userinfo =~s/RolePlay |ANON //;
$v_zone =~s/^ +([a-z]+) +$/$1/;
# if no guild
if($v_userinfo =~/^\[([0-9]+) ([A-Za-z ]+)\] ([A-Za-z_]+) \(([A-Za-z ]+)\)$/) {
if($1>0) {
$players{$3}{"level"} = $1;
$players{$3}{"class"} = $2;
$players{$3}{"race"} = $4;
$players{$3}{"guild"} = "\ ";
$players{$3}{"zone"} = $v_zone;
$players{$3}{"gm"} = "yes";
} else {
$players{$3}{"level"} = "\ ";
$players{$3}{"class"} = "\ ";
$players{$3}{"race"} = "\ ";
$players{$3}{"guild"} = "\ ";
$players{$3}{"zone"} = "zoning";
$players{$3}{"gm"} = "yes";
}
# if in a guild
} elsif($v_userinfo =~/^\[([0-9]+) ([A-Za-z ]+)\] ([A-Za-z_]+) \(([A-Za-z ]+)\) \<(.*)\>$/) {
if($1>0) {
$players{$3}{"level"} = $1;
$players{$3}{"class"} = $2;
$players{$3}{"race"} = $4;
$players{$3}{"guild"} = $5;
$players{$3}{"zone"} = $v_zone;
$players{$3}{"gm"} = "yes";
} else {
$players{$3}{"level"} = "\ ";
$players{$3}{"class"} = "\ ";
$players{$3}{"race"} = "\ ";
$players{$3}{"guild"} = "\ ";
$players{$3}{"zone"} = "zoning";
$players{$3}{"gm"} = "yes";
}
}
}
}
print "<html><body><table border='1' cellpadding='3' cellspacing='0'>\n";
print "<tr><td align='center'>Player</td><td align='center'>Class</td><td align='center'>Zone</td><td align='center'>Guild</td></tr>\n";
my $count = 0;
if(scalar(%players) > 0) {
foreach my $player (sort keys %players) {
my $fontcolor;
if(defined $players{$player}{"gm"}) {
$fontcolor = '#008f1e';
} else {
$fontcolor = '#000000';
}
print "<tr><td align='center'><font color='$fontcolor'>$player</font></td><td>$players{$player}{'level'} $players{$player}{'race'} $players{$player}{'class'}</td><td align='center'>$players{$player}{'zone'}</td><td align='center'>$players{$player}{'guild'}</td></tr>\n";
$count++;
}
} else {
print "<tr><td colspan='4'>No players online</tr>";
}
print "</table><br>";
print "$count players online.";
print "</center>";
print "</body></html>\n";