Current location: Hot Scripts Forums » Advertising Forums » Website Reviews » MOHAA Server Query - ASP


MOHAA Server Query - ASP

Reply
  #1 (permalink)  
Old 06-16-03, 01:17 PM
Stealth Stealth is offline
1337 pr0gr4mm3r
 
Join Date: Jun 2003
Location: Glasgow, Scotland
Posts: 188
Thanks: 0
Thanked 0 Times in 0 Posts
MOHAA Server Query - ASP

Recently i programmed this for a website but the provider wouldnt upload the COM object

So anyway, what it does is query Medal Oh Honor:Allied Assault and Medal Of Honor:Spearhead servers for their player details, frags, map info etc etc

Its the only one in ASP that i know about and believe me i searched for hours. And there are only a few in PHP

The COM object can be found here

Code:
<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, "<", "&lt;")
					var_hostname = Replace(var_hostname, ">", "&gt;") 
					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), "<", "&lt;")
					DataArray(n) = Replace(DataArray(n), ">", "&gt;") 
					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), "<", "&lt;")
					DataArray(n) = Replace(DataArray(n), ">", "&gt;") 
					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
%>

Last edited by Stealth; 06-16-03 at 01:25 PM.
Reply With Quote
  #2 (permalink)  
Old 11-27-04, 10:38 AM
GiGanT GiGanT is offline
New Member
 
Join Date: Nov 2004
Posts: 1
Thanks: 0
Thanked 0 Times in 0 Posts
Is it possible to show witch players playing in one team?
Reply With Quote
Reply

Bookmarks


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Download files from another server using script! benweston Script Requests 5 01-17-06 09:29 AM
Make a query that makes a field a link to the entire row mdhall PHP 8 10-09-03 06:18 PM
subdomain to another server. forcer The Lounge 3 07-30-03 01:45 PM
Web Interface for SQL Server 2000 Greg Database 2 06-16-03 09:00 AM
Offical IRC server? amailer Hot Scripts Forum Questions, Suggestions and Feedback 1 06-12-03 07:22 PM


All times are GMT -5. The time now is 02:10 PM.
vBulletin® Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.