On this page

msg

Functions for passing messages and constructing URL objects.

Functions

msg.url(): Url

This is equivalent to msg.url(nil) or msg.url("#"), which creates an url to the current script component.

// Create a new URL which will address the current script:
const my_url = msg.url();
print(my_url); // => url: [current_collection:/my_instance#my_component]

Returns

  • url: Url — a new URL

msg.url(urlstring: string): Url

The format of the string must be [socket:][path][#fragment], which is similar to a HTTP URL. When addressing instances:

  • socket is the name of a valid world (a collection)

  • path is the id of the instance, which can either be relative the instance of the calling script or global

  • fragment would be the id of the desired component

In addition, the following shorthands are available:

  • "." the current game object

  • "#" the current component

const my_url = msg.url("#my_component");
print(my_url); // => url: [current_collection:/my_instance#my_component]

const my_collection_url = msg.url("my_collection:/my_sub_collection/my_instance#my_component");
print(my_collection_url); // => url: [my_collection:/my_sub_collection/my_instance#my_component]

const my_socket_url = msg.url("my_socket:");
print(my_socket_url); // => url: [my_collection:]

Parameters

  • urlstring: string — string to create the url from

Returns

  • url: Url — a new URL

msg.url(socket?: string | Hash, path?: string | Hash, fragment?: string | Hash): Url

creates a new URL from separate arguments

const my_socket = "main"; // specify by valid name
const my_path = hash("/my_collection/my_gameobject"); // specify as string or hash
const my_fragment = "component"; // specify as string or hash
const my_url = msg.url(my_socket, my_path, my_fragment);

print(my_url); // => url: [main:/my_collection/my_gameobject#component]
print(my_url.socket); // => 786443 (internal numeric value)
print(my_url.path); // => hash: [/my_collection/my_gameobject]
print(my_url.fragment); // => hash: [component]

Parameters

  • socket?: string | Hash — socket of the URL
  • path?: string | Hash — path of the URL
  • fragment?: string | Hash — fragment of the URL

Returns

  • url: Url — a new URL

msg.post(receiver: string | Url | Hash, message_id: string | Hash, message?: Record<string | number, unknown> | nil)

Post a message to a receiving URL. The most common case is to send messages to a component. If the component part of the receiver is omitted, the message is broadcast to all components in the game object. The following receiver shorthands are available:

  • "." the current game object

  • "#" the current component

There is a 2 kilobyte limit to the message parameter table size.

// Send "enable" to the sprite "my_sprite" in "my_gameobject":
msg.post("my_gameobject#my_sprite", "enable");

// Send a "my_message" to a url with some additional data:
const params = { my_parameter: "my_value" };
msg.post(my_url, "my_message", params);

Parameters

  • receiver: string | Url | Hash — The receiver must be a string in URL-format, a URL object or a hashed string.
  • message_id: string | Hash — The id must be a string or a hashed string.
  • message?: Record<string | number, unknown> | nil — a lua table with message parameters to send.