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:
-
socketis the name of a valid world (a collection) -
pathis the id of the instance, which can either be relative the instance of the calling script or global -
fragmentwould 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 URLpath?:string | Hash— path of the URLfragment?: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.