<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-CN">
	<id>http://i.bnu.edu.cn/wiki/index.php?action=history&amp;feed=atom&amp;title=LlRemoteLoadScriptPin</id>
	<title>LlRemoteLoadScriptPin - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="http://i.bnu.edu.cn/wiki/index.php?action=history&amp;feed=atom&amp;title=LlRemoteLoadScriptPin"/>
	<link rel="alternate" type="text/html" href="http://i.bnu.edu.cn/wiki/index.php?title=LlRemoteLoadScriptPin&amp;action=history"/>
	<updated>2026-06-01T06:16:47Z</updated>
	<subtitle>本wiki的该页面的版本历史</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>http://i.bnu.edu.cn/wiki/index.php?title=LlRemoteLoadScriptPin&amp;diff=498&amp;oldid=prev</id>
		<title>2020年7月19日 (日) 01:42 Mkx</title>
		<link rel="alternate" type="text/html" href="http://i.bnu.edu.cn/wiki/index.php?title=LlRemoteLoadScriptPin&amp;diff=498&amp;oldid=prev"/>
		<updated>2020-07-19T01:42:04Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;2020年7月19日 (日) 01:42的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l73&quot; &gt;第73行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第73行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''Rez and copy a file from a control object'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''Rez and copy a file from a control object'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;注意:目前启动消息上没有签名，只检查了所有者。&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;注意:目前启动消息上没有签名，只检查了所有者。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;这个示例从inventory中调用了一个prim，其中包含一个基本的控制文件，并执行了一个基本的握手操作来设置pin并传输脚本。&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;这个示例从inventory中调用了一个prim，其中包含一个基本的控制文件，并执行了一个基本的握手操作来设置pin并传输脚本。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Mkx</name></author>
		
	</entry>
	<entry>
		<id>http://i.bnu.edu.cn/wiki/index.php?title=LlRemoteLoadScriptPin&amp;diff=497&amp;oldid=prev</id>
		<title>Mkx：创建页面，内容为“{{LSL Header|ml=*}}{{LSLC|Keywords}}{{LSLC|Flow Control}}{{LSLC|}}   {{函数详情 |函数名 = Function: llRemoteLoadScriptPin( key target, string name, integer pi…”</title>
		<link rel="alternate" type="text/html" href="http://i.bnu.edu.cn/wiki/index.php?title=LlRemoteLoadScriptPin&amp;diff=497&amp;oldid=prev"/>
		<updated>2020-07-19T01:41:25Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“{{LSL Header|ml=*}}{{LSLC|Keywords}}{{LSLC|Flow Control}}{{LSLC|}}   {{函数详情 |函数名 = Function: llRemoteLoadScriptPin( key target, string name, integer pi…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{LSL Header|ml=*}}{{LSLC|Keywords}}{{LSLC|Flow Control}}{{LSLC|}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{函数详情&lt;br /&gt;
|函数名 = Function: llRemoteLoadScriptPin( key target, string name, integer pin, integer running, integer start_param );&lt;br /&gt;
|参数= 参数：• key target – 在同一区域的[[prim]] [[UUID]]&lt;br /&gt;
&lt;br /&gt;
• string name – 脚本所在的prim目录中的脚本&lt;br /&gt;
&lt;br /&gt;
• integer pin – 必须匹配pin设置[[llSetRemoteScriptAccessPin]]&lt;br /&gt;
&lt;br /&gt;
• integer running – [[boolean]]，如果[[TRUE]]脚本设置为运行，如果[[FALSE]]脚本没有设置为运行&lt;br /&gt;
&lt;br /&gt;
• integer start_param –在目标脚本中[[llGetStartParameter]]返回的值。&lt;br /&gt;
|返回值= 返回值：复制脚本名称到目标和设置为运行与start_param只有当目标的[[pin]]匹配pin&lt;br /&gt;
&lt;br /&gt;
只有当脚本所有者可以修改目标时才有效。&lt;br /&gt;
|注意事项=这个函数使脚本休眠3.0秒。&lt;br /&gt;
&lt;br /&gt;
如果目标不属于同一个人，并且名称没有传输权限，则[[DEBUG_CHANNEL]]上将显示错误。&lt;br /&gt;
&lt;br /&gt;
如果名称权限不允许复制，则传输失败，并在[[DEBUG_CHANNEL]]上显示错误。&lt;br /&gt;
&lt;br /&gt;
如果目标不在同一区域，则在[[DEBUG_CHANNEL]]上显示错误。&lt;br /&gt;
&lt;br /&gt;
当脚本在库存之间被复制或移动时，它们的状态将无法在转移中保存下来。内存、事件队列和执行位置都被丢弃。&lt;br /&gt;
&lt;br /&gt;
如果名称没有出现在prim的目录中，或者它不是一个脚本，那么DEBUG_CHANNEL将显示错误。&lt;br /&gt;
&lt;br /&gt;
如果名称出现在目标prim的目录中，那么它将被悄悄地替换。&lt;br /&gt;
&lt;br /&gt;
start_param只持续到脚本被重置。&lt;br /&gt;
&lt;br /&gt;
只有附件的拥有者才能在佩戴时修改它。&lt;br /&gt;
&lt;br /&gt;
  如果目标是由不同用户拥有的附件，无论授予了什么对象修改权限，此函数都将以静默方式失败。&lt;br /&gt;
&lt;br /&gt;
如果目标由不同的用户拥有，并且通过[[Edit, delete, or take my objects]]将修改权限授予脚本所有者，那么脚本所有者必须连接到sim，以便此函数成功执行。&lt;br /&gt;
&lt;br /&gt;
如果pin不匹配，[[DEBUG_CHANNEL]]会显示错误“Task ~Prim~试图非法加载脚本到Task ~Other_Prim~!”“~Prim~”和“~Other_Prim~”用适用的Prim名称替换。&lt;br /&gt;
如果target是脚本的父(target == llGetKey())，那么在[[DEBUG_CHANNEL]]上会喊“无法添加项目!”。&lt;br /&gt;
&lt;br /&gt;
如果包含此脚本的对象被转发到一个组，则脚本名需要传输权限;即使目标定约到同一组。&lt;br /&gt;
&lt;br /&gt;
当脚本被设置为运行时(带有运行复选框或[[llSetScriptState]])， [[state_entry]]将被排队。&lt;br /&gt;
&lt;br /&gt;
|示例=&lt;br /&gt;
'''Basic Example'''&lt;br /&gt;
&lt;br /&gt;
Script copier&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//将脚本复制到第二个基本物体&lt;br /&gt;
integer PIN=1341134;&lt;br /&gt;
 &lt;br /&gt;
default {&lt;br /&gt;
    state_entry() {&lt;br /&gt;
        llRemoteLoadScriptPin( llGetLinkKey(2), &amp;quot;some script&amp;quot;, PIN, TRUE, 0xBEEEEEEF );&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Pin setter&lt;br /&gt;
用于为prim设置大头针的简单脚本，以便稍后可以使用llRemoteLoadScriptPin向它发送脚本。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//Child Prim PIN setter&lt;br /&gt;
integer PIN=1341134;&lt;br /&gt;
 &lt;br /&gt;
default {&lt;br /&gt;
    state_entry() {&lt;br /&gt;
        llOwnerSay(llGetObjectName()+&amp;quot; : &amp;quot;+(string)llGetKey()+&amp;quot; is ready to accept a describer script using the agreed upon PIN.&amp;quot;);&lt;br /&gt;
        llSetRemoteScriptAccessPin(PIN);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Rez and copy a file from a control object'''&lt;br /&gt;
注意:目前启动消息上没有签名，只检查了所有者。&lt;br /&gt;
这个示例从inventory中调用了一个prim，其中包含一个基本的控制文件，并执行了一个基本的握手操作来设置pin并传输脚本。&lt;br /&gt;
在转移之后，rezzed prim中的helper脚本将删除自己。&lt;br /&gt;
Control prim&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
integer controlchan = 0;&lt;br /&gt;
integer controlid = -1;&lt;br /&gt;
start()&lt;br /&gt;
{&lt;br /&gt;
    llSetTimerEvent(0);&lt;br /&gt;
    talkingto = NULL_KEY;&lt;br /&gt;
    integer a = (integer)llFrand(43);&lt;br /&gt;
    controlchan = a * a;&lt;br /&gt;
    controlchan -= controlchan * 3;&lt;br /&gt;
    controlid = llListen(controlchan,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;set-connect&amp;quot;);&lt;br /&gt;
    llRezObject(&amp;quot;card&amp;quot;,llGetPos()+&amp;lt;0,0,0.1&amp;gt;,&amp;lt;0,0,0&amp;gt;,ZERO_ROTATION,a);&lt;br /&gt;
    llSetTimerEvent(60);&lt;br /&gt;
}&lt;br /&gt;
key talkingto = NULL_KEY;&lt;br /&gt;
integer busy = FALSE;&lt;br /&gt;
integer accesspin = 0;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        llSetTimerEvent(0);&lt;br /&gt;
        llOwnerSay(&amp;quot;Lost connection!&amp;quot;);&lt;br /&gt;
        llListenRemove(controlid);&lt;br /&gt;
        busy = FALSE;&lt;br /&gt;
    }&lt;br /&gt;
    listen(integer chan,string name,key id,string message)&lt;br /&gt;
    {&lt;br /&gt;
        if(chan == controlchan)&lt;br /&gt;
        {&lt;br /&gt;
            if(llGetOwnerKey(id) == llGetOwner())&lt;br /&gt;
            {&lt;br /&gt;
                if(talkingto == NULL_KEY)&lt;br /&gt;
                {&lt;br /&gt;
                    if(message == &amp;quot;set-connect&amp;quot;)&lt;br /&gt;
                    {&lt;br /&gt;
                        llSetTimerEvent(0);&lt;br /&gt;
                        talkingto = id;&lt;br /&gt;
                        llListenRemove(controlid);&lt;br /&gt;
                        controlid = llListen(controlchan,&amp;quot;&amp;quot;,talkingto,&amp;quot;ready&amp;quot;);&lt;br /&gt;
                        llRegionSayTo(id,controlchan,&amp;quot;auto-connect&amp;quot;);&lt;br /&gt;
                        llSetTimerEvent(60);&lt;br /&gt;
                    }&lt;br /&gt;
                }   &lt;br /&gt;
                else if(id == talkingto)&lt;br /&gt;
                {&lt;br /&gt;
                    if(message == &amp;quot;ready&amp;quot;)&lt;br /&gt;
                    {&lt;br /&gt;
                        llSetTimerEvent(0);&lt;br /&gt;
                        accesspin = (integer)llFrand(2345)+213;&lt;br /&gt;
                        llListenRemove(controlid);&lt;br /&gt;
                        controlid = llListen(controlchan,&amp;quot;&amp;quot;,talkingto,&amp;quot;pinset&amp;quot;);&lt;br /&gt;
                        llSleep(1);&lt;br /&gt;
                        llRegionSayTo(talkingto,controlchan,(string)accesspin);&lt;br /&gt;
                        llSetTimerEvent(60);&lt;br /&gt;
                    }&lt;br /&gt;
                    else if(message == &amp;quot;pinset&amp;quot;)&lt;br /&gt;
                    {&lt;br /&gt;
                        llSetTimerEvent(0);&lt;br /&gt;
                        llListenRemove(controlid);&lt;br /&gt;
                        llRemoteLoadScriptPin(talkingto,&amp;quot;demo.lsl&amp;quot;,accesspin,1,0);&lt;br /&gt;
                        llSleep(3);&lt;br /&gt;
                        llRegionSayTo(talkingto,controlchan,&amp;quot;finished&amp;quot;);&lt;br /&gt;
                        llOwnerSay(&amp;quot;Transfer of file finished - control file should have auto deleted itself!&amp;quot;);&lt;br /&gt;
                        busy = FALSE;&lt;br /&gt;
                    }&lt;br /&gt;
                } &lt;br /&gt;
            }   &lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    touch_end(integer a)&lt;br /&gt;
    {&lt;br /&gt;
        if(busy == FALSE)&lt;br /&gt;
        {&lt;br /&gt;
            busy = TRUE;&lt;br /&gt;
            if(llGetOwner() == llDetectedKey(0))&lt;br /&gt;
            {&lt;br /&gt;
                start();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
rezzed prim&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
integer listen_id = -1;&lt;br /&gt;
integer listen_chan = -1;&lt;br /&gt;
key details_from = NULL_KEY;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer a)&lt;br /&gt;
    {&lt;br /&gt;
        if(a == 0)&lt;br /&gt;
        {&lt;br /&gt;
            llOwnerSay(&amp;quot;- Direct rez -&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llOwnerSay(&amp;quot;- Awaiting config connection -&amp;quot;);&lt;br /&gt;
            listen_chan = a * a;&lt;br /&gt;
            listen_chan -= listen_chan * 3;&lt;br /&gt;
            listen_id = llListen(listen_chan,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;auto-connect&amp;quot;);&lt;br /&gt;
            llWhisper(listen_chan,&amp;quot;set-connect&amp;quot;);&lt;br /&gt;
            llSetTimerEvent(30);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(&amp;quot;Failed to connect to rezzer deleting myself!&amp;quot;);&lt;br /&gt;
        llSetTimerEvent(0);&lt;br /&gt;
        llDie();&lt;br /&gt;
    }&lt;br /&gt;
    listen(integer chan,string name,key id,string message)&lt;br /&gt;
    {&lt;br /&gt;
        if(llGetOwnerKey(id) == llGetOwner())&lt;br /&gt;
        {&lt;br /&gt;
            if(message == &amp;quot;auto-connect&amp;quot;)&lt;br /&gt;
            {&lt;br /&gt;
                llSetTimerEvent(0);&lt;br /&gt;
                llListenRemove(listen_id);&lt;br /&gt;
                listen_id = llListen(listen_chan,&amp;quot;&amp;quot;,id,&amp;quot;&amp;quot;);&lt;br /&gt;
                llRegionSayTo(id,listen_chan,&amp;quot;ready&amp;quot;);&lt;br /&gt;
                details_from = id;&lt;br /&gt;
                llSetTimerEvent(30);                 &lt;br /&gt;
            }&lt;br /&gt;
            else if(details_from != NULL_KEY)&lt;br /&gt;
            {&lt;br /&gt;
                llSetTimerEvent(0);  &lt;br /&gt;
                if(message == &amp;quot;finished&amp;quot;)&lt;br /&gt;
                {&lt;br /&gt;
                    llSetRemoteScriptAccessPin((integer)message);&lt;br /&gt;
                    llRemoveInventory(llGetScriptName());         &lt;br /&gt;
                }&lt;br /&gt;
                else&lt;br /&gt;
                {&lt;br /&gt;
                    llSetRemoteScriptAccessPin((integer)message);&lt;br /&gt;
                    llRegionSayTo(id,listen_chan,&amp;quot;pinset&amp;quot;);&lt;br /&gt;
                } &lt;br /&gt;
                llSetTimerEvent(30);  &lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|相关函数=&lt;br /&gt;
•  [[llSetRemoteScriptAccessPin]] – 用于设置用于远程加载的prim&lt;br /&gt;
&lt;br /&gt;
•  [[llSetScriptState]] – 设置脚本运行状态&lt;br /&gt;
&lt;br /&gt;
•  [[llResetOtherScript]] – 在prim中重置另一个脚本&lt;br /&gt;
 &lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mkx</name></author>
		
	</entry>
</feed>