ソラマメブログ
< 2025年04月 >
S M T W T F S
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      

  
Posted by at

2007年11月13日

アバター/コンテンツ情報取得(LSL リファレンス)


アバター系の関数/イベント
名称種別内容
llRequestAgentData関数アバターの情報を取得する。
llGetAgentInfo関数アバターの状態を返す。
llGetAgentSize関数アバターのサイズを返す。
llKey2Name関数UUIDから名称を返す。
コンテンツ系の関数/イベント
名称種別内容
llGetInventoryKey関数コンテンツの中に存在するアイテムのUUIDを返す。
llGetInventoryNumber関数コンテンツの中に存在するアイテムの数を返す。
llGetInventoryName関数コンテンツの中に存在するアイテムの名称を返す。
llGetInventoryType関数コンテンツの中に存在するアイテムのタイプを返す。

llRequestAgentData <機能> アバターの情報を取得する。 dataserverイベントとペアで使用する。 <構文> key llRequestAgentData(key id, integer data) * id : 情報を取得するアバターのUUIDを指定する。 * data : 情報の種類を指定する。以下を参照。 [data定数]
Statistical dataValueDescription
DATA_ONLINE1アバターがオンラインだとTRUE、オフラインだとFALSEを返す。
DATA_NAME2アバターの名称を返す。
DATA_BORN3アバターの生年月日をYYYY-MM-DDフォーマットで返す。
DATA_RATING4アバターの評価を返す。
DATA_PAYINFO8アバターの支払い状況を返す。
<例> // タッチしたアバターの生年月日を表示する。 default { touch_start(integer num_detected) { llRequestAgentData(llDetectedKey(0), DATA_BORN); } dataserver(key queryid, string data) { llSay(0, "You were born on: " + data); } } ページ先頭へ
llGetAgentInfo <機能> アバターの状態を返す。 <構文> integer llGetAgentInfo(key id) * id : アバターのUUIDを指定する。 * 返り値:ビット値で返る。以下を参照。
Constant Represents Value
AGENT_ALWAYS_RUN走っている。0x1000
AGENT_ATTACHMENTSアタッチしている。0x0002
AGENT_AWAYawayモードになっている。0x0040
AGENT_BUSYbusyモードになっている。0x0800
AGENT_CROUCHINGかがんでいる。0x0400
AGENT_FLYING飛行している。0x0001
AGENT_IN_AIR空中にいる。(飛行状態を除く)0x0100
AGENT_MOUSELOOKマウスルックモードになっている。0x0008
AGENT_ON_OBJECTオブジェクトに座っている。0x0020
AGENT_SCRIPTEDスクリプトを実行しているオブジェクトをアタッチしている。0x0004
AGENT_SITTING座っている。0x0010
AGENT_TYPINGタイプしている。0x0200
AGENT_WALKING歩いている。0x0080
<例> // 飛行中のときチャット画面上に表示する。 default { state_entry() { llSetTimerEvent(1); } timer() { if(llGetAgentInfo(llGetOwner()) & AGENT_FLYING) { llOwnerSay("You are flying!"); } } } ページ先頭へ
llGetAgentSize <機能> アバターのサイズを返す。単位はメートル。 <構文> vector llGetAgentSize(key id) * id : アバターのUUIDを指定する。 * 返り値:<X(横幅),Y(奥行),Z(高さ)>のベクター値。 <例> //タッチしたら身長を表示する。 default { touch_start(integer num_detected) { vector size; size = llGetAgentSize(llDetectedKey(0)); llSay(0, "You are " (string)size.z "m tall."); } } ページ先頭へ
llKey2Name <機能> UUIDから名称を返す。 * アバターの名称を得るためには、そのアバターが同SIM内に存在していなければならない。 <構文> string llKey2Name(key id) * id : アバターまたはオブジェクトのUUIDを指定する。 <例> // オーナーの名称を表示する。 llSay(0,llKey2Name(llGetOwner())); ページ先頭へ
llGetInventoryKey <機能> コンテンツの中に存在するアイテムのUUIDを返す。 * 存在しない場合は、NULL_KEYを返す。 * オーナーがそのアイテムに対して、権限(編集、コピー譲渡)を持っていないときは、NULL_KEYを返す。 <構文> key llGetInventoryKey(string name) * name : アイテムの名称を指定する。 ページ先頭へ
llGetInventoryNumber <機能> コンテンツの中に存在するアイテムの数を返す。 <構文> integer llGetInventoryNumber(integer type) * type : タイプを指定する。type定数参照。 [type定数]
typeValue Description
INVENTORY_ALL-1全て
INVENTORY_TEXTURE0テクスチャ
INVENTORY_SOUND1サウンド
INVENTORY_LANDMARK3ランドマーク
INVENTORY_CLOTHING5
INVENTORY_OBJECT6オブジェクト
INVENTORY_NOTECARD7ノートカード
INVENTORY_SCRIPT10スクリプト
INVENTORY_BODYPART13ボディーパーツ
INVENTORY_ANIMATION20アニメーション
INVENTORY_GESTURE21ジェスチャ
<例> // コンテンツの中に存在するランドーマークの数を表示する。 llSay(0, "I contain " + (string)llGetInventoryNumber(INVENTORY_LANDMARK) + " Landmark."); ページ先頭へ
llGetInventoryName <機能> コンテンツの中に存在するアイテムの名称を返す。 <構文> llGetInventoryName(integer type, integer number) * type : タイプを指定する。type定数参照。 * number : アイテムのナンバーを指定する。全アイテム中のナンバーではなく、指定アイテム中のナンバーを指す。 ナンバーは、名称のアルファベット順に自動で割り振られる。0から始まるので注意。 <例> // コンテンツの中に存在するノートカードの名称を表示する。 llSay(0, "I have a notecard named " + llGetInventoryName(INVENTORY_NOTECARD, 0) + " in my contents."); ページ先頭へ
llGetInventoryType <機能> コンテンツの中に存在するアイテムのタイプを返す。 <構文> integer llGetInventoryType(string name) * name : アイテムの名称を指定する。 * 返り値 : type定数参照。 ページ先頭へ
  

