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-01-2005, 06:25 PM
sdabbs65
Dragon
 
Join Date: Dec 2003
Location: Earth
Posts: 818
Default Users online php script .

Dunno nothing about how this.
Just an Idea, I would like to see a php script that could tell me how many users are online and the locations,kinda like the runuo emulator has.
it is even possable ?

--------------------------------------------------------

edit...ah nevermind i think I found it in a old thread...


<?php
$server = "localhost";
$username = "root";
$password = "xxxxxxx";
$dbname = "eq";

$link = mysql_pconnect($server,$username,$password);
mysql_select_db($dbname, $link);

$sql = "SELECT zonename, profile FROM character_";
$result = mysql_query($sql);

echo "<table border=\"0\" width=\"100%\">\n";
echo "<th>Name</th>\n";
echo "<th>Zone Name</th>\n";
echo "<th>Gender</th>\n";
echo "<th>Race</th>\n";
echo "<th>Level</th>\n";
echo "<th>Bind</th>\n";
while ($row = mysql_fetch_array($result)) {
$zonename = $row["zonename"];
$profile = $row["profile"];
$alt_adv = $row["alt_adv"];
$profileinfo = unpack("Lchecksum/a64firstname/a32lastname/Lgender/Lrace/Lclass/Lunknown/Llevel/Lzoneid/fbindx/fbindy/fbindz", $profile);

$firstname = $profileinfo["firstname"];
$lastname = $profileinfo["lastname"];
$gender = $profileinfo["gender"];
$race = $profileinfo["race"];
$class = $profileinfo["class"];
$level = $profileinfo["level"];
$zoneid = $profileinfo["zoneid"];
$bindx = $profileinfo["bindx"];
$bindy = $profileinfo["bindy"];
$bindz = $profileinfo["bindz"];
$bind = "$bindx, $bindy, $bindz";
$id++;


if ($gender == 0) {
$gender = "male";
} elseif ($gender == 1) {
$gender = "female";
}

echo "<tr>\n";
echo " <td align=center>$firstname $lastname</td>\n";
echo " <td align=center>$zonename ($zoneid)</td>\n";
echo " <td align=center>$gender</td>\n";
echo " <td align=center>$race</td>\n";
echo " <td align=center>$level</td>\n";
echo " <td align=center>$bind</td>\n";
echo "</tr>\n";
}
echo "</table>\n";
?>
__________________
hosting Eqemu/Runuo/wow Emulators.

www.cheaterz.info

Last edited by sdabbs65; 02-02-2005 at 02:28 AM..
Reply With Quote
  #2  
Old 02-02-2005, 06:01 AM
fathernitwit
Developer
 
Join Date: Jul 2004
Posts: 773
Default

that actually just gives you stats, wether they are logged in or not.
To detect active connections, you would prolly have to telnet to the world console and ask it for a who.
Reply With Quote
  #3  
Old 02-02-2005, 04:50 PM
sdabbs65
Dragon
 
Join Date: Dec 2003
Location: Earth
Posts: 818
Default

Quote:
Originally Posted by fathernitwit
that actually just gives you stats, wether they are logged in or not.
To detect active connections, you would prolly have to telnet to the world console and ask it for a who.
.

hmmm i was hoping perl could do something like that , I will have to research that this weekend.
__________________
hosting Eqemu/Runuo/wow Emulators.

www.cheaterz.info
Reply With Quote
  #4  
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
  #5  
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
  #6  
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
  #7  
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
  #8  
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
  #9  
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
  #10  
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
  #11  
Old 04-05-2005, 07:15 PM
KhaN's Avatar
KhaN
Dragon
 
Join Date: Mar 2004
Location: France, Bordeaux.
Posts: 677
Default

Thanks Buri, its nice PHP script

btw, i seen on KMRA you fixed govtcheese magelo profile for latest EQEmu version, is there any plan to make it public ? :p
__________________

Reply With Quote
  #12  
Old 04-05-2005, 10:05 PM
Belfedia
Demi-God
 
Join Date: Jan 2005
Posts: 1,109
Default

Don't know perl,
But i have a error :
Global symbol "$li" requires explicit package name at D:/Apache2/cgi-bin/whoson.pl line 41.

Ps: perl is'nt install with telnet features
you need to open Mcpan and install module no more error 500
__________________
__________________________________________________ _____________________________________
I speak english like a spanish cow..., I speak spanish like a english pudding...
But I try to speak good french !!! (Non au langage SMS sur forum)
http://eqfroggy.new.fr : Froggy French Server Website.
Reply With Quote
  #13  
Old 04-06-2005, 02:39 AM
knightz
Fire Beetle
 
Join Date: Jun 2004
Location: Canada
Posts: 24
Default

Quote:
Originally Posted by KhaN
btw, i seen on KMRA you fixed govtcheese magelo profile for latest EQEmu version, is there any plan to make it public ? :p
Actually atm, I only stripped out the parts it reads the item information from a custom items table (dont have the import script). I do plan on fixing this (eventually) and will release it at that time.
__________________
~ bUri

Last edited by knightz; 04-06-2005 at 10:42 AM..
Reply With Quote
  #14  
Old 04-06-2005, 11:50 PM
sdabbs65
Dragon
 
Join Date: Dec 2003
Location: Earth
Posts: 818
Default non computer GURU's INSTALL telnet under Perl.

Go to DOS and type .
perl -MCPAN -e shell;

then at the command lilne type
install Net::Telnet::Cisco
you will see about 500 lines then ask you to do some things just keep hitting enter for default.

then you will have telnet installed under perl.
__________________
hosting Eqemu/Runuo/wow Emulators.

www.cheaterz.info
Reply With Quote
  #15  
Old 08-08-2005, 06:56 AM
SuedeWorthey
Sarnak
 
Join Date: Jan 2005
Posts: 64
Default No PERL... PHP is the way to go.

I don't use PERL, so can someone port this to PHP? I will if I have to but if someone has already done it, please share.
__________________
-Suede Worthey-
http://www.wortheysoft.com
http://www.steelpsychos.com
Reply With Quote
Reply


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:03 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 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3