2013/09/21

部外者を土地から追い出す!

友だちの依頼で作ったセキュリティシステムなんですが、部外者を追い出すとき、「土地」全体を調べてます。
(写真はイメージです(^^)

スクリプトはこんな感じ:
default { 
  state_entry() {
    llSetTimerEvent(Cycle);
  }
  timer() { // 一定時間ごとに
    list agents=llGetAgentList(
        AGENT_LIST_REGION,[]);
        // 土地にいる人を調べる
    key id;
    integer n=llGetListLength(agents);
    integer i=0;
    for(; i<n; ++i) {
      id=llList2Key(agents,i);
      if (id!=llGetOwner() && llSameGroup(id)==FALSE)
        llTeleportAgentHome(id); // 部外者はホームに強制送還
    }
  }
}
llGetAgentList() という関数で、センサーと違って距離の制限なしに、地上からはるか上空までどこにいても調べられます。
パラメーターの AGENT_LIST_REGION はSIM全体を調べるという指定で、このほか1区画だけ、オーナーが所有する区画全部、というような指定もできます。
[] には条件リストを入れるらしいですが、今はまだ準備中みたいです。

LlGetAgentList - Second Life Wiki

このセキュリティシステムの本体は、実はすご~~く強力で、設定も複雑になっちゃったので、一般には売り出してません(^^;
でもまあ、ご興味ある方には、個別にご相談に乗りますので、ご連絡ください。(^^)v