Jump to content

Making stats.xml like on Arcemu??


Recommended Posts

  • 40 years later...

Hello Guys,

i want to ask if there is a way to make the core writing an xml file like this:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="http://localhost//test.php?file=server_stats.xsl"?>
<serverpage>
 <status>
   <platform>ArcEmu TRUNK r1509/Release-Win-X86 ([url]www.ArcEmu.org[/url])</platform>
   <uptime>0 days, 12 hours, 46 minutes, 16 seconds</uptime>
   <oplayers>23</oplayers>
   <cpu>0.34</cpu>

   <qplayers>0</qplayers>
   <ram>1023.766</ram>
   <avglat>44.696</avglat>
   <threads>41</threads>
   <fthreads>9</fthreads>
   <gmcount>0</gmcount>

   <lastupdate>Fri Mar 27 10:35:53 2009
</lastupdate>
   <alliance>13</alliance>
   <horde>10</horde>
   <acceptedconns>253</acceptedconns>
   <peakcount>72</peakcount>
   <wdbquerysize>0</wdbquerysize>

   <cdbquerysize>0</cdbquerysize>
 </status>
 <statsummary>
   <human>1</human>
   <orc>3</orc>
   <dwarf>1</dwarf>
   <nightelf>7</nightelf>

   <undead>3</undead>
   <tauren>0</tauren>
   <gnome>1</gnome>
   <troll>1</troll>
   <bloodelf>3</bloodelf>
   <draenei>3</draenei>

   <warrior>4</warrior>
   <paladin>2</paladin>
   <hunter>6</hunter>
   <rogue>4</rogue>
   <priest>1</priest>
   <shaman>0</shaman>

   <mage>1</mage>
   <warlock>2</warlock>
   <druid>3</druid>
 </statsummary>
 <instances>
   <instance>
       <map>0</map>

       <maptype>0</maptype>
       <players>8</players>
       <maxplayers>0</maxplayers>
       <creationtime>N/A</creationtime>
       <expirytime>N/A</expirytime>
       <idletime>N/A</idletime>

   </instance>
   <instance>
       <map>1</map>
       <maptype>0</maptype>
       <players>7</players>
       <maxplayers>0</maxplayers>
       <creationtime>N/A</creationtime>

       <expirytime>N/A</expirytime>
       <idletime>N/A</idletime>
   </instance>
   <instance>
       <map>25</map>
       <maptype>0</maptype>
       <players>0</players>

       <maxplayers>0</maxplayers>
       <creationtime>N/A</creationtime>
       <expirytime>N/A</expirytime>
       <idletime>N/A</idletime>
   </instance>
   <instance>
       <map>29</map>

       <maptype>0</maptype>
       <players>0</players>
       <maxplayers>0</maxplayers>
       <creationtime>N/A</creationtime>
       <expirytime>N/A</expirytime>
       <idletime>N/A</idletime>

   </instance>
   <instance>
       <map>37</map>
       <maptype>0</maptype>
       <players>0</players>
       <maxplayers>0</maxplayers>
       <creationtime>N/A</creationtime>

       <expirytime>N/A</expirytime>
       <idletime>N/A</idletime>
   </instance>
   <instance>
       <map>42</map>
       <maptype>0</maptype>
       <players>0</players>

       <maxplayers>0</maxplayers>
       <creationtime>N/A</creationtime>
       <expirytime>N/A</expirytime>
       <idletime>N/A</idletime>
   </instance>
   <instance>
       <map>44</map>

       <maptype>0</maptype>
       <players>0</players>
       <maxplayers>12</maxplayers>
       <creationtime>N/A</creationtime>
       <expirytime>N/A</expirytime>
       <idletime>N/A</idletime>

   </instance>
   <instance>
       <map>169</map>
       <maptype>0</maptype>
       <players>0</players>
       <maxplayers>0</maxplayers>
       <creationtime>N/A</creationtime>

       <expirytime>N/A</expirytime>
       <idletime>N/A</idletime>
   </instance>
   <instance>
       <map>369</map>
       <maptype>0</maptype>
       <players>0</players>

       <maxplayers>0</maxplayers>
       <creationtime>N/A</creationtime>
       <expirytime>N/A</expirytime>
       <idletime>N/A</idletime>
   </instance>
   <instance>
       <map>449</map>

       <maptype>0</maptype>
       <players>0</players>
       <maxplayers>0</maxplayers>
       <creationtime>N/A</creationtime>
       <expirytime>N/A</expirytime>
       <idletime>N/A</idletime>

   </instance>
   <instance>
       <map>450</map>
       <maptype>0</maptype>
       <players>0</players>
       <maxplayers>0</maxplayers>
       <creationtime>N/A</creationtime>

       <expirytime>N/A</expirytime>
       <idletime>N/A</idletime>
   </instance>
   <instance>
       <map>451</map>
       <maptype>0</maptype>
       <players>0</players>

       <maxplayers>0</maxplayers>
       <creationtime>N/A</creationtime>
       <expirytime>N/A</expirytime>
       <idletime>N/A</idletime>
   </instance>
   <instance>
       <map>530</map>

       <maptype>0</maptype>
       <players>7</players>
       <maxplayers>0</maxplayers>
       <creationtime>N/A</creationtime>
       <expirytime>N/A</expirytime>
       <idletime>N/A</idletime>

   </instance>
   <instance>
       <map>542</map>
       <maptype>4</maptype>
       <players>0</players>
       <maxplayers>5</maxplayers>
       <creationtime>10:26:02 27/02/2009</creationtime>

       <expirytime>10:26:02 28/02/2009</expirytime>
       <idletime>11:01:22 27/02/2009</idletime>
   </instance>
   <instance>
       <map>545</map>
       <maptype>4</maptype>
       <players>0</players>

       <maxplayers>5</maxplayers>
       <creationtime>10:14:20 27/02/2009</creationtime>
       <expirytime>10:14:20 28/02/2009</expirytime>
       <idletime>10:52:26 27/02/2009</idletime>
   </instance>
   <instance>
       <map>547</map>

       <maptype>4</maptype>
       <players>0</players>
       <maxplayers>5</maxplayers>
       <creationtime>10:22:13 27/02/2009</creationtime>
       <expirytime>10:22:13 28/02/2009</expirytime>
       <idletime>10:53:50 27/02/2009</idletime>

   </instance>
   <instance>
       <map>557</map>
       <maptype>4</maptype>
       <players>1</players>
       <maxplayers>5</maxplayers>
       <creationtime>10:34:20 27/02/2009</creationtime>

       <expirytime>N/A</expirytime>
       <idletime>N/A</idletime>
   </instance>
   <instance>
       <map>582</map>
       <maptype>0</maptype>
       <players>0</players>

       <maxplayers>0</maxplayers>
       <creationtime>N/A</creationtime>
       <expirytime>N/A</expirytime>
       <idletime>N/A</idletime>
   </instance>
   <instance>
       <map>584</map>

       <maptype>0</maptype>
       <players>0</players>
       <maxplayers>0</maxplayers>
       <creationtime>N/A</creationtime>
       <expirytime>N/A</expirytime>
       <idletime>N/A</idletime>

   </instance>
   <instance>
       <map>586</map>
       <maptype>0</maptype>
       <players>0</players>
       <maxplayers>0</maxplayers>
       <creationtime>N/A</creationtime>

       <expirytime>N/A</expirytime>
       <idletime>N/A</idletime>
   </instance>
   <instance>
       <map>587</map>
       <maptype>0</maptype>
       <players>0</players>

       <maxplayers>0</maxplayers>
       <creationtime>N/A</creationtime>
       <expirytime>N/A</expirytime>
       <idletime>N/A</idletime>
   </instance>
   <instance>
       <map>588</map>

       <maptype>0</maptype>
       <players>0</players>
       <maxplayers>0</maxplayers>
       <creationtime>N/A</creationtime>
       <expirytime>N/A</expirytime>
       <idletime>N/A</idletime>

   </instance>
   <instance>
       <map>589</map>
       <maptype>0</maptype>
       <players>0</players>
       <maxplayers>0</maxplayers>
       <creationtime>N/A</creationtime>

       <expirytime>N/A</expirytime>
       <idletime>N/A</idletime>
   </instance>
   <instance>
       <map>590</map>
       <maptype>0</maptype>
       <players>0</players>

       <maxplayers>0</maxplayers>
       <creationtime>N/A</creationtime>
       <expirytime>N/A</expirytime>
       <idletime>N/A</idletime>
   </instance>
   <instance>
       <map>591</map>

       <maptype>0</maptype>
       <players>0</players>
       <maxplayers>0</maxplayers>
       <creationtime>N/A</creationtime>
       <expirytime>N/A</expirytime>
       <idletime>N/A</idletime>

   </instance>
   <instance>
       <map>593</map>
       <maptype>0</maptype>
       <players>0</players>
       <maxplayers>0</maxplayers>
       <creationtime>N/A</creationtime>

       <expirytime>N/A</expirytime>
       <idletime>N/A</idletime>
   </instance>
 </instances>
 <gms>
 </gms>
 <sessions>
   <plr>

     <name>Herbal</name>
     <race>4</race>
     <class>11</class>
     <gender>1</gender>
     <pvprank>0</pvprank>
     <level>70</level>

     <map>530</map>
     <areaid>3703</areaid>
     <xpos>-1723.850830</xpos>
     <ypos>5491.229004</ypos>
     <ontime>1 hours, 8 minutes, 18 seconds</ontime>
     <latency>43</latency>

   </plr>
   <plr>
     <name>Pancho</name>
     <race>11</race>
     <class>2</class>
     <gender>0</gender>
     <pvprank>0</pvprank>

     <level>56</level>
     <map>1</map>
     <areaid>541</areaid>
     <xpos>-6116.390137</xpos>
     <ypos>-1145.420044</ypos>
     <ontime>0 hours, 0 minutes, 34 seconds</ontime>

     <latency>52</latency>
   </plr>
   <plr>
     <name>Nyx</name>
     <race>8</race>
     <class>4</class>
     <gender>1</gender>

     <pvprank>0</pvprank>
     <level>1</level>
     <map>1</map>
     <areaid>363</areaid>
     <xpos>-590.699158</xpos>
     <ypos>-4228.896484</ypos>

     <ontime>0 hours, 1 minutes, 15 seconds</ontime>
     <latency>34</latency>
   </plr>
   <plr>
     <name>Tamika</name>
     <race>2</race>
     <class>4</class>

     <gender>1</gender>
     <pvprank>0</pvprank>
     <level>70</level>
     <map>1</map>
     <areaid>1637</areaid>
     <xpos>1808.514038</xpos>

     <ypos>-4273.235840</ypos>
     <ontime>0 hours, 24 minutes, 37 seconds</ontime>
     <latency>28</latency>
   </plr>
   <plr>
     <name>Meterwels</name>
     <race>11</race>

     <class>2</class>
     <gender>0</gender>
     <pvprank>0</pvprank>
     <level>70</level>
     <map>530</map>
     <areaid>3703</areaid>

     <xpos>-1728.326782</xpos>
     <ypos>5503.406738</ypos>
     <ontime>0 hours, 3 minutes, 27 seconds</ontime>
     <latency>59</latency>
   </plr>
   <plr>
     <name>Skullcrusher</name>

     <race>4</race>
     <class>1</class>
     <gender>0</gender>
     <pvprank>0</pvprank>
     <level>70</level>
     <map>0</map>

     <areaid>4</areaid>
     <xpos>-11163.349609</xpos>
     <ypos>-2997.631104</ypos>
     <ontime>0 hours, 46 minutes, 44 seconds</ontime>
     <latency>67</latency>
   </plr>

   <plr>
     <name>Murdoc</name>
     <race>5</race>
     <class>4</class>
     <gender>0</gender>
     <pvprank>0</pvprank>

     <level>61</level>
     <map>530</map>
     <areaid>3553</areaid>
     <xpos>71.494835</xpos>
     <ypos>3450.129639</ypos>
     <ontime>0 hours, 16 minutes, 38 seconds</ontime>

     <latency>36</latency>
   </plr>
   <plr>
     <name>Sola</name>
     <race>4</race>
     <class>1</class>
     <gender>0</gender>

     <pvprank>0</pvprank>
     <level>40</level>
     <map>0</map>
     <areaid>1519</areaid>
     <xpos>-8834.524414</xpos>
     <ypos>479.571167</ypos>

     <ontime>0 hours, 53 minutes, 5 seconds</ontime>
     <latency>53</latency>
   </plr>
   <plr>
     <name>Sin</name>
     <race>10</race>
     <class>3</class>

     <gender>1</gender>
     <pvprank>0</pvprank>
     <level>28</level>
     <map>1</map>
     <areaid>392</areaid>
     <xpos>-982.656250</xpos>

     <ypos>-3798.568115</ypos>
     <ontime>0 hours, 0 minutes, 37 seconds</ontime>
     <latency>0</latency>
   </plr>
   <plr>
     <name>Feivel</name>
     <race>4</race>

     <class>1</class>
     <gender>1</gender>
     <pvprank>0</pvprank>
     <level>1</level>
     <map>1</map>
     <areaid>188</areaid>

     <xpos>10312.769531</xpos>
     <ypos>828.495239</ypos>
     <ontime>0 hours, 10 minutes, 58 seconds</ontime>
     <latency>63</latency>
   </plr>
   <plr>
     <name>Yui</name>

     <race>2</race>
     <class>3</class>
     <gender>0</gender>
     <pvprank>0</pvprank>
     <level>70</level>
     <map>530</map>

     <areaid>3536</areaid>
     <xpos>197.685791</xpos>
     <ypos>2653.279297</ypos>
     <ontime>0 hours, 27 minutes, 43 seconds</ontime>
     <latency>36</latency>
   </plr>

   <plr>
     <name>Angroscha</name>
     <race>3</race>
     <class>3</class>
     <gender>1</gender>
     <pvprank>0</pvprank>

     <level>37</level>
     <map>0</map>
     <areaid>1519</areaid>
     <xpos>-8911.710938</xpos>
     <ypos>635.445435</ypos>
     <ontime>0 hours, 7 minutes, 34 seconds</ontime>

     <latency>54</latency>
   </plr>
   <plr>
     <name>Novielle</name>
     <race>10</race>
     <class>5</class>
     <gender>1</gender>

     <pvprank>0</pvprank>
     <level>70</level>
     <map>530</map>
     <areaid>3703</areaid>
     <xpos>-2021.063599</xpos>
     <ypos>5385.645508</ypos>

     <ontime>1 hours, 6 minutes, 19 seconds</ontime>
     <latency>59</latency>
   </plr>
   <plr>
     <name>Schindala</name>
     <race>11</race>
     <class>3</class>

     <gender>1</gender>
     <pvprank>0</pvprank>
     <level>70</level>
     <map>1</map>
     <areaid>3425</areaid>
     <xpos>-6791.298828</xpos>

     <ypos>761.966858</ypos>
     <ontime>0 hours, 0 minutes, 38 seconds</ontime>
     <latency>51</latency>
   </plr>
   <plr>
     <name>Samatha</name>
     <race>5</race>

     <class>9</class>
     <gender>1</gender>
     <pvprank>0</pvprank>
     <level>19</level>
     <map>0</map>
     <areaid>172</areaid>

     <xpos>789.904846</xpos>
     <ypos>687.122253</ypos>
     <ontime>0 hours, 20 minutes, 39 seconds</ontime>
     <latency>72</latency>
   </plr>
   <plr>
     <name>Mara</name>

     <race>7</race>
     <class>1</class>
     <gender>1</gender>
     <pvprank>0</pvprank>
     <level>11</level>
     <map>0</map>

     <areaid>211</areaid>
     <xpos>-5285.149902</xpos>
     <ypos>167.073715</ypos>
     <ontime>0 hours, 22 minutes, 28 seconds</ontime>
     <latency>21</latency>
   </plr>

   <plr>
     <name>Blu</name>
     <race>4</race>
     <class>11</class>
     <gender>1</gender>
     <pvprank>0</pvprank>

     <level>70</level>
     <map>530</map>
     <areaid>3703</areaid>
     <xpos>-1718.611206</xpos>
     <ypos>5495.102539</ypos>
     <ontime>0 hours, 16 minutes, 49 seconds</ontime>

     <latency>51</latency>
   </plr>
   <plr>
     <name>Gojana</name>
     <race>4</race>
     <class>3</class>
     <gender>1</gender>

     <pvprank>0</pvprank>
     <level>60</level>
     <map>0</map>
     <areaid>1438</areaid>
     <xpos>-11026.084961</xpos>
     <ypos>-3379.923828</ypos>

     <ontime>1 hours, 4 minutes, 35 seconds</ontime>
     <latency>33</latency>
   </plr>
   <plr>
     <name>Paulinchen</name>
     <race>4</race>
     <class>11</class>

     <gender>1</gender>
     <pvprank>0</pvprank>
     <level>70</level>
     <map>557</map>
     <areaid>3956</areaid>
     <xpos>-347.795502</xpos>

     <ypos>-221.756546</ypos>
     <ontime>0 hours, 5 minutes, 45 seconds</ontime>
     <latency>11</latency>
   </plr>
   <plr>
     <name>Selket</name>
     <race>5</race>

     <class>4</class>
     <gender>1</gender>
     <pvprank>0</pvprank>
     <level>70</level>
     <map>1</map>
     <areaid>2742</areaid>

     <xpos>-6491.436035</xpos>
     <ypos>822.548035</ypos>
     <ontime>1 hours, 2 minutes, 36 seconds</ontime>
     <latency>67</latency>
   </plr>
   <plr>
     <name>Samson</name>

     <race>2</race>
     <class>3</class>
     <gender>0</gender>
     <pvprank>0</pvprank>
     <level>70</level>
     <map>530</map>

     <areaid>3518</areaid>
     <xpos>-1579.585083</xpos>
     <ypos>7593.142578</ypos>
     <ontime>3 hours, 38 minutes, 29 seconds</ontime>
     <latency>42</latency>
   </plr>

   <plr>
     <name>Robert</name>
     <race>1</race>
     <class>8</class>
     <gender>0</gender>
     <pvprank>0</pvprank>

     <level>50</level>
     <map>0</map>
     <areaid>1438</areaid>
     <xpos>-10943.979492</xpos>
     <ypos>-3401.277100</ypos>
     <ontime>0 hours, 34 minutes, 59 seconds</ontime>

     <latency>30</latency>
   </plr>
   <plr>
     <name>Physics</name>
     <race>10</race>
     <class>9</class>
     <gender>0</gender>

     <pvprank>0</pvprank>
     <level>59</level>
     <map>0</map>
     <areaid>139</areaid>
     <xpos>1948.194702</xpos>
     <ypos>-3610.875732</ypos>

     <ontime>1 hours, 7 minutes, 30 seconds</ontime>
     <latency>66</latency>
   </plr>
 </sessions>
