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
でわまた