2008年05月10日
3 の付く時だけ あほ になるブレスレット
今朝起きがけにつまらないことを思いついてしまったので スクリプトを書いてみた
-----
って言っても これまで作ったものの部分部分を継ぎ合わせればできることに気が付いたので w
これをブレスレットにでも入れて アニメーションを何か 1つ入れて word2match というノートに マッチさせたい文字列を複数行に書いて(もちろん 1つでも OK) それもいっしょに入れておいてもらえると
-----
そのどれかにマッチした言葉をチャットした時に 入れておいたアニメーションを実行します
-----
あほになるアニメーションと 3 を入れておくといいかも w
-----
って言っても これまで作ったものの部分部分を継ぎ合わせればできることに気が付いたので 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
Posted by walkinglint at 08:12│Comments(0)
│walking のスクリプティング講座