</serverpage>

and what we need to modify for this?

Link to comment
Share on other sites

From what I can see here, you can get most of this stuff from the DB (except for the latency and some other data). Meaning that you don't need to modify the core but just read the DB with a PHP script or something similar.

what about this script? [someone on the forums made it]

<?php

$output_file     = "stats.xml";

$server            = "127.0.0.1";

$db_user        = "root";
$db_passwd        = "pass";

$base_XML =
<<<XML
<serverpage><sessions></sessions></serverpage>
XML;


/////// function block ///////

// connect to mysql server
function connectMySQL($HOST,$USER,$PASSWD) {
   return mysql_connect($HOST,$USER,$PASSWD);
}

// connect connection to a database
function selectMySQLDB($DB,$CONN) {
   return mysql_select_db($DB,$CONN);
}

// connect to character DB
function connectCharDB($HOST,$USER,$PASSWD) {    
   $connection = connectMySQL($HOST,$USER,$PASSWD);
   selectMySQLDB("characters",$connection);
}

// close mysql connection
function closeMySQL() {
   mysql_close();
}

/////// function block end ///////


// build base xml tree
$xml_Tree = new SimpleXMLElement($base_XML);

// open sql connection
connectCharDB($server,$db_user,$db_passwd);

$sql = "SELECT
           name,
           race,
           class,
           map,
           zone,
           position_x,
           position_y,
           SUBSTRING_INDEX(SUBSTRING_INDEX(`data`, ' ', 37), ' ', -1) as gender,
           SUBSTRING_INDEX(SUBSTRING_INDEX(`data`, ' ', 35), ' ', -1) as level
       FROM
           characters
       WHERE
           online = 1";

