<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.multitheftauto.com/wiki/MTA_R1_remote_administration_protocol?action=history&amp;feed=atom</id>
	<title>MTA R1 remote administration protocol - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.multitheftauto.com/wiki/MTA_R1_remote_administration_protocol?action=history&amp;feed=atom"/>
	<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=MTA_R1_remote_administration_protocol&amp;action=history"/>
	<updated>2026-04-05T19:27:03Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=MTA_R1_remote_administration_protocol&amp;diff=29010&amp;oldid=prev</id>
		<title>Winky- at 10:59, 15 January 2012</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=MTA_R1_remote_administration_protocol&amp;diff=29010&amp;oldid=prev"/>
		<updated>2012-01-15T10:59:56Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 10:59, 15 January 2012&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Outdated|&lt;/del&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Historical&lt;/ins&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Current version===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Current version===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Current protocol version is [[MTA_R1.1_remote_administration_protocol|R1.1]].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Current protocol version is [[MTA_R1.1_remote_administration_protocol|R1.1]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki-wiki_dev_:diff::1.12:old-27740:rev-29010 --&gt;
&lt;/table&gt;</summary>
		<author><name>Winky-</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=MTA_R1_remote_administration_protocol&amp;diff=27740&amp;oldid=prev</id>
		<title>Winky-: Added outdated template and article to category MTA:SA Race</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=MTA_R1_remote_administration_protocol&amp;diff=27740&amp;oldid=prev"/>
		<updated>2011-11-12T17:52:34Z</updated>

		<summary type="html">&lt;p&gt;Added outdated template and article to category MTA:SA Race&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:52, 12 November 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Outdated|}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Current version===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Current version===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Current protocol version is [[MTA_R1.1_remote_administration_protocol|R1.1]].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Current protocol version is [[MTA_R1.1_remote_administration_protocol|R1.1]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l436&quot;&gt;Line 436:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 437:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Max players will be 0x00 if the attempt to change them failed, otherwise it will be the hexadecimal value of the new number of max players.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Max players will be 0x00 if the attempt to change them failed, otherwise it will be the hexadecimal value of the new number of max players.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:MTA:SA Race]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki-wiki_dev_:diff::1.12:old-20712:rev-27740 --&gt;
&lt;/table&gt;</summary>
		<author><name>Winky-</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=MTA_R1_remote_administration_protocol&amp;diff=20712&amp;oldid=prev</id>
		<title>Mr.Hankey: Created page with '===Current version=== Current protocol version is R1.1.  ===Notes=== This document outlines the network protocol for the Remote Admini…'</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=MTA_R1_remote_administration_protocol&amp;diff=20712&amp;oldid=prev"/>
		<updated>2009-07-19T15:36:30Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;#039;===Current version=== Current protocol version is &lt;a href=&quot;/index.php?title=MTA_R1.1_remote_administration_protocol&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;MTA R1.1 remote administration protocol (page does not exist)&quot;&gt;R1.1&lt;/a&gt;.  ===Notes=== This document outlines the network protocol for the Remote Admini…&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;===Current version===&lt;br /&gt;
