LSLコンベンションその22

KIREINA RESORT

2007年10月07日 15:30


TERRA Zehetbauerです。

最近SOLAのBDHでダンスすることが多くへろへろですw
さて今回はこちらから




これ、ちょうど話題にのぼってたんですよねー。
ショップに商品置いてあげてピンはねしよーwって
なんてタイムリー!

さて早速ノートを・・・


■オブジェクト名前:

Collabox v2.2j/e(コラボックス)


■機能及び操作方法:

共同で販売する商品の利益分配を
箱にタッチ・数字をポンの簡単操作で
設定・実行できるアイテムです。

一度設定を完了すれば
商品が売れるごとに自動的に利益を分配し
オーナーさんには売り上げ個数の通知も行います。


■このオブジェクトの主な関数:

チャットからのコマンド入力はllListen
送金はllGiveMoney
配分を受ける人の識別はllKey2NameとllDetectedKeyで行っています。

手軽に設定できるよう、箱へのタッチとチャット欄のコマンドにより、
設定をしていただく仕様にしています。


-----------------------------------------------------------------------
ブログ:
http://blog.livedoor.jp/dragon85/archives/252477.html
HOME:




利益分配できれば場所貸ししたときのピンはねができますよねw
これやりたいなぁ。



さてお次は



かいてあるとーりですね。これはわかりやすいですね。
スクリプトが理解できるかはおいといて^^;
ノートみましょうw

名前:Dance Selector HUD

機能:
Dance Selector HUD を装備します
お手持ちのアニメーションをダンスセレクターにドロップしてください
Dance Selector HUD をタッチすると、ダイアログが出ます
実行したいアニメーションをダイアログから選択してください
止めたいときは ダイアログの STOP を選択してください

主な関数:
アニメーションの制御にllGetAnimationList,llStartAnimation,llStopAnimation
モジュールの制御にlink_messageを使っています
各モジュールの説明は次をご覧ください。


最終更新 :2007-10-17
バージョン:β0.5

Jvn.Logic.UI.Dialog

Dialogを制御するモジュールです

※文中に出てくるシリアライズ・デシリアライズについては
 ReadMe-Jvn.Module
 をご覧ください


できること
・12個以上のボタンに対応(ページ遷移機能)
・長すぎるボタン名でも大丈夫(標準は日本語6文字以上だと落ちる)
・キャンセルボタンの標準搭載
・Listenの制御をカプセル化
・ダイアログの階層化

できないこと
・複数の人による同時制御

将来実装する予定の機能
・編集可能ダイアログ

使い方-標準版

① 引数を用意します。
List [0000-00000-0000-0000, // 対象者キー
"Jvn.Logic.UI.Dialog", // ダイアログ種類
"ColorSelect", // ダイアログ名
10, // 応答無し時のキャンセル処理を発動するまでの時間
"色を選んでください", // メッセージ
"赤", // ボタン名1
"", // 選択時の返り値1
"緑", // ボタン名2
"", // 選択時の返り値2
"青", // ボタン名3
"", // 選択時の返り値3


]
②引数リストをStringにシリアライズします
③リンクメッセージを送信します
 llMessageLinked(LINK_THIS,①識別番号,②シリアライズしたリスト,③(key)"Jvn.Logic.UI.Dialog");
④リンクメッセージで返り値を取得します
link_message(数字,①識別番号,シリアライズした返り値,"Jvn.Logic.UI.Dialog_ret");
 送信時の識別番号と同じであり、key にモジュール名が入っていることを確認してください
⑤返り値をデシリアライズして使います
["Jvn.Logic.UI.Dialog", // ダイアログ種類
"Colorselect", // ダイアログ名
0, // 選択されたボタンのインデックス(0から数えた番号)
// 選択されたボタンの返り値
// 以降、送信したのと同じボタンリスト
赤", // ボタン名1
", // 選択時の返り値1
緑", // ボタン名2
", // 選択時の返り値2
青", // ボタン名3
", // 選択時の返り値3


]

 キャンセルの場合はインデックスが -1 で返ってきます。

