Code: Select all
Query failed: Out of range value adjusted for column 'shard_last_users' at row 1This is my polstatus script:
Code: Select all
/* $Id$
*
*/
use uo;
use util;
use http;
ENUM SERVER_STATS
CPU := "",
RAM := "",
HDD := "",
OS := "",
CONNECTION := "",
LOCATION := "",
TIMEZONE := ""
ENDENUM
Program HTMLPage()
if ( QueryParam("XML") )
OutputXML();
else
OutputHTML();
endif
return 1;
endprogram
function OutputXML()
WriteHTML("<CONTENT>");
var core_ref := POLCore();
WriteHTML("<POL>");
WriteHTML("<VERSION>"+core_ref.verstr+"</VERSION>");
WriteHTML("<ACCOUNTS>"+ListAccounts().Size()+"</ACCOUNTS>");
WriteHTML("<TLI>"+core_ref.itemcount+"</TLI>");
WriteHTML("<MOBILEAMT>"+core_ref.mobilecount+"</MOBILEAMT>");
WriteHTML("<PLAYERAMT>"+EnumerateOnlineCharacters().Size()+"</PLAYERAMT>");
WriteHTML("<LOAD>"+core_ref.sysload+"%</LOAD>");
WriteHTML("<UPTIME>"+FormatSeconds(core_ref.uptime)+"</UPTIME>");
WriteHTML("<RX>"+FormatBytes(core_ref.bytes_received)+"</RX>");
WriteHTML("<TX>"+FormatBytes(core_ref.bytes_sent)+"</TX>");
WriteHTML("</POL>");
WriteHTML("</CONTENT>");
return 1;
endfunction
function OutputHTML()
WriteHTML("<HTML>");
WriteHTML("<HEAD>");
WriteHTML("<TITLE>POL Internal Web Server</TITLE>");
WriteHTML("<LINK REL='stylesheet' TYPE='text/css' HREF='/stylesheets/main.css'>");
WriteHTML("</HEAD>");
WriteHTML("<BODY>");
WriteHTML("<DIV ID='container'>");
WriteHTML("<DIV ID='header'></DIV>");
WriteHTML("<DIV ID='content'>");
WriteHTML("<TABLE WIDTH='400' CELLSPACING='1' CELLPADDING='2'>");
WriteHTML("</TABLE>");
WriteHTML("<BR><BR>");
var core_ref := POLCore();
WriteHTML("<TABLE WIDTH='400' CELLSPACING='1' CELLPADDING='2'>");
WriteHTML("<TR><TH COLSPAN='2' ALIGN='LEFT'><B>Shard Information</B></TH></TR>");
WriteHTML("<TR><TD>POL Version:</TD><TD>"+core_ref.verstr+"</TD></TR>");
WriteHTML("<TR><TD>Accounts:</TD><TD>"+ListAccounts().Size()+"</TD></TR>");
WriteHTML("<TR><TD>Top Level Items:</TD><TD>"+core_ref.itemcount+"</TD></TR>");
WriteHTML("<TR><TD>Mobile Count:</TD><TD>"+core_ref.mobilecount+"</TD></TR>");
WriteHTML("<TR><TD>Player Count:</TD><TD>"+EnumerateOnlineCharacters().Size()+"</TD></TR>");
WriteHTML("<TR><TD>Load:</TD><TD>"+core_ref.sysload+"%</TD></TR>");
WriteHTML("<TR><TD>POL Uptime:</TD><TD>"+FormatSeconds(core_ref.uptime)+"</TD></TR>");
WriteHTML("<TR><TD>Bytes Received:</TD><TD>"+FormatBytes(core_ref.bytes_received)+"</TD></TR>");
WriteHTML("<TR><TD>Bytes Sent:</TD><TD>"+FormatBytes(core_ref.bytes_sent)+"</TD></TR>");
WriteHTML("</TABLE>");
WriteHTML("</DIV>");
WriteHTML("<DIV ID='footer'>");
WriteHTML("<P>Copyright © 2006-2008 - POL Development Team.</P>");
WriteHTML("</DIV>");
WriteHTML("</DIV>");
WriteHTML("</BODY>");
WriteHTML("</HTML>");
return 1;
endfunction
function FormatSeconds(seconds)
CONST SEC_PER_HOUR := 3600.0;
CONST SEC_PER_DAY := 86400.0;
CONST SEC_PER_WEEK := 604800.0;
var formatted := "";
if ( seconds >= SEC_PER_WEEK )
var weeks := CInt(seconds/SEC_PER_WEEK);
if ( weeks > 1 )
formatted := CStr(weeks) + " weeks, ";
else
formatted := "1 week, ";
endif
seconds := seconds - (weeks * SEC_PER_WEEK);
endif
if ( seconds >= SEC_PER_DAY )
var days := CInt(seconds/SEC_PER_DAY);
if (days > 1)
formatted := formatted + CStr(days) + " days, ";
else
formatted := formatted + "1 day, ";
endif
seconds := seconds - (days * SEC_PER_DAY);
endif
if ( seconds >= SEC_PER_HOUR )
var hours := CInt(seconds/SEC_PER_HOUR);
if (hours > 1)
formatted := formatted + CStr(hours) + " hours, ";
else
formatted := formatted + " 1 hour, ";
endif
seconds := seconds - (hours * SEC_PER_HOUR);
endif
var minutes := CInt(seconds/60.0);
if ( minutes )
formatted := formatted + CStr(minutes) + " minutes, ";
seconds := seconds - (minutes * 60);
endif
if ( seconds )
if ( seconds == 1 )
formatted := formatted + " 1 second";
else
formatted := formatted + CStr(seconds) + " seconds";
endif
endif
return formatted;
endfunction
function FormatBytes(bytes)
CONST BYTES_IN_KILO := 1024.0;
CONST BYTES_IN_MEG := 1048576.0;
var mb := CDbl(bytes) / BYTES_IN_MEG;
var type := "MB";
if ( mb < 1.0 )
mb := CDbl(bytes) / BYTES_IN_KILO;
type := "KB";
if ( mb < 1.0 )
mb := bytes;
type := "bytes";
endif
endif
return CStr(mb)+" "+type;
endfunction