Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Feature Requests

Development::Feature Requests Post suggestions/feature requests here.

Reply
 
Thread Tools Display Modes
  #1  
Old 02-05-2005, 04:22 PM
Acolyte
Sarnak
 
Join Date: May 2002
Location: Oakland, CA
Posts: 83
Default

Damn, it's been a long time since I've posted or done anything with EQEmu... probably close to 3 years now.

I wrote a php script that did what you were asking for. I don't have a copy of it anymore, but I will tell you what it did.

Basically, using PHP, you CAN telnet into the world server and parse the output of players to display it on a webpage. No PERL needed.
__________________
The Acolyte
Reply With Quote
  #2  
Old 02-18-2005, 01:25 PM
KingMortenson
Fire Beetle
 
Join Date: Apr 2004
Posts: 25
Default

I remember that Acolyte , didn't you write that for my server ? hehe
Reply With Quote
  #3  
Old 03-14-2005, 10:45 PM
farce
Hill Giant
 
Join Date: Feb 2003
Posts: 126
Default

Use PHP to open a socket to the telnet port on your world server. Send in the commands to get the list, read out the data into an array then format and display.

pseudo code:

Code:
<?php

$fp = fsockopen('localhost',21, $errno, $errstr,30); // PHP server and world are on the same machine
if(!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    fgets($fp, 128); // then keep getting data until an input prompt
    fwrite($fp, "who\n"); // input command
    while(!feof($fp)) {
        echo fgets($fp, 128);
    }
    fclose($fp);
}
something to that effect =)
Reply With Quote
  #4  
Old 03-15-2005, 02:11 AM
sdabbs65
Dragon
 
Join Date: Dec 2003
Location: Earth
Posts: 818
Default PHP script.

I don't think the server supports telnet as I can not even telnet into it
localy.
when I do telnet to the server it echos and just says invalid username and password.

I was thinking a perl script might work but I dont know enuff to get it going properly.

Im getting this error.
500 'WHO': command not understood.
__________________
hosting Eqemu/Runuo/wow Emulators.

www.cheaterz.info
Reply With Quote
  #5  
Old 03-15-2005, 06:18 AM
knightz
Fire Beetle
 
Join Date: Jun 2004
Location: Canada
Posts: 24
Default

http://heightenedreality.com/cgi-bin/whoson.pl

Code is sort of ugly, I'll post it later when I get time.
__________________
~ bUri

Last edited by knightz; 03-15-2005 at 02:22 PM..
Reply With Quote
  #6  
Old 03-16-2005, 04:31 AM
sdabbs65
Dragon
 
Join Date: Dec 2003
Location: Earth
Posts: 818
Default

[QUOTE=knightz
Code is sort of ugly, I'll post it later when I get time.[/QUOTE]


ok
with some modification it could be usefull but without the
code it's useless.
__________________
hosting Eqemu/Runuo/wow Emulators.

www.cheaterz.info

Last edited by sdabbs65; 03-19-2005 at 08:56 AM..
Reply With Quote
  #7  
Old 04-05-2005, 08:43 AM
knightz
Fire Beetle
 
Join Date: Jun 2004
Location: Canada
Posts: 24
Default

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"} = "\&nbsp;";
                $players{$3}{"zone"} = $v_zone;
            } else {
                $players{$3}{"level"} = "\&nbsp;";
                $players{$3}{"class"} = "\&nbsp;";
                $players{$3}{"race"} = "\&nbsp;";
                $players{$3}{"guild"} = "\&nbsp;";
                $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"} = "\&nbsp;";
                $players{$3}{"class"} = "\&nbsp;";
                $players{$3}{"race"} = "\&nbsp;";
                $players{$3}{"guild"} = "\&nbsp;";
                $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"} = "\&nbsp;";
                $players{$3}{"zone"} = $v_zone;
                $players{$3}{"gm"} = "yes";
            } else {
                $players{$3}{"level"} = "\&nbsp;";
                $players{$3}{"class"} = "\&nbsp;";
                $players{$3}{"race"} = "\&nbsp;";
                $players{$3}{"guild"} = "\&nbsp;";
                $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"} = "\&nbsp;";
                $players{$3}{"class"} = "\&nbsp;";
                $players{$3}{"race"} = "\&nbsp;";
                $players{$3}{"guild"} = "\&nbsp;";
                $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";
__________________
~ bUri

Last edited by knightz; 04-13-2005 at 10:06 PM..
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 11:31 AM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3