キャンプ系のスクリプト②

ヒロト

2007年08月14日 22:44


今回考えたのは 「チャットキャンプ」という物を考えてみました。

カフェとか足湯とかいろいろな所で人が集まっていることが
よくあると思うのですが、色々な目的でアバターが集まってきています。

そこでその集まる憩いの場所のような所で使ってもらえるような
スクリプトを考えました。

チャットキャンプ概要

人が集まる所でこの「チャットキャンプ」を設置すると
会話をしている人が自動的にキャンプに参加し
数分ごとに良く会話している人や常連の人、などを検索し
L$が支払われるというものです。

これによってキャンプのようなダンスパッドでダンスして放置とかじゃなく
コミュニケーションも広がり充実する空間が作られるのではないかなと
作ってみました。

しくみは チャットが届く範囲で会話をするとこのキャンプに参加します。
そのデータがWEBサーバーにデータ化され処理されます。
そのレスポンスをSL内で受け取り常連の方に獲得報酬として
支払われることになります。

これは通常のキャンプやダンスパッドみたいに
一人いくらの支払いという計算ではないので
支払うオーナーの方も負担が少なくなるのではないでしょうか。



かなりめんどくさかったけど、スクリプト自体は完成しました。

めんどくさいのはセンサーとリッスンをいかに負担を減らして
軽くするかということと、データ管理の方法やstate_entry()の
使い方で手こずったり、llListen、llSensorRepeatで
llHTTPRequestを起動しレスポンスを得るのに苦労しました。
何度も何度も違うパターンでHTTPレスポンスを得るので振り分けが
大変でした^^;

基本はこんな感じ
default
{
touch_start(integer total_number)
{
設定ファイルの読み込み
 }

dataserver(key queryid, string data)
{
データサーバーから設定ファイルの情報を代入しています。
そのほか必要データも代入しています。オーナーの名前とかもね~
}
}


state main
{

state_entry()
{
ここで
llListen
llSensorRepeat
llSetTimerEvent
が動きますがかなり注意して使っています^^;
}

touch_start(integer total_number)
{
llRequestPermissions(llGetOwner(),PERMISSION_DEBIT);
ここではお金に関するパーミッションの確認を取っています。
これがないと始まりませんのでこれが有効になった時点で
メインプログラムの開始をしています。
}

sensor(integer total_number)
{
センサーでの動きはWEBサーバーからのレスポンスを見て
確答ユーザーが入るかどうかで支払い決定をしています。
}

listen(integer channel, string name, key id, string message)
{
ここではとにかく負荷の少ないように誰がチャットに参加して
どれぐらい常駐しているかなどを一撃必殺で確認しています^^;
ここで全てを確認するとキツイので工夫しまくりで・・・
支払い作業もここでしています。
}

timer()
{
llListenは問題ないのですがsensorの負担をもっと減らすために
タイマーも使っています。ここで規定外のユーザーの排除をしています。
}

run_time_permissions(integer perm)
{
ここはオーナーのL$支払いの許可がされたかどうかで振り分けています。
}
}


簡単に書くとこんな感じでできました。
もう少し負荷が減らせると思うので作業は進めて意向と思ってます。
充分今でもかるーく!!動いていますが・・・

完成したらお店に出してみまーす!

では潜ります・・・








スクリプト商品