// send sql request
$chars = mysql_query($sql);

// walk through the results and generate xml data
while ($char = mysql_fetch_array($chars)) {
   $plr = $xml_Tree->sessions[0]->addChild('plr');
   $plr->addChild('name', htmlentities($char["name"]));
   $plr->addChild('race', $char["race"]);
   $plr->addChild('class', $char["class"]);
   $plr->addChild('gender', $char["gender"]);
   $plr->addChild('level', $char["level"]);
   $plr->addChild('map', $char["map"]);
   $plr->addChild('areaid', $char["zone"]);
   $plr->addChild('xpos', $char["position_x"]);
   $plr->addChild('ypos', $char["position_y"]);
}

// close open mysql connection
closeMySQL();


// for debugging
//echo $xml_Tree->asXML();


// write the file
$file_handler = fOpen($output_file , "w");
fWrite($file_handler , $xml_Tree->asXML());
fClose($file_handler);

?>

but i can't understand how to add all the info's..

the output XML has only those lines:

<?xml version="1.0"?>
<serverpage><sessions/></serverpage>

can you give me an example please? thanks!

Link to comment
Share on other sites

just modify the db and colums to be read an it should work with no problems

its really working! lol, ecxept thad my Ascent Flash map isn't showing the online players for some reason.. :\\

and i need it to be refreshed automatically, how can i do thad? lets say every 120 sec the xml file will be refreshed from the db.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use