|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Development::Feature Requests Post suggestions/feature requests here. |
|
|
|
02-01-2005, 06:25 PM
|
Dragon
|
|
Join Date: Dec 2003
Location: Earth
Posts: 818
|
|
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";
?>
Last edited by sdabbs65; 02-02-2005 at 02:28 AM..
|
|
|
|
02-02-2005, 06:01 AM
|
Developer
|
|
Join Date: Jul 2004
Posts: 773
|
|
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.
|
02-02-2005, 04:50 PM
|
Dragon
|
|
Join Date: Dec 2003
Location: Earth
Posts: 818
|
|
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.
|
02-05-2005, 04:22 PM
|
Sarnak
|
|
Join Date: May 2002
Location: Oakland, CA
Posts: 83
|
|
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
|
02-18-2005, 01:25 PM
|
Fire Beetle
|
|
Join Date: Apr 2004
Posts: 25
|
|
I remember that Acolyte , didn't you write that for my server ? hehe
|
03-14-2005, 10:45 PM
|
Hill Giant
|
|
Join Date: Feb 2003
Posts: 126
|
|
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 =)
|
03-15-2005, 02:11 AM
|
Dragon
|
|
Join Date: Dec 2003
Location: Earth
Posts: 818
|
|
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.
|
03-15-2005, 06:18 AM
|
Fire Beetle
|
|
Join Date: Jun 2004
Location: Canada
Posts: 24
|
|
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..
|
03-16-2005, 04:31 AM
|
Dragon
|
|
Join Date: Dec 2003
Location: Earth
Posts: 818
|
|
[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.
Last edited by sdabbs65; 03-19-2005 at 08:56 AM..
|
|
|
|
04-05-2005, 08:43 AM
|
Fire Beetle
|
|
Join Date: Jun 2004
Location: Canada
Posts: 24
|
|
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";
__________________
~ bUri
Last edited by knightz; 04-13-2005 at 10:06 PM..
|
|
|
|
04-05-2005, 07:15 PM
|
|
Dragon
|
|
Join Date: Mar 2004
Location: France, Bordeaux.
Posts: 677
|
|
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
__________________
|
04-05-2005, 10:05 PM
|
Demi-God
|
|
Join Date: Jan 2005
Posts: 1,109
|
|
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.
|
04-06-2005, 02:39 AM
|
Fire Beetle
|
|
Join Date: Jun 2004
Location: Canada
Posts: 24
|
|
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..
|
04-06-2005, 11:50 PM
|
Dragon
|
|
Join Date: Dec 2003
Location: Earth
Posts: 818
|
|
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.
|
08-08-2005, 06:56 AM
|
Sarnak
|
|
Join Date: Jan 2005
Posts: 64
|
|
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.
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -4. The time now is 10:20 PM.
|
|
|
|
|
|
|
|
|
|
|
|
|