ソラマメブログ

2008年11月15日

メッセージボードの不思議 - 逐次解説

XyzzyText のソースを読んでみようと思う
-----
その前に XyzzyText を使って作った Editable Label のスクリプトの解説から...
-----
XyzzyText に関しては次回以降 w
-----
//
// File: EditableTitle.lsl
// Date Author number of nodes
// 2008/11/12 walkinglint 24
// 2008/11/12 walkinglint 23 (usage->EditableTitle)
// 2008/11/12 walkinglint 23
//
integer DISPLAY_STRING = 204000;
-----
XyzzyText は同じプリムのコンテンツに入れ llMessageLinked で起動する
-----
文字を表示させる場合は このコードを指定して起動する
-----
string notecard_name = "title_data";
-----
title_data という名前のノートカードの中身を表示させる
-----
integer read_line = 0;
-----
ノートカードの 0行目を読み込む
-----
key query_id;
-----
ノートカード詠み込み時に使う変数
-----
string title;
-----
読み込んだ内容を保持する変数
-----
default {
state_entry() {
-----
rez すると ここ以降が実行される
-----
if (llGetInventoryType(notecard_name) == INVENTORY_NOTECARD) {
-----
title_data という名前のものが同じプリムのコンテンツに存在しているか調べ
-----
それが ノートカードだったら
-----
query_id = llGetNotecardLine(notecard_name, read_line);
-----
その名前のノートカードの read_line 行目(実際には 0行目)を読み込む指示を出す
-----
} else {
llOwnerSay("Notecard " + notecard_name + " is not found");
-----
そうでなかったら Notecard title_data is not found を出力する
-----
}
}
dataserver(key queryid, string data) {
-----
ノートカードの読み込みが指示されたら 読み込んだ結果を data に入れここが起動される
-----
if (queryid == query_id) {
-----
読み込み指示の ID と一致していたら これがその指示に対する回答だということで
-----
if (data != EOF) {
-----
データが読み込まれていたら
-----
// process data
if (llStringLength(data) != 0) {
-----
空行でなかったら
-----
title = data;
-----
読み込まれた内容を title に入れ(直接 data を使っても良かったんだけど)
-----
llMessageLinked(LINK_THIS, DISPLAY_STRING, title, "0");
-----
同じプリムのコンテンツに入れられているスクリプトに DISPLAY_STRING というコードで起動する
-----
}
}
}
}
changed(integer change) {
-----
何か変更があった場合 ここ以降が実行される
-----
if (change & CHANGED_INVENTORY) {
-----
変更内容が インベントリー(同じプリムのコンテンツ)の変更だった場合
-----
llResetScript();
-----
このスクリプトをリセットする(rez した場合と同じことをする)
-----
}
}
}
-----
(続く)

同じカテゴリー(walking のスクリプティング講座)の記事
 プロフィール写真の表示に問題 (2009-11-30 20:55)
 ミニ太陽系 (2009-03-21 06:03)
 関数から文字列を返したら何か問題になる? (2009-03-18 18:02)
 llListFindList って型って関係ないんだったっけ (2009-03-18 14:02)
 夏時間(PDT)の実験 (2009-03-08 22:04)
 15パズルの作り方(その3) (2009-03-08 06:03)
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。