alt=
ソラマメブログ > HOME > スクリプト

  

Posted by at

セカンドライフ内からTwitter投稿する方法

2013年12月23日

ガラケー用Twitter投稿サービス「モバツイ」を利用すると、SLから簡単にツイートできます。
この記事は、その方法を紹介します。

■概要
モバツイは、登録するとツイート専用のメアドが表示されます。ツイートしたい文章をメールの「件名」に書いて、このメアドに送信するとツイートできます。本来ガラケーで利用するサービスですが、セカンドライフ内からこのメアドに投稿してもツイートできます。それを利用します。

■モバツイを利用してツイートするスクリプト
モバツイの登録方法は後半で説明します。まずは、Twitter投稿するLSLの例を記載します。


//
// SLからTwitterに送信するスクリプト(モバツイ登録必須)
//
string address = "xxxxxx@p.movatwi.jp";// モバツイの送信用メールアドレス
string text= "フリーザ様のお店が開きますよ!!"; // 投稿するメッセージ
default{
touch_start(integer total_number){
string title="=?UTF-8?B?"+llStringToBase64(text)+"?=";
llSetText("送信中...",<1,0,0>,1);
        llEmail(address,title,"body-dmy");//モバツイはメール本文は無視される
llSetText("送信完了",<1,1,1>,1);
}
}

タッチすると、Twitterに「フリーザ様のお店が開きますよ!!」とツイートするスクリです。
textは適当にかえれば、ザーボンさんでもドドリアさんでも自由に変えれます。
なお、llEmail関数は呼び出されると20秒くらい固まります。

string address = "xxxxxx@p.movatwi.jp";// モバツイの送信用メールアドレス
の取得方法は下記参照してください。


■モバツイ登録方法(モバツイ送信用メアドの取得方法)
※モバツイはかなり古くからあるサービスで問題ないと思いますが、登録は自己責任でお願いします。

1.モバツイのURLにアクセスしてTwitterにログインを押す
http://s.movatwi.jp/


2.twitterの認証画面が表示されます。内容を確認して許可します


3.右上の鉛筆マークをクリック


4.メールで写真付きツイート(写ツ)を右クリックし、メニューから
「ショートカットのコピー」もしくは「メールアドレスのコピー」もしくは「URLのコピー」を選択します。



5.メールアドレスの貼り付け
さっきのLSLのスクリの部分にコピーしたメアドを貼り付けてください
string address = "xxxxxx@p.movatwi.jp";// モバツイの送信用メールアドレス


※この記事は、セカンドライフ 技術系 Advent Calendar 2013 の記事です。   


Posted by uten at 03:08Comments(0)スクリプト

Firestorm専用のレーダースクリプト

2013年12月20日

SecondlifeビューワのFirestormには謎の機能がいくつかあるのですが、
その一つに「レーダーに表示されるユーザのUUIDをsayする」という機能があります。
「レーダーに表示されるユーザ」といっているのは以下のウインドウに表示されるユーザ一覧のことです。


sayさせるコマンドは以下です。
llTriggerSound("76c78607-93f9-f55a-5238-e19b1a181389", 1.0);
これをLSLで実行するとレーダー上に表示されているアバターのUUIDをカンマで区切った文字列が、チャンネル「-777777777」にsayされます(Sayなので誰でもListenできるところは注意)

参考情報 http://wiki.phoenixviewer.com/scripting_the_radar
(これしか情報がなく、参考にならないのですが・・・)


ちなみに、上図のように7万m以上離れているユーザでも、
レーダーの一覧にさえ映っていればuuidを取得できます。



レーダーを15秒毎にチェックして、指定したUUID(サンプルはuten Resident)を見つけたら通知するスクリを科いてみました。
Firestormでしか動かないスクリプトです。


//
// レーダーに現れたら通知したいユーザのUUID
key target_uuid="988bd4ba-706b-495e-98d2-20da78705a3b";//uten
//
integer detected=0;
integer detected_bak=0;

default{
state_entry(){
llOwnerSay("レーダーチェック開始");
llListen(-777777777,"",NULL_KEY,"");
// 15秒ごとにレーダーチェック
llSetTimerEvent(15);
}
listen(integer channel, string name, key id, string message){
integer i;
string radar_uuid;

list my_list=llParseString2List(message,[","],[""]);
integer end = llGetListLength(my_list);
for (i=2; i<end; ++i){
// レーダーに映っているUUIDを抽出
radar_uuid=llList2String(my_list,i);

if(target_uuid==radar_uuid){
// ターゲットを発見
if(detected_bak==0){
llOwnerSay("ターゲットの人がレーダーにあらわれた");
}
detected=1;
detected_bak=1;
}
}

}
timer(){
if(detected_bak==1 && detected==0){
llOwnerSay("ターゲットの人がレーダーから消えた");
}
detected_bak=detected;
detected=0;
// レーダーをチェックしてUUIDを-777777777にsayさせる謎のコマンドw
llTriggerSound("76c78607-93f9-f55a-5238-e19b1a181389", 1.0);
}
}


