LlAvatarOnLinkSitTarget

来自人工智能助力教育知识百科
跳转至: 导航搜索

Template:Needs Translation/


函数名
Function: key llAvatarOnLinkSitTarget( integer link );
返回一个密钥,该密钥是位于prim上的用户的UUID。
•整数链接-链接编号(1:根prim,>1:子prim和就座化身)或链接标志

如果prim缺少一个sit目标或者没有化身坐在prim上,则返回空密钥。

注意事项
link需要是一个实际的link号或一个等同于单个prim的link常量,例如link_ROOT和link_THIS。

链接集、链接所有子项和链接所有其他子项都将不起作用。 除非以非零向量作为第一个参数调用llSitTarget/llLinkSitTarget,否则prim没有sit目标。 当有人坐在未链接的prim上时,根链接号从0变为1。 因此(llAvatarOnLinkSitTarget(0)==NULL_KEY)始终为true。没有人坐过0号链接

示例
// Unseat a second avatar on this object
 
string one_sitter_message = "Hey!  I don't take passengers.";
 
default
{
    state_entry()
    {
        // Sit target 1 is your sit target on the root prim
        llLinkSitTarget(1,<0.0,0.0,0.5>,ZERO_ROTATION);
        // Sit target 2 is the target on child prim 2, a small transparent prim inside the object
        llLinkSitTarget(2, <0.0,0.0,0.1>,ZERO_ROTATION);
    }
 
    changed(integer change)
    {
        if (change & CHANGED_LINK)
        {
            // An avatar on child prim 2, whether seated by choice or by redirection after sit target 1 is occupied, will be unseated.
            if (llAvatarOnLinkSitTarget(2))
            {
                llRegionSayTo(llAvatarOnLinkSitTarget(2),PUBLIC_CHANNEL, one_sitter_message);
                llUnSit(llAvatarOnLinkSitTarget(2));
            }
            // Now pay attention to the avatar on the root prim.                                
            key agent = llAvatarOnLinkSitTarget(1);
            if (agent)
            {
                llRegionSayTo(agent,PUBLIC_CHANNEL,"Hello!");
            }
        }
    }
}
相关函数
llGetLinkNumber–返回脚本所在的prim的链接号。

llAvatarOnSitTarget

llLinkSitTarget

llGetLinkKey

相关事件
笔记

链接编号 构成对象的每个prim都有一个地址、一个链接号。要访问对象中的特定prim,必须知道prim的链接号。除了具有链接号的prim,坐在对象上的化身也一样。 如果一个对象只由一个prim组成,并且上面没有化身,则(根)prim的链接号为零。 但是,如果对象是由多个prim组成的,或者对象上有一个化身,则根prim的链接号是1。 当化身坐在一个对象上时,它被添加到链接集的末尾,并且将拥有最大的链接数。此外,当化身坐在对象上时,如果不首先打开所有化身,对象将无法链接或取消链接prim。 计算原形和化身 当试图找到一个对象上的prim和avatar的数量时,有两个感兴趣的函数。 llGetNumberOfPrims()-返回prims和就座化身的数量。 llGetObjectPrimCount(llGetKey())-仅返回对象中的prim数,但对于附件将返回零。 integer GetPrimCount(){//始终只返回prim的数量 if(llGetAttached())//是否已附加? return llGetNumberOfPrims();//返回头像和prims,但是附件不能放在上面。 return llGetObjectPrimCount(llGetKey());//只返回prim,不处理附件。 } 请参阅llGetNumberOfPrims,了解有关计算prim和avatar的更多信息。 勘误表 如果子prim中的脚本错误地尝试访问链接0,则它将获取或设置链接集的根prim的属性。这个bug(bug-5049)是为损坏的遗留脚本保留的。 可以使用llGetObjectDetails来确定化身在sit目标上的位置(参见llSitTarget的示例)。 如果一个对象有多个座位(每个座位都有一个用llSitTarget设置坐姿目标的脚本,或者linkset有一个分配多个llLinkSitTargets的脚本),则以下方法确定化身最终位于哪个坐姿目标: 如果单击的prim有一个sit目标,而该sit目标未满,则使用该sit目标。 如果单击的prim没有sit目标,并且一个或多个其他链接的prim具有未满的sit目标,则将使用链接数最低的prim的sit目标。