Author |
Message |
ciph3r
Worker
![Worker Worker](modules/Forums/images/ranks/3stars.gif)
![](modules/Forums/images/avatars/gallery/blank.gif)
Joined: Jun 01, 2005
Posts: 178
|
Posted:
Tue Jan 22, 2008 3:06 am |
|
I currently am working on a CoD4 Server Viewer block.
This is what I have so far:
http://www.clangoat.com/blocks/cod4query.php
The issue is the Server Name is hard coded into the block because I cannot figure out how to translate color codes.
Here is the source:
Code:
<SCRIPT LANGUAGE="javascript">var ie4 = false; if(document.all) { ie4 = true; } function getObject(id) { if (ie4) { return document.all[id]; } else { return document.getElementById(id); } } function toggle(link, divId) { var lText = link.innerHTML; var d = getObject(divId); if (lText == '+') { link.innerHTML = '−'; d.style.display = 'block'; } else { link.innerHTML = '+'; d.style.display = 'none'; } } </SCRIPT>
<?
// Modded AA Block for COD4
//////////////////////////////////////////////
// America's Army Server Info Block
// based on the PHP Nuke block designed by DivideByZero
//
// Redesigned and converted by Ken McNicholas for TinyPortal block
// Complete Computer Services
// August 20, 2006
//
// TinyPortal 0.86 with SMF 1.1 RC2
//
// The America's Army Server Info Block displays current players
// on a particular America's Army server.
// Set up the configuration info for the server you wish to query
//
//////////////////////////////////////////////
/*
****************************************
****************************************
*** !! User Configuration Section !! ***
****************************************
****************************************
*/
// Server IP you want to query
$aa_ip = '208.167.250.102';
$aa_port2 = ':28960';
// Server Name
$aa_server_name = '<span style="color:#FFFFFF">*</span><span style="color:#00B906">Ranked </span><span style="color:#E8FF19">S&D</span><span style="color:#FFFFFF">*</span><span style="color:#23C2C6">HardCore</span>';
$aa_server_url = 'http://cod4tracker.com/weblauncher/';
$aa_lookup_server = 'http://cod4tracker.com/weblauncher/' . $aa_ip . $aa_port2 . '/';
$aa_gtracker_url = 'http://www.gametracker.com/server_info/' . $aa_ip . $aa_port2 . '/';
$cod4_imageurl_full = '<img src="http://cache.www.gametracker.com/server_info/' . $aa_ip . $aa_port2 . '/b_160x400_T2_F-1-2-3.png" border="0" />';
// Server Port - 1717 = default
$aa_port = '28960';
// URL to where you put the folder containing the map pics (include a trailing slash!)
$aa_image_path = 'http://airdaleops.com/Themes/AONV2/server/cod4/';
// You should only need to change the map array if maps
// are added/deleted/changed, otherwise leave as is
$map = array("mp_citystreets" => "citystreets.png",
"mp_backlot" => "backlot.png",
"mp_bloc" => "bloc.png",
"mp_bog" => "bog.png",
"mp_cargoship" => "cargoship.png",
"mp_convoy" => "convoy.png",
"mp_countdown" => "countdown.png",
"mp_crash" => "crash.png",
"mp_crossfire" => "crossfire.png",
"mp_farm" => "farm.png",
"mp_overgrown" => "overgrown.png",
"mp_pipeline" => "pipeline.png",
"mp_shipment" => "shipment.png",
"mp_showdown" => "showdown.png",
"mp_strike" => "strike.png",
"mp_vacant" => "vacant.png",
"mp_crash_snow" => "crash_snow.png"
);
/*
****************************************
****************************************
*/
//////////////////////////////////////////////
//
// The rest of this you should leave as is
// unless you are overly industrious :)
//
//////////////////////////////////////////////
// query server for game info
$aa_sock = fsockopen( "udp://" . $aa_ip, $aa_port);
if($aa_sock != false){
socket_set_timeout($aa_sock, 0, 500000);
fwrite($aa_sock, "ÿÿÿÿgetstatus\0");
$aa_info = @fread($aa_sock, 8192);
fclose($aa_sock);
}
$resarr = explode("\n", str_replace("\"", "" ,substr($aa_info, strpos($aa_info, "ui_maxclients"))));
$count = count($resarr) - 2;
// create array to hold game info
$aa_infoarr = explode("\\", $aa_info);
$aa_info = array();
$aa_infosize = count($aa_infoarr);
// since first element is unused (element 0) start at element 1
// and populate an associative array (nicer, and easier!)
for ($i = 1; $i < $aa_infosize; $i += 2){
$aa_info[$aa_infoarr[$i]] = $aa_infoarr[$i+1];
}
// get player list
//$players = "";
//$p = 1;
//for ($i = 0; $i < $aa_info['numplayers']; $i++){
//
$players .= $p . ' - ' . $aa_info['player_' . $i] . '<br />';
//
$p++;
//}
$players = "";
$p = 1;
for ($i = 1; $i < $count + 1; $i++)
{
$parr = explode(" ", $resarr[$i]);
$start = strlen($parr[0] . $parr[1]) + 2;
$players .= $p . " - " . substr($resarr[$i], $start) . '<br />';
$p++;
}
// display info
// Host name and link to detail from FO Online Server Browser
//echo '<a href="' . $aa_server_url . $aa_ip . '">' . $aa_info['hostname'] . "</a><br />";
/*
echo '<a href="' . $aa_server_url . $aa_ip . $aa_port2 . '/">' . $aa_info['sv_hostname'] . "</a><br />";
*/
// echo 'Server Name: <a href="' . $aa_server_url . $aa_ip . $aa_port2 . '/">' . Test . "</a><br />";
//echo 'Server Name: <a href="' . $aa_server_url . $aa_ip . $aa_port2 . '/">' . '<br><span style="color:#00B906">Ranked </span><span style="color:#E8FF19">S&D</span><span style="color:#FFFFFF">*</span><span style="color:#23C2C6">HardCore</span>' . "</a><br /><p>";
echo 'Server Name: <br>' . $aa_server_name .'<br>';
echo '<b>Advanced:</b><br>';
echo 'Pure Server: ' . $aa_info['sv_pure'] . '<br />';
echo 'Version: ' . $aa_info['shortversion'] . '<br />';
echo 'Punkbuster: ' .$aa_info['sv_punkbuster'] . '<br />';
//echo 'Max Ping: ' . $aa_info['sv_maxPing'] . '<br />';
//echo 'Max Rate: ' . $aa_info['sv_maxRate'] . '<br />';
echo '<br>';
//echo 'Test: ' . $aa_info['pam_mode'] . '<br />';
//IP:Port address
echo 'IP: <a href="' . $aa_server_url . $aa_ip . $aa_port2 . '/">' . $aa_ip . "</a><br />";
echo 'Port: ' . $aa_port . '<br />';
// Map Name
echo 'Map: ' . $aa_info['mapname'] . '<br />';
// Game Type
echo 'Game Type: ' . $aa_info['g_gametype'] . '<br />';
// Players / Max Players
echo 'Players: <b><font color=#00ff00>' . $count . '</b></font> / ' . $aa_info['sv_maxclients'] . '<br />';
echo '<hr';
// Round
$mappic = "";
if (array_key_exists($aa_info['mapname'], $map)){
echo '<img src="' . $aa_image_path . $map[$aa_info['mapname']] . '"><br />';
} else {
echo 'Map Unavailable!<br />';
}
echo '<a href="' . $aa_lookup_server . '">* Server Intel *</a><br />';
// display scrolling player list
echo '<marquee behavior="scroll" align="left" direction="up" height="50" width="90%" scrollamount="2" scrolldelay="150" bgcolor="000000"
loop="infinite" onmouseover="this.stop()" onmouseout="this.start()">';
echo '<a href="' . $aa_lookup_server . '">' . $players . '</a></marquee>';
?>
<hr />
Click (+) To Expand
<!-- <div style="width: 145px; border: 0px solid #ffffff; padding: 0px; background: #000000"> <table style="color: #ffd142; background: #000000" cellSpacing="0" cellPadding="0" width="145" border="1">
<tr> <td align="left" width="3%"><font color="#ffffff">(</font><a id="cplayers_link" title="show/hide" style="color: #ffffff; text-decoration: none" onclick="toggle(this, 'cplayers');" href="javascript:%20void(0);">−</a><font color="#ffffff">) </font></td>
<td align="left"><b> <a onclick="toggle(getObject('cplayers_link'), 'cplayers');" href="javascript:%20void(0);" name="link">Current Players </a></b></td>
</tr> </table> <div id="cplayers" style="border: 1px solid #0000CC; padding: 0px; position:relative; left:0px; width:140px"><? echo '<a href="' . $aa_lookup_server . '">' . $players . '</a>' ?>
</CENTER></p></DIV>
<SCRIPT LANGUAGE="javascript">toggle(getObject('cplayers_link'), 'cplayers'); </SCRIPT> -->
<div style="width: 145px; border: 0px solid #ffffff; padding: 0px; background: #000000"> <table style="color: #ffd142; background: #000000" cellSpacing="0" cellPadding="0" width="145" border="1">
<tr> <td align="left" width="3%"><font color="#ffffff">(</font><a id="stools_link" title="show/hide" style="color: #ffffff; text-decoration: none" onclick="toggle(this, 'stools');" href="javascript:%20void(0);">−</a><font color="#ffffff">) </font></td>
<td align="left"><b> <a onclick="toggle(getObject('stools_link'), 'stools');" href="javascript:%20void(0);" name="link">Server Tools </a></b></td>
</tr> </table>
<div id="stools" style="border: 1px solid #FFFF00; padding: 0px; position:relative; left:0px; width:140px; height: 45%;"><a href="http://www.clangoat.com/pbssView/index.php" target="_blank">»»» PBSS Viewer</a><br />
<a href="http://cod4tracker.com/index.php?form=PlayerSearch" target="_blank">»»» Player Search</a></DIV>
<SCRIPT LANGUAGE="javascript">toggle(getObject('stools_link'), 'stools'); </SCRIPT>
</DIV>
<div style="width: 145px; border: 0px solid #ffffff; padding: 0px; background: #000000"> <table style="color: #ffd142; background: #000000" cellSpacing="0" cellPadding="0" width="145" border="1">
<tr> <td align="left" width="3%"><font color="#ffffff">(</font><a id="gtracker_link" title="show/hide" style="color: #ffffff; text-decoration: none" onclick="toggle(this, 'gtracker');" href="javascript:%20void(0);">−</a><font color="#ffffff">) </font></td>
<td align="left"><b><a onclick="toggle(getObject('gtracker_link'), 'gtracker');" href="javascript:%20void(0);" name="link"><img src="http://www.clangoat.com/images/custom/gtmenu.jpg" width="100%" border="0" /></a></b></td>
</tr> </table>
<div id="gtracker" style="border: 1px solid #00FF00; padding: 0px; position:relative; left:0px; width:160px; height:441px"><? echo '<a href="' . $aa_gtracker_url . '">' . $cod4_imageurl_full . "</a><br />";?></CENTER></p></DIV> </FONT></DIV>
<SCRIPT LANGUAGE="javascript">toggle(getObject('gtracker_link'), 'gtracker'); </SCRIPT>
<div style="width: 145px; border: 0px solid #ffffff; padding: 0px; background: #000000"> <table style="color: #ffd142; background: #000000" cellSpacing="0" cellPadding="0" width="145" border="1">
<tr> <td align="left" width="3%"><font color="#ffffff">(</font><a id="xfire_link" title="show/hide" style="color: #ffffff; text-decoration: none" onclick="toggle(this, 'xfire');" href="javascript:%20void(0);">−</a><font color="#ffffff">) </font></td>
<td align="left"><b><a onclick="toggle(getObject('xfire_link'), 'xfire')" href="javascript:%20void(0);" name="link"><img src="http://www.clangoat.com/images/custom/xfiremenu.jpg" width="100%" border="0"></a></b></td>
</tr> </table> <div id="xfire" style="border: 1px solid #ffffff; padding: 0px; position:relative; left:0px; width:140px"><table width="100%" border="1">
<tr>
<th scope="row"><? echo '<a href="xfire:join?game=cod4mp&server=' . $aa_ip . $aa_port2 . '/">Join Server</a><br />';?> </th>
</tr>
<tr>
<th scope="row"><? echo '<a href="
xfire:add_server?game=cod4mp&server=' . $aa_ip . $aa_port2 . '/">Add To Favorites</a><br />';?></th>
</tr>
</table>
</div>
</div></div>
</DIV>
<SCRIPT LANGUAGE="javascript">toggle(getObject('xfire_link'), 'xfire'); </SCRIPT>
</FONT></DIV>
|
I found a CoD4Query script that I think holds the key to translating the color codes, but I cant figure it out on my own (ive spent 3 hours trying different things).
Here is the source:
Code:
<?
//
// CoDQuery 1.0
//
// Author: Bell from the clan [WC-anka]
// Clanpage: http://bunbun.milliways.st/
// PHP-stuff for CoD: http://www.milliways.st/cod/
// Feedback: codconfig@milliways.st
// License: Use it, have fun and play on our servers... ;)
//
//
// CoDPlayer class
//
class CoDPlayer {
var $score;
var $ping;
var $rawname;
var $name;
var $cname;
function CoDPlayer($score, $ping, $rawname) {
$this->score = $score;
$this->ping = $ping;
$name=trim(trim($rawname), "\"");
$this->rawname=$name;
$this->name=removecolorcodes($name);
$this->cname=translatecolorcodes($name);
}
}
//
// CoDQuery class
//
class CoDQuery {
// Variables for normal use
var $ip="208.167.250.102"; //IP adress
var $port="28960"; //UDP port
var $name="OFFLINE"; //Server name color codes removed
var $cname="OFFLINE"; //Server name color coded html
var $map=""; //Current map
var $gametype; //Gametype
var $numplayers=0; //Number of players
var $maxplayers=0; //Maximum players
var $privateplayers=0; //Private players
var $password=0; //Password needed to join?
var $pure=0; //Pure server?
var $modified=0; //Mod:ed server?
var $friendlyfire=0; //Friendly fire?
var $killcam=0; //Killcam?
var $maxping=0; //Max ping
var $minping=0; //Min ping
var $maxrate=0; //Max rate
var $version=0; //Version
var $punkbuster=0; //Punkbuster?
var $players = array(); //Array with players
// Variables for advanced users
var $rawgetinfo; //Raw information from the getinfo command
var $rawgetstatus; //Raw information from the getstatus command
var $info = array(); //Array with values from $rawgetinfo
var $status = array(); //Array with values from $rawgetstatus
var $rawplayers = array(); //Array with raw player information
// Constructor
function CoDQuery($ip,$port) {
// Init some variables
$this->ip = gethostbyname($ip); //Resolv IP adress
if($port) //If $port is set to a value...
$this->port = $port; //...use it.
// Open socket
$fp = fsockopen("udp://" . $this->ip, $this->port, $errno, $errstr, 1);
if (!$fp) { // OK?
$this->name=$this->cname="ERROR!!"; //If error, set servername to ERROR!!
} else {
// Set a low timeout to avoid longs waits if a player disconnects while we are still getting info
stream_set_timeout($fp, 2);
// Try one of the following instead of the line above if you use PHP prior to 4.3.0
// socket_set_timeout($fp, 2);
// set_socket_timeout($fp, 2);
fputs($fp, "\xff\xff\xff\xffgetinfo\n"); // Send getinfo command
usleep(100000); // Wait 0.1 seconds between the commands.
fputs($fp, "\xff\xff\xff\xffgetstatus\n"); // Send getstatus command
// Get response
$dummy=fgets($fp); //Skip first line
// Get line with serverinfo
$this->rawgetinfo = preg_replace("/\xff\xff\xff\xffstatusResponse/", "", fgets($fp)); //Save the raw server info
// Split it into an array
$arr=explode("\\",$this->rawgetinfo);
// Skip first element which will be empty and then loop trough the rest
for ($i=1;$i<count($arr);$i++) {
$this->info[$arr[$i++]] = $arr[$i]; //Tidy up the data into a neat array
}
// Get line with serverstatus
$this->rawgetstatus=fgets($fp);
// Split it into an array
$arr=explode("\\",$this->rawgetstatus);
// Skip first element which will be empty and then loop trough the rest
for ($i=1;$i<count($arr);$i++) {
$this->status[$arr[$i++]]=$arr[$i]; //Tidy up the data into a neat array
}
}
// Assign the variables that is normally used
if(isset($this->info[hostname])) $this->name = removecolorcodes($this->info[hostname]);
if(isset($this->info[hostname])) $this->cname = translatecolorcodes($this->info[hostname]);
if(isset($this->info[mapname])) $this->map = $this->info[mapname];
if(isset($this->info[gametype])) $this->gametype = $this->info[gametype];
if(isset($this->info[clients])) $this->numplayers = $this->info[clients];
if(isset($this->info[sv_maxclients])) $this->maxplayers = $this->info[sv_maxclients];
if(isset($this->status[sv_privateClients])) $this->privateplayers=$this->status[sv_privateClients];
if(isset($this->status[pswrd])) $this->password = $this->status[pswrd];
if(isset($this->info[pure])) $this->pure = $this->info[pure];
if(isset($this->info[mod])) $this->modified = $this->info[mod];
if(isset($this->info[ff])) $this->friendlyfire = $this->info[ff];
if(isset($this->status[scr_killcam])) $this->killcam = $this->status[scr_killcam];
if(isset($this->info[maxPing])) $this->maxping = $this->info[maxPing];
if(isset($this->status[sv_minPing])) $this->minping = $this->status[sv_minPing];
if(isset($this->status[sv_maxRate])) $this->maxrate = $this->status[sv_maxRate];
if(isset($this->status[shortversion])) $this->version = $this->status[shortversion];
if(isset($this->info[pb])) $this->punkbuster = $this->info[pb];
// Loop through the players
for ($i=0;$i<$this->numplayers;$i++) {
// Exit if we get a timeout
// This can happen if a player disconnects before we have recieved all the player data
if (!($this->rawplayers[$i]=fgets($fp))) {
$this->numplayers = $this->info[clients] = $i; // Change to numplayers to actual value
break;
}
// Split the raw data into an array
$player=explode(" ",$this->rawplayers[$i],3);
// Use the an array of instances of the CoDPlayer class (score, ping, name)
$this->players[$i] = new CoDPlayer($player[0], $player[1], $player[2]);
}
// Close the socket
fclose($fp);
}
}
// Function to remove the color codes
function removecolorcodes($string) {
return preg_replace("/\^[0-9]/", "", htmlspecialchars($string));
}
// Function to translate the color codes into html tags
function translatecolorcodes($string) {
$pattern[0]="/\^0/";
$pattern[1]="/\^1/";
$pattern[2]="/\^2/";
$pattern[3]="/\^3/";
$pattern[4]="/\^4/";
$pattern[5]="/\^5/";
$pattern[6]="/\^6/";
$pattern[7]="/\^7/";
$pattern[8]="/\^8/";
$pattern[9]="/\^9/";
$replacement[0]="</font><font color=black>";
$replacement[1]="</font><font color=red>";
$replacement[2]="</font><font color=darkgreen>";
$replacement[3]="</font><font color=yellow>";
$replacement[4]="</font><font color=blue>";
$replacement[5]="</font><font color=cyan>";
$replacement[6]="</font><font color=magenta>";
$replacement[7]="</font><font color=white>";
$replacement[8]="</font><font color=purple>";
$replacement[9]="</font><font color=gray>";
$string = preg_replace($pattern, $replacement, htmlspecialchars($string));
return "<font>" . $string . "</font>";
}
echo 'Server Name: <br>' . $name .'<br>';
?>
|
How could I use the translate function out of that in my block? |
|
|
|
![](themes/RavenIce/forums/images/spacer.gif) |
kguske
Site Admin
![](modules/Forums/images/avatars/41f0b40a419280935f3a0.gif)
Joined: Jun 04, 2004
Posts: 6437
|
Posted:
Tue Jan 22, 2008 6:07 am |
|
Add the class source on your server, instantiate the class in your block, then the function should be available.
Or, copy the functions into your block (if all you need are the removecolorcodes and translatecolorcodes functions). |
_________________ I search, therefore I exist...
Only registered users can see links on this board! Get registered or login! |
|
|
![](themes/RavenIce/forums/images/spacer.gif) |
Gremmie
Former Moderator in Good Standing
![](modules/Forums/images/avatars/0cd76dcf45da5de2cf864.jpg)
Joined: Apr 06, 2006
Posts: 2415
Location: Iowa, USA
|
Posted:
Tue Jan 22, 2008 12:09 pm |
|
LOL, I just wrote a COD4 server query thing this weekend. I can post how I handled the color codes later tonight (or just send you the code for the whole thing). It's not a block though, it was designed to be a page to show a bunch of servers for one clan. But you could probably make it a block with a bit of work. It also works for COD1 and COD:UO. |
_________________ Only registered users can see links on this board! Get registered or login! - An Event Calendar for PHP-Nuke
Only registered users can see links on this board! Get registered or login! - A Google Maps Nuke Module |
|
|
![](themes/RavenIce/forums/images/spacer.gif) |
Gremmie
![](modules/Forums/images/avatars/gallery/blank.gif)
|
Posted:
Tue Jan 22, 2008 12:17 pm |
|
Okay, here is the function I used to convert player names to HTML while preserving the COD color scheme. It took me like a freaking hour to come up with the right regular expression for this. I'm quite proud of it.
Code:
function toHtml($s)
{
static $colorTable = array('black', 'red', 'lime', 'yellow', 'blue', 'aqua', 'purple', 'white', 'navy', 'silver');
$s = htmlspecialchars($s);
$matches = array();
while (preg_match('/(.*?)\^(\d)(.*?)((?:\^\d).*$|$)/', $s, $matches))
{
$s = $matches[1] . '<span style="color: ' . $colorTable[intval($matches[2])] . ';">' . $matches[3] .
'</span>' . $matches[4];
}
return $s;
}
|
So call that on your player names and it will turn them into HTML with colors. |
|
|
|
![](themes/RavenIce/forums/images/spacer.gif) |
ciph3r
![](modules/Forums/images/avatars/gallery/blank.gif)
|
Posted:
Tue Jan 22, 2008 1:30 pm |
|
Apologies, im not that experienced with PHP so as much as I appriciate your help. . . i still cant figure it out
Which would be the better (easier) method?
And how would I implement it with the source i posted?
Sorry guys, im no pro. |
|
|
|
![](themes/RavenIce/forums/images/spacer.gif) |
ciph3r
![](modules/Forums/images/avatars/gallery/blank.gif)
|
Posted:
Tue Jan 22, 2008 2:25 pm |
|
Im actually having the same issue with an AA version that I have:
Source:
Code:<SCRIPT LANGUAGE="javascript">var ie4 = false; if(document.all) { ie4 = true; } function getObject(id) { if (ie4) { return document.all[id]; } else { return document.getElementById(id); } } function toggle(link, divId) { var lText = link.innerHTML; var d = getObject(divId); if (lText == '+') { link.innerHTML = '−'; d.style.display = 'block'; } else { link.innerHTML = '+'; d.style.display = 'none'; } } </SCRIPT>
<?
//////////////////////////////////////////////
// America's Army Server Info Block
// based on the PHP Nuke block designed by DivideByZero
//
// Redesigned and converted by Ken McNicholas for TinyPortal block
// Complete Computer Services
// August 20, 2006
//
// TinyPortal 0.86 with SMF 1.1 RC2
//
// The America's Army Server Info Block displays current players
// on a particular America's Army server.
// Set up the configuration info for the server you wish to query
//
//////////////////////////////////////////////
/*
****************************************
****************************************
*** !! User Configuration Section !! ***
****************************************
****************************************
*/
include("includes/colorednames.php");
// Server IP you want to query
$aa_ip = '66.55.131.213';
$aa_port2 = ':1716';
$aa_port_display = '1716';
// Server Name
$aa_server_name = '<b><font color="#ffffff">-</font><font color="#7f7f7f">T</font><font color="#c0c0c0">h</font><font color="#efefef">e </font><font color="#ff0101">S</font><font color="#ff0180">e</font><font color="#b90101">x </font><font color="#010180">P</font><font color="#0101ff">e</font><font color="#8080ff">n</font><font color="#ffffff">- | </font><font color="#ffff01">Ho</font><font color="#bbbb01">n</font><font color="#828201">or</font></b>';
$aa_server_url = 'http://www.forwardobserver.us/browser/foserverlist.php?ServerIP=';
$aa_lookup_server = 'http://www.clangoat.com/ServerViewer/';
$aa_gtracker_url = 'http://www.gametracker.com/server_info/' . $aa_ip . $aa_port2 . '/';
$cod4_imageurl_full = '<img width="100%" height="100%" src="http://cache.www.gametracker.com/server_info/' . $aa_ip . $aa_port2 . '/b_160x400_T2_F-1-2-3.png" border="0" />';
// Server Port - 1717 = default
$aa_port = '1717';
// URL to where you put the folder containing the map pics (include a trailing slash!)
$aa_image_path = 'http://www.clangoat.com/armygame/';
// You should only need to change the map array if maps
// are added/deleted/changed, otherwise leave as is
$map = array("Bridge Crossing" => "Bridge.jpg",
"Bridge SE" => "Bridge SE.jpg",
"Border" => "Border.jpg",
"Collapsed Tunnel" => "Tunnel-d.jpg",
"Dusk" => "Dusk.jpg",
"FLS Assault" => "FLS-b.jpg",
"Headquarters Raid" => "HQ_Raid.jpg",
"Insurgent Camp" => "Insurgent_Camp-c.jpg",
"Interdiction" => "Interdiction.jpg",
"JRTC Farm Raid" => "JRTC_Farm.jpg",
"Mountain Ambush" => "Mountain_Ambush-b.jpg",
"Mountain Pass" => "Mountain_Pass.jpg",
"Mountain Pass SE" => "Mountain Pass SE.jpg",
"Mout McKenna" => "MOUT_McKenna.jpg",
"Pipeline" => "Pipeline-b.jpg",
"Pipeline SF" => "Pipeline.jpg",
"Radio Tower" => "Radio_Tower.jpg",
"Redemption" => "Redemption.jpg",
"River Basin" => "River_Basin-c.jpg",
"SF Oasis" => "sf_oasis.jpg",
"SF Taiga" => "sf_taiga.jpg",
"SF Blizzard" => "sf_blizzard.jpg",
"SF Courtyard" => "sf_courtyard.jpg",
"SF Dockside" => "SFdockside.jpg",
"SF Extraction" => "SFextraction.jpg",
"SF PCR" => "sf_pcr.jpg",
"SF Water Treatment" => "sf_water_treatment.jpg",
"SF Arctic" => "sfarctic.jpg",
"SF Village" => "sfvillage.jpg",
"SF CSAR" => "sf_csar.jpg",
"SF Hospital" => "sf_hospital.jpg",
"SF Recon" => "sf_recon.jpg",
"SF Sandstorm" => "sf_sandstorm.jpg",
"Rummage" => "rummage.jpg",
"SF Hospital SE" => "sfhospitalse.jpg",
"SF SnakePlain" => "snakeplain.jpg",
"Steamroller" => "steamroller.jpg",
"Swamp Raid" => "Swamp_Raid-a.jpg",
"SMU GH RiverVillage" => "RiverVillage.jpg",
"SMU GH SFFloodgate" => "Floodgate.jpg",
"SMU GH SFOldTown" => "OldTown.jpg",
"SMU GH SFRefinery" => "Refinery.jpg",
"Weapons Cache" => "Weapons_Cache-d.jpg",
"Weapons Cache SE" => "Weapons_Cache-a.jpg",
"Woodland Outpost" => "woodland_outpost.jpg",
"Urban Assault" => "urban_assault.jpg");
/*
****************************************
****************************************
*/
//////////////////////////////////////////////
//
// The rest of this you should leave as is
// unless you are overly industrious :)
//
//////////////////////////////////////////////
// query server for game info
$aa_sock = fsockopen( "udp://" . $aa_ip, $aa_port);
if($aa_sock != false){
socket_set_timeout($aa_sock, 0, 500000);
fwrite($aa_sock, "\\info\\");
$aa_info = @fread($aa_sock, 8192);
fclose($aa_sock);
}
// create array to hold game info
$aa_infoarr = explode("\\", $aa_info);
$aa_info = array();
$aa_infosize = count($aa_infoarr);
// since first element is unused (element 0) start at element 1
// and populate an associative array (nicer, and easier!)
for ($i = 1; $i < $aa_infosize; $i += 2){
$aa_info[$aa_infoarr[$i]] = $aa_infoarr[$i+1];
}
// get player list
$players = "";
$p = 1;
for ($i = 0; $i < $aa_info['numplayers']; $i++){
$players .= $p . ' - ' . $aa_info['player_' . $i] . '<br />';
$p++;
}
// display info
// Host name and link to detail from FO Online Server Browser
//echo 'test: ' . $aa_info[hostname] . '<br />';
echo 'Server Name: <br><a href="' . $aa_lookup_server . $aa_ip . '">' . $aa_server_name . "</a><br />";
//IP:Port address
echo 'IP: <a href="' . $aa_lookup_server . '">' . $aa_ip . '</a><br />';
echo 'Port: ' . $aa_port_display . '<br />';
// Map Name
echo 'Map: ' . $aa_info['mapname'] . '<br />';
// Game Version
echo 'Version: ' . $aa_info['gamever'] . '<br />';
// Players / Max Players
echo 'Players: <b><font color=#00ff00>' . $aa_info['numplayers'] . '</b></font> / ' . $aa_info['maxplayers'] . '<br />';
// Round
echo 'Round: ' . $aa_info['current_round'] . '<br />';
//Mission Time
echo 'Time: ' . $aa_info['mission_time'] . '<br />';
echo '<hr>';
$mappic = "";
if (array_key_exists($aa_info['mapname'], $map)){
echo '<img src="' . $aa_image_path . $map[$aa_info['mapname']] . '"><br />';
} else {
echo 'Map Unavailable!<br />';
}
echo '<a href="' . $aa_lookup_server . '">* Server Intel *</a><br />';
//echo 'Current Players:<br />';
//echo '<a name="scrollingCode"></a>'
// display scrolling player list
echo '<marquee behavior="scroll" align="left" direction="up" height="50" width="90%" scrollamount="2" scrolldelay="100" bgcolor="000000"
loop="infinite" onmouseover="this.stop()" onmouseout="this.start()">';
echo '<a href="' . $aa_lookup_server . '">' . $players . '</a></marquee>';
?><br />
<hr />
Click (+) To Expand
<!-- <div style="width: 145px; border: 0px solid #ffffff; padding: 0px; background: #000000"> <table style="color: #ffd142; background: #000000" cellSpacing="0" cellPadding="0" width="145" border="1">
<tr> <td align="left" width="3%"><font color="#ffffff">(</font><a id="cplayers2_link" title="show/hide" style="color: #ffffff; text-decoration: none" onclick="toggle(this, 'cplayers2');" href="javascript:%20void(0);">−</a><font color="#ffffff">) </font></td>
<td align="left"><b> <a onclick="toggle(getObject('cplayers2_link'), 'cplayers2');" href="javascript:%20void(0);" name="link">Current Players </a></b></td>
</tr> </table> <div id="cplayers2" style="border: 1px solid #0000CC; padding: 0px; position:relative; left:0px; width:140px"><? echo '<a href="' . $aa_lookup_server . '">' . $players . '</a>' ?>
</CENTER></p></DIV>
<SCRIPT LANGUAGE="javascript">toggle(getObject('cplayers2_link'), 'cplayers2'); </SCRIPT> -->
<div style="width: 145px; border: 0px solid #ffffff; padding: 0px; background: #000000"> <table style="color: #ffd142; background: #000000" cellSpacing="0" cellPadding="0" width="145" border="1">
<tr> <td align="left" width="3%"><font color="#ffffff">(</font><a id="stools2_link" title="show/hide" style="color: #ffffff; text-decoration: none" onclick="toggle(this, 'stools2');" href="javascript:%20void(0);">−</a><font color="#ffffff">) </font></td>
<td align="left"><b> <a onclick="toggle(getObject('stools2_link'), 'stools2');" href="javascript:%20void(0);" name="link">Server Tools </a></b></td>
</tr> </table>
<div id="stools2" style="border: 1px solid #FFFF00; padding: 0px; position:relative; left:0px; width:140px; height: 45%;">
<a href="http://www.clangoat.com/ServerViewer/">»»» Server Viewer <img src="http://www.clangoat.com/modules/Downloads/images/new_7.gif" border="0"></a><br /><a href="http://www.clangoat.com/pbssView/index.php" target="_blank">»»» PBSS Viewer</a><br /><a href="http://www.aa-mbs.com/search.php?indiv=1&force=1&attr=playerName&type=wildcard&value=-g2.&">»»» Player Search</a></DIV>
<SCRIPT LANGUAGE="javascript">toggle(getObject('stools2_link'), 'stools2'); </SCRIPT>
</DIV><div style="width: 145px; border: 0px solid #ffffff; padding: 0px; background: #000000"> <table style="color: #ffd142; background: #000000" cellSpacing="0" cellPadding="0" width="145" border="1">
<tr> <td align="left" width="3%"><font color="#ffffff">(</font><a id="gtracker2_link" title="show/hide" style="color: #ffffff; text-decoration: none" onclick="toggle(this, 'gtracker2');" href="javascript:%20void(0);">−</a><font color="#ffffff">) </font></td>
<td align="left"><b><a onclick="toggle(getObject('gtracker2_link'), 'gtracker2');" href="javascript:%20void(0);" name="link"><img src="http://www.clangoat.com/images/custom/gtmenu.jpg" width="100%" border="0" /></a></b></td>
</tr> </table>
<div id="gtracker2" style="border: 1px solid #00FF00; padding: 0px; position:relative; left:0px; width:160px; height:441px"><? echo '<a href="' . $aa_gtracker2_url . '">' . $cod4_imageurl_full . "</a><br />";?></CENTER></p></DIV> </FONT></DIV>
<SCRIPT LANGUAGE="javascript">toggle(getObject('gtracker2_link'), 'gtracker2'); </SCRIPT>
<div style="width: 145px; border: 0px solid #ffffff; padding: 0px; background: #000000"> <table style="color: #ffd142; background: #000000" cellSpacing="0" cellPadding="0" width="145" border="1">
<tr> <td align="left" width="3%"><font color="#ffffff">(</font><a id="xfire2_link" title="show/hide" style="color: #ffffff; text-decoration: none" onclick="toggle(this, 'xfire2');" href="javascript:%20void(0);">−</a><font color="#ffffff">) </font></td>
<td align="left"><b><a onclick="toggle(getObject('xfire2_link'), 'xfire2')" href="javascript:%20void(0);" name="link"><img src="http://www.clangoat.com/images/custom/xfiremenu.jpg" width="100%" border="0"></a></b></td>
</tr> </table> <div id="xfire2" style="border: 1px solid #ffffff; padding: 0px; position:relative; left:0px; width:140px"><table width="100%" border="1">
<tr>
<th scope="row"><? echo '<a href="xfire:join?game=aao&server=' . $aa_ip . $aa_port2 . '/">Join Server</a><br />';?> </th>
</tr>
<tr>
<th scope="row"><? echo '<a href="
xfire:add_server?game=aao&server=' . $aa_ip . $aa_port2 . '/">Add To Favorites</a><br />';?></th>
</tr>
</table>
</div>
</div></div>
</DIV>
<SCRIPT LANGUAGE="javascript">toggle(getObject('xfire2_link'), 'xfire2'); </SCRIPT>
</FONT></DIV>
|
Source of colorednames.php:
Code:<? function ut2004color($tempname,$docolor) {
$colagain=1;
$maxcols=0;
$data1=$tempname;
while($colagain==1 && $maxcols<=50) {
if(preg_match("#(.+)(.+)#",$data1,$match)) {
$data1=$match[1];
$data2=$match[2];
$maxcols++;
$snamehex = bin2hex(substr($data2, 0, 1));
$snamehex .= bin2hex(substr($data2, 1, 1));
$snamehex .= bin2hex(substr($data2, 2, 1));
$tempname = str_replace ("$shex1$shex2$shex3", "", substr($data2, 3, 250));
if($docolor==1) $coloredname = "<font color=\"#$snamehex\">$tempname</font>$coloredname";
else $coloredname = "$tempname$coloredname";
$colagain=1;
} else {
$firstbyte = substr($data1, 0, 1);
if($firstbyte=="") {
$snamehex = bin2hex(substr($data1, 1, 1));
$snamehex .=bin2hex(substr($data1, 2, 1));
$snamehex .=bin2hex(substr($data1, 3, 1));
$tempname = str_replace ("$shex1$shex2$shex3", "", substr($data1, 4, 250));
if($docolor==1) $coloredname = "<font color=\"#$snamehex\">$tempname</font>$coloredname";
else $coloredname = "$tempname$coloredname";
} else {
$tempname = substr($data1, 0, 250);
$coloredname = "$tempname$coloredname";
}
$colagain=0;
}
}
if($docolor==1) $coloredname = "<b>$coloredname</b>";
return $coloredname;
}
?>
|
|
|
|
|
![](themes/RavenIce/forums/images/spacer.gif) |
Gremmie
![](modules/Forums/images/avatars/gallery/blank.gif)
|
Posted:
Tue Jan 22, 2008 9:16 pm |
|
Sorry I don't have time to figure this out for you. But in a nutshell, add that function I posted to the block code. Then call it whenever it displays a players name. I might clean up and release my code sometime soon. |
|
|
|
![](themes/RavenIce/forums/images/spacer.gif) |
ciph3r
![](modules/Forums/images/avatars/gallery/blank.gif)
|
Posted:
Tue Jan 22, 2008 11:43 pm |
|
Gremmie wrote: | Sorry I don't have time to figure this out for you. But in a nutshell, add that function I posted to the block code. Then call it whenever it displays a players name. I might clean up and release my code sometime soon. |
Understood. When I was using SQuery we had a topic on their forums about using the colorednames.php.
Ive been trying to work off of that, and cant seem to get it figured out.
If I remember correctly, it was included (like in my source), then used in this perspective:
Code:
$servername = $gameserver->htmlize($gameserver->servertitle);
if(strstr($servername,"")){
echo ut2004color($servername,1);
}else{
echo $servername;
}
|
This was supposed to display it if it was colored (in colors) and if not, in plain text.
Now, Ive tried everything I can think of, but cant figure out how to use it in just my aa block. |
|
|
|
![](themes/RavenIce/forums/images/spacer.gif) |
ciph3r
![](modules/Forums/images/avatars/gallery/blank.gif)
|
Posted:
Wed Jan 23, 2008 1:49 am |
|
Ok, this is as far as I got:
I moved the code from the colorednames.php into the actual file. . .
I then added this:
Code:
if(strstr($aa_info['hostname'],"")) {
echo 'Server Name: <br>' . ut2004color($aa_info['hostname'],1) . '<br />';
} else echo 'test: <br>' . $aa_info['hostname'] . '<br />';
|
It seems to work for colored server names. . . but if the server name is not colored it adds a "" to it it.
Any ideas?
Keep in mind, im learning lol. |
|
|
|
![](themes/RavenIce/forums/images/spacer.gif) |
Gremmie
![](modules/Forums/images/avatars/gallery/blank.gif)
|
Posted:
Wed Jan 23, 2008 8:38 am |
|
Well why not move the function I posted into the file and then call it like you are doing above.
I don't know if UT has the same color scheme system as COD. |
|
|
|
![](themes/RavenIce/forums/images/spacer.gif) |
ciph3r
![](modules/Forums/images/avatars/gallery/blank.gif)
|
Posted:
Wed Jan 23, 2008 3:58 pm |
|
I figured it out finally!!!
w00t
First, for AA:
Create a utcolorednames.php file with the following source:
Code:
<? function ut2004color($tempname,$docolor) {
$colagain=1;
$maxcols=0;
$data1=$tempname;
while($colagain==1 && $maxcols<=50) {
if(preg_match("#(.+)(.+)#",$data1,$match)) {
$data1=$match[1];
$data2=$match[2];
$maxcols++;
$snamehex = bin2hex(substr($data2, 0, 1));
$snamehex .= bin2hex(substr($data2, 1, 1));
$snamehex .= bin2hex(substr($data2, 2, 1));
$tempname = str_replace ("$shex1$shex2$shex3", "", substr($data2, 3, 250));
if($docolor==1) $coloredname = "<font color=\"#$snamehex\">$tempname</font>$coloredname";
else $coloredname = "$tempname$coloredname";
$colagain=1;
} else {
$firstbyte = substr($data1, 0, 1);
if($firstbyte=="") {
$snamehex = bin2hex(substr($data1, 1, 1));
$snamehex .=bin2hex(substr($data1, 2, 1));
$snamehex .=bin2hex(substr($data1, 3, 1));
$tempname = str_replace ("$shex1$shex2$shex3", "", substr($data1, 4, 250));
if($docolor==1) $coloredname = "<font color=\"#$snamehex\">$tempname</font>$coloredname";
else $coloredname = "$tempname$coloredname";
} else {
$tempname = substr($data1, 0, 250);
$coloredname = "$tempname$coloredname";
}
$colagain=0;
}
}
if($docolor==1) $coloredname = "<b>$coloredname</b>";
return $coloredname;
}
?>
|
At the top of the AA Query file (aaquery.php in my previous examples) add the following:
Above
Code:
// Server IP you want to query
|
Add
Code: include("utcolorednames.php");
|
Find
Code:
// display info
// Host name and link to detail from FO Online Server Browser
echo '<a href="' . $aa_server_url . $aa_ip . '">' . $aa_info['hostname'] . "</a><br />";
|
Replace with
Code:
// Host name
$servername = $aa_info['hostname'];
if(strstr($servername,"")){
echo 'Server Name: <br><a href="' . $aa_lookup_server . '">' . ut2004color($servername,1) . "</a><br />";
}else{
echo 'Server Name: <br><a href="' . $aa_lookup_server . '">' . ut2004color($servername,0) . "</a><br />";
}
|
Once you have made these changes if the servername has colours in it, they will be displayed. . . if not, it will display it in the default font/color.
Changing it for CoD4.
The exact same concept, except this time create a cod4colorednames.php with the following:
Code:
<?php
// Function to translate the color codes into html tags
function translatecolorcodes($string) {
$pattern[0]="/\^0/";
$pattern[1]="/\^1/";
$pattern[2]="/\^2/";
$pattern[3]="/\^3/";
$pattern[4]="/\^4/";
$pattern[5]="/\^5/";
$pattern[6]="/\^6/";
$pattern[7]="/\^7/";
$pattern[8]="/\^8/";
$pattern[9]="/\^9/";
$replacement[0]="</font><font color=black>";
$replacement[1]="</font><font color=red>";
$replacement[2]="</font><font color=darkgreen>";
$replacement[3]="</font><font color=yellow>";
$replacement[4]="</font><font color=blue>";
$replacement[5]="</font><font color=cyan>";
$replacement[6]="</font><font color=magenta>";
$replacement[7]="</font><font color=white>";
$replacement[8]="</font><font color=purple>";
$replacement[9]="</font><font color=gray>";
$string = preg_replace($pattern, $replacement, htmlspecialchars($string));
return "<font>" . $string . "</font>";
}
?>
|
inside the cod4query.php file Look for:
Code:
// Server IP you want to query
|
Above add
Code:
include("cod4colorednames.php");
|
Find
Code:
// display info
// Host name and link to detail from FO Online Server Browser
//echo '<a href="' . $aa_server_url . $aa_ip . '">' . $aa_info['hostname'] . "</a><br />";
|
Replace With
Code:
// display info
// Host name
$servername = $aa_info['sv_hostname'];
if(strstr($servername,"^")){
echo 'Server Name: <br><a href="' . $aa_lookup_server . '">' . translatecolorcodes($servername,1) . "</a><br />";
}else{
echo 'Server Name: <br><a href="' . $aa_lookup_server . '">' . translatecolorcodes($servername,0) . "</a><br />";
}
|
Hope this helps |
|
|
|
![](themes/RavenIce/forums/images/spacer.gif) |
Gremmie
![](modules/Forums/images/avatars/gallery/blank.gif)
|
Posted:
Wed Jan 23, 2008 4:48 pm |
|
|
|
![](themes/RavenIce/forums/images/spacer.gif) |
|