2009年07月24日
llAddToLandPassList
以前から試してみようと思っていた機能に、土地の「通行許可証」と言うのがあります。
例えば、アクセス制限をかけた土地に対して、一時的に入るのを許可する物です。
これは土地の設定でもできます。

パブリックアクセスを禁止して、入場許可を販売にチェックを入れると、該当の土地を右クリックしたパイメニューに「入場許可購入」と言うのが出てきます。
そこで設定されているお金を払うと、設定時間内だけ入れるようになります。
設定時間を過ぎると、強制的にBANされます。
入場許可販売状態や、完全にアクセス禁止している土地に対して、スクリプトで入場許可を与える事ができます。
それがllAddToLandPassListです。
簡単な例で言うと、タッチしたら3分間だけ入場できるスクリプトを示します。
default
{
touch_start( integer total_number )
{
llAddToLandPassList(llDetectedKey(0),0.05);
llSay(0, "You are allowed three minutes to enter.");
}
}
文法としては、 llAddToLandPassList(key agent, float hours) となります。
Key agentの部分に対象AVのUUIDを入れます。 上記の例では、タッチした人のUUIDをセットしています。
float hoursは入場許可時間です。単位は時間です。ここを0.0にすると時間無制限に許可されます。
上記の例では0.05時間なので、3分間ですね。
下限値は0.01だそうです。36秒ですね。
llSayは許可した事をチャットに発言しているだけです。
このスクリプトは「通行許可証の販売」設定がされていても、お金を払う事無く入場できるようになります。
パスリストにはアクセス可能残り時間が着いて、名前がセットされている状態になります。
この残時間は、ちゃんと減少していくようです。
そして時間が過ぎると、パスリストから名前が消えて、BANされてしまいます。^^;
また、次のようにパブリック・アクセスが許可されていると、最初から入れるので、スクリプトからは何も設定されません。

パブリックアクセス許可の下にある、「支払情報登録者」や「年齢認証」にチェックが入っていた場合も、このスクリプトでは許可が得られません。
llAddToLandPassListとは逆にBANリストへ追加する関数がllAddToLandBanList(key agent, float hours)です。
使い方は一緒です。
これを試した理由は、ある条件を満たしたら土地に入れるようにする方法を検討しているからです。
色々なやり方がありますが、これだと確実にブロックできます。
ただ、欲を言えば。。。
このパスリストの値がスクリプトで取得できれば良いのですけどね。^^;
Gonbeが調べた範囲では、その値を取得する方法は見つかりませんでした。
もしパスリストが取得できれば、そこに記載されている人だけがフリーアイテムをGetできると言うシステムも可能と思ったからです。
残念ながら、それを行うには、やはり外部サーバーへ自分で許可者を記録しておいて、管理する方が良さそうです。
それならば、あえてllAddToLandPassListを使う必要も無いかもしれないな・・・とは思いました。^^;
余談ですが、良くアクセスを禁止している人が居ますよね。
ノンビリ寛いでいる時に、いきなり部屋の中へ入ってくる無礼者も居ますから、気持ちも分らないでも無いですが、Gonbe的には不愉快ですね。
アクセス禁止エリアが一杯あるSIMなんて、絶対に立ち入りたく無いです。
SL内でのプライバシーに対する考え方がGonbeとは全く違うのでしょうね。
Gonbeの土地は全てフリーアクセスです。
物を出すこともできます。ただ無制限に置けると不味いので、オブジェクトのリターン設定は10分間にしてあります。
これだけで、不届き者の悪戯はほどんと防げています。
まあ、作業中にいきなり飛んでこられて、話しかけられたりするのは、余り良い気はしませんけど、それはアクセス禁止にしても、話かけてきたり、変なオブジェクトを送りつけたりする輩は居ますからね。
嫌だと思ったら、BANしてしまいますし。^^;
さて、この関数はあまり使えそうも無いけど、場面によっては面白いかも知れないので、一応記憶にとどめておきたいと思います。^^
例えば、アクセス制限をかけた土地に対して、一時的に入るのを許可する物です。
これは土地の設定でもできます。

