<?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=LlRequestExperiencePermissions</id>
	<title>LlRequestExperiencePermissions - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="http://i.bnu.edu.cn/wiki/index.php?action=history&amp;feed=atom&amp;title=LlRequestExperiencePermissions"/>
	<link rel="alternate" type="text/html" href="http://i.bnu.edu.cn/wiki/index.php?title=LlRequestExperiencePermissions&amp;action=history"/>
	<updated>2026-06-01T06:21:11Z</updated>
	<subtitle>本wiki的该页面的版本历史</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>http://i.bnu.edu.cn/wiki/index.php?title=LlRequestExperiencePermissions&amp;diff=524&amp;oldid=prev</id>
		<title>Mkx：创建页面，内容为“{{LSL Header|ml=*}}{{LSLC|Keywords}}{{LSLC|Flow Control}}{{LSLC|}}   {{函数详情 |函数名 = Function: llRequestExperiencePermissions( key agent, string name );…”</title>
		<link rel="alternate" type="text/html" href="http://i.bnu.edu.cn/wiki/index.php?title=LlRequestExperiencePermissions&amp;diff=524&amp;oldid=prev"/>
		<updated>2020-08-03T03:53:26Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“{{LSL Header|ml=*}}{{LSLC|Keywords}}{{LSLC|Flow Control}}{{LSLC|}}   {{函数详情 |函数名 = Function: llRequestExperiencePermissions( key agent, string name );…”&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: llRequestExperiencePermissions( key agent, string name );&lt;br /&gt;
|参数= 参数：• key agent – 要向其请求权限的代理的密钥&lt;br /&gt;
&lt;br /&gt;
• string name – 已废弃，不再使用 &lt;br /&gt;
|返回值= 返回值：请求代理同意参与剧本的体验。&lt;br /&gt;
&lt;br /&gt;
这个请求类似于具有以下所有权限的[[llRequestPermissions]]: [[PERMISSION_TAKE_CONTROLS]]、[[PERMISSION_TRIGGER_ANIMATION]]、[[PERMISSION_ATTACH]]、[[PERMISSION_TRACK_CAMERA]]、[[PERMISSION_CONTROL_CAMERA]]和[[PERMISSION_TELEPORT]]。然而，与[[llRequestPermissions]]不同的是，允许或阻止请求的决定是持久的，并且适用于使用经验网格范围的所有脚本。&lt;br /&gt;
&lt;br /&gt;
经验中的脚本对llRequestExperiencePermissions的后续调用将自动收到相同的响应，而不需要用户交互。&lt;br /&gt;
&lt;br /&gt;
为响应此调用，将生成[[experience_permissions]]或[[experience_permissions_denied]]。如果代理没有给出响应，请求将在至少5分钟后超时。在此期间，同一脚本可以发出多个请求，但该脚本一次只能对一个代理拥有权限。&lt;br /&gt;
&lt;br /&gt;
“上帝”模式下的代理总是会看到权限对话框，即使之前的经验已经被批准。&lt;br /&gt;
&lt;br /&gt;
如果脚本被重新配置、移动到另一个区域或重新设置，未完成的权限请求将丢失。&lt;br /&gt;
&lt;br /&gt;
要使此函数工作，必须将脚本编译成[[Experience]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|注意事项=如果您重新编译一个以前与经验相关联的脚本，但在这样做的客户端缺乏将脚本编译成经验的能力，那么脚本将丢失相关的经验。&lt;br /&gt;
&lt;br /&gt;
|示例=&lt;br /&gt;
这是一个外壳的HUD分配器。它通过碰撞事件检测AV，然后重新启动一个对象，该对象将请求经验许可并附加到化身上&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llVolumeDetect(TRUE);&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    collision_start(integer NumberOfCollisions)&lt;br /&gt;
    {&lt;br /&gt;
        integer i = 0;&lt;br /&gt;
        for(; i &amp;lt; NumberOfCollisions; i++)&lt;br /&gt;
        {&lt;br /&gt;
            integer channel = llRound(llFrand(-1000));&lt;br /&gt;
            key give_to = llDetectedKey(i);&lt;br /&gt;
            llSay(0, &amp;quot;Rezzing HUD for &amp;quot; + (string)give_to + &amp;quot; using channel &amp;quot; + (string)channel);&lt;br /&gt;
            llRezObject(llGetInventoryName(INVENTORY_OBJECT, 0), llGetPos(), ZERO_VECTOR, ZERO_ROTATION, channel);&lt;br /&gt;
            llRegionSay(channel, &amp;quot;ATTACH|&amp;quot; + (string)give_to);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
这个脚本用于被rezzed的对象。它请求体验权限，然后将自己附加到化身上。它必须检查各种失败，如被拒绝的权限和未能附加，并在出现错误时删除自己。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Example script for LSL Experience Tools attachment&lt;br /&gt;
 &lt;br /&gt;
// This script runs on an object that is rezzed in-world which gets&lt;br /&gt;
// an Experience permissions and then attaches to an AV.&lt;br /&gt;
 &lt;br /&gt;
integer listener;&lt;br /&gt;
integer msg_channel;&lt;br /&gt;
 &lt;br /&gt;
integer log_spam_channel = 0;       // Change this or remove llSay() commands&lt;br /&gt;
 &lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer start_parameter)&lt;br /&gt;
    {   // Start listening for a message from rezzer&lt;br /&gt;
        msg_channel = start_parameter;&lt;br /&gt;
        llSay(log_spam_channel, &amp;quot;Test HUD has been rezzed&amp;quot;);&lt;br /&gt;
        listener = llListen(start_parameter, &amp;quot;&amp;quot;, NULL_KEY, &amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    listen(integer channel, string name, key id, string text)&lt;br /&gt;
    {   // Listen for the message from the rezzer with the target agent key&lt;br /&gt;
        if (channel == msg_channel)&lt;br /&gt;
        {   // Ask for the experience permission&lt;br /&gt;
            list msg = llParseString2List(text, [&amp;quot;|&amp;quot;], []);&lt;br /&gt;
            llSay(log_spam_channel, &amp;quot;Trying experience permissions request to &amp;quot; + llList2String(msg, 1));&lt;br /&gt;
            llRequestExperiencePermissions((key)llList2String(msg, 1), &amp;quot;&amp;quot;);&lt;br /&gt;
            llListenRemove(listener);&lt;br /&gt;
            llSetTimerEvent(60.0);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    experience_permissions(key target_id)&lt;br /&gt;
    {   // Permissions granted, so attach to the AV&lt;br /&gt;
        llSay(log_spam_channel, &amp;quot;Trying llAttachToAvatarTemp()&amp;quot;);&lt;br /&gt;
        llAttachToAvatarTemp(ATTACH_HUD_CENTER_1);&lt;br /&gt;
        llSay(log_spam_channel, &amp;quot;After llAttachToAvatarTemp() with llGetAttached() returning &amp;quot; + (string)llGetAttached());&lt;br /&gt;
        llSetTimerEvent(0.0);&lt;br /&gt;
        if (llGetAttached() == 0)&lt;br /&gt;
        {   // Attaching failed&lt;br /&gt;
            llDie();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    experience_permissions_denied( key agent_id, integer reason )&lt;br /&gt;
    {   // Permissions denied, so go away&lt;br /&gt;
        llSay(log_spam_channel, &amp;quot;Denied experience permissions for &amp;quot; + (string)agent_id + &amp;quot; due to reason #&amp;quot; + (string) reason);&lt;br /&gt;
        llDie();&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    attach( key id )&lt;br /&gt;
    {   // Attached or detached from the avatar&lt;br /&gt;
        if (id)&lt;br /&gt;
        {&lt;br /&gt;
            llSetTimerEvent(0.0);&lt;br /&gt;
            llSay(log_spam_channel, &amp;quot;Now attached with a key &amp;quot; + (string)id + &amp;quot; and llGetAttached() returning &amp;quot; + (string)llGetAttached());&lt;br /&gt;
            // From this point, the object can start doing whatever it needs to do.&lt;br /&gt;
            state running;&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llSay(log_spam_channel, &amp;quot;No longer attached&amp;quot;);&lt;br /&gt;
            llDie();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    timer()&lt;br /&gt;
    {   // Use a timer to catch no permissions response&lt;br /&gt;
        llSay(log_spam_channel, &amp;quot;Permissions timer expired&amp;quot;);&lt;br /&gt;
        llDie();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
// This state starts when permissions are granted and the object is properly attached&lt;br /&gt;
state running&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(log_spam_channel, &amp;quot;off and running!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    attach(key id)&lt;br /&gt;
    {&lt;br /&gt;
        if (id == NULL_KEY)&lt;br /&gt;
        {   // if the object ever un-attaches, make sure it deletes itself&lt;br /&gt;
            llSay(log_spam_channel, &amp;quot;No longer attached&amp;quot;);&lt;br /&gt;
            llDie();&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;
[[experience_permissions_denied]]&lt;br /&gt;
&lt;br /&gt;
[[experience_permissions]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mkx</name></author>
		
	</entry>
</feed>