LSL(Linden Script Language)スクリプトTips集

オーナー専用の椅子!座ろうとするアバターを立たせる(llAvatarOnSitTarget関数,llUnSit関数)

自分専用の椅子や乗り物をつくった時など、他の人が座ったときに
強制的に座れない(乗れない)ようにロック(座ろうとしたとき立ち上がらせる)します。

下記のスクリプトを使います。オーナー以外が座った場合、「Only the owner can use it.」という メッセージが表示され、座ることができません。

default {
  state_entry(){
    llSitTarget(<0.0, 0.0, 0.1>, ZERO_ROTATION);
  }
  changed(integer change){
    if (change & CHANGED_LINK) {
      key av = llAvatarOnSitTarget();
      if (av != NULL_KEY && av != llGetOwner()) {
        llSay(0,"Only the owner can use it. ");
        llUnSit(av);
      }
    }
  }
}
llAvatarOnSitTarget関数
座っているアバターのIDを取得します。
llUnSit関数
座っているアバターを立ち上がらせます。
一番目のパラメータ : 立ち上がらせるアバターのID
changeイベント
プリム・オブジェクトに変更があったときに発生するイベントです。
一番目のパラメータ : CHANGEDパラメータ
(参考) CHANGEDパラメータ
CHANGED_INVENTORY : コンテンツの中身が変わったとき
CHANGED_COLOR : 色が変わったとき
CHANGED_SHAPE : シェイプが変わったとき
CHANGED_SCALE : 変更パラメータ
CHANGED_TEXTURE :テクスチャが変わったとき
CHANGED_LINK : 座ったとき、立ったとき
CHANGED_ALLOWED_DROP:modify権限がない人がアイテムをドロップした場合
CHANGED_OWNER :オーナー(所有者)が変わったとき
CHANGED_REGION :SIMが変わったとき
CHANGED_TELEPORT :ユーザーがテレポートしたとき

※LSLには(Touch)タッチした時のイベントはありますが、(SitDown)座ったときのイベントがありません。 その為、CHANGEイベントを使用します。llSitTargetについては、こちらのサンプルを参考にしてください。アバターの座る位置