※このスクリはあくまでサンプルです。sayはみんなに聞こえますので、セキュリティ的問題がありますw

しかし、ここまで書いておいてなんですが、
llSensorllGetAgentListllGetAgentSizeを使うよりもメリットがあるかどうかは不明!
有用な使い方を思いついた方は是非お知らせいただきたいです^0^


※この記事は セカンドライフ 技術系 Advent Calendar 2013 の記事です。   


Posted by uten at 01:22Comments(1)スクリプト

SIM横断テレポーター

2013年12月12日

同様の記事をどこかで見たことある気もするのですが投稿!

■テレポーター
オブジェクトに座るとオブジェクトが所定の場所にテレポして、乗った人を下ろす。
これがよくあるテレポーターです。しかし、普通のテレポーターはSIM越えできません。
なぜなら、普通のテレポーターはllSetRegionPosという関数を使うのですが、
この関数がSIM越え出来ないからです。

ちなみに、最近llTeleportAgent()というSIM越え出来るテレポ関数ができましたが、
この関数は「オブジェクト所有者のみがテレポ対象」なので、HUDや装着して使うイメージです。
「誰でも座ったらテレポ」というタクシーみたいなテレポーターの実装には利用できません。

■じゃあSIM越えテレポするには!?
llSetRegionPos(vPos)でSIMの範囲外を指定すると、SIMの外に飛び出せる事を利用します。
SIMの範囲はvPos=<0,0,z>~<255,255,z>ですが、
vPosに<-2,-2,z>~<258,258,z>くらいまで入れても正常動作します(※)。
隣のSIMにはみ出た後、目的地にllSetRegionPos()で移動すれば、SIM越えテレポできるわけです。
※あまりでっかくはみ出ると、動きがおかしくなりました。

実験してみた感じ、2SIM間の往復はちょっとsleepを入れて移動すれば安定動作しました。
ただ、それ3SIM以上移動すると、sleepをいくらいれても不安定になりました。
テレポーターが消えたり、アバターが存在しないテレポーターに勝手に座ったりします。

■サンプル 4SIM横断テレポーター
あえて、挙動のおかしくなる4SIM横断テレポーターのサンプルを乗せますw
座ると、PrimarySIMからAkibaSIMに移動して、その後AkibaSIMからPrimarySIMに戻ってくるスクリプトです。
(①→②→③→④→③→②→①の移動をします)



実行後オブジェクトの挙動がおかしくなるため、オブジェクトを llDie()して消してます。
このスクリはPrimarySIMでしか動きません。Primaryの砂場とかで遊んでください。
PrimarySIMの砂場 http://maps.secondlife.com/secondlife/Primary/40/26/22

適当なオブジェクトに以下のスクリをいれて座ると秋葉にワープします。

//
// Primary 4SIM横断テレポーター
//
// 注意
// このスクリプトはPrimary SIMでしか動作しません
// http://maps.secondlife.com/secondlife/Primary/46/24/22
// 砂場で試してみてね
//
go2Akiba(vector myPos,key uuid){
vector Akiba2Ueno=<-2,126,1000>;
vector Ueno2Nippori=<-2,126,1000>;
vector Nippori2Primary=<126,-2,1000>;
vector center=<130,124,22>;

vector Ueno2Akiba=<258,126,1000>;
vector Nippori2Ueno=<258,126,1000>;
vector Primary2Nippori=<126,258,1000>;

llSleep(1.0);

llSetRegionPos(Primary2Nippori);
llSleep(4.0);

llSetRegionPos(Nippori2Ueno);
llSleep(4.0);

llSetRegionPos(Ueno2Akiba);
llSleep(4.0);

llSetRegionPos(center);
llWhisper(0,"秋葉に到着");
llSleep(5.0);
// バグるため、立たせることが出来ない
llUnSit(uuid);
llWhisper(0,"10秒後に戻ります。");
llSleep(10.0);


llSetRegionPos(Akiba2Ueno);
llSleep(2.0);

llSetRegionPos(Ueno2Nippori);
llSleep(2.0);

llSetRegionPos(Nippori2Primary);
llSleep(2.0);
llSetRegionPos(myPos);
llSleep(4.0);
llUnSit(uuid);
llWhisper(0,"戻りました");
llDie();
}

default{
state_entry(){
llSetText("go to Akiba",<1,1,1>,1);
llOwnerSay("Hello, Avatar!");
}

changed(integer change){
if (change & CHANGED_LINK) {
// ゴミが残らないように臨時属性に変更
llSetPrimitiveParams([PRIM_TEMP_ON_REZ,1]);

llWhisper(0,"変な画面になりますが、座ったまま暫くお待ちください");

go2Akiba(llGetPos(),llAvatarOnSitTarget());
}
}
}


※ソースコードはダブルクリックすると全部選択できるよ。コピペして使ってね。


※この記事は セカンドライフ 技術系 Advent Calendar 2013 の12/12用の記事です。   


Posted by uten at 23:08Comments(0)スクリプト