パブリックアクセスを禁止して、入場許可を販売にチェックを入れると、該当の土地を右クリックしたパイメニューに「入場許可購入」と言うのが出てきます。
そこで設定されているお金を払うと、設定時間内だけ入れるようになります。
設定時間を過ぎると、強制的にBANされます。
入場許可販売状態や、完全にアクセス禁止している土地に対して、スクリプトで入場許可を与える事ができます。
それがllAddToLandPassListです。
簡単な例で言うと、タッチしたら3分間だけ入場できるスクリプトを示します。
default
{
touch_start( integer total_number )
{
llAddToLandPassList(llDetectedKey(0),0.05);
llSay(0, "You are allowed three minutes to enter.");
}
}
文法としては、 llAddToLandPassList(key agent, float hours) となります。
Key agentの部分に対象AVのUUIDを入れます。 上記の例では、タッチした人のUUIDをセットしています。
float hoursは入場許可時間です。単位は時間です。ここを0.0にすると時間無制限に許可されます。
上記の例では0.05時間なので、3分間ですね。
下限値は0.01だそうです。36秒ですね。
llSayは許可した事をチャットに発言しているだけです。
このスクリプトは「通行許可証の販売」設定がされていても、お金を払う事無く入場できるようになります。
パスリストにはアクセス可能残り時間が着いて、名前がセットされている状態になります。
この残時間は、ちゃんと減少していくようです。
そして時間が過ぎると、パスリストから名前が消えて、BANされてしまいます。^^;
また、次のようにパブリック・アクセスが許可されていると、最初から入れるので、スクリプトからは何も設定されません。

パブリックアクセス許可の下にある、「支払情報登録者」や「年齢認証」にチェックが入っていた場合も、このスクリプトでは許可が得られません。
llAddToLandPassListとは逆にBANリストへ追加する関数がllAddToLandBanList(key agent, float hours)です。
使い方は一緒です。
これを試した理由は、ある条件を満たしたら土地に入れるようにする方法を検討しているからです。
色々なやり方がありますが、これだと確実にブロックできます。
ただ、欲を言えば。。。
このパスリストの値がスクリプトで取得できれば良いのですけどね。^^;
Gonbeが調べた範囲では、その値を取得する方法は見つかりませんでした。
もしパスリストが取得できれば、そこに記載されている人だけがフリーアイテムをGetできると言うシステムも可能と思ったからです。
残念ながら、それを行うには、やはり外部サーバーへ自分で許可者を記録しておいて、管理する方が良さそうです。
それならば、あえてllAddToLandPassListを使う必要も無いかもしれないな・・・とは思いました。^^;
余談ですが、良くアクセスを禁止している人が居ますよね。
ノンビリ寛いでいる時に、いきなり部屋の中へ入ってくる無礼者も居ますから、気持ちも分らないでも無いですが、Gonbe的には不愉快ですね。
アクセス禁止エリアが一杯あるSIMなんて、絶対に立ち入りたく無いです。
SL内でのプライバシーに対する考え方がGonbeとは全く違うのでしょうね。
Gonbeの土地は全てフリーアクセスです。
物を出すこともできます。ただ無制限に置けると不味いので、オブジェクトのリターン設定は10分間にしてあります。
これだけで、不届き者の悪戯はほどんと防げています。
まあ、作業中にいきなり飛んでこられて、話しかけられたりするのは、余り良い気はしませんけど、それはアクセス禁止にしても、話かけてきたり、変なオブジェクトを送りつけたりする輩は居ますからね。
嫌だと思ったら、BANしてしまいますし。^^;
さて、この関数はあまり使えそうも無いけど、場面によっては面白いかも知れないので、一応記憶にとどめておきたいと思います。^^
Posted by Gonbe Shan at 10:23│Comments(0)
│スクリプトのお勉強メモ