ソラマメブログ

2007年10月07日

LSLコンベンションその22

TERRA Zehetbauerです。

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


LSLコンベンションその22

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

さて早速ノートを・・・


■オブジェクト名前:

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


■機能及び操作方法:

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

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


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

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

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


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




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



さてお次は

LSLコンベンションその22

かいてあるとーりですね。これはわかりやすいですね。
スクリプトが理解できるかはおいといて^^;
ノートみましょう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.0,0,0>", // 選択時の返り値1
"緑", // ボタン名2
"<0,1.0,0>", // 選択時の返り値2
"青", // ボタン名3
"<0,0,1.0>", // 選択時の返り値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.0,0,0> // 選択されたボタンの返り値
// 以降、送信したのと同じボタンリスト
赤", // ボタン名1
<1.0,0,0>", // 選択時の返り値1
緑", // ボタン名2
<0,1.0,0>", // 選択時の返り値2
青", // ボタン名3
<0,0,1.0>", // 選択時の返り値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.000>" | // 選択時の返り値1
|"緑" | // ボタン名2
|"<01.00>" | // 選択時の返り値2
|"青" | // ボタン名3
|"<001.0>" | // 選択時の返り値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.000>" | // 選択時の返り値1
|"緑" | // ボタン名2
|"<01.00>" | // 選択時の返り値2
|"青" | // ボタン名3
|"<001.0>" | // 選択時の返り値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の島)の記事画像
SOLA WINTER FLEA MARKET AND HUNT
SOLA WINTER FLEA MARKET 2016
SOLA FLEA MARKET 2015 WINTER
SOLAのガチャKAZEのガチャ
Flea Market Shop List
アクア・バー2からのお知らせ
同じカテゴリー(SOLAの島)の記事
 SOLA WINTER FLEA MARKET AND HUNT (2017-02-19 11:56)
 SOLA WINTER FLEA MARKET 2016 (2016-12-01 16:04)
 SOLA FLEA MARKET 2015 WINTER (2015-11-28 21:57)
 SOLAのガチャKAZEのガチャ (2015-08-16 12:44)
 Flea Market Shop List (2015-06-18 05:31)
 アクア・バー2からのお知らせ (2015-02-28 22:45)
Posted by KIREINA RESORT at 15:30│Comments(0)SOLAの島
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。