お店やカフェの利用状況を可視化するツール

2013年12月08日

いつ行っても人がいないカフェや店がある。いついけば人に会えるんだろう?ってよく思う。
slinkがあってもずっとcloseで営業時間が不定とか。。

それで、いつ行けば人がいるのか分かるツールを作ってみました。
下記のスクリプトを自分の土地に設置すると、人がいた時間帯と人数を4週間記録して、
平均値のグラフを自動生成します。

このサイトの右側に張ってあるグラフが例です。
このグラフは単なる画像なので、どこにでも貼り付けれます。
お店のブログのサイドバーとかに貼り付ける使い方を想定しています。


■ツールの設置方法
以下のLSLを適当なオブジェクトに入れて、自分の土地に設置して「OK」て表示されたら完了です。
「設定項目」の部分は、必要があれば変更してください。

// 訪問者数統計ツール ver0.2 2013-12-08.1 by uten.resident
//--------設定項目---------------------------------
float RATE=600.0; // センサの動作間隔(秒)(5~15分くらいを指定)
float RANGE=30.0; // センサの範囲(m)
string GRAPH="sample";// グラフ名(英数字のみ。このままでも良い)
//--------設定項目終わり----------------------------
string BASE="http://sl.uten.jp/c/";
on(){llSensorRepeat("", "", AGENT,RANGE,PI,RATE);}
p(integer n){llHTTPRequest(BASE+GRAPH+"/"+(string)n,[],"");}
default{
state_entry() {on();llOwnerSay("OK");}
on_rez(integer n){on();}
no_sensor() {p(0);}
sensor(integer n){p(n);}
}
// 終わり

■グラフのURL
上記スクリプトを土地に設置した後、統計情報を以下のURLで確認できます
http://sl.uten.jp/img/設置者名/グラフ名.png
設置者名は、自分のアバター名を半角小文字で、姓名の間は「.」を入力してください
例 http://sl.uten.jp/img/uten.resident/sample.png

文字フォントの色を白にしたい場合は、名前とグラフ名の間に/font_color=white/を追加してください
(背景が黒のサイト用)
例 http://sl.uten.jp/img/uten.resident/font_color=white/sample.png


■ブログへの設置例
・Blogger(blogspot.com)の場合
設置例  http://uteten.blogspot.jp/
設置方法 http://sl.uten.jp/src/slcounter/blogspot.html

・そらまめ(slmame.com)の場合
 設置例  (このサイトの右側のグラフ)
 設置方法 http://sl.uten.jp/src/slcounter/slmame.html

・FC2の場合
 設置例 http://uteten.blog.fc2.com/
 設置方法 http://sl.uten.jp/src/slcounter/fc2.html

※この記事は セカンドライフ 技術系 Advent Calendar 2013 の12/08用の記事です。  
タグ :LSLsecondlife


Posted by uten at 13:10Comments(0)スクリプト

多人数で座れる椅子の作り方

2013年04月29日

「1.0a Speedy Sitter GNU VERSION + Pack MocapData assise volume 1」
という開発ツールを使った作成が簡単なので紹介します。
以下からL$0で購入してください。
https://marketplace.secondlife.com/p/10a-Speedy-Sitter-GNU-VERSION-Pack-MocapData-assise-volume-1/1397691


1.椅子(など)を用意する
2.椅子にアニメーションを複数入れる
3.椅子に「!lsl.SpeedySIT-1.0.-sitter」をいれる

(今回は、この2つの四角いプリムでできたobjectを椅子と見立てて説明を進めます)

4.Configuration-Balle (DONT CHANGE THE NAME)を近くにrezする


5.椅子にタッチする
  ボールが伸びて、椅子の近くに移動する


6.ボールに座る
アニメーション許可のダイアログが出るので「はい」をおす


7.椅子に入れたアニメーションの一覧がダイアログに出る
  位置調整したいアニメーションを選択する


8.座らせたい位置や角度に、ボールの位置を合わせる


9.調整が終了したら椅子をタッチ。
  ダイアログが出てくる。
  一人用で複数のアニメをいれたいなら、ほかのアニメも選択して同じように調整。
  そうじゃなければ||SAVE||。

  今回は一人1つのアニメ、二人用にするので、||SAVE||。

10.ボールから立ち上がる
   URLが表示されるので見に行く



11.ブラウザに表示された文字を「configuration 0」という名前のノートカードで保存し、
   椅子の中に入れる


-----------------------------------
12.一人用の椅子ならここで終了。
   二人用の椅子は、このあと以下を続行
-----------------------------------

13.椅子に「!lsl.SpeedySIT-1.0.-sitter」をdrag&dropする
   名前が「!lsl.SpeedySIT-1.0.-sitter 1」になる

14.(4)~(10)を実施

15..「configuration 1」というノートカードを作って、
   表示された文字を貼り付ける


16.できあがり



17.ツール開発者に感謝の気持ちを送ると、
   あなたと開発者が幸せな気持ちになるかもしれません。
  


Posted by uten at 19:14Comments(0)スクリプト