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!");
}
}
}
}
|
相关事件
|
笔记
链接编号
构成对象的每个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目标。
|