>>LSLメモページへ戻る
タイピングアクセサリを作る
※各スクリプト引用元はページ下部に記載

例1)タイピング中にモニターを表示(モニターを開閉させる)
[モニター]
default
{
state_entry()
{
llListen(64,"Kuma PC",NULL_KEY,"");
}
on_rez(integer param)
{
llResetScript();
}
listen(integer channel,string name,key id,string message)
{
if(message=="open")
{
llSetRot(llEuler2Rot(<PI+PI*0.5,0.0,PI*0.5>));
}
else if(message=="close")
{
llSetRot(llEuler2Rot(<PI+PI*0.5,0.0,0.0>));
}
}
}
[マスター]
integer typing=FALSE;
default
{
state_entry()
{
llSetTimerEvent(0.5);
}
on_rez(integer param)
{
llResetScript();
}
timer()
{
integer info=llGetAgentInfo(llGetOwner());
if(info & AGENT_TYPING)
{
if(typing==FALSE)
{
typing=TRUE;
llSetLinkAlpha(LINK_SET,1.0,ALL_SIDES);
llWhisper(64,"open");
}
}
else
{
if(typing==TRUE)
{
typing=FALSE;
llWhisper(64,"close");
llSleep(1.0);
llSetLinkAlpha(LINK_SET,0.0,ALL_SIDES);
}
}
}
}

例2)タイピング中のみにキーボードを表示させる
//**************************************************
//*
//* Title: Fakefur Script Keybord Sample
//* Make : 2006/11/09
//* Note : ChatInput -> KeyBord Show
//* NoInput -> KeyBord Hide
//*
//**************************************************
//****************
//* Main Program *
//****************

default{
//******************
//* Initialization *
//******************

state_entry(){
//set Timer
llSetTimerEvent(0.2);
}
//*****************
//* KeyBord Check *
//*****************

timer(){
integer Status = llGetAgentInfo(llGetOwner());
//******************
//* Key Input Find *
//******************

if (Status & AGENT_TYPING){
//****************
//* KeyBord Show *
//****************

llSetLinkAlpha(LINK_SET,1.0,ALL_SIDES);
//******************
//* KeyBord Action *
//******************
//No Action
//*****************
//* Not Key Input *
//*****************

}else{
//****************
//* KeyBord Hide *
//****************

llSetLinkAlpha(LINK_SET,0.0,ALL_SIDES);
//***********************
//* KeyBord Action Stop *
//***********************
//No Action

}
}
}

↑のスクリプト抜粋
default{
state_entry(){
llSetTimerEvent(0.2);
}
timer(){
integer Status = llGetAgentInfo(llGetOwner());
if (Status & AGENT_TYPING){
llSetLinkAlpha(LINK_SET,1.0,ALL_SIDES);
}else{
llSetLinkAlpha(LINK_SET,0.0,ALL_SIDES);
}
}
}

参考URL:
http://oitake.jugem.jp/?eid=117
例1に引用させていただきました。詳細説明があります。
http://ameblo.jp/stringer/entry-10027996686.html
例2に引用させていただきました。詳細説明があります。