Difference between revisions of "GMCP"

From ThresholdRPG Wiki
(updating supported packages)
(Updating values for Char.StatusVars and Char.Status)
Line 82: Line 82:
 
<pre>
 
<pre>
 
Char.StatusVars {
 
Char.StatusVars {
      "age" : "Age",
+
  age = "Age",
      "expertise" : "Expertise",
+
  capacity = "Capacity",
      "fullname" : "Full name",
+
  expertise = "Expertise",
      "guild" : "Guild",
+
  foe_health = "Current foe's health",
      "guild_level" : "Guild level",
+
  foe_name = "Current foe",
      "hb" : "Heal bank",
+
  fullname = "Full name",
      "level" : "Level",
+
  guild = "Guild",
      "name" : "Name",
+
  guild_level = "Guild level",
      "race" : "Race",
+
  hb = "Heal Bank",
      "session_login" : "Logged in",
+
  heritage = "Heritage",
      "tnl" : "To next level",
+
  hlevel = "Heritage level",
      "tummy" : "Fullness",
+
  level = "Level",
      "xp" : "Experience"
+
  max_capacity = "Max capacity",
 +
  mounted = "Mounted",
 +
  name = "Name",
 +
  race = "Race",
 +
  resting = "Resting",
 +
  sailing = "Sailing",
 +
  session_login = "Logged in",
 +
  tnl = "To next level",
 +
  tummy = "Fullness",
 +
  xp = "Experience"
 
}
 
}
 
</pre>
 
</pre>
Line 106: Line 115:
 
<pre>
 
<pre>
 
Char.Status {
 
Char.Status {
    "age" : 500,
+
  age = "505",
    "expertise" : 258493,
+
  capacity = "3036",
    "fullname" : "Karahd the Magocrat",
+
  expertise = "1586551",
    "guild" : "mage",
+
  foe_health = "0",
    "guild_level" : 11,
+
  foe_name = "none",
    "level" : 11,
+
  fullname = "Karahd the Magocrat",
    "hb" : 40,
+
  gender = "female",
    "name" : "Karahd",
+
  guild = "mage",
    "race" : "elf",
+
  guild_level = "15",
    "session_login" : 1625955749,
+
  hb = "0",
    "tnl" : 54,
+
  heritage = "scholar",
    "tummy" : 25,
+
  hlevel = "0",
    "xp" : 372225
+
  inactive = "0",
 +
  inactive_type = "none",
 +
  level = "15",
 +
  max_capacity = "5000",
 +
  mounted = "false",
 +
  name = "Karahd",
 +
  race = "elf",
 +
  sailing = "false",
 +
  session_login = "1637812345",
 +
  tnl = "60",
 +
  tummy = "0",
 +
  xp = "1747967"
 
}
 
}
 
</pre>
 
</pre>

Revision as of 23:56, 24 November 2021

Client

Core

Hello

  • Sends information about the MUD client and its version.
  • May only be sent before successful login.

Example:

Core.Hello { "client": "MyMUDClient", "version": "1.2.34" }

Ping

  • Ensures server is listening and GMCP is enabled.
  • Message body is a number which indicates average ping time from previous requests, if available.
  • Causes server to reply with a Core.Ping message in response.

Example:

Core.Ping 120

Supports

Set
  • Notifies the server about packages supported by the client.
  • If another Core.Supports.* package has been received earlier, the list is deleted and replaced with the new one.
  • Message body is an array of strings, each consisting of the module name and version, separated by space.
  • Module version is a positive non-zero integer.
  • Most client implementations will only need to send Set once and won't need Add/Remove; exceptions are module implementations provided by plug-ins.

Example:

Core.Supports.Set [ "Char 1", "Char.Skills 1", "Char.Items 1" ]
Add
  • Similar to Core.Supports.Set, but appends the supported module list to the one sent earlier.
  • If no list was sent yet, the behaviour is identical to Core.Supports.Set.
  • If the list includes module names that were already included earlier, the new version number takes precedence over the previously sent one, even if the newly sent number is lower.
  • Message body format is identical to that of Core.Supports.Set.

Example:

Core.Supports.Add [ "Char.Vitals 1", "Char.Status 1" ]
Remove
  • Removes specified modules from the list of supported modules.
  • Message body format is similar to Core.Supports.Set, except that module version numbers are optional and ignored if given.

Example:

Core.Supports.Remove [ "Char", "Char.Skills", "Char.Items" ]

Server

Core

Goodbye

  • Sent by server immediately before terminating a connection.
  • Message body is a string to be shown to the user - it can explain the reason for the disconnect.

Example:

Core.Goodbye "Farewell, cruel world!"

Ping

  • Sent in reply to Core.Ping from the client.
  • No message body.

Example:

Core.Ping

Char

StatusVars

  • Sent by server after a successful login.
  • Contains a list of names of character status variables (level, race, etc) and their display captions.
  • Message body is an object with keys containing the names of the status variables and values containing the captions to be displayed to the user.

Example:

Char.StatusVars {
  age = "Age",
  capacity = "Capacity",
  expertise = "Expertise",
  foe_health = "Current foe's health",
  foe_name = "Current foe",
  fullname = "Full name",
  guild = "Guild",
  guild_level = "Guild level",
  hb = "Heal Bank",
  heritage = "Heritage",
  hlevel = "Heritage level",
  level = "Level",
  max_capacity = "Max capacity",
  mounted = "Mounted",
  name = "Name",
  race = "Race",
  resting = "Resting",
  sailing = "Sailing",
  session_login = "Logged in",
  tnl = "To next level",
  tummy = "Fullness",
  xp = "Experience"
}

Status

  • Sent by server immediately after the initial Char.StatusVars message and whenever the value of a variable changes.
  • Contains the values of character status variables (level, race, etc).
  • The full list of variables is only sent with the initial message, subsequent messages only contain changed variables.
  • Message body is an object with keys containing the names of the variables, as defined by the Char.StatusVars message, and values containing the values of the variables.

Example:

Char.Status {
  age = "505",
  capacity = "3036",
  expertise = "1586551",
  foe_health = "0",
  foe_name = "none",
  fullname = "Karahd the Magocrat",
  gender = "female",
  guild = "mage",
  guild_level = "15",
  hb = "0",
  heritage = "scholar",
  hlevel = "0",
  inactive = "0",
  inactive_type = "none",
  level = "15",
  max_capacity = "5000",
  mounted = "false",
  name = "Karahd",
  race = "elf",
  sailing = "false",
  session_login = "1637812345",
  tnl = "60",
  tummy = "0",
  xp = "1747967"
}

Vitals

  • Sent by server whenever a prompt is displayed to the player and whenever the character's vitals change.
  • Contains basic information about character's vitality (hp, sp, ep).
  • Message body is an object containing key-value pairs corresponding to character attributes.
  • Each variable is also included in a string in the format name:cur/max.

Example:

Char.Vitals {
    "hp" : 100,
    "sp" : 100,
    "ep" : 100,
    "maxhp" : 200,
    "maxsp" : 200,
    "maxep" : 200,
    "string" : "HP: 100/200 SP: 100/200 EP: 100/200"
}

Afflictions

Supported afflictions:

  • blind
  • deaf
  • immobile
  • mute
  • stun
Add
  • Sent by the server when a new affliction is added to the character.
  • Message is a string that is the affliction which has been added.

Example:

Char.Afflictions.Add "blind"
Remove
  • Sent by the server when a new affliction is removed from the character.
  • Message is a string that is the affliction which has been removed.

Example:

Char.Afflictions.Remove "blind"