使い方-階層版
引数を次のように設定します
List ["Jvn.Logic.UI.Dialog.Menu", // ダイアログ種類
"MainMenu", // ダイアログ名
10, // 応答無し時のキャンセル処理を発動するまでの時間
"機能を選んでください", // メッセージ
"色を変える", // ボタン名1
子ダイアログ1, // シリアライズしたダイアログ1
"文字を変える", // ボタン名2
子ダイアログ2, // シリアライズしたダイアログ2
"透明度を変える", // ボタン名3
子ダイアログ3, // シリアライズしたダイアログ3


]

複数入れ子も可能です。


使えるダイアログの種類
Jvn.Logic.UI.Dialog
 標準ダイアログ
Jvn.Logic.UI.Dialog.Menu
 階層ダイアログ
Jvn.Logic.UI.Dialog.Sensor(name,id,type,range,arc)
 センサーダイアログ
 引数のボタン+センサー該当の一覧[ボタン名:名前,返り値:キー]
Jvn.Logic.UI.Dialog.Inventory(type)
 インベントリダイアログ
 引数のボタン+インベントリ内コンテンツ一覧[ボタン名:名前、返り値:キー]


LSLでは日本語をソースコード上にかけないため、
このモジュールを使っても、呼び出しスクリプトが煩雑になってしまいます。
特にボタンが多い場合。
そこで、ノートカードでの設定を可能にしました。
利用したい方は、
Jvn.Logic.UI.Dialog.Caller.Note モジュールをお使いください。


免責
 当モジュールを利用したことによって発生した損害・問題に関して
 Jvn Writerは一切の責任を負いません
 使用者の自己責任でお願いします

要望・謝礼
 当モジュールを使用して、機能追加の要望などありましたらIMください
 当モジュールを使用して、気に入った方もIMください こおどりします

Get higher capacity by less works.
Jvn.lsl


最終更新 :2007-10-17
バージョン:β0.5

Jvn.Logic.UI.Dialog.Caller.Note

Dialogの設定をノートから行なうモジュールです
Jvn.Logic.UI.Dialog 補助モジュール

※文中に出てくるシリアル化・デシリアライズ化については
ReadMe-Jvn.Module
をご覧ください


できること
・ノートカードでダイアログの設定が可能(日本語でべた打ちできる)
・ノートカードの読込は初回のみ

今後対応予定
・複数のノートカードに対応(実装予定)
・編集ダイアログ(ダイアログモジュール 実装予定)の返り値を保存する

使い方-通常

①ノートに次のようにダイアログ設定を書いておきます
-----------------------
|"Jvn.Logic.UI.Dialog" | // ダイアログ種類
|"ColorSelect" | // ダイアログ名
|10 | // 応答無し時のキャンセル処理を発動するまでの時間
|"色を選んでください" | // メッセージ
|"赤" | // ボタン名1
|"" | // 選択時の返り値1
|"緑" | // ボタン名2
|"" | // 選択時の返り値2
|"青" | // ボタン名3
|"" | // 選択時の返り値3
|・ |
|・ |
------------------------
※コメントには対応していません
※空白行、もしくはスペースのみの行があると
動作がおかしくなります

②引数リストを次のように用意します
list [0000-0000-0000-0000 //
"init" //設定ノート名
]
③リンクメッセージを送信します
llMessageLinked(LINK_THIS,①識別番号,②シリアル化したリスト,③(key)"Jvn.Logic.UI.Dialog.caller.note");
④リンクメッセージで返り値を取得します
link_message(数字,①識別番号,シリアル化した返り値,"Jvn.Logic.UI.Dialog_ret");
送信時の識別番号と同じであり、key にモジュール名が入っていることを確認してください
モジュール名は Caller ではなく ダイアログのモジュール名なので間違えないように
⑤返り値をデシリアライズして使います
形式は通常のダイアログと同じ


使い方-階層構造

階層構造の場合は次のように設定を書きます
----------------------------
|"Jvn.Logic.UI.Dialog.Menu" | // ダイアログ種類
|"MainMenu" | // ダイアログ名
|10 | // 応答無し時のキャンセル処理を発動するまでの時間
|"機能を選んでください" | // メッセージ
|"色を変える" | // ボタン名1
|"ColorSelect" | // 子ダイアログ名1
|"文字を変える" | // ボタン名2
|"TextSelect" | // 子ダイアログ名2
|"透明度を変える" | // ボタン名3
|"AlphaSelect" | // 子ダイアログ名3
| | // ********************* 空白行をはさむ
|"Jvn.Logic.UI.Dialog" | // ダイアログ種類
|"MainMenu/ColorSelect" | // ダイアログ名
|10 | // 応答無し時のキャンセル処理を発動するまでの時間
|"色を選んでください" | // メッセージ
|"赤" | // ボタン名1
|"" | // 選択時の返り値1
|"緑" | // ボタン名2
|"" | // 選択時の返り値2
|"青" | // ボタン名3
|"" | // 選択時の返り値3
|・ |
|・ |
----------------------------

