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

		<summary type="html">&lt;p&gt;创建页面，内容为“{{LSL Header|ml=*}}{{LSLC|Keywords}}{{LSLC|Flow Control}}{{LSLC|}}   {{函数详情 |函数名 = Function: llSensorRepeat( string name, key id, integer type, float r…”&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: llSensorRepeat( string name, key id, integer type, float range, float arc, float rate );&lt;br /&gt;
|参数= 参数：• string name – 对象或角色名称!&lt;br /&gt;
&lt;br /&gt;
• key id – [[group]], [[avatar]] or [[object]] [[UUID]] &lt;br /&gt;
&lt;br /&gt;
• integer type – mask ([[AGENT_BY_LEGACY_NAME]], [[AGENT_BY_USERNAME]], [[ACTIVE]], [[PASSIVE]], and/or [[SCRIPTED]]) &lt;br /&gt;
&lt;br /&gt;
• float range – 射程以米为单位[0.0,96.0]&lt;br /&gt;
&lt;br /&gt;
• float arc – 基本物体局部x轴与可探测物体之间的最大角度，距离[0.0,PI]&lt;br /&gt;
&lt;br /&gt;
• float rate – 一个sensor/no_sensor排队的频率。&lt;br /&gt;
&lt;br /&gt;
|返回值= 返回值：对名称和id执行一次扫描，扫描类型在前向向量的距离米和弧弧度内，并在每个速率秒内重复。直到速率秒过后，它才执行第一次扫描。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
如果名称、id和/或类型为空或0，则忽略它们。&lt;br /&gt;
&lt;br /&gt;
如果id是无效的键或NULL_KEY，则将其视为空。&lt;br /&gt;
&lt;br /&gt;
根据所使用的代理*标志决定名称的格式要求&lt;br /&gt;
&lt;br /&gt;
|注意事项=当搜索一个角色，但不是通过名字，它无关紧要的代理标志使用。&lt;br /&gt;
&lt;br /&gt;
传感器事件的重复受到 [[time dilation]]（滞后)的不利影响。&lt;br /&gt;
&lt;br /&gt;
放置在附件根部prim的传感器将使用化身面对的方向作为它们的向前矢量。在mouselook中，这意味着它会在化身所看的任何地方，而在mouselook之外，这意味着化身指向的任何方向。这并不包括化身的头指向哪里，或者化身正在做什么动画，只是如果你向前走，化身将移动的方向。无论物体附着在哪里，情况都是如此。&lt;br /&gt;
&lt;br /&gt;
放置在附着物根prim以外的prim中的传感器，其正向方向将相对于根prim的正向方向偏移，例如，放置在prim中的传感器，如果其+X方向是根的反向，则传感器将向后看。&lt;br /&gt;
&lt;br /&gt;
只有最近的传感器事件被排队。之前的传感器事件被替换。&lt;br /&gt;
&lt;br /&gt;
重复传感器不能在状态更改时持续存在。&lt;br /&gt;
&lt;br /&gt;
llSensorRepeat偶尔可以检测出它的指定范围外，每隔几个周期，当使用接近sim边界。定时器中的[[llSensor]]则不是。&lt;br /&gt;
&lt;br /&gt;
每个脚本只能激活一个或零个llSensorRepeats。如果在没有调用[[llSensorRemove]]的情况下第二次调用llSensorRepeat，第一个llSensorRepeat将失效，第二个llSensorRepeat将替换它&lt;br /&gt;
&lt;br /&gt;
|示例=&lt;br /&gt;
示例1&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//作者:Steamy Latte。&lt;br /&gt;
//每30秒扫描10米以内的游客。&lt;br /&gt;
//当对象所有者在范围内时，向其报告新的访问者。&lt;br /&gt;
 &lt;br /&gt;
string AllAgents;&lt;br /&gt;
 &lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        // arc=PI 是一个球体，你可以在物体面对的方向上看得更细一些，有/2，/4等等。&lt;br /&gt;
      //为了避免滞后，不要重复太多。&lt;br /&gt;
        llSensorRepeat(&amp;quot;&amp;quot;, &amp;quot;&amp;quot;, AGENT_BY_LEGACY_NAME, 10.0, PI, 30.0);&lt;br /&gt;
    }&lt;br /&gt;
    sensor(integer num_detected)&lt;br /&gt;
    {&lt;br /&gt;
        string thisAgent;&lt;br /&gt;
        integer agentNum;&lt;br /&gt;
        for (agentNum=0; agentNum&amp;lt;num_detected; agentNum++)&lt;br /&gt;
        {&lt;br /&gt;
            thisAgent = llDetectedName(agentNum);&lt;br /&gt;
            if (llDetectedKey(agentNum) == llGetOwner())&lt;br /&gt;
            {&lt;br /&gt;
                if (AllAgents != &amp;quot;&amp;quot;)&lt;br /&gt;
                {&lt;br /&gt;
                    llOwnerSay(&amp;quot;We've had the following visitors:&amp;quot; + AllAgents);&lt;br /&gt;
                    AllAgents = &amp;quot;&amp;quot;;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else if (llSubStringIndex(AllAgents+&amp;quot;\n&amp;quot;, &amp;quot;\n&amp;quot;+thisAgent+&amp;quot;\n&amp;quot;) &amp;lt; 0)&lt;br /&gt;
            {&lt;br /&gt;
                AllAgents = AllAgents + &amp;quot;\n&amp;quot; + thisAgent;&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;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//作者Evans Love。&lt;br /&gt;
//(通过Void Singer限制最近的200个名称，以防止栈/堆冲突+清理)&lt;br /&gt;
//持续扫描10米以内的访问者，并向对象所有者报告新的访问者。&lt;br /&gt;
//-------------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
integer RESPONSE_CHANNEL = -100;&lt;br /&gt;
float   SCAN_RANGE       = 10.0;&lt;br /&gt;
float   SCAN_INTERVAL    = 20.0;&lt;br /&gt;
list    VISITOR_LIST;&lt;br /&gt;
 &lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSensorRepeat(&amp;quot;&amp;quot;, NULL_KEY, AGENT_BY_LEGACY_NAME, SCAN_RANGE, PI, SCAN_INTERVAL);&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    sensor(integer number_detected)&lt;br /&gt;
    {&lt;br /&gt;
        integer agent_number;&lt;br /&gt;
 &lt;br /&gt;
//遍历所有检测到的代理&lt;br /&gt;
        for (; agent_number &amp;lt; number_detected; agent_number++)&lt;br /&gt;
        {&lt;br /&gt;
            string  this_agent_name = llDetectedName(agent_number);&lt;br /&gt;
            key     this_agent_key  = llDetectedKey(agent_number);&lt;br /&gt;
 &lt;br /&gt;
//如果在列表中没有找到代理&lt;br /&gt;
            if (llListFindList(VISITOR_LIST, [this_agent_name]) == -1)&lt;br /&gt;
            {&lt;br /&gt;
//加上她/他，使名单保持最后200人&lt;br /&gt;
                VISITOR_LIST = [this_agent_name] + llList2List(VISITOR_LIST, 0, 198);&lt;br /&gt;
 &lt;br /&gt;
                llDialog(this_agent_key, &amp;quot;Welcome!&amp;quot;, [&amp;quot;Ok&amp;quot;], RESPONSE_CHANNEL);&lt;br /&gt;
 &lt;br /&gt;
                llOwnerSay(this_agent_name);&lt;br /&gt;
            }&lt;br /&gt;
// else agent已经在列表中了&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;
[[llSensor]] - 运行传感器一次&lt;br /&gt;
&lt;br /&gt;
[[llSensorRemove]] - 停止llSensorRepeat计时器&lt;br /&gt;
&lt;br /&gt;
[[llOverMyLand]] - 所有者的土地会发生什么&lt;br /&gt;
&lt;br /&gt;
|相关事件=&lt;br /&gt;
[[sensor]] - 当传感器探测到某物时触发&lt;br /&gt;
&lt;br /&gt;
[[no_sensor]] -  当传感器探测不到任何东西时触发&lt;br /&gt;
}}&lt;br /&gt;
附录：（表格）&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | type Flag Mask &lt;br /&gt;
! Description ([[llDetectedType]]) &lt;br /&gt;
! Description ([[llSensor]] and llSensorRepeat() mask) &lt;br /&gt;
|-&lt;br /&gt;
| [[AGENT_BY_LEGACY_NAME]]&lt;br /&gt;
| 0x1  &lt;br /&gt;
| Agents &lt;br /&gt;
| 这用于按遗留名称查找代理。&lt;br /&gt;
|-&lt;br /&gt;
| [[AGENT]] &lt;br /&gt;
| 0x1 &lt;br /&gt;
| Agents &lt;br /&gt;
| 它还用于根据遗留名称查找代理，并且在功能上与[[AGENT_BY_LEGACY_NAME]]相同&lt;br /&gt;
|-&lt;br /&gt;
| [[AGENT_BY_USERNAME]]&lt;br /&gt;
| 0x10 &lt;br /&gt;
| Reserved &lt;br /&gt;
| 它用于按用户名查找代理。&lt;br /&gt;
|-&lt;br /&gt;
| [[ACTIVE]] &lt;br /&gt;
| 0x2 &lt;br /&gt;
| Physical tasks. (Physical objects &amp;amp; agents) &lt;br /&gt;
| 正在移动的物理对象或包含活动脚本的对象。因此，它现在正在使用SL服务器资源。&lt;br /&gt;
|-&lt;br /&gt;
| [[PASSIVE]]&lt;br /&gt;
| 0x4 &lt;br /&gt;
| Non-physical objects. &lt;br /&gt;
| 非脚本或脚本是不活动的和非物理的，如果是物理的，是不移动的。因此，它现在不使用SL服务器资源。&lt;br /&gt;
|-&lt;br /&gt;
| [[SCRIPTED]]&lt;br /&gt;
| 0x8 &lt;br /&gt;
| Objects containing any active script. &lt;br /&gt;
| 有任何脚本的对象，它现在在模拟器中做任何事情。&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Mkx</name></author>
		
	</entry>
</feed>