1.38の新関数を使った小ネタっす。
プリムとプリムが重なってると見難くて使えないっすけど、
それなりに便利っす。
どうもぺんぎんっす( ◎v◎ )
論よりソースということで、さっさと載せるっす。
integer flag;
integer listen_handle;
default
{
state_entry()
{
flag = FALSE;
listen_handle = llListen(0, "", llGetOwner(), "");
}
on_rez(integer start_param)
{
llResetScript();
}
touch_start(integer total_number)
{
flag = !flag;
if(flag)
{
llOwnerSay("TEXT ON");
integer i = llGetObjectPrimCount(llGetKey());
for( ; i > 0; i--)
{
llSetLinkPrimitiveParamsFast(
i,
[PRIM_TEXT, (string)i, <1.0, 1.0, 1.0>, 1.0]
);
}
}
else
{
llOwnerSay("TEXT OFF");
llSetLinkPrimitiveParamsFast(
LINK_SET,
[PRIM_TEXT, "", <1.0, 1.0, 1.0>, 1.0]
);
}
}
listen(integer channel, string name, key id, string message)
{
llListenRemove(listen_handle);
if(message == "on") // 小文字注意!
{
flag = TRUE;
llOwnerSay("TEXT ON");
integer i = llGetObjectPrimCount(llGetKey());
for( ; i > 0; i--)
{
llSetLinkPrimitiveParamsFast(
i,
[PRIM_TEXT, (string)i, <1.0, 1.0, 1.0>, 1.0]
);
}
}
else if(message == "off") // 小文字注意!
{
flag = FALSE;
llOwnerSay("TEXT OFF");
llSetLinkPrimitiveParamsFast(
LINK_SET,
[PRIM_TEXT, "", <1.0, 1.0, 1.0>, 1.0]
);
}
else if(message == "ガッ") // 半角カタカナ注意!
{
llOwnerSay("TEXT OFF & REMOVE");
llSetLinkPrimitiveParamsFast(
LINK_SET,
[PRIM_TEXT, "", <1.0, 1.0, 1.0>, 1.0]
);
llRemoveInventory(llGetScriptName());
}
listen_handle = llListen(0, "", llGetOwner(), "");
}
}
ざっくりと説明すると、
1.スクリプトをプリムに入れる
2A.Touchする → 表示-非表示切り替え
2B.パブリックチャンネル(=0チャンネル)でオーナーが…
on → テキストON
off → テキストOFF
ガッ → テキストOFF & スクリプト削除
1.38で新しく来たところについては太字にしてあるっす。
参考にどうぞっす。
[2010/04/16]
listenイベントも追加したっす。
メッセージはテキトーに変えてくださいっす。
ガッ
返信削除