スタッフボードは、タッチでスタッフとIMができるようにしてます。
でも実は、アバター同士のIMを直接開くスクリプト関数はないのです。
どうするかというと、ビューワーからIMを起動する方法があって、それを使います。
ビューワーで表示するメッセージ文中に「secondlife:///app/agent/(相手のキー)/im」があると、そこにリンクが張られて、クリックするとIMのウィンドウが開くのです。
公式ビューワーだとメニューの表示メッセージでこれができますが、できないビューワーもあるので、ボタンを用意して、メッセージのチャットログから開くようにします。
右の写真は、Firestorm ビューワーの画面で、メニューに「IM lovemax」というのが
「secondlife:///app/…」から置き換わって表示されています。(公式ビューワーも同様)
showMenu() { // メニューを出す
OpenIM = "secondlife:///app/agent/" + (string)StaffId + "/im";
list buttons = ["IM"];
string message = "\nIM: 下線またはボタンをクリック"
+" Click Underline or Button\n" + OpenIM;
if (llGetInventoryNumber(INVENTORY_NOTECARD)) {
Note = llGetInventoryName(INVENTORY_NOTECARD,0);
buttons += ["Note"];
message += "\nNote: ノートもらえます Get Note";
}
Handle = llListen(Channel,"",Id,"");
llDialog(Id,message,buttons+["Cancel"],Channel);
}
default {
touch_start(integer num) {
Id = llDetectedKey(0); // タッチした人
// (実際にはスタッフIDを調べてから)
showMenu(); // メニューを出す
}
listen(integer ch,string na,key id,string msg) {
if (msg=="IM") llInstantMessage(Id,
"チャットログで下線をクリックしてください"
+" Click Underline on Chat Log\n"+OpenIM);
else if (msg=="Note") llGiveInventory(Id,Note);
llListenRemove(Handle);
}
}
左の写真は、Cool VL ビューワーの画面で、メニューの文字「secondlife:///app/…」はそのままです。
[IM]ボタンを押すとボードからメッセージが送られてきて、それをチャットログで見たのが右の写真です。
文字「secondlife:///app/…」のところにリンクがあり、クリックすれば、IMのウィンドウが開きます。