
この商品は現在BELLE ROSE店のみに置いてます。宜しくお願いします^^
11月2日19時頃追記: サンタモニカ第二モールのジョイントショップにも置いてみました。
// 飛んだとき羽ばたくウイング(親プリム用)
float angle;
default
{
attach(key on)
{ // 装着されたときは1秒ごとにタイマー
if (on) llSetTimerEvent(1.0);
else llSetTimerEvent(0);
}
timer()
{
if (llGetAgentInfo(llGetOwner()) & AGENT_FLYING)
{ // 飛んでるとき
if (angle < 45) angle=75; // 角度が45度までだったら75度に設定
else angle=15; // そうじゃないときは15度に設定
llMessageLinked(LINK_ALL_CHILDREN, 0, (string)angle, ""); // 子プリムに角度を送信
}
else { // 飛んでないとき
if (angle != 10) { // 角度が10度じゃなかったら
angle=10; // 10度に設定
llMessageLinked(LINK_ALL_CHILDREN, 0, (string)angle, ""); // 子プリムに角度を送信
}
}
}
}
// 飛んだとき羽ばたくウイング(右側の羽)
default
{
link_message(integer sender_num, integer num, string msg, key id)
{ // リンクメッセージ受信したら角度を設定
llSetLocalRot(llEuler2Rot(<90,0,(float)msg>*DEG_TO_RAD));
}
}
// 飛んだとき羽ばたくウイング(左側の羽)
default
{
link_message(integer sender_num, integer num, string msg, key id)
{ // リンクメッセージ受信したら角度を設定(こっちの角度はマイナスに)
llSetLocalRot(llEuler2Rot(<90,0,-(float)msg>*DEG_TO_RAD));
}
}
default
{
touch_start(integer total_number)
{
integer i=llDetectedTouchFace(0); // タッチされた面の番号
llSay(0,"face = "+(string)i); // 古いビューワーは -1 になる
}
}
// 床下収納
float size=0.2; // 中空のサイズ
float time=600; // 閉じるまでの時間
float hollow=0; // 中空値の保存用
set_hollow(float f) // 引数は中空の値
{
// プリム(ボックス)の中空を設定
llSetPrimitiveParams([PRIM_TYPE,PRIM_TYPE_BOX,PRIM_HOLE_DEFAULT,<0,1,0>,f,<0,0,0>,<1,1,0>,<0,0,0>]);
if (f > 0) llSetTimerEvent(time); // 開いてる(中空がある)ときはタイマー始動
else llSetTimerEvent(0); // そうでないときタイマー停止
hollow=f; // 変数に中空の値を保持
}
default
{
touch_start(integer total_number)
{
if (llDetectedKey(0) == llGetOwner()) { // オーナーがタッチしたら
if (hollow > 0) set_hollow(0); // 開いてるときは閉じる
else set_hollow(size); // そうでないときは開く
}
}
timer()
{ // タイマーイベント発生したら
set_hollow(0); // 閉じる
}
}
// 訪問者を記録
integer max=50; // 最大記録件数
list visitor; // 来訪時刻とビジター記録用リスト
string get_time()
{
integer t=(integer)llGetWallclock(); // 太平洋時間
integer h=t/3600; // 時
integer m=(t%3600)/60; // 分
string hh=(string)h; // 「時」を文字に変換
if (h < 10) hh="0"+hh; // 「時」が1桁だったら0を付ける
string mm=(string)m;
if (m < 10) mm="0"+mm;
return hh+":"+mm; // hh:mm でリターン
}
save_visitor(string name)
{
integer i=llListFindList(visitor,[name]); // リストから名前をサーチ
if (i > -1) { // リストに名前があったら
visitor=llDeleteSubList(visitor,i-1,i); // 時間と名前を削除
}
visitor+=[get_time(),name]; // リストに時間と名前を登録
integer j=llGetListLength(visitor); // リストの長さ
if (j > max*2) { // リストが最大記録数×2を超えたら
visitor=llDeleteSubList(visitor,0,j-1-max*2); // 古いほうから消す
}
}
default
{
collision_start(integer num)
{ // 接触したら
string name=llDetectedName(0); // アバター名取得
save_visitor(name); // save_visitorへ
}
touch_start(integer total_number)
{ // タッチ
key agent=llDetectedKey(0); // アバターのキー
if (agent == llGetOwner()) { // オーナーなら
integer i;
integer j=llGetListLength(visitor); // リストの長さ
llOwnerSay((string)(j/2)+" visitor(s)."); // 訪問者数表示
for (i=0; i < j; i+=2) { // リストから2つずつ読み出し(時間と名前)
llOwnerSay(llList2String(visitor,i)+" "+llList2String(visitor,i+1));
}
}
}
}
SLMaMe(ソラマメ)サポート担当です。
平素は、SLMaMe(ソラマメ)をご利用いただき誠にありがとうございます。
原則的には、ユーザー様同士のトラブルはユーザー様同士での話し合い・ご解決を尊重し
ておりますが、下記ページのルールに基づき、本人様からの申し出により、非表示等の対応
させて頂いております。
http://staff.slmame.com/e157314.html
「SLMaMeでは、アバター名を明示、もしくはそれに同等の表現による誹謗中傷の疑いが
ある記事について、アバター名を明示された本人からの申し出により、事実如何に関わらず、
該当ブログ記事非表示等の対応を行います。」
なお、プロバイダ責任法など法令に基づく正式な照会等を受けた場合や、法令に基づく
公的機関からの照会には応じております。
今後とも、SLMaMe(ソラマメ)をよろしくお願い申し上げます。
// 気前良くお金をばらまく
integer amount=1; // 金額
float range=96; // スキャンする範囲(最大96)
string name;
default
{
touch_start(integer total_number)
{
key agent=llDetectedKey(0); // タッチしたアバターのキー
if (agent == llGetOwner()) { // オーナーだったら
name=llDetectedName(0); // アバター名取得
llRequestPermissions(llGetOwner(), PERMISSION_DEBIT); // 口座引き落としリクエスト
}
}
run_time_permissions(integer perm)
{
if (perm & PERMISSION_DEBIT) { // 口座引き落とし許可されると
llSensor("",NULL_KEY,AGENT,range,PI); // センサー実行
}
}
sensor(integer num_detected)
{
integer i;
for (i=0; i < num_detected; i++)
{ // センサーでキャッチしたアバター全員に
llGiveMoney(llDetectedKey(i),amount); // お金を払う
}
llShout(0,"只今、お金が有り余って困ってる "+name+" がお金をばらまいておりますw"); // 周囲100mにアナウンス
}
}
// 送信用HUD
integer ch=10020550; // 送信用チャンネル
integer color=0; // 色リストのポインタ用
integer len;
list color_list=[<1,1,1>,<1,0,0>,<0,1,0>,<0,0,1>]; // 色のリスト
default
{
state_entry()
{
len=llGetListLength(color_list); // 色の数
}
touch_start(integer total_number)
{
color++; // ポインタ加算
if (color >= len) color=0; // 色数を超えたらポインタを0にする
string str=llList2String(color_list,color); // 色リストのデータを文字データに変換
llSay(ch,str); // データ送信
}
}
// 受信用オブジェクト
integer ch=10020550; // 受信するチャンネル(送信と同じチャンネル)
default
{
state_entry()
{
llListen(ch,"",NULL_KEY,""); // 受信チャンネルでリッスン開始
}
listen(integer channel, string name, key id, string msg)
{
if (llGetOwner() == llGetOwnerKey(id))
{ // オーナーと送信HUDのオーナーが一致したら
if (llGetSubString(msg,0,0) == "<")
{ // データの最初が < だったら
vector v=(vector)msg; // データをベクター値に変換
llSetColor(v,ALL_SIDES); // 色設定
}
}
}
}