Posted by Zero2000 Kidd at 22:29Comments(0)LSL リファレンス

2007年11月12日

アニメ/回転/座る/テレポート(LSL リファレンス)

 
名称種別内容
llStartAnimation関数アバターにアニメーションを実行させる。
llStopAnimation関数実行中のアニメーションをストップする。
llGetAnimationList関数アバターが実行中のアニメーションのUUIDを返す。
llTargetOmega関数オブジェクトを回転させる。
llAvatarOnSitTarget関数座っているアバターのUUIDを返す。
llSitTarget関数アバターの座る位置を指定する。
llUnSit関数座っているアバターを立たせる。
llMapDestination関数テレポートマップを表示する。
llTeleportAgentHome関数オーナーの土地にいるアバターを強制的にホームにテレポートする。

llStartAnimation <機能> アバターにアニメーションを実行させる。 ・実行には、PERMISSION_TRIGGER_ANIMATION の権限が必要。 ・アニメーションは、スクリプトと同じコンテンツ内に置いていなければならない。 ・複数のアニメーションを同時に実行させることが可能。 ・アニメーションをストップするには、llStopAnimationを実行する。 <構文> llStartAnimation(string anim) * anim : アニメーション名称を指定する。 <例> // オーナーに"Dance"というアニメーションを実行させる。 default { state_entry() { llRequestPermissions(llGetOwner(),PERMISSION_TRIGGER_ANIMATION); } run_time_permissions(integer perm){ if(perm & PERMISSION_TRIGGER_ANIMATION){ llStartAnimation("Dance"); } } } ページ先頭へ
llStopAnimation <機能> 実行中のアニメーションをストップする。 ・実行には、PERMISSION_TRIGGER_ANIMATION の権限が必要。 <構文> llStopAnimation(string anim) * anim : アニメーションの名称またはUUIDを指定する。 <例> // "Dance"というアニメーションを停止する。 llStopAnimation("Dance"); // アバターが実行中のすべてのアニメーションを停止する。 list anims = llGetAnimationList(llGetPermissionsKey()); integer aminct = llGetListLength(anims); integer i; for (i = 0; i < aminct; i++){ llStopAnimation(llList2Key(anims, i)); } ページ先頭へ
llGetAnimationList <機能> アバターが実行中のアニメーションのUUIDを返す。 結果は、リスト型で返る。ストリング型でないのは、アバターは複数のアニメを同時 に実行することが可能であるからである。複数のアニメーションを実行している場合 は、実行している全てのアニメーションのUUIDを返す。 <構文> list llGetAnimationList(key id) * id : アバターのUUIDを指定する。 <例> // アバターが実行中のすべてのアニメーションの名称を表示する。 list anims = llGetAnimationList(llGetPermissionsKey()); integer aminct = llGetListLength(anims); integer i; for (i = 0; i < aminct; i++){ llOwnerSay(llKey2Name(llList2Key(anims, i))); } ページ先頭へ
llTargetOmega <機能> オブジェクトを回転させる。 <構文> llTargetOmega(vector axis, float spinrate, float gain) * axis : 回転軸<x軸,y軸,z軸>を指定する。 * spinrate : 回転速度を指定する。数値が大きいほど高速。TWO_PI(6.283185)と指定すると毎秒1回転。 * gain : 回転の強さを指定する。物理オブジェクトのみ影響する。 <例> // Z軸を回転軸として毎秒1回転させる。 llTargetOmega(<0,0,1>,TWO_PI,1); ページ先頭へ
llAvatarOnSitTarget <機能> 座っているアバターのUUIDを返す。立ち上がった場合は、NULL_KEYを返す。 あらかじめllSitTargetを実行していなければならない。 <構文> key llAvatarOnSitTarget() <例> // 座っているアバターのUUIDを取得する。 default { state_entry() { llSitTarget(<0.0, 0.0, 0.1>, ZERO_ROTATION); } changed(integer change) { if (change & CHANGED_LINK) { key SitAvatarKey = llAvatarOnSitTarget(); } } } ページ先頭へ
llSitTarget <機能> アバターの座る位置を指定する。 <構文> llSitTarget(vector offset, rotation rot) * offset : 座る位置を相対座標で指定する。単位は、メートル。 * rot : 座る角度を指定する。 <例> // 座る位置をオブジェクトから高さ0.5mに指定する。 default { state_entry() { llSitTarget(<0.0, 0.0, 0.5>, ZERO_ROTATION); } } ページ先頭へ
llUnSit <機能> 座っているアバターを立たせる。 <構文> llUnSit(key id) * id : アバターのUUIDを指定する。 ページ先頭へ
llMapDestination <機能> テレポートマップを表示する。 ・このコマンドは、オブジェクトがアタッチされているかまたは、タッチイベントの中でしか実行されない。 <構文> llMapDestination(string sim_name, vector position, vector lookat) * sim_name : テレポート先のSIM名を指定する。 * position : テレポート先のグローバル座標を指定する。Z座標は、0〜1000mの制限あり。 * lookat : 現在使用されていない。とりあえずZERO_VECTORを指定。 <例> // オブジェクトをタッチしてテレポートマップを表示する。 string sim_name="JapanResort"; vector pos=<100,100,20> default { touch_start(integer a) { llMapDestination(sim_name, pos, ZERO_VECTOR); } } ページ先頭へ
llTeleportAgentHome <機能> オーナーの土地にいるアバターを強制的にホームにテレポートする。 <構文> llTeleportAgentHome(key id) * id : アバターのUUIDを指定する。 <例> // オブジェクトにタッチしたアバターをホームにテレポートする。 default { state_entry() { llSetText("Don't touch me!", <1,0,0>, 5.0); } touch_start(integer total_number) { llTeleportAgentHome(llDetectedKey(0)); } } ページ先頭へ
  