・子ダイアログは、一行あけて書く
・子ダイアログの名前は
親ダイアログで設定した"親ダイアログの名前/子ダイアログ名"
と等しくなるように設定する


初回にロード処理
2回目以降はスプールしたものを使う
ロード命令の出し方

メッセージの改行は /n を書きましょう


免責
当モジュールを利用したことによって発生した損害・問題に関して
Jvn Writerは一切の責任を負いません
使用者の自己責任でお願いします

要望・謝礼
当モジュールを使用して、機能追加の要望などありましたらIMください
 当モジュールを使用して、気に入った方もIMください こおどりします

Get higher capacity by less works.
Jvn.lsl


最終更新 :2007-10-18

Jvn.Module

Jvn Writer のモジュールは
リンク・メッセージで引数・返り値のやりとりをしています

リンクメッセージは旧LSL Wiki の Script Library にのっていた
ExchangeScriptModule のやりかたにのっとっています
http://rpgstats.com/wiki/index.php?title=ExchangeScriptModule


次のスクリプトを、モジュール呼び出しスクリプトの頭にコピーしてください

// ========== For method invocation ==========
integer debug=FALSE;

string randomSeperator() {
integer firstChar = (integer)llFrand(60) + 20;
integer lastChar;
do {
lastChar = (integer)llFrand(60) + 20;
} while (lastChar == firstChar);
string ret = llUnescapeURL("%"+(string)firstChar);
ret += llUnescapeURL("%" + (string)((integer)llFrand(60) + 20));
return ret + llUnescapeURL("%"+(string)lastChar);
}

string listToString(list src) {
string chars = (string) src;
string seperator;
do {
seperator = randomSeperator();
} while (llSubStringIndex(chars, seperator) != -1);
return seperator + llDumpList2String(src, seperator);
}

list stringToList(string src) {
return llParseStringKeepNulls(llDeleteSubString(src, 0, 2),
[llGetSubString(src, 0, 2)], []);
}

callMethod(integer identifyer, string methodName, list parameters) {
llMessageLinked(LINK_THIS, identifyer,listToString(parameters), methodName);
}

returnValue(integer identifyer, string methodName, list value) {
callMethod(identifyer, methodName + "_ret", value);
}

DeepTrace(string Name,list s){
if(debug==2) llOwnerSay(llGetScriptName()+"."+Name+"\n ("+llDumpList2String(s,",")+")");
}
Trace(string Name,list s){
if(debug>0) llOwnerSay("\n"+llGetScriptName()+"."+Name+"\n("+llDumpList2String(s,",")+")");
}
// =============================================


1.シリアライズ
 メッセージを送るときは、
 callMethod(integer identifyer, string methodName, list parameters)
 を使います。
 メソッド内でリストをストリングに変換して送るので、
 これをシリアライズと呼びます。

2.デシリアライズ
 モジュールの返値は次のようにリンク・メッセージで受け取ります

 link_message(integer caller, integer Identify , string params, key methodName)

 Identify が自分が送った Identify と同じこと
 (string)methodName が 呼び出したmethodName + _ret であることを確認してください

 返り値は params にはいっています
 list Params = list2String(params)
 とすることでリストに展開することができます
 これをデシリアライズと呼びます


免責
当モジュールを利用したことによって発生した損害・問題に関して
Jvn Writerは一切の責任を負いません
使用者の自己責任でお願いします

要望・謝礼
当モジュールを使用して、機能追加の要望などありましたらIMください
 当モジュールを使用して、気に入った方もIMください こおどりします

Get higher capacity by less works.
Jvn.lsl



すごーい!
チョー親切!
って、使い方はいいとしてスクリプトは・・・う~ん
むずかしい、というか関数が見慣れないものばかりでしたw

でわまた
SOLAの島