<center><h3>Server Query</h3><h5><%=request("ip")%></h5>
</center>
<%
''//// INFORMATION \\\'
' This script was written by Paul Sands (stealth@tycoonplanet.com)
' Works for Medal Of Honor:Allied Assault and Spearhead versions.
'
' I wrote this script for ClanPlanet.co.uk but it remains the copyright of Paul Sands
'
' An externam COM object was used. Information can be found here: http://www.intrafoundation.com/udpclient.asp
'
''//// END INFORMATION \\\'
''//// RECEIVED PACKETS FORMAT \\\''
'
' /Status/
' Returns server var info
' \location\<VALUE>\gamever\<VALUE>\gamename\<VALUE>\gamemode\<VALUE>\maxplayers\<VALUE>\numplayers\<VALUE>\gametype\<VALUE>\mapname\<VALUE>\hostport\<VALUE>\hostname\<VALUE>\rankedserver\<VALUE>\fraglimit\<VALUE>\timelimit\<VALUE>\queryid\<VALUE>
'
' /Info/
' Returns Players Info
' \player_<ID>\<VALUE -PLAYER NAME>\frags_0\<TEAM FRAGS>\deaths_0\<TEAM DEATHS (TDM ONLY, OBJ WILL REPORT 0)>\ping_<ID>\<VALUE - PING>
''//// \\\'
IPArr = Split(request.QueryString("ip"), ":")
IP = IPArr(0)
Port = "12300"
set obj = server.CreateObject("Intrafoundation.UDPClient")
c = obj.Open(ip, port)
if c = 1 then
obj.timeout=1
obj.packetclear()
obj.addpacketnumber "int32",-1
obj.addpacketstring "\status\"
obj.addpacketnumber "int8",10
do_some_shit = obj.SendPacket() & obj.RecvPacket() 'Com object is weird and wont display results without these 2 being used
DataString = obj.packetstring
'DataString = replace(DataString, "mohaas", "Medal Of Honor: Spearhead")
'DataString = replace(DataString, "mohaa", "Medal Of Honor: Allied Assault")
DataArray = Split(DataString , "\")
'response.write "Datastring: int32 -1 , \status\ , int8 10 (debug)<br><br>"
'response.write DataString
'response.write "<br><br>End Debug<br><br>"
if DataString <> "" then
''//// GET DETAILS FROM ARRAY \\\''
var_location = DataArray(2)
var_gamever = DataArray(4)
var_gamename = DataArray(6)
if var_gamename = "mohaas" then
var_pure = DataArray(8)
var_realism = DataArray(10)
var_sprinton = DataArray(12)
var_dedicated = DataArray(14)
var_gametype_i = DataArray(16)
var_gamemode = DataArray(18)
var_maxplayers = DataArray(20)
var_numplayers = DataArray(22)
var_gametype = DataArray(24)
var_mapname = DataArray(26)
var_hostport = DataArray(28)
var_hostname = DataArray(30)
var_fraglimit = DataArray(32)
var_timelimit = DataArray(34)
var_mapnamefull = var_mapname
endArrayNum = 36
elseif var_gamename = "mohaa" then
var_gamemode = DataArray(8)
var_maxplayers = DataArray(10)
var_numplayers = DataArray(12)
var_gametype = DataArray(14)
var_mapname = DataArray(16)
var_hostport = DataArray(18)
var_hostname = DataArray(20)
var_rankedserver = DataArray(22)
var_fraglimit = DataArray(24)
var_timelimit = DataArray(26)
var_mapnamefull = var_mapname
endArrayNum = 28
else
response.Write "The server you are trying to query is not running Medal Of Honor:Allied Assault.<br>"
response.write "It is running gametype " & var_gamename & " version " & var_gamever
end if
''//// FORMAT DETAILS FROM ARRAY SO THEY ARE NICE AND SHIP-SHAPE FOR DISPLAYING :¬) \\\''
var_players = var_numplayers & "/" & var_maxplayers
var_iphost = IP & ":" & var_hostport
'select case var_gamename
' case "mohaa"
' var_gamename = "Medal Of Honor: Allied Assault"
' case "mohaas"
' var_gamename = "Medal Of Honor: Spearhead"
'end select
''//// GET REAL MAPNAME TO DISPLAY IMAGE \\\''
select case var_mapname
case "obj/obj_team1"
var_mapname = "hunt"
case "obj/obj_team2"
var_mapname = "v2"
case "obj/obj_team3"
var_mapname = "omaha"
case "obj/obj_team4"
var_mapname = "bridge"
case "obj/gloomcove"
var_mapname = "gloomcove"
case "obj/renan"
var_mapname = "renan"
case "obj/stlo"
var_mapname = "stlo"
case "obj/obj_maromg"
var_mapname = "marketgarden"
case "obj/shermanhuntbeta221"
var_mapname = "shermanhuntbeta221"
case "dm/mohdm1"
var_mapname = "southernfrance"
case "dm/mohdm2"
var_mapname = "destroyedvillage"
case "dm/mohdm3"
var_mapname = "notfound"
case "dm/mohdm4"
var_mapname = "bridge"
case "dm/mohdm5"
var_mapname = "notfound"
case "dm/mohdm6"
var_mapname = "notfound"
case "dm/mohdm7"
var_mapname = "notfound"
case else
var_mapname = "notfound"
end select
%>
<table width="100%" border="0" cellspacing="0">
<tr>
<td colspan="2" valign="top"><div align="center">
<%
'Block HTML, add line breaks as nesessary
var_hostname = Replace(var_hostname, "<", "<")
var_hostname = Replace(var_hostname, ">", ">")
var_hostname = Replace(var_hostname, "'", "'")
response.write var_hostname
%>
</div></td>
</tr>
<tr>
<td valign="top" width="*">
<table width="100%" border="0" cellspacing="0">
<tr>
<td width="50%"><strong>Variable</strong></td>
<td width="50%"><strong>Value</strong></td>
<%
response.write "</tr><tr>"
response.write "<td>Game Type</td>"
response.write "<td>"& var_gametype &"</td>"
response.write "</tr><tr>"
response.write "<td>Mapname</td>"
response.write "<td>"& var_mapnamefull &"</td>"
response.write "</tr><tr>"
response.write "<td>Players</td>"
response.write "<td>"& var_players &"</td>"
if var_gamename = "mohaas" then
if var_realism = 0 then
var_realism = "Off"
else
var_realism = "On"
end if
response.write "</tr><tr>"
response.write "<td>Realism</td>"
response.write "<td>"& var_realism &"</td>"
end if
response.write "</tr><tr>"
response.write "<td>Time Limit</td>"
response.write "<td>"& var_timelimit &" Minutes</td>"
response.write "</tr><tr>"
response.write "<td>Frag Limit</td>"
response.write "<td>"& var_fraglimit &"</td>"
response.write "</tr><tr>"
response.write "<td>IP Address</td>"
response.write "<td>"& var_iphost &"</td>"
response.write "</tr><tr>"
response.write "<td>Server Version</td>"
response.write "<td>" & var_gamename & " " & var_gamever & "</td>"
%>
</tr>
</table>
</td>
<td width="300" align="center" valign="middle">
<div align="center"><img src="images/maps/<%=var_mapname%>.gif" width="150" height="117"></div></td>
</tr>
<tr>
<td colspan="2"><br>
<%
if var_numplayers = 0 then 'If there are no players on this server, this IF statement prevents the COM object from querying the server twice!!
response.write "<b>There are no players on this server.</b>"
else
%>
<table width="100%" border="0" cellspacing="0">
<tr>
<td width="8%"><strong>ID | Real</strong></td>
<td width="8%"><strong>Status</strong></td>
<td width="32%"><strong>Player Name</strong></td>
<td width="15%"><strong>Team Score</strong></td>
<td width="15%"><strong>Team Deaths</strong></td>
<td width="21%"><strong>Ping</strong></td>
<%
'If there is more than 10 players then /Status/ will not show any players at all! We must use /Info/
if InStr(DataString,"player_") > 0 then 'If player_ is found in /Status/ then show using /Status/. If not then we query the server for /Info/ and our players are shown.
counter = 1
for n = LBound(DataArray)+endArrayNum to UBound(DataArray)-8 step 8
bgcolour = ""
if DataArray(n+6) = 999 or DataArray(n+6) = 0 then
bgcolour = "silver"
end if
RealIDArr = Split(DataArray(n+1), "_")
RealID = RealIDArr(1)
response.write "</tr><tr bgcolor="& bgcolour &">"
response.write "<td><b>"& counter &"</b> | "& RealID &"</td>"
response.write "<td>"
if DataArray(n+2) = 0 and DataArray(n+6) > 0 and DataArray(n+6) < 999 then
response.write "Spectating"
elseif DataArray(n+2) > 0 then
response.write "Playing"
elseif DataArray(n+6) = 0 or DataArray(n+6) = 999 then
response.write "Pingout"
end if
response.write "</td>"
'Block HTML, add line breaks as nesessary
DataArray(n) = Replace(DataArray(n), "<", "<")
DataArray(n) = Replace(DataArray(n), ">", ">")
DataArray(n) = Replace(DataArray(n), "'", "'")
response.write "<td>"& DataArray(n) &"</td>"
response.write "<td>"& DataArray(n+2) &"</td>"
response.write "<td>"& DataArray(n+4) &"</td>"
response.write "<td>"& DataArray(n+6) &"</td>"
counter = counter + 1
next
else
obj.packetclear()
obj.addpacketnumber "int32",-1
obj.addpacketstring "\getinfo\"
obj.addpacketnumber "int8",10
do_some_shit = obj.SendPacket() & obj.RecvPacket() 'Com object is weird and wont display results without these 2 being used
DataString = obj.packetstring
DataArray = Split(DataString , "\")
counter = 1
' response.write datastring
' Response.write("<br><br>UDP packet sent (" & obj.SendPacket() & " bytes)<br>" )
' Response.write("UDP packet received (" & obj.RecvPacket() & " bytes)<br>" )
for n = LBound(DataArray)+2 to UBound(DataArray)-1 step 8
bgcolour = ""
if DataArray(n+6) = 999 or DataArray(n+6) = 0 then
bgcolour = "silver"
end if
response.write "</tr><tr bgcolor="& bgcolour &">"
RealIDArr = Split(DataArray(n+1), "_")
RealID = RealIDArr(1)
response.write "<td><b>"& counter &"</b> | "& RealID &"</td>"
response.write "<td>"
if DataArray(n+2) = 0 and DataArray(n+6) > 0 and DataArray(n+6) < 999 then
response.write "Spectating"
elseif DataArray(n+2) > 0 then
response.write "Playing"
elseif DataArray(n+6) = 0 or DataArray(n+6) = 999 then
response.write "Pingout"
end if
response.write "</td>"
'Block HTML, add line breaks as nesessary
DataArray(n) = Replace(DataArray(n), "<", "<")
DataArray(n) = Replace(DataArray(n), ">", ">")
DataArray(n) = Replace(DataArray(n), "'", "'")
response.write "<td>"& DataArray(n) &"</td>"
response.write "<td>"& DataArray(n+2) &"</td>"
response.write "<td>"& DataArray(n+4) &"</td>"
response.write "<td>"& DataArray(n+6) &"</td>"
counter = counter + 1
next
end if
%>
</tr>
</table></td>
</tr>
</table>
<% end if
else
Response.Write "Data request to "& ip &" timed out. No reply was sent within 1000 milliseconds (MS)<br>"
end if
else
Response.write("<br>UDP Open failure.")
end if
obj.Close
%>