查看“LlMessageLinked”的源代码
←
LlMessageLinked
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
{{LSL Header|ml=*}}{{LSLC|Keywords}}{{LSLC|Flow Control}}{{LSLC|}} {{函数详情 |函数名 = Function: llMessageLinked( integer link, integer num, string str, key id ); |参数= 参数: • integer link – Link number (0: unlinked, 1: root prim, >1: child prims and seated avatars) or a LINK_* flag, controls which prim(s) receive the link_message. • integer num – Value of the second parameter of the resulting link_message event. • string str – Value of the third parameter of the resulting link_message event. • key id – Value of the fourth parameter of the resulting link_message event. |返回值= 返回值: 此函数的目的是允许同一对象中的脚本进行通信。它在 link 所描述的 prim (s)中的所有脚本中触发具有相同参数 num、 str 和 id 的 link _ message 事件。 你可以使用 id 作为第二个字符串字段[2]。Str 和 id 的大小仅受可用脚本内存的限制。 |注意事项= 注意事项 *脚本可以听到自己的链接消息,如果链接目标的 prim 是在[3]。这就产生了无限循环的可能性(这是一件坏事) ; 对于如何处理和传递消息要非常小心。 *Messages sent via llMessageLinked to a script that is sleeping, delayed, or lagged, are queued until the end of the delay. The event queue can hold 64 events. 如果接收到事件并且队列已满,则事件将以静默方式被删除。 避免同时向大量脚本发送 link _ 消息,因为这会导致延迟尖峰。这通常发生在使用 multi-prim link _ * 标志时,并且可能导致脚本执行变慢或停止。 避免将 link _ 消息发送到目标的速度比处理它们的速度快。这样做有填充事件队列的风险,以及随后的消息被无声地丢弃的风险。 *当脚本状态发生更改时,所有挂起的事件都将被删除,包括排队的 link _ 消息。 *如果 link 是一个无效的链接编号,那么函数就会默认地失败。 *如果 str & id 超过了捕获结果 link _ message 事件的脚本的可用内存,那么该脚本就会因为堆栈-堆冲突而崩溃。 示例一 <pre> default { // assumptions // object name: LSLWiki // script name: _lslwiki state_entry() { llMessageLinked(LINK_THIS, 0, llGetScriptName(), ""); } link_message(integer sender_num, integer num, string msg, key id) { llOwnerSay(msg); // the owner of object LSLWiki will hear // LSLWiki:_lslwiki } } </pre> 无限循环 <pre> Message_Control(integer l, integer n) // Message_Total_Lack_Of_Control { integer r = (++n); // Increment the value of n. llMessageLinked( l, r, "", ""); // Send the result to l } default { state_entry() { Message_Control(LINK_SET, 0); // Tell all the scripts in the object that we have state_entered. } link_message(integer Sender, integer Number, string String, key Key) // This script is in the object too. { Message_Control(Sender, Number); // No filtering condition exists. llOwnerSay(((string)Number)); // Look at all the pretty numbers! } } </pre> 有用的片段 <pre> default { // Quick and dirty debugging link_messages link_message(integer sender_num, integer num, string msg, key id) { llSay(DEBUG_CHANNEL, llList2CSV([sender_num, num, msg, id])); } } </pre> <pre> // This is just an example script, you shouldn't handle link message within single script this way. default { // To propagate an unlimted number of arguments of any type. // Presumed, the separator string isn't used in any source string! state_entry() { list my_list = [1, 2.0, "a string", <1, 2, 3>, <1, 2, 3, 4>, llGetOwner()]; string list_parameter = llDumpList2String(my_list, "|"); // Convert the list to a string llMessageLinked(LINK_THIS, 0, list_parameter, ""); } link_message(integer sender_num, integer num, string list_argument, key id) { list re_list = llParseString2List(list_argument, ["|"], []); // Parse the string back to a list } } </pre> |相关函数= [[llGetLinkNumber]]--返回脚本所在 prim 的链接号。 |相关事件= [[link message]] }}
该页面使用的模板:
模板:LSL Header
(
查看源代码
)
模板:LSLC
(
查看源代码
)
模板:LSLGC
(
查看源代码
)
模板:Multi-lang
(
查看源代码
)
模板:函数详情
(
查看源代码
)
返回至
LlMessageLinked
。
导航菜单
个人工具
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
网站首页
知识百科
编辑帮助
最近更改
工具
链入页面
相关更改
特殊页面
页面信息