Functions for passing messages and constructing URL objects.
posts a message to a receiving URL
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 componentThere is a 2 kilobyte limit to the message parameter table size.
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] -
table a lua table with message parameters to send.
Send "enable" to the sprite "my_sprite" in "my_gameobject":
msg.post("my_gameobject#my_sprite", "enable")
Send a "my_message" to an url with some additional data:
local params = {my_parameter = "my_value"} msg.post(my_url, "my_message", params)
creates a new URL
This is equivalent to msg.url(nil)
or msg.url("#")
, which creates an url to the current
script component.
url -
url a new URL
Create a new URL which will address the current script:
local my_url = msg.url() print(my_url) --> url: [current_collection:/my_instance#my_component]
creates a new URL from a string
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 globalfragment
would be the id of the desired componentIn addition, the following shorthands are available:
"."
the current game object"#"
the current componenturlstring -
string string to create the url from
url -
url a new URL
local my_url = msg.url("#my_component") print(my_url) --> url: [current_collection:/my_instance#my_component] local my_url = msg.url("my_collection:/my_sub_collection/my_instance#my_component") print(my_url) --> url: [my_collection:/my_sub_collection/my_instance#my_component] local my_url = msg.url("my_socket:") print(my_url) --> url: [my_collection:]
creates a new URL from separate arguments
[socket] -
string | hash socket of the URL
[path] -
string | hash path of the URL
[fragment] -
string | hash fragment of the URL
url -
url a new URL
local my_socket = "main" -- specify by valid name local my_path = hash("/my_collection/my_gameobject") -- specify as string or hash local my_fragment = "component" -- specify as string or hash local 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]