Ghost Recon - QStat notes
-------------------------

The following Server Stats are pulled from the Ghost Recon Server - NOTE
many other stats continue to work as normal due to the base qstat program.

$SERVERNAME

	The name of the GR Server.

$PLAYERS

	The number of Players that are playing, oberving or in the Lobby
	(note the ignoreserverplayer Argument above)

$MAXPLAYERS

	The maximum players that the server will allow playing, oberving
	or in the Lobby (note the ignoreserverplayer Argument above)

$MAP

	The Name of the MAP that is being used (NOTE not the Mission)

$GAME

	The Mods that the server is running.  Ex: mp1; is the Desert
	Seige Mod

$(RULE:error)

	If an error occured there may be some detail here.  IF the problm
	occurred very early in the interpretation then $SERVERNAME will
	hold the details.

$(RULE:mission)

	The name of the Mission that the server is running.  

$(RULE:gamemode)

	What is the Game Mode that the server is in.  Known values are
	COOP, TEAM and SOLO

$(RULE:missiontype)

	What is the Mission Type.  Known Values are: Mission, Firefight,
	Recon, Hamburger Hill, Last Man Standing, Sharpshooter, Search
	And Rescue, Domination, and Seige.

$(RULE:dedicated)

	Is this server Dedicated; Yes or No.

$(RULE:status)

	What is the Playing Status of the Server, values are Playing,
	Joining or Debrief.

$(RULE:gametime)

	What is the Time limit for the Game.  Values are 00:00, 05:00,
	10:00, 15:00 20:00, 25:00, 30:00, 45:00 and 60:00.  The 00:00
	is for an unlimited game.  The format of this uses the -ts,
	-tc and -tsw command line options.

$(RULE:timeplayed)

	How long has this game been playing.  The format of this uses
	the -ts, -tc and -tsw command line options.

$(RULE:remainingtime)

	How much time is left in this game.  The format of this uses
	the -ts, -tc and -tsw command line options.

$(RULE:version)

	What is the Version number reported by the server.  Patch 1.2 =
	10.1010A, Patch 1.3 = 11.101A

$(RULE:spawntype)

	What type of spawn is in use.  Known Values are None, Infinite,
	Individual and Team.

$(RULE:spawncount)

	How many spawns are allowed.  Enhancment possibility to add
	$(IF:SPAWN) to filter out when spawntype is none.

$(RULE:restrict)

	What Weapon restrictions are in force for the server.

$(RULE:password)

	Does the Server have a join password defined Yes or No.  

$(RULE:ti)

	Is the server using the Threat Indicator.

$(RULE:motd)

	What is the Message Of The Day - Note these can be quite big.

$(RULE:patch)

	What is the patch level of the GR Server.

$(RULE:usestarttime)

	Is the server configured to start a game after "starttimeset"
	(Yes) OR does everyone need to click on ready (no).

$(RULE:starttimeset)

	What time is configured to automatically start the next round.

$(RULE:debrieftime)

	How long does the server wait at the Debrief screen after
	a mission.

$(RULE:respawnmin)

	How long must a dead player wait before he can repawn.

$(RULE:respawnmax)

	What is the longest time that a user has to respawn.

$(RULE:respawnsafe)

	How long after respawn is a player invulnerable/cannot damage
	others.

$(RULE:allowobservers)

	Does the server allow observers?  Yes or No

$(RULE:startwait)

	How long untill the automatic start timer forces the next game
	to start.

$(RULE:iff)

	What Identification - Friend or Foe is configured.  None,
	Reticule or Names

$PLAYERNAME

	What is the Players Name.

$TEAMNUM

	What Team Number is the Player On.  Known Values are 1,2,3,4,5.
	1 is Team BLUE, 2 is Team Read, 3 is Team Yellow, 4 is
	Team Green, 5 is Unassigned (observer or in lobby)

$TEAMNAME

	What is the Name of the Team, see above.

$DEATHS

	What is the health of this player. 0 Alive, 1 Dead.  Note if the
	player has spawns remaining this can change from 1 back to 0.
	Enhancement possibility to add $HEALTH or $(RULE:health).
	Hopefully RSE/UBI will add the Deaths, Frags, and Ping to the
	availible information.	If this happens then it would be better
	to have a $HEALTH

$(IF:DEATHS) and $(IFNOT:DEATHS)

	A Test to see if the player is dead.  Usefull in this constuct:
	$(IF:DEATHS)Dead$(ENDIF)$(IFNOT:DEATHS)Alive$(ENDIF)

Ghost Recon communicates on two UDP ports and one TCP stream.  Normally TCP
is on port 2346 and carries the game dialog.  This is the port number
that is mentioned in the game so we use it and apply an offset to get the
port number for status queries.  Port 2347 gives some high level server stats
and 2348 gives fairly low level server stats.  QStat is designed around
a single port per server so the 2348 port is used.  One down side to this
is the lack of many meaningful detail player stats (Deaths, frags, hit
percentage, ping etc.).  I imagines that some of these are availible in
the TCP stream but that would be difficult to add to a program like QStat.

The Ghost Recon packets are variable structures with a lot of string
lengths.  This requires fairly defensive programming as Red Storm
Entertainment is not forthcoming with any details.

This release adds support for the GhostRecon game.  Number one note
is that Red Storm and UBI do not provide the information that many
Quake based users expect.  Specifically they do not make Frags, Deaths
Connect Time or Pings availible - at least not as far as I can tell.
That said there are quite a few things that are availible and allow a
server administrator to make the status of his or her server available
to the public via the web.

This change uses all undocumented interfaces to the Ghost Recon server
so will most likely break when you install a patch.  It has been tested
against the Desert Seige update and several public servers.  It should
work against the 1.2, 1.3, and 1.4 patches and Island Thunder add-on to
Ghost Recon.

The Ghost Recon game type is GRS.  For command-line queries, use -grs

There is one query argument to this server, ignoreserverplayer.
This option controls whether the first player is ignored.  Ghost Recon
requires that the dedicated server program take up one of the player slots
(always the first slot).  The ignoreserverplayer option defaults to 'yes',
so the "server player" will normally not be seen.  If you are running
a non-dedicated server, then set ignoreserverplayer to 'no' like this:

  -grs,ignoreserverplayer=no

Otherwise you would not be able to display your own stats.


Ghost Recon support provided by Bob Marriott.
