<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.flexiblesurvival.com/index.php?action=history&amp;feed=atom&amp;title=GMCP</id>
	<title>GMCP - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.flexiblesurvival.com/index.php?action=history&amp;feed=atom&amp;title=GMCP"/>
	<link rel="alternate" type="text/html" href="https://wiki.flexiblesurvival.com/index.php?title=GMCP&amp;action=history"/>
	<updated>2026-04-11T10:31:32Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://wiki.flexiblesurvival.com/index.php?title=GMCP&amp;diff=1462078&amp;oldid=prev</id>
		<title>Inutt: Add missing commas</title>
		<link rel="alternate" type="text/html" href="https://wiki.flexiblesurvival.com/index.php?title=GMCP&amp;diff=1462078&amp;oldid=prev"/>
		<updated>2020-09-23T23:22:15Z</updated>

		<summary type="html">&lt;p&gt;Add missing commas&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 23:22, 23 September 2020&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-l39&quot;&gt;Line 39:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 39:&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;&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&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;&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;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;{&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;{&lt;/div&gt;&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;     &quot;value&quot;: &amp;lt;numeric value&amp;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;     &quot;value&quot;: &amp;lt;numeric value&amp;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 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;     &quot;min&quot;: &amp;lt;numeric value&amp;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;     &quot;min&quot;: &amp;lt;numeric value&amp;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 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;     &quot;max&quot;: &amp;lt;numeric value&amp;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;     &quot;max&quot;: &amp;lt;numeric value&amp;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 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;     &amp;quot;bar-fill&amp;quot;: &amp;lt;color string&amp;gt;&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;     &amp;quot;bar-fill&amp;quot;: &amp;lt;color string&amp;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;}&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;}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Inutt</name></author>
	</entry>
	<entry>
		<id>https://wiki.flexiblesurvival.com/index.php?title=GMCP&amp;diff=1462077&amp;oldid=prev</id>
		<title>Inutt: Created</title>
		<link rel="alternate" type="text/html" href="https://wiki.flexiblesurvival.com/index.php?title=GMCP&amp;diff=1462077&amp;oldid=prev"/>
		<updated>2020-09-23T23:21:43Z</updated>

		<summary type="html">&lt;p&gt;Created&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;GMCP, or Generic Mud Communication Protocol, is a method of sending [https://www.json.org/json-en.html JSON]-encoded data between a server and mud client outside the normal flow of test that is supported by many modern clients. It can be used for things such as sending a player&amp;#039;s stats to the client so that it can include the data in some kind of GUI.&lt;br /&gt;
&lt;br /&gt;
Flexible Survival does not yet have full native integration of GMCP, but has a pseudo implementation that can send data from the server to client, but not back again. It was also written with [[BeipMU]] in mind, so is currently tailored to that. Further changes may occur as the code develops.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Supported packages ==&lt;br /&gt;
&lt;br /&gt;
Currently, only a single package is supported, &amp;lt;code&amp;gt;beip.stats&amp;lt;/code&amp;gt;. This can contain three blocks of data for different groups of stats. Note that in order to reduce network traffic, the protocol is designed to allow updating either a single stat or multiple stats at a time, so not all data will be provided with every update.&lt;br /&gt;
&lt;br /&gt;
The general format of a block is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;&amp;lt;Group name&amp;gt;&amp;quot;: {&lt;br /&gt;
    &amp;quot;background-color&amp;quot;: &amp;lt;color string&amp;gt;,&lt;br /&gt;
    &amp;quot;values&amp;quot;: {&lt;br /&gt;
        &amp;lt;data for value&amp;gt;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Values can contain numeric, string, or range data. Their format is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;&amp;lt;name of stat&amp;gt;&amp;quot;: {&lt;br /&gt;
    &amp;quot;&amp;lt;type of value&amp;gt;&amp;quot;: &amp;lt;value data&amp;gt;,&lt;br /&gt;
    &amp;quot;prefix-length&amp;quot;: &amp;lt;numeric value&amp;gt;,&lt;br /&gt;
    &amp;quot;value-color&amp;quot;: &amp;lt;color string&amp;gt;,&lt;br /&gt;
    &amp;quot;name-color&amp;quot;: &amp;lt;color string&amp;gt;,&lt;br /&gt;
    &amp;quot;name-alignment&amp;quot;: &amp;quot;[left|right|center]&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;prefix length&amp;lt;/code&amp;gt; field is used to specify how many characters to ignore at the beginning of the name of the stat - this allows controlling the order that fields are displayed in by adding a prefix such as &amp;quot;10_&amp;quot; and setting the &amp;lt;code&amp;gt;prefix length&amp;lt;/code&amp;gt; field to 3.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;value-color&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;name-color&amp;lt;/code&amp;gt; can be used to specify the color in which to display the relevant field. Color strings may be an RGB hex code such as &amp;quot;#00ff00&amp;quot; for green, or an [https://i.stack.imgur.com/KTSQa.png ANSI colour code] in the form &amp;quot;ansi256(&amp;lt;number&amp;gt;)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;type of value&amp;lt;/code&amp;gt; should be one of &amp;quot;int&amp;quot;, &amp;quot;string&amp;quot;, or &amp;quot;range&amp;quot;. For &amp;quot;int&amp;quot; and &amp;quot;string&amp;quot; types, the &amp;lt;code&amp;gt;value data&amp;lt;/code&amp;gt; field should be the number or string to be displayed. For &amp;quot;range&amp;quot; types, a block will be provided of the form:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;value&amp;quot;: &amp;lt;numeric value&amp;gt;&lt;br /&gt;
    &amp;quot;min&amp;quot;: &amp;lt;numeric value&amp;gt;&lt;br /&gt;
    &amp;quot;max&amp;quot;: &amp;lt;numeric value&amp;gt;&lt;br /&gt;
    &amp;quot;bar-fill&amp;quot;: &amp;lt;color string&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All fields have a &amp;lt;code&amp;gt;prefix-length&amp;lt;/code&amp;gt; of 3.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== beip.stats player stats ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;00_Name&amp;lt;/code&amp;gt;: String value, contains the character&amp;#039;s name and a value-color corresponding to the character&amp;#039;s gender.&lt;br /&gt;
* &amp;lt;code&amp;gt;10_Hit Points&amp;lt;/code&amp;gt;: Range value, character&amp;#039;s current health.&lt;br /&gt;
* &amp;lt;code&amp;gt;30_Level&amp;quot;&amp;lt;/code&amp;gt;: String value, character&amp;#039;s true level.&lt;br /&gt;
* &amp;lt;code&amp;gt;35_Mentored to&amp;lt;/code&amp;gt;: String value, character&amp;#039;s effective level.&lt;br /&gt;
* &amp;lt;code&amp;gt;40_Current XP&amp;lt;/code&amp;gt;: String value, character&amp;#039;s current experience points.&lt;br /&gt;
* &amp;lt;code&amp;gt;50_Rested XP&amp;lt;/code&amp;gt;: String value, character&amp;#039;s rested experience point value.&lt;br /&gt;
* &amp;lt;code&amp;gt;60_Cred Energy&amp;lt;/code&amp;gt;: String value.&lt;br /&gt;
* &amp;lt;code&amp;gt;70_Hero Points&amp;lt;/code&amp;gt;: String value.&lt;br /&gt;
* &amp;lt;code&amp;gt;80_Wounds&amp;lt;/code&amp;gt;: String value.&lt;br /&gt;
* &amp;lt;code&amp;gt;90_Unread Notices&amp;lt;/code&amp;gt;: String value, number of unread notices on the website.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== beip.stats resources stats ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;10_Freecred&amp;lt;/code&amp;gt;: String value.&lt;br /&gt;
* &amp;lt;code&amp;gt;20_Mako&amp;lt;/code&amp;gt;: String value.&lt;br /&gt;
* &amp;lt;code&amp;gt;30_Reward Tokens&amp;lt;/code&amp;gt;: String value.&lt;br /&gt;
* &amp;lt;code&amp;gt;40_Builder Nanites&amp;lt;/code&amp;gt;: String value.&lt;br /&gt;
* &amp;lt;code&amp;gt;40_Patrol Points&amp;lt;/code&amp;gt;: String value.&lt;br /&gt;
* &amp;lt;code&amp;gt;50_Battery Charge&amp;lt;/code&amp;gt;: String value.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== beip.stats combat stats ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;10_Difficulty Level&amp;lt;/code&amp;gt;: String value.&lt;br /&gt;
* &amp;lt;code&amp;gt;20_Difficulty Quantity&amp;lt;/code&amp;gt;: String value.&lt;br /&gt;
* &amp;lt;code&amp;gt;30_Primary Class&amp;lt;/code&amp;gt;: String value, character&amp;#039;s primary class.&lt;br /&gt;
* &amp;lt;code&amp;gt;40_Secondary Class&amp;lt;/code&amp;gt;: String value, character&amp;#039;s secondary class if in possession of a dual soul pendant.&lt;/div&gt;</summary>
		<author><name>Inutt</name></author>
	</entry>
</feed>