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でしか動かないスクリプトです。
※このスクリはあくまでサンプルです。sayはみんなに聞こえますので、セキュリティ的問題がありますw
しかし、ここまで書いておいてなんですが、
llSensorやllGetAgentListやllGetAgentSizeを使うよりもメリットがあるかどうかは不明!
有用な使い方を思いついた方は是非お知らせいただきたいです^0^
※この記事は セカンドライフ 技術系 Advent Calendar 2013 の記事です。
その一つに「レーダーに表示されるユーザの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
しかし、ここまで書いておいてなんですが、
llSensorやllGetAgentListやllGetAgentSizeを使うよりもメリットがあるかどうかは不明!
有用な使い方を思いついた方は是非お知らせいただきたいです^0^
※この記事は セカンドライフ 技術系 Advent Calendar 2013 の記事です。
Posted by uten at 01:22│Comments(1)
│スクリプト
Comments
FSのソースコードを確認したら、
llviewermessage.cppのprocess_sound_trigger関数( 5852行目)の中で
音楽のidがRadarLegacyChannelAlertRefreshUUID(76c78607-93f9-f55a-5238-e19b1a181389)かチェックして、レーダーの内容をsayさせる箇所があった。
バグとかじゃなくて、この動きはそういう仕様みたいです。
http://hg.phoenixviewer.com/phoenix-firestorm-release/file/b8be9b6b364f/indra/newview/llviewermessage.cpp#l5852
llviewermessage.cppのprocess_sound_trigger関数( 5852行目)の中で
音楽のidがRadarLegacyChannelAlertRefreshUUID(76c78607-93f9-f55a-5238-e19b1a181389)かチェックして、レーダーの内容をsayさせる箇所があった。
バグとかじゃなくて、この動きはそういう仕様みたいです。
http://hg.phoenixviewer.com/phoenix-firestorm-release/file/b8be9b6b364f/indra/newview/llviewermessage.cpp#l5852
Posted by uten at 2013年12月21日 01:08