Current protocol version is [[MTA_R1.1_remote_administration_protocol|R1.1]].&lt;br /&gt;
&lt;br /&gt;
===Notes===&lt;br /&gt;
This document outlines the network protocol for the Remote Administration system used in Multi Theft Auto : San Andreas Race Modification R1. This document is intended for people to create their own Remote Administration tools if they wish to.&lt;br /&gt;
&lt;br /&gt;
No details will be given on how creation of these tools can be done, please seak outside assistance if help is required in this&lt;br /&gt;
area. This document is only meant as a guide.&lt;br /&gt;
&lt;br /&gt;
===Warning===&lt;br /&gt;
THE ADMINISTRATION SYSTEM IN MTA:SA HAS A SCHEDULED OVERHALL PLANNED FOR FUTURE RELEASES. AS A RESULT THE NETCODE IN THIS DOCUMENT WILL BE CHANGING SIGNIFICANTLY. NOTIFICATION OF THIS WILL BE GIVEN WHEN A VERSION IS RELEASED WITH ANY CHANGES.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
==Packet List==&lt;br /&gt;
This is where the packet ID's are detailed. Descriptions of how the individual packets are made up will be given further down.&lt;br /&gt;
&lt;br /&gt;
NOTE: Every packet sent and recieved has a byte of value 0x6D as the 1st byte. This will be denoted as ADMIN_PACKET_HEADER throughout this document.&lt;br /&gt;
&lt;br /&gt;
* ADMIN_CONNECT = 0x00&lt;br /&gt;
* ADMIN_DISCONNECT = 0x01&lt;br /&gt;
* ADMIN_PING = 0x02&lt;br /&gt;
* ADMIN_CHAT = 0x03&lt;br /&gt;
* ADMIN_PLAYER_JOIN = 0x04&lt;br /&gt;
* ADMIN_PLAYER_PART = 0x05&lt;br /&gt;
* ADMIN_PLAYER_LOGIN = 0x06&lt;br /&gt;
* ADMIN_KICK = 0x07&lt;br /&gt;
* ADMIN_BAN = 0x08&lt;br /&gt;
* ADMIN_ADDBAN = 0x09&lt;br /&gt;
* ADMIN_UNBAN = 0x0A&lt;br /&gt;
* ADMIN_CHANGE_SERVER_PASSWORD = 0x0B&lt;br /&gt;
* ADMIN_SERVER_SHUTDOWN = 0x0C&lt;br /&gt;
* ADMIN_PLAYER_MUTE = 0x0D&lt;br /&gt;
* ADMIN_PLAYER_FREEZE = 0x0E&lt;br /&gt;
* ADMIN_PLAYER_NICK_CHANGE = 0x0F&lt;br /&gt;
* ADMIN_PLAYER_DEATH = 0x10&lt;br /&gt;
* ADMIN_PLAYER_PM = 0x11&lt;br /&gt;
* ADMIN_RACE_LIST = 0x12&lt;br /&gt;
* ADMIN_START_RACE = 0x13&lt;br /&gt;
* ADMIN_SET_MAX_PLAYERS = 0x14&lt;br /&gt;
&lt;br /&gt;
==Packet Description Formating==&lt;br /&gt;
This is where the packets are described. They will be covered in order of packet ID (Check the enumerations above).&lt;br /&gt;
Full descriptions of the packets and what is sent and recieved is described.&lt;br /&gt;
&lt;br /&gt;
The packet makeup key is made up of bytes sent (Hexidecimal values are given when there is not an enumeration avaliable). &lt;br /&gt;
&lt;br /&gt;
Strings sent in the bytestream will be denoted like:&lt;br /&gt;
 [ string ( description ) ]&lt;br /&gt;
&lt;br /&gt;
Variable bytes sent will be denoted like:&lt;br /&gt;
 [ byte ( description ) ]&lt;br /&gt;
&lt;br /&gt;
Looped information in packets will be denoted like:&lt;br /&gt;
 { loop &amp;lt; number of times &amp;gt; ( makeup of each itteration of loop ) end-loop }&lt;br /&gt;
