2008年06月21日
リモートロードを試してみた(その2)
前の記事を書いた後 ん~ でも これって スクリプトをコピーするとその動的な環境までコピーされる ということじゃないと成り立たないよな
-----
と 思い 参照した記事
-----
Makapu@BlackSheep-LSL:リモートロード
-----
をもう一度見てみると
-----
検証するためのコードがちゃんと入っていた
-----
ふむ~ これで試してみるか
-----
-----
前は ただの初期スクリプトのままだったんだが data をデータを保存する
-----
-----
クリック
-----
data に test は128 というデータが入っていることを確認すると同時に data を保存(データの設定自体は起動時に行われているので実際はタイミングの問題は存在しないのだが 1秒後に保存するようにしておいた)
-----
-----
本体の data を削除した後 save_data の方をクリックし 本体に data をロードした後 もう一度本体をクリック
-----
値が保存されていればここで test=128 と出るはず なんだけど 0?
-----
ん~ というわけで 最初の記事をコメント欄まで読んでみると
-----
そうですね、リモートロードはあくまでもスクリプトの「コード」をコピーするだけですので、変数の中身をそのまま送れるわけではありません・・・。
ということは、サンプルに載せてるコードは真っ赤な嘘ということに(><;
何を勘違いして書いたんだか、ちとこれはお馬鹿過ぎですね。
-----
あれれ~ あはは でもいろいろ勉強させていただきました ^^
-----
と 思い 参照した記事
-----
Makapu@BlackSheep-LSL:リモートロード
-----
をもう一度見てみると
-----
検証するためのコードがちゃんと入っていた
-----
ふむ~ これで試してみるか
-----
-----
前は ただの初期スクリプトのままだったんだが data をデータを保存する
//にし 起動時に(data 内に)test は128 というデータを入れ クリックすると それを取り出すスクリプト date_set_and_get(date は data の間違い w)
// File: data.lsl
// Date Author number of nodes
// 2008/6/21 walkinglint 19
//
list data = [];
default {
link_message(integer sender, integer num, string str, key id) {
if (str == "set") {
integer i = llListFindList(data, [(string)id]);
if (i != -1) {
data = llListReplaceList(data, [(string)id, num], i, i+1);
} else {
data += [(string)id, num];
}
} else if (str == "get") {
integer i = llListFindList(data, [(string)id]);
if (i != -1) {
llMessageLinked(sender, llList2Integer(data, i+1), "ret", id);
} else {
llMessageLinked(sender, num, "ret", id);
}
}
}
}
//を入れ
// File: data_set_and_get.lsl
// Date Author number of nodes
// 2008/6/21 walkinglint 21
//
set_value(string keyword, integer value) {
llMessageLinked(LINK_THIS, value, "set", (key)keyword);
}
get_value(string keyword, integer default_value) {
llMessageLinked(LINK_THIS, default_value, "get", (key)keyword);
}
default {
state_entry() {
set_value("test", 128);
}
touch_start(integer detected) {
get_value("test", 0);
}
link_message(integer sender, integer num, string str, key id) {
if (str == "ret") {
llSay(0, "Keyword:" + (string)id + "=" + (string)num);
}
}
}
-----
-----
クリック
-----
data に test は128 というデータが入っていることを確認すると同時に data を保存(データの設定自体は起動時に行われているので実際はタイミングの問題は存在しないのだが 1秒後に保存するようにしておいた)
-----
-----
本体の data を削除した後 save_data の方をクリックし 本体に data をロードした後 もう一度本体をクリック
-----
値が保存されていればここで test=128 と出るはず なんだけど 0?
-----
ん~ というわけで 最初の記事をコメント欄まで読んでみると
-----
そうですね、リモートロードはあくまでもスクリプトの「コード」をコピーするだけですので、変数の中身をそのまま送れるわけではありません・・・。
ということは、サンプルに載せてるコードは真っ赤な嘘ということに(><;
何を勘違いして書いたんだか、ちとこれはお馬鹿過ぎですね。
-----
あれれ~ あはは でもいろいろ勉強させていただきました ^^
Posted by walkinglint at 14:16│Comments(0)
│walking のスクリプティング講座