Tag

From FreeAllegiance Wiki
Jump to navigationJump to search

Tigereye's Allegiance Gizmo (TAG) is a replacement for AGMNet, providing logging services for Allegiance games. GameServer Administrators can run TAG on their systems next to their Allegiance Gameservers to collect ingame events and upload them to ASGS (provided their server has been "cleared" to post statistics).

TAG allows admins and authorised personal to send messages as HQ to current or all games on the server. It allows also to tag games, for further investigations of @Alleg.

How does TAG work

TAG hooks into the Allegiance server and records events like chat, kills, ejects, basekills, basecaptures and game settings. TAG stores this data into a XML file. After the game ends, TAG sends the recorded game data to the ASGS server, which handles the rank system.


TAG XML file

Below you find the XML schema of TAG XML files. [code]<?xml version="1.0" standalone="yes"?> <GameDataset>

 <xs:schema id="GameDataset" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
   <xs:element name="GameDataset" msdata:IsDataSet="true">
     <xs:complexType>
       <xs:choice maxOccurs="unbounded">
         <xs:element name="Game">
           <xs:complexType>
             <xs:sequence>
               <xs:element name="GameID" type="xs:int" />
               <xs:element name="GameName" type="xs:string" />
               <xs:element name="CoreFile" type="xs:string" />
               <xs:element name="MapName" type="xs:string" />
               <xs:element name="SquadGame" type="xs:boolean" />
               <xs:element name="Conquest" type="xs:boolean" />
               <xs:element name="DeathMatch" type="xs:boolean" />
               <xs:element name="DeathmatchGoal" type="xs:int" minOccurs="0" />
               <xs:element name="FriendlyFire" type="xs:boolean" />
               <xs:element name="RevealMap" type="xs:boolean" minOccurs="0" />
               <xs:element name="AllowDevelopments" type="xs:boolean" />
               <xs:element name="AllowShipyards" type="xs:boolean" />
               <xs:element name="AllowDefections" type="xs:boolean" />
               <xs:element name="InvulnerableStations" type="xs:boolean" />
               <xs:element name="StatsCount" type="xs:boolean" />
               <xs:element name="MaxImbalance" type="xs:int" />
               <xs:element name="StartingMoney" type="xs:float" />
               <xs:element name="TotalMoney" type="xs:float" />
               <xs:element name="Resources" type="xs:int" />
               <xs:element name="StartTime" type="xs:dateTime" />
               <xs:element name="EndTime" type="xs:dateTime" />
             </xs:sequence>
           </xs:complexType>
         </xs:element>
         <xs:element name="GameEvent">
           <xs:complexType>
             <xs:sequence>
               <xs:element name="GameID" type="xs:int" />
               <xs:element name="EventID" type="xs:int" />
               <xs:element name="EventTime" type="xs:dateTime" />
               <xs:element name="PerformerID" type="xs:int" />
               <xs:element name="PerformerName" type="xs:string" />
               <xs:element name="TargetID" type="xs:int" />
               <xs:element name="TargetName" type="xs:string" />
               <xs:element name="IndirectID" type="xs:int" />
               <xs:element name="IndirectName" type="xs:string" />
             </xs:sequence>
           </xs:complexType>
         </xs:element>
         <xs:element name="ChatLog">
           <xs:complexType>
             <xs:sequence>
               <xs:element name="GameID" type="xs:int" />
               <xs:element name="ChatTime" type="xs:dateTime" />
               <xs:element name="SpeakerName" type="xs:string" />
               <xs:element name="TargetName" type="xs:string" />
               <xs:element name="Text" type="xs:string" />
             </xs:sequence>
           </xs:complexType>
         </xs:element>
         <xs:element name="Team">
           <xs:complexType>
             <xs:sequence>
               <xs:element name="TeamID" type="xs:int" />
               <xs:element name="GameID" type="xs:int" />
               <xs:element name="TeamNumber" type="xs:int" />
               <xs:element name="TeamName" type="xs:string" />
               <xs:element name="Commander" type="xs:string" />
               <xs:element name="Faction" type="xs:string" />
               <xs:element name="ResearchedStarbase" type="xs:boolean" />
               <xs:element name="ResearchedSupremacy" type="xs:boolean" />
               <xs:element name="ResearchedTactical" type="xs:boolean" />
               <xs:element name="ResearchedExpansion" type="xs:boolean" />
               <xs:element name="ResearchedShipyard" type="xs:boolean" />
               <xs:element name="Won" type="xs:boolean" />
             </xs:sequence>
           </xs:complexType>
         </xs:element>
         <xs:element name="TeamMember">
           <xs:complexType>
             <xs:sequence>
               <xs:element name="TeamID" type="xs:int" minOccurs="0" />
               <xs:element name="Callsign" type="xs:string" minOccurs="0" />
               <xs:element name="Duration" type="xs:int" minOccurs="0" />
               <xs:element name="JoinTime" type="xs:dateTime" minOccurs="0" />
               <xs:element name="LeaveTime" type="xs:dateTime" minOccurs="0" />
             </xs:sequence>
           </xs:complexType>
         </xs:element>
       </xs:choice>
     </xs:complexType>
     <xs:unique name="GameIDKey" msdata:PrimaryKey="true">
       <xs:selector xpath=".//Game" />
       <xs:field xpath="GameID" />
     </xs:unique>
     <xs:unique name="PK_TeamID" msdata:PrimaryKey="true">
       <xs:selector xpath=".//Team" />
       <xs:field xpath="TeamID" />
     </xs:unique>
     <xs:keyref name="TeamTeamMember" refer="PK_TeamID" msdata:UpdateRule="None" msdata:DeleteRule="None">
       <xs:selector xpath=".//TeamMember" />
       <xs:field xpath="TeamID" />
     </xs:keyref>
     <xs:keyref name="GameTeams" refer="GameIDKey" msdata:UpdateRule="None" msdata:DeleteRule="None">
       <xs:selector xpath=".//Team" />
       <xs:field xpath="GameID" />
     </xs:keyref>
     <xs:keyref name="GameChatLog" refer="GameIDKey" msdata:UpdateRule="None" msdata:DeleteRule="None">
       <xs:selector xpath=".//ChatLog" />
       <xs:field xpath="GameID" />
     </xs:keyref>
     <xs:keyref name="GameGameEvent" refer="GameIDKey" msdata:UpdateRule="None" msdata:DeleteRule="None">
       <xs:selector xpath=".//GameEvent" />
       <xs:field xpath="GameID" />
     </xs:keyref>
   </xs:element>
 </xs:schema>

</GameDataset>[/code]

GameDataset

This part of the XML file tells you everything about the game settings.

GameID

The GameID will be requested by TAG from ASGS database server, before TAG sends the game data to the database server. If TAG is unable to reach the database server, it will save the game as Game unknown.

GameName

Basicly the name of the game session (server name).

CoreFile

Name (filename) of the used core].

SquadGame

Allegiance doesn't support this option (yet).

StatsCount

This is an relict, maybe used later. All games will count played on current game servers.

StartTime

Local server time, when the game started.

EndTime

Local server time, when the game ended.

automated TAG messages

If you don't notice such a message at the start/end of a game, TAG isn't running on the gameserver.

HQ (all): The game has started.

Message that the game has been started and TAG starts recording the game.

HQ (all): servername 's game has completed. Game#: 123456'

Game has been successfull posted to ASGS database server and will be counted on ranks page.

HQ (all): servername 's game has completed. Insert lots of HTML stuff here

TAG on gameserver is unable to send data to ASGS database server. Game will be stored as Unknown game. It will not affect ranks.

HQ (all): Game post failed. This server is not authorized to post game statistics.

Server is not authoriesed to post games to ASGS database server.