チャットキャンプのスクリプト(ログ取得追加)

ととり

2008年02月07日 00:52


前回アップしたチャットキャンプ(チャットしてるとお金が数分ごとにもらえるキャンプ)に、
ログ取得機能等を追加しました。
多分、これで実用的なチャットキャンプになったと思います。

■使い方&機能説明
・オブジェクトにスクリプトを入れて、クリックするとキャンプ開始。
・/stop campとsayするか、takeするとキャンプ停止(クリックすれば、また再開)

・/view settingとsayすると、現在の設定状況を確認。


Time-Wait:何秒おきにお金を払い出すか
??%=???L$:払い出すお金の金額と確率
1time-Ave:一回に支払うお金の期待値
1min-Ave:一分間あたりに払い出すお金
1day-Ave:1日中チャットしてると払い出すお金の期待値
Soliloquy-Chat:独り言してる人にお金を払うか否か

・/view log とsayするかオブジェクトにtouchすると、動き始めてからいくら払ったかを表示。



「最終発言時間 名前 払ったお金/チャットキャンプしてた合計時間」を
払った合計金額が多い人順に表示。ログが50人以上になると最終発言時刻が古い人から削除(※)。
最後の行に、払った合計金額(Total Cost)とシステムが動作時間、動作開始時刻を表示。

※50人までログがちゃんとローテーションするかためせてません。
もしヒープエラーが出たらスクリプトの「integer MAX_LOG_NUM=50;//ログをとれる数」を小さく変更してください。

/view log じゃなくて、/say logだと、みんなに聞こえる声で表示します。




/clear logで上記ログをリセットします。

■注意
・必ずスクリプトの最初の、設定項目を自分に合わせて設定してください(初期値は、結構太っ腹な払い出し設定になってますw)
・お金を払う人が、お金を持っていなくてもエラーになりません(※)。お金が無くならないよう注意してくださいw
※お金を払うこと(llGiveMoney();)に成功したか否かをハンドリングする方法がないからです(もし知ってる方いたら教えてください)。

LSL (コピーはすぐ↓の「copy to clipboard」をクリックするとコピーできるよ)

//----------------------------------------------
// Totori's purse.
string VERSION=" ver2008.02.04.001";
// ======使い方==========================
// オーナーのみ以下の操作を可能
// ・配置した後、タッチするとスタート
// ・スタートした後、再度タッチするとログ表示
// /stop camp とsayするとキャンプ停止
// /show setting とsayすると現在の設定表示
// /clear log とsayするとログが消える
// /say log とsayするとログをsayする(周りに聞こえる)

//================================================
// 設定項目
//================================================

// お金を配る間隔(秒)
float WAIT=180.0;

//渡すお金と確率(合計100%にする)
list GIVE_MONEY=[
"1%=100", // 1%の確率で100L$渡す
"4%=50", // 4%の確率で50L$
"15%=30", // ・・・
"20%=20",
"20%=10",
"40%=5"

];

//独り言してる人に払う=1 / 払わない=0
integer PAY_ALONG=0;

//================================================
//設定項目終わり

list glk_speacker;// 話した人リスト
list gli_percent;
list gli_money;
integer gli_percent_num;
list glk_speacker_old;// 前回話した人リスト
integer MAX_LOG_NUM=50;//ログをとれる数



//ログ取得用
integer gi_now_time;
integer gi_total_cost;//払った合計金額
integer gi_start_time;//CAMP開始時刻
list gliiis_log; // 以下が1セットで順番に入ったリスト
// 0 integer 払出金額合計
// 1 integer 最終会話時刻(epoch)
// 2 integer 滞在時間合計(秒)
// 3 string 話した人


//毎回各関数で宣言するのが面倒くさいのでグローバルに出した
integer i;
integer len;

// GIVE_MONEYのリストを読んで
// 確率とお金をgli_percentとgli_moneyに順番に入れる
integer parseGiveMoney(){
integer total_percent; //確率合計
float expected_money;//期待値

gli_percent_num=llGetListLength(GIVE_MONEY);

llOwnerSay("ChatCamp. maked by Totori K."+VERSION);
llOwnerSay("-------------------------------------");
llOwnerSay("Time-wait="+(string)WAIT+"sec");

for(i=0;i
スクリプト関連