&lt;br /&gt;
==ADMIN_CONNECT==&lt;br /&gt;
'''Description:'''&lt;br /&gt;
&lt;br /&gt;
This is sent to the server to connect to it. The server server will respond depending on whether the attempt was successful or not.&lt;br /&gt;
&lt;br /&gt;
'''Packet sent to server:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_CONNECT 0x01 [ string ( password ) ] 0x7C [ string ( username ) ] 0x00&lt;br /&gt;
&lt;br /&gt;
'''Response packet from server:'''&lt;br /&gt;
&lt;br /&gt;
If the connect attempt is successful, the following packet is recieved:&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_CONNECT [ byte ( Max players ) ] [ byte ( Current max players ) ] &lt;br /&gt;
 0xFF { loop &amp;lt; Number of players &amp;gt; ( [ byte ( Player ID ) ] [ byte ( Player rcon level ) ] &lt;br /&gt;
 [ byte ( Player mute status ) ] [ byte ( Player frozen status ) ] [ byte ( 1st byte of player IP ) ] &lt;br /&gt;
 [ byte ( 2nd byte of player IP ) ] [ byte ( 3rd byte of player IP ) ] [ byte ( 4th byte of player IP ) ] &lt;br /&gt;
 [ string ( Player Name ) ] 0xFF ) end-loop } 0x00&lt;br /&gt;
&lt;br /&gt;
If the connect attempt is unsucessful, the following packet is recieved:&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_DISCONNECT [ byte ( Disconnect reason ) ]&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&lt;br /&gt;
Player rcon level ranges from 0x00 to 0x05 and denotes the level of rcon the player has in the server.&lt;br /&gt;
Player mute status is either 0x00 (muted) or 0x01 (not muted).&lt;br /&gt;
Player frozen status is either 0x00 (frozen) or 0x01 (not frozen).&lt;br /&gt;
&lt;br /&gt;
The disconnect reason has the following enumerations:&lt;br /&gt;
* CONNECT_DISCONNECT = 0x00&lt;br /&gt;
* CONNECT_FAILED_BAD_PASS = 0x01&lt;br /&gt;
* CONNECT_CONNECTED = 0x02&lt;br /&gt;
* CONNECT_TIMED_OUT = 0x03&lt;br /&gt;
* CONNECT_TOO_MANY_USERS_FROM_IP = 0x04&lt;br /&gt;
* CONNECT_BANNED = 0x05&lt;br /&gt;
* CONNECT_NAME_IN_USE = 0x06&lt;br /&gt;
* CONNECT_INVALID_VERSION = 0x07&lt;br /&gt;
&lt;br /&gt;
==ADMIN_DISCONNECT==&lt;br /&gt;
'''Description:'''&lt;br /&gt;
&lt;br /&gt;
This packet is sent when to disconnect from the server. The server will send a response confirming this.&lt;br /&gt;
&lt;br /&gt;
'''Packet sent to server:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_DISCONNECT&lt;br /&gt;
&lt;br /&gt;
'''Response packet from server:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_DISCONNECT 0x00&lt;br /&gt;
&lt;br /&gt;
==ADMIN_PING==&lt;br /&gt;
'''Description:'''&lt;br /&gt;
&lt;br /&gt;
This packet is sent from the server to the Remote Admin clients every second. The Remote Admin client should respond.&lt;br /&gt;
&lt;br /&gt;
'''Packet recieved from server:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_PING&lt;br /&gt;
&lt;br /&gt;
'''Packet sent to server in response:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_PING&lt;br /&gt;
&lt;br /&gt;
==ADMIN_CHAT==&lt;br /&gt;
'''Description:'''&lt;br /&gt;
&lt;br /&gt;
This is the packet that the server sends for all chat. Remote Admin clients should send this packet to chat.&lt;br /&gt;
&lt;br /&gt;
'''Packet sent:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_CHAT [ string ( Chat text ) ] 0x00&lt;br /&gt;
&lt;br /&gt;
'''Packet sent from server on any chat:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_CHAT [ byte ( Player ID ) ] [ byte ( Chat type ) ] [ string ( Chat text ) ]&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&lt;br /&gt;
 Player ID will be 255 if an Admin or Console are chatting. The chat type has the following enumeration:&lt;br /&gt;
&lt;br /&gt;
* ADMIN_CONSOLE_CHAT = 0x00&lt;br /&gt;
* ADMIN_ADMIN_CHAT = 0x01&lt;br /&gt;
* ADMIN_PLAYER_CHAT = 0x02&lt;br /&gt;
&lt;br /&gt;
==ADMIN_PLAYER_JOIN==&lt;br /&gt;
'''Description:'''&lt;br /&gt;
&lt;br /&gt;
This packet is recieved from the server when a new player joins the game.&lt;br /&gt;
&lt;br /&gt;
'''Packet recieved from server:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_PLAYER_JOIN [ byte ( Player ID ) ] [ string ( Player name ) ] 0x7C [ byte ( 1st byte of player IP ) ] &lt;br /&gt;
 [ byte ( 2nd byte of player IP ) ] [ byte ( 3rd byte of player IP ) ] [ byte ( 4th byte of player IP ) ]&lt;br /&gt;
&lt;br /&gt;
==ADMIN_PLAYER_PART==&lt;br /&gt;
'''Description:'''&lt;br /&gt;
&lt;br /&gt;
This packet is recieved from the server when a player parts.&lt;br /&gt;
&lt;br /&gt;
'''Packet recieved from server:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_PLAYER_PART [ byte ( Player ID ) ] [ byte ( Part reason ) ]&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&lt;br /&gt;
The part reasons have the following enumerations:&lt;br /&gt;
&lt;br /&gt;
* ADMIN_PLAYER_PARTED = 0x00&lt;br /&gt;
* ADMIN_PLAYER_KICKED = 0x01&lt;br /&gt;
* ADMIN_PLAYER_BANNED = 0x02&lt;br /&gt;
* ADMIN_PLAYER_TIMED_OUT = 0x03&lt;br /&gt;
&lt;br /&gt;
==ADMIN_PLAYER_LOGIN==&lt;br /&gt;
'''Description:'''&lt;br /&gt;
&lt;br /&gt;
This packet is recieved from the server when a player logs in to rcon admin.&lt;br /&gt;
&lt;br /&gt;
'''Packet recieved from server:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_PLAYER_LOGIN [ byte ( Player ID ) ] [ byte ( Login type ) ] [ byte ( Rcon level ) ]&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&lt;br /&gt;
The rcon level will be between 0x00 and 0x05.&lt;br /&gt;
&lt;br /&gt;
The login type has the following enumerations:&lt;br /&gt;
&lt;br /&gt;
* ADMIN_LOGIN_SUCCESS = 0x00&lt;br /&gt;
* ADMIN_LOGIN_FAILED = 0x01&lt;br /&gt;
* ADMIN_LOGIN_LOGGED_IN = 0x02&lt;br /&gt;
&lt;br /&gt;
==ADMIN_KICK==&lt;br /&gt;
'''Description:'''&lt;br /&gt;
&lt;br /&gt;
This packet is sent to the server to kick a player. The response will be a ADMIN_PLAYER_PART packet if successful.&lt;br /&gt;
&lt;br /&gt;
'''Packet sent:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_KICK [ byte ( Player ID ) ]&lt;br /&gt;
&lt;br /&gt;
==ADMIN_BAN==&lt;br /&gt;
'''Description:'''&lt;br /&gt;
&lt;br /&gt;
This packet is sent to the server to ban a player. The response will be a ADMIN_PLAYER_PART packet if successful.&lt;br /&gt;
&lt;br /&gt;
'''Packet sent:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_BAN [ byte ( Player ID ) ]&lt;br /&gt;
&lt;br /&gt;
==ADMIN_ADDBAN==&lt;br /&gt;
'''Description:'''&lt;br /&gt;
&lt;br /&gt;
This packet is sent to the server to ban an IP. The server will respond with a packet outlining the outcome.&lt;br /&gt;
&lt;br /&gt;
'''Packet sent:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_ADDBAN [ string ( IP ) ]&lt;br /&gt;
&lt;br /&gt;
'''Response from server:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_ADDBAN [ byte ( Response ) ]&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&lt;br /&gt;
The response has the following enumerations:&lt;br /&gt;
&lt;br /&gt;
* ADMIN_BAN_SUCCESS = 0x00&lt;br /&gt;
* ADMIN_BAN_FAILED = 0x01&lt;br /&gt;
&lt;br /&gt;
==ADMIN_UNBAN==&lt;br /&gt;
'''Description:'''&lt;br /&gt;
&lt;br /&gt;
This packet is sent to the server to unban an IP. The server will respond with a packet outlining the outcome.&lt;br /&gt;
&lt;br /&gt;
'''Packet sent:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_UNBAN [ string ( IP ) ]&lt;br /&gt;
&lt;br /&gt;
'''Response from server:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_UNBAN [ byte ( Response ) ]&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&lt;br /&gt;
The response has the following enumerations:&lt;br /&gt;
&lt;br /&gt;
* ADMIN_UNBAN_SUCCESS = 0x00&lt;br /&gt;
* ADMIN_UNBAN_FAILED = 0x01&lt;br /&gt;
&lt;br /&gt;
==ADMIN_CHANGE_SERVER_PASSWORD==&lt;br /&gt;
'''Description:'''&lt;br /&gt;
&lt;br /&gt;
This packet is sent to the server to change the server password, if it is enabled on the server. The server will respond with the outcome.&lt;br /&gt;
&lt;br /&gt;
'''Packet sent:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_CHANGE_SERVER_PASSWORD [ string ( New password ) ]&lt;br /&gt;
&lt;br /&gt;
'''Response from server:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_CHANGE_SERVER_PASSWORD [ byte ( Response ) ]&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&lt;br /&gt;
The response has the following enumerations:&lt;br /&gt;
&lt;br /&gt;
* ADMIN_SERVER_PASSWORD_CHANGED = 0x00&lt;br /&gt;
* ADMIN_SERVER_PASSWORD_FAILED = 0x01&lt;br /&gt;
* ADMIN_SERVER_PASSWORD_DISABLED = 0x02&lt;br /&gt;
&lt;br /&gt;
==ADMIN_SERVER_SHUTDOWN==&lt;br /&gt;
'''Description:'''&lt;br /&gt;
&lt;br /&gt;
This packet is sent to the server to shut it down, if enabled on the server. The packet must be sent twice within 5 seconds for this to be successful.&lt;br /&gt;
&lt;br /&gt;
'''Packet sent:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_SERVER_SHUTDOWN&lt;br /&gt;
&lt;br /&gt;
'''Response from server:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_SERVER_SHUTDOWN [ byte ( Response ) ]&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&lt;br /&gt;
The response has the following enumerations:&lt;br /&gt;
&lt;br /&gt;
* ADMIN_SERVER_SHUTDOWN_SUCCESS = 0x00&lt;br /&gt;
* ADMIN_SERVER_SHUTDOWN_WAITING = 0x01&lt;br /&gt;
* ADMIN_SERVER_SHUTDOWN_DISABLED = 0x02&lt;br /&gt;
&lt;br /&gt;
==ADMIN_PLAYER_MUTE==&lt;br /&gt;
'''Description:'''&lt;br /&gt;
&lt;br /&gt;
This packet is sent to the server to mute/unmute a player. It is also sent from the server when a player is muted/unmuted and responds to a packet with a success or failure.&lt;br /&gt;
&lt;br /&gt;
'''Packet sent:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_PLAYER_MUTE [ byte ( Player ID ) ] [ byte ( Mute/unmute ) ]&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&lt;br /&gt;
The mute/unmute byte has the following enumerations:&lt;br /&gt;
&lt;br /&gt;
* ADMIN_PLAYER_MUTE = 0x00&lt;br /&gt;
* ADMIN_PLAYER_UNMUTE = 0x01&lt;br /&gt;
&lt;br /&gt;
'''Packet sent from server if successful:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_PLAYER_MUTE [ byte ( Player ID ) ] [ byte ( Muter ID ) ] [ byte ( Mute/unmute ) ]&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&lt;br /&gt;
The muted ID is either a player ID (the player who muted the person) or it is 0xFF for a mute from the Console or 0xFE for a mute from Remote Admin. The Mute/unmute byte has the following enumerations:&lt;br /&gt;
&lt;br /&gt;
* ADMIN_MUTE_SUCCESS = 0x02&lt;br /&gt;
* ADMIN_UNMUTE_SUCCESS = 0x03&lt;br /&gt;
&lt;br /&gt;
'''Packet sent from the server if unsuccessful:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_PLAYER_MUTE [ byte ( Player ID ) ] [ byte ( Already muted/unmuted ) ]&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&lt;br /&gt;
The already muted/unmuted byte has the following enumerations:&lt;br /&gt;
&lt;br /&gt;
* ADMIN_MUTE_FAILED = 0x00&lt;br /&gt;
* ADMIN_UNMUTE_FAILED = 0x01&lt;br /&gt;
&lt;br /&gt;
==ADMIN_PLAYER_FREEZE==&lt;br /&gt;
'''Description:'''&lt;br /&gt;
&lt;br /&gt;
This packet is sent to the server to freeze/unfreeze a player. It is also sent from the server when a player is frozen/unfrozen and responds to a packet with a success or failure.&lt;br /&gt;
&lt;br /&gt;
'''Packet sent:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_PLAYER_FREEZE [ byte ( Player ID ) ] [ byte ( Freeze/unfreeze ) ]&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&lt;br /&gt;
The freeze/unfreeze byte has the following enumerations:&lt;br /&gt;
&lt;br /&gt;
* ADMIN_PLAYER_FREEZE = 0x00&lt;br /&gt;
* ADMIN_PLAYER_UNFREEZE = 0x01&lt;br /&gt;
&lt;br /&gt;
'''Packet sent from server if successful:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_PLAYER_FREEZE [ byte ( Player ID ) ] [ byte ( Freezer ID ) ] [ byte ( Freeze/unfreeze ) ]&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&lt;br /&gt;
The Freezer ID is either a player ID (the player who froze the person) or it is 0xFF for a freeze from the Console or 0xFE for a freeze from Remote Admin.&lt;br /&gt;
&lt;br /&gt;
The Freeze/unfreeze byte has the following enumerations:&lt;br /&gt;
&lt;br /&gt;
* ADMIN_FREEZE_SUCCESS = 0x02&lt;br /&gt;
* ADMIN_UNFREEZE_SUCCESS = 0x03&lt;br /&gt;
&lt;br /&gt;
'''Packet sent from the server if unsuccessful:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_PLAYER_FREEZE [ byte ( Player ID ) ] [ byte ( Already frozen/unfrozen ) ]&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&lt;br /&gt;
The already frozen/unfrozen byte has the following enumerations:&lt;br /&gt;
&lt;br /&gt;
* ADMIN_FREEZE_FAILED = 0x00&lt;br /&gt;
* ADMIN_UNFREEZE_FAILED = 0x01&lt;br /&gt;
&lt;br /&gt;
==ADMIN_PLAYER_NICK_CHANGE==&lt;br /&gt;
'''Description:'''&lt;br /&gt;
&lt;br /&gt;
This packet is sent from the server when a player changes their nickname.&lt;br /&gt;
&lt;br /&gt;
'''Packet sent from server:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_PLAYER_NICK_CHANGE [ byte ( Player ID ) ] [ string ( New nickname ) ]&lt;br /&gt;
&lt;br /&gt;
==ADMIN_PLAYER_DEATH==&lt;br /&gt;
'''Description:'''&lt;br /&gt;
&lt;br /&gt;
This packet is sent from the server when a player dies.&lt;br /&gt;
&lt;br /&gt;
'''Packet sent from server:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_PLAYER_DEATH [ byte ( Player ID ) ]&lt;br /&gt;
&lt;br /&gt;
==ADMIN_PLAYER_PM==&lt;br /&gt;
'''Description:'''&lt;br /&gt;
&lt;br /&gt;
This packet is sent from the server when a player pm's another player.&lt;br /&gt;
&lt;br /&gt;
'''Packet sent from server:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_PLAYER_PM [ byte ( From player ID ) ] [ byte ( To player ID ) ] [ string ( Message ) ]&lt;br /&gt;
&lt;br /&gt;
==ADMIN_RACE_LIST==&lt;br /&gt;
'''Description:'''&lt;br /&gt;
&lt;br /&gt;
This packet is sent with a list of all the races in the server. It is sent on join and when the list changes.&lt;br /&gt;
&lt;br /&gt;
'''Packet sent from server:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_RACE_LIST { loop &amp;lt; number of races &amp;gt; ( [ byte ( Race ID ) ] [ string ( Race name ) ] 0xFF ) end-loop }&lt;br /&gt;
&lt;br /&gt;
==ADMIN_START_RACE==&lt;br /&gt;
'''Description:'''&lt;br /&gt;
This packet is sent to the server to start a race. It is also sent from the server when a new race starts.&lt;br /&gt;
&lt;br /&gt;
'''Packet sent:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_START_RACE [ byte ( Race ID ) ]&lt;br /&gt;
&lt;br /&gt;
'''Packet sent from server:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_START_RACE [ byte ( Start type ) ] [ byte ( Race ID ) ]&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&lt;br /&gt;
Start type has the following enumerations:&lt;br /&gt;
&lt;br /&gt;
* ADMIN_RACE_STARTED = 0x00&lt;br /&gt;
* ADMIN_RACE_FAILED = 0x01&lt;br /&gt;
* ADMIN_RACE_NO_PLAYERS = 0x02&lt;br /&gt;
&lt;br /&gt;
==ADMIN_SET_MAX_PLAYERS==&lt;br /&gt;
'''Description:'''&lt;br /&gt;
&lt;br /&gt;
This packet is sent to change the max players of the server. The server will also send a packet when the max players is changed. Note that this number cannot go over the max players in the server config, nor can it ever go above 32.&lt;br /&gt;
&lt;br /&gt;
'''Packet sent:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_SET_MAX_PLAYERS [ byte ( Max players ) ]&lt;br /&gt;
&lt;br /&gt;
'''Response from server:'''&lt;br /&gt;
&lt;br /&gt;
 ADMIN_PACKET_HEADER ADMIN_SET_MAX_PLAYERS [ byte ( Max players ) ]&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&lt;br /&gt;
Max players will be 0x00 if the attempt to change them failed, otherwise it will be the hexadecimal value of the new number of max players.&lt;/div&gt;</summary>
		<author><name>Mr.Hankey</name></author>
	</entry>
</feed>