2014/05/25

RLでもSLでも必要!遺言書

これも以前頼まれて作ったもので、SLの遺言システムです。
長期間(例えば90日)オフラインが続いたら、もうログインできないかもしれないとして、友だちに財産処分を依頼します。

過去に実際にリアルで亡くなった知人もいて、そのときはリアルの連絡先を知っていた人があとの整理をしたのですが、そういう人がいない場合、何かあったときに、不都合もあったりします。(いろんな人に迷惑をかけてしまうとか…、お金があるほど、悩みも深いのかも…(^^);

やりかたは単純で、いざというとき、信頼できる友だちに「遺言書」(ノートカード)を送り、友達に「遺言執行者」になってもらって、自分のアカウントとパスワードで財産処分や契約の解除などをお願いするというものです。

スクリプトは、自分のオンライン状態をチェックして、オフラインがずっと続いて期限を過ぎたら、友だちに「遺言書」を送ります。(オンラインしたら期限を延長)
default {
  timer() { // 一定時間ごとにチェック:オンライン問合せ
    OnlineQuery = llRequestAgentData(OwnerId,DATA_ONLINE);
  }
  dataserver(key query, string data) {
    if (query == OnlineQuery) { // オンライン問合せの結果
      if ((integer)data) { // オンラインのとき
        Expiry = llGetUnixTime()+After*DaySeconds; // 期限を延長
        llSetTimerEvent(DaySeconds); // チェックは翌日まで休憩
      }
      else if (Expiry<llGetUnixTime()) { // オフラインのまま期限が過ぎた!
        llInstantMessage(FriendId,Message); // メッセージを送る
        llGiveInventory(FriendId,llList2String(Items,0));
          // 遺言書ノートなどを贈る(実際にはアイテムの数だけ)
        llSetTimerEvent(0); // もうオンラインチェックしない
      }
      else llSetTimerEvent(OnlineCheck); // オフライン中でまだ期限前
    }
  }
}
この遺言システムは、SLマーケットプレイスで(だけ)売ってます。
(こういうのは衝動買いでは買いませんよね(^^);値段は、数字もそれっぽい、990L$) https://marketplace.secondlife.com/p/lovemax-MyLastWill/6055546

2014/05/21

リンクなしでも親子関係

宝箱の「箱」と「蓋」は別々のオブジェクトで、しかも親子関係になってます。
  • 「蓋」(子)オブジェクトは「箱」(親)の中に入っていて、親がRezされると自動で出てくる
  • 出たらすぐ、親との位置関係と回転を調整
  • その後も、親が動くと、子も同じ位置関係で追いかける
  • 追わせるために、親は動いたとき、子に自分の位置と回転を知らせる
メッセージの中に「pos:<x,y,z> rot:<x,y,z,s>」のような書式で項目名と値を書いて、通信するしかけです。

ややこしいですね~(^^;
なぜこんなことをするかというと、宝箱の蓋は、枠プリム(これが回転)と丸いカバーの2プリムでできていて、開くときには枠とカバーを一体で回したいからです。
もし蓋を箱にリンクすると、枠プリムもカバープリムも別々に箱のルートとリンクしてしまって、うまくいきません。
(千両箱と3億円ケースでは、蓋は1つのプリムだけなので、リンクしてもOKで簡単なんです)

親のメッセージデータから、子が項目の値を読むスクリプトはこんな感じ:
string getParam(string data,string name) { // データから値を得る
  integer i = llSubStringIndex(data,name); // 文字列中の項目名の先頭位置
  if (i < 0) return ""; // 項目名がないとき空文字を返す
  i += llStringLength(name); // 項目名の直後の位置
  return llGetSubString(data,i,-1); // 値の部分の文字列を返す
}
readParentPosRot(string msg) { // 親の位置と回転を読む
  string param = getParam(msg,"pos:");
  if (param) ParentPos = (vector)param; // 返答があれば値を設定
  param = getParam(msg,"rot:");
  if (param) ParentRot = (rotation)param;
}
こうして読んだ値から、子オブジェクトが位置と回転を調整する部分は:
resetPosRot() {
  Pos = ParentPos + Offset*ParentRot; // (Offset: 親に対する相対的な位置)
  Rot = RotLook * ParentRot; // (RotLook: 親に対する相対的な回転)
  llSetPos(Pos);
  llSetRot(Rot);
}

2014/05/18

勝手に変わる説明文

宝箱の上に出る説明文を、贈り物によって、自動で変わるようにしました。 (千両箱も3億円ケースも)
  • 贈り物がないときは「Touch to Open.」のみ
  • 贈り物ひとつのとき、改行して「& Get」+種類と名前
  • 二つ以上のときは「& Get」+贈り物のフォルダー名
  • グループギフトの場合は、「& Get Group」+上と同様
  • 個人的な贈り物のときは、「& Get Private Gift.」になって、どんなものかは秘密。
  • (もちろん、表示しないようにもできます)
下のスクリプトは、説明文を、中の贈り物の数と、もらえる人の設定(誰でも・グループ・特定個人)で書き換えます:
setDescText() {
  integer n = llGetListLength(GiftItems); // 贈り物の数を調べて
  if (n) { // あれば書き換える
    DescText += "\n& Get";
    if (1<User) DescText += " Private Gift."; // 個人的な贈り物のとき
    else {
      if (User==1) DescText += " Group"; // グループギフトのとき
      if (1<n) DescText += " Folder: "+FolderName; // 2つ以上はフォルダー
      else { // 1つのとき
        string name = llList2String(GiftItems,0); // 贈り物の名前
        integer type = llGetInventoryType(name); // 種類
        DescText += " "+llList2String(Types,type)+": "+name;
      }
    }
  }
}
よく、グループギフトなんかでうっかりタグを出してないと、「グループじゃないとだめ!」とか怒られたりしますが、この方法では奥ゆかしく「グループ」を示したりして、海賊のくせにとても上品ですね(^^)

あと、この説明文は、オブジェクトの「説明」にも書き込まれます。
マウスポインターを近づけると表示されるアレですね。
なので、これ見よがしに出さなくてもわかるようになっているという、文化の高い薫り(?)もする宝箱なんです(^^)

2014/05/17

千両箱と3億円入りケース

千両箱と3億円入りケースも、改良版を売りはじめました。
「千両」がたったの、1,010L$
「3億円」のほうは、1,030L$

「慶長小判」の価値ですが、ネットでは1枚170万円くらいから売ってるみたいですね~。
千枚入りですから1箱17億円!
しかもこれには、見せる用の千両箱が別に10箱分ついてます!(開くことはできません)
コピーOK、プレゼントOKですから、いくらでも財産を増やせます。
(再販はしないでね)

本物じゃなくレプリカじゃないの?という人のために、含まれる金の値段で計算すると、慶長小判1枚の重さ18g、金84%から、約7万円になります(金1グラム4,600円として)。
またもし、ロールプレイングとかで使うなら、江戸時代の物価から今のお金に換算すると、慶長小判1枚10万円くらいだそうです。

千両箱と3億円入りケースは、マーケットプレイスだけで売ってます。
マーケットプレイス
https://marketplace.secondlife.com/p/lovemax-MyTreasure-1000Box/6022514
https://marketplace.secondlife.com/p/lovemax-MyTreasure-300milBox/6022565

2014/05/16

金貨ぎっしり宝箱

以前作った「千両箱」を改良して、海賊テイストの「宝箱」を作りました。
ギイッと開けると金貨がぎっしり!こんなに素敵なお宝がたったの1,020L$!!

しかも!見た目だけでない特徴は、中に贈り物を入れて、プレゼントに使えることです!
宝箱自体も譲渡可能、コピーも可でフルパーミッション!! 贈答や贈収賄(!?)にも最適です!
(※あくまでも贈答用で、再販用ではありません)

贈り物は何でも入れるだけでOKです。
最初から入っているスクリプト等は名前の頭に ".." がついていて、贈り物とは区別がつくようになっています。(なので、贈り物の名前の頭は ".." にしないでください)

贈り物の登録とプレゼントのスクリプトはこんな感じです:
setGiftItems() { // 登録
  string name;
  integer n = llGetInventoryNumber(INVENTORY_ALL); // 中身の数
  integer i = 0;
  for (; i<n; ++i) {
    name = llGetInventoryName(INVENTORY_ALL,i);
    if (".." != llGetSubString(name,0,1)) GiftItems += [name];
  } // 名前の頭が ".." でなければ贈り物として登録
}
giveGiftItems(key id) { // プレゼント
  integer n = llGetListLength(GiftItems); // 贈り物の数
  if (n==0) return;
  else if (n==1) llGiveInventory(id, llList2String(GiftItems,0));
  else llGiveInventoryList(id, FolderName, GiftItems);
} // 2つ以上のときはフォルダーに入れる
宝箱はマーケットプレイスと築地、ラブホのDmartで売ってます。
マーケットプレイス
https://marketplace.secondlife.com/p/lovemax-MyTreasure-TreasureBox/6022575
築地場外市場(SLurl)
http://slurl.com/secondlife/TSUKIJI/80/55/22/
LOVEHO Dmart(SLurl)
http://slurl.com/secondlife/LOVEHO/189/180/23/
見本を上空の「MyCastle+」ショウルームのどこか(!?)に置きました。探してみてください。
ただし、トレハンのような豪華プレゼントはないので、期待しないでね(^^;)

2014/05/07

お城と岩のセット販売

今までお城と滝のある岩を別々に売ってましたが、セットで売ることにしました。
(もともと組み合わせができるように作っていましたので…(^^)
値段は、城325+岩275-セット割引75=525L$で、たいへん「お得」になっています!(^^)!

スカイボックスなので、本体が入った箱を地上に置いて、座って出るメニューで上空に行き、そこで城と岩を設置する仕掛けです。
親切設計:(^^
  • 箱を地上に置いたとき、メートル単位でぴったりの位置になるよう、自動で位置調整。
  • 本体の設置範囲を地上で確認できるよう、一時オブジェクトを出せる。
本体設置のとき、2つのオブジェクト(城と岩)を順番に、箱自身が移動しながら置いて行きます。
その部分のスクリプトはこんな感じです:
list Rooms = ["MyWaterfall",<0,0,22>,"MyCastle"];
 // オブジェクト名と移動ベクトルを登録しておく
default {
  listen(integer ch,string na,key id,string button) {
    if (button=="MyCastle+") { // メニューでボタンが押されたら
      string name;
      vector move;
      integer n = llGetListLength(Rooms);
      integer i = 0;
      for (; i<n; i+=2) { // 登録オブジェクトの数だけ
        name = llList2String(Rooms,i); // オブジェクト名
        move = llList2Vector(Rooms,i+1); // 移動ベクトル
        rezRoom(name); // オブジェクトをRezする
        if (move) jumpPos(llGetPos()+move); // ゼロベクトルでなければ移動
      }
    }
  }
}

2014/05/05

お店の模様替え

築地のお店が広くなって、ちょっと模様替えをしました。
今まで「半分」だった展示・デモ飛行船もフルサイズのを置けるようになりました。
(「半分」というのも、一部にはウケていたのですが…(^^)
上空に「MyCastle」ショウルームも置きました。
(テレポートのデモ機から行けます)

築地場外市場(SLurl)
http://slurl.com/secondlife/TSUKIJI/80/55/22/