BlackSheep-LSL@Wiki

llAddToLandBanList

最終更新:

mizcremorne

- view
メンバー限定 登録/ログイン

llAddToLandBanList

llAddToLandBanList(key agent, float hours)

agentに指定したUUIDのアバターをhoursに指定した時間だけ土地のBANリストに追加する。
hoursに0.0を指定すると、無期限のBANとなる。
また、hoursの下限値は0.01で、1時間の1%は36秒であるから、最小BAN期間は30秒程度である。

BANリストからアバターを取り除く場合(=立ち入りを許可する場合)はllRemoveFromLandBanList関数を使用する。

なお、BANしたいアバターのUUIDがわからない場合はこの関数を使ってBANすることができない。
LSLにはアバター名からUUIDを取得する関数が存在しないので、名前だけしかわからない相手をBANするのは困難である。
「すみません、あなたをBANしたいのでUUIDを教えていただけますか?」
と尋ねるのも現実的ではない。

通常、BANするのは何らかの迷惑行為等があった場合であるが、わざわざUUIDを調べてこの関数を使わなくても、土地の設定ウインドウを開いて名前を入力したほうが手っ取り早い。
この関数を使ってBANを自動化するような場合は、何らかのスクリプトが介在するのが普通であるから、UUIDの取得は出来るというのが前提である。
例えば、以下の例はオブジェクトに触れた者を片っ端からBANする(3分間)。

touch_start(integer detected) {
  llAddToLandBanList(llDetectedKey(0), 0.06);
}

この例のように、llDetectedKey関数などを使ってUUIDを取得可能である。

それでもどうしても名前を元にしてBANをしたいのだというこだわりのBANユーザーも居ないとも限らない。
そんな変わり者のために、外部Webサービスを利用して調べる方法が一応ある。
ただし、外部DBを参照する以上、常に利用可能とは限らないし、動作が保証されているものではない。

以下はLSL-Wikiのサンプルを改造した例である。

key requestid;
string resident;

name2key(string name){
  list names = llParseString2List(name,[" "],[]);
  resident = llDumpList2String(names," ");
  requestid = llHTTPRequest(
    "http://w-hat.com/name2key?name="
    +llDumpList2String(names,"+"),[HTTP_METHOD,"GET"],"");
}

default{
  state_entry(){
    name2key("hoge hogera");
  }
  
  http_response(key request_id, integer status, 
    list metadata, string body){
    if (request_id == requestid){
      integer i = llSubStringIndex(body,resident);
      if ( i != -1 ){
        llSay(0,llGetSubString(body,i,
          i+llStringLength(resident)+36));
      }else{
        llSay(0,"No resident named \""+resident
          +"\" found in the w-hat name2key database");
      }
    } else {
      llSay(0,(string)status+" error");
    }
  }
}

名前が"hoge hogera"のアバターのUUIDを調べる例である。
この例を利用して問題が生じた場合の責任は負いかねるのでご注意を。

もしhoge hogeraさんが実在した場合は、別に悪意があって例に使用しているわけではないということをご了承いただきたい。
記事メニュー
目安箱バナー