Posted by Zero2000 Kidd at 21:48Comments(0)LSL リファレンス

2007年10月31日

ノート/テキスト/メール(LSL リファレンス)

ノートカード系の関数/イベント
名称種別内容
llGetNotecardLine関数ノートカードの内容を一行読み込む。
llGetNumberOfNotecardLines関数ノートカードの行数を返す。
dataserverイベント各種情報取得時に発生する。
テキスト系の関数/イベント
名称種別内容
llSetText 関数フローティングテキストを表示する。
llSetTouchText関数パイメニューの"Touch"テキストを変更する。
llSetSitText 関数パイメニューの"Sit Here"テキストを変更する。
電子メール系の関数/イベント
名称種別内容
llEmail関数電子メールを送信する。
llGetNextEmail関数電子メールを受信する。
emailイベント電子メールを受信したときに発生する。

llGetNotecardLine <機能> ノートカードの内容を一行読み込む。一行あたりの読み込み可能な文字数は、最大255文字(日本語だと約80文字)。 dataserverイベントとペアで使用する。 <構文> key llGetNotecardLine(string name, integer line) * name : ノートカードの名称を指定する。 ノートカードは、スクリプトと同じオブジェクトのコンテンツ内に入れる必要有り。 * line : 読み込む行番号を指定する。0からスタートとなるので注意。 つまり、1行目を読み込む場合は、1ではなく0を指定する。 <例> // ノートカードの内容をチャット画面上に表示する。 string gName = "NoteCardName"; // ノートカード名称を指定する。 integer gLine = 0; key gQueryID; default { state_entry() { gQueryID = llGetNotecardLine(gName, gLine); // 一行目を読み込む } dataserver(key query_id, string data) { if (query_id == gQueryID) { if (data != EOF) { // 最後の行に達するまで繰り返す llSay(0, (string)gLine+": "+data); // チャット画面に表示 ++gLine; // 行数をインクリメント gQueryID = llGetNotecardLine(gName, gLine); // 次の行を読み込む } } } } ページ先頭へ
llGetNumberOfNotecardLines <機能> ノートカードの行数を返す。 dataserverイベントとペアで使用する。 <構文> key llGetNumberOfNotecardLines(string name) * name : ノートカードの名称を指定する。 ノートカードは、スクリプトと同じオブジェクトのコンテンツ内に入れる必要有り。 <例> // ノートカードの行数をチャット画面上に表示する。 string gName = "NoteCardName"; // ノートカード名称を指定する。 key gQueryID; default { state_entry() { gQueryID = llGetNumberOfNotecardLines(gName); } dataserver(key queryid, string data) { if (query_id == gQueryID) { llSay(0, "This notecard has " + data + " lines."); // チャット画面に表示 } } } ページ先頭へ
dataserver <機能> 各種情報取得時に発生する。以下の関数とペアで使用する。
名称種別内容
llGetNotecardLine 関数ノートカードの内容を一行読み込む。
llGetNumberOfNotecardLines 関数ノートカードの行数を返す。
llRequestAgentData 関数アバターの情報を取得する。
llRequestInventoryData 関数インベントリの情報を取得する。
llRequestSimulatorData 関数SIMの情報を取得する。
<構文> dataserver(key queryid, string data) * queryid : リクエストした関数の返り値(key)が入る。dataserver系のリクエスト関数を併用したときの切り分けに使用する。 * data : 取得した情報が入る。 ページ先頭へ
llSetText <機能> フローティングテキストを表示する。表示可能なテキストの文字数は、最大255文字(日本語だと約80文字)。 <構文> llSetText(string text, vector color, float alpha) * text : テキストの内容を指定する。 * color : テキストカラーをベクター値で指定する。参照:カラーパレット * alpha : テキストの透明度を指定する(0.0〜1.0)。0.0を指定するとテキストは非表示になる。 <例> // "Hello"と表示する。 llSetText("Hello.", <1,0,0>, 1.0); // テキストを非表示にする。 llSetText("",<0,0,0>,0); // 1行目に"Hello"、2行目に"How are you?"と表示する。(\nは改行文字) llSetText("Hello.\nHow are you?", <1,0,0>, 1.0); // 日本語で"こんにちは"と表示する。 llSetText(llUnescapeURL("%e3%81%93%e3%82%93%e3%81%ab%e3%81%a1%e3%81%af"), <1,0,0>, 1.0); 参照:llUnescapeURL ページ先頭へ
llSetTouchText <機能> パイメニューの"Touch"テキストを変更する。(最大9文字) <構文> llSetTouchText(string text) * text : テキストの内容を指定する。 <例> // "Touch" --> "Dance" に変更する。 llSetTouchText("Dance"); ページ先頭へ
llSetSitText <機能> パイメニューの"Sit Here"テキストを変更する。(最大9文字) <構文> llSetSitText(string text) * text : テキストの内容を指定する。 <例> // "Sit Here" --> "Teleport" に変更する。 llSetSitText("Teleport"); ページ先頭へ
llEmail <機能> 電子メールを送信する。 * 電子メールの差出人アドレスは、"オブジェクトのUUID@lsl.secondlife.com"となる。 * 電子メールの本文には、オブジェクトの名称、オブジェクトの存在する土地名及びローカルな座標が自動的に入る。 (例) Object-Name: Object Region: Gibson (254976, 256000) Local-Position: (117, 129, 50) ここからユーザが作成した本文が入る。 <構文> llEmail(string address, string subject, string message) * address : 送信先メールアドレスを指定する。 * subject : メールのサブジェクトを指定する。 * message : メールの本文を指定する。 送信可能なメッセージサイズは、4096文字以内となる。 なおこの4096文字には、スクリプト本文及びメールの各種付加情報も含まれる。 <例> // サブジェクト:Hello 本文:"How are you" という内容のメールを送信する。 llEmail("zero_seven@hotmail.co.jp","Hello","How are you"); ページ先頭へ
llGetNextEmail <機能> 電子メールを受信する。emailイベントとペアで使用する。 * オブジェクトにメールを送信したいときは、"オブジェクトのUUID@lsl.secondlife.com"というアドレス宛てに メールを送信する。 <構文> llGetNextEmail(string address, string subject) * address : フィルタするメールアドレスを指定する。フィルタしない場合は、""と指定する。 * subject : フィルタするサブジェクトを指定する。フィルタしない場合は、""と指定する。 <例> // フィルタ無しで、メールを受信する。 llGetNextEmail("",""); ページ先頭へ
email <機能> 電子メールを受信したときに発生する。llGetNextEmailコマンドとペアで使用する。 受信可能なサブジェクトの文字数は、最大78文字。受信可能な本文の文字数は、最大1000文字。 日本語のメールは受信不可。 <構文> email(string time, string address, string subj, string message, integer num_left) * time : 送信時刻が、1970年1月1日午前0時0分0秒からの経過秒数で入る。 * address : 送信メールアドレスが入る。 * subj : サブジェクトが入る。 * message : 本文の内容が入る。 * num_left : 未受信のメール数が入る。 <例> // オブジェクトをタッチしたらメールを受信し、内容を画面に表示する。 default { touch_start(integer t) { llGetNextEmail("",""); } email(string time, string address, string subj, string message, integer num_left) { llWhisper(0,"ADDRESS:"+address); llWhisper(0,"SUBJECT:"+subj); llWhisper(0,"MESSAAGE:"+message); } } ページ先頭へ
  

Posted by Zero2000 Kidd at 00:09Comments(0)LSL リファレンス