V1.1.0まではログインのときだけアンチボットのダイアログが出せたのを一定時間毎のチェックもできるように変更したんですよ。メニューからOFF、一度のみ(ログイン時)、10分、15分、30分、45分、60分、90分、120分間隔の切り替えが可能です。
旧バージョン(V1.1.0以上)をお持ちのお客様は、装置を持ち物から出したときにアップデート品が届くと思いますので宜しくお願いします^^

Zone campはL$400で発売中です♪
Second life内で経営してるショップの宣伝用です
// Profile picks gift
string url="http://○○○.××/picks.php"; // 外部サーバーに置いたスクリプトのアドレス
default
{
touch_start(integer total_number)
{
key id=llDetectedKey(0); // タッチしたアバターのキー
if (id) {
key place=llList2Key(llGetParcelDetails(llGetPos(),[PARCEL_DETAILS_ID]),0); // 土地のUUID取得
llHTTPRequest(url,[HTTP_METHOD,"POST", HTTP_MIMETYPE,"application/x-www-form-urlencoded"],"place="+(string)place+"&id="+(string)id); // 外部サーバーにデータを送ってチェック
}
}
http_response(key request_id, integer status, list metadata, string body)
{ // HTTPレスポンス
if (status != 200) llWhisper(0,"Error - status "+(string)status); // ステータス200以外はエラー表示
else {
body=llStringTrim(body,STRING_TRIM); // 改行コードを除去
list l=llCSV2List(body); // カンマで分割してリストに格納
key id=llList2Key(l,0); // アバターのキー
string result=llList2String(l,1); // 結果
if (id) {
if (result == "OK") { // OKだったら
llGiveInventory(id,llGetInventoryName(INVENTORY_OBJECT,0)); // コンテンツ内の最初のオブジェクトを渡す
llInstantMessage(id,"Thank you for having our place in your picks.");
}
else { // NGのとき
llInstantMessage(id,"Our place not found in your picks. ('Show in search' must be enabled) Please add this place in your picks and try again 1 or 2 days later.");
}
}
else llOwnerSay("Data error!");
}
}
}
<?php
// picks.php
// フォームデータ取得
$id=isset($_REQUEST['id'])? $_REQUEST['id']:""; // アバターのキー
$place=isset($_REQUEST['place'])? $_REQUEST['place']:""; // 土地のキー
if (!$id || !$place) exit; // フォームデータがなかったら終了
// プロフィールのピックページからデータ取得
$data=implode("",file("http://world.secondlife.com/resident/".$id."/picks"));
// 土地のキーの有無を調べて結果を出力
if (strpos($data,'/place/'.$place.'">')) echo $id.",OK";
else echo $id.",NG";
?>
#!/usr/bin/env python
# picks.py
import sys,urllib,cgi
form=cgi.FieldStorage()
id=form.getvalue("id")
place=form.getvalue("place")
print "Content-Type: text/plain; charset=UTF-8\n\n"
if id == None or place == None:
sys.exit()
fp=urllib.urlopen("http://world.secondlife.com/resident/"+id+"/picks")
if fp.read().find('/place/'+place+'">') > -1:
print id+",OK"
else:
print id+",NG"
#!/usr/bin/perl
# picks.pl
use CGI;
use LWP::Simple;
# フォームデータ取得
$q=new CGI;
$id=$q->param('id');
$place=$q->param('place');
# サーバー用ヘッダ
print "Content-Type: text/plain; charset=UTF-8\n\n";
# フォームデータがなかったら終了
if ($id eq "" || $place eq "") {
exit;
}
# プロフィールのピックページからデータ取得
$data=get("http://world.secondlife.com/resident/$id/picks");
# 土地のキーの有無を調べて結果を出力
if (index($data,'/place/'.$place.'">') > -1) {
print "$id,OK";
}
else {
print "$id,NG";
}


Second Lifeというメタバース内でスクリプト製品、家具、その他雑貨などのアイテムを製作販売してます。宜しくお願いします^^
旧ブログで書いてた過去記事は放置かも - SHOP CHIHIRO (backup)に保存してます。
掲載してるスクリプトは自由にご利用ください^^ 但し、一応全部自作なので著作権は発生すると思います。なのでオープンソースで配布や掲載などされるときは、載せてる記事へのリンク貼るとか、私が作者だとわかるような表示をお願いしますね^^
You may use published scripts on this blog, but I have those copyright. When publish, opensourced redistribution or resale them, must link to a my page of that published script or retain the copyright notice by including 'Written by Chihiro Owatatsumi' in the source code.