ソラマメブログ

2008年05月10日

3 の付く時だけ あほ になるブレスレット

今朝起きがけにつまらないことを思いついてしまったので スクリプトを書いてみた
-----
って言っても これまで作ったものの部分部分を継ぎ合わせればできることに気が付いたので w
integer i;
integer read_line;
string animation_name = "";
string notecard_name = "word2match";
key query_id;
list word2match_list = [];
key owner;
integer num_of_word2match;
string word2match;
integer got_permission = 0; // needed?
get_permission () {
integer perm = llGetPermissions();
if ((perm & PERMISSION_TRIGGER_ANIMATION) == 0) {
llRequestPermissions(owner, PERMISSION_TRIGGER_ANIMATION);
} else {
got_permission = 1;
}
}
set_animation_name () {
integer num_of_animations;
num_of_animations = llGetInventoryNumber(INVENTORY_ANIMATION);
for (i = 0; i < num_of_animations; i++) {
animation_name = llGetInventoryName(INVENTORY_ANIMATION, i);
return;
}
}
set_word2match_list () {
llOwnerSay("Now Loading..");
read_line = 0;
if (llGetInventoryType(notecard_name) == INVENTORY_NOTECARD) {
// request first line
query_id = llGetNotecardLine(notecard_name, read_line);
} else {
llOwnerSay("Notecard " + notecard_name + " is not found");
}
}
default {
state_entry () {
owner = llGetOwner();
get_permission();
set_animation_name();
set_word2match_list();
llListen(0, "", owner, "");
}
on_rez(integer start_param) {
llResetScript();
}
run_time_permissions(integer perm) {
if (perm & PERMISSION_TRIGGER_ANIMATION) {
got_permission = 1;
}
}
dataserver(key queryid, string data) {
if (queryid == query_id) {
if (data != EOF) {
// process data
if (llStringLength(data) != 0) {
word2match_list = llListInsertList(word2match_list,
[data], llGetListLength(word2match_list));
}
read_line++;
query_id = llGetNotecardLine(notecard_name, read_line);
} else {
llOwnerSay("Loading complete.");
}
}
}
listen(integer channel, string name, key id, string message) {
if ((got_permission == 1) && (llStringLength(animation_name) != 0)) {
num_of_word2match = llGetListLength(word2match_list);
for (i = 0; i < num_of_word2match; i++) {
word2match = llList2String(word2match_list, i);
if (llSubStringIndex(message, word2match) != -1) {
llStartAnimation(animation_name);
return;
}
}
llStopAnimation(animation_name);
}
}
}

これをブレスレットにでも入れて アニメーションを何か 1つ入れて word2match というノートに マッチさせたい文字列を複数行に書いて(もちろん 1つでも OK) それもいっしょに入れておいてもらえると
-----
そのどれかにマッチした言葉をチャットした時に 入れておいたアニメーションを実行します
-----
あほになるアニメーションと 3 を入れておくといいかも w

同じカテゴリー(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)
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。