money
money(key id, integer amount)
キーIDをもっているエージェントがリンデンドルの金額をオブジェクトに与えるとき、この
イベントは引き起こされます。
現状のMoney()イベントハンドラ(空のハンドラであっても)の存在は、オブジェクトを右クリックするとき、パイメニューで"Pay"エントリーを有効にして、ユーザのオブジェクトの所有者に対する支払いを受付ます。
これが"Pay"エントリーがMoney()イベントハンドラのあるなしにかかわらずステートを切り換えることによって表示の制御をすることに注意してください。
amountエージェントに表示されたは入力フィールドを通じて、または「Fast Pay」ボタンで指定された金額に従って選択されます。(これらの値をカスタム設計するには、llSetPayPrice()を使用してください)。
オブジェクトがグループに譲渡されてるなら、グループがお金を受け取ります。
Example:
default {
money(key giver, integer amount) {
llSay(0, "Thanks for the " +
(string)amount +
"L$, " + llKey2Name(giver));
}
}
さらに多くの例が欲しい場合は、ExampleMoneyを見てください。
注意:
ある特定の条件下では、マネーイベントを含んでいるスクリプトが違うステートへ移ったときでも、リンクされたオブジェクトは他のプリムのためにパイメニューで"Pay"エントリーを表示するかもしれません。
これは古くからあるバグですが、
これがいつ起こるかをどう予測するかに関してそれは明確ではありません。
この種類の問題を避けるのに、支払いスクリプトでただ一つのステーツを使用してください、そして、そうでなければ、物が別のステーツに切り替わったときには、単にお金を返金してください。 (詳しい情報については、このスレッドを見てください。)
お金を装備品に支払うことができません。
"Pay"エントリーがパイメニューにある間に装備品に金を支払ったとしてもMoney()イベントを発生させないでしょう。
Q: だれかが、私のオブジェクトに支払ったと言いましたが、彼らは何も得られませんでした。 もっとも、私は自分のアカウントの取引履歴を見て支払いを確認することはできました。
このような場合はどう対処すればよいのでしょうか?
A: データベースやsimが高い負荷にさらされていると、お金のイベントが引き起こされないというバグが顕在化することがあります。
リンデンは問題を意識していますが、フィックスに関するどんなアナウンスもまだありません。
差し当たり、あなたのスクリプトのMoney()イベントハンドラの中に、誰かが支払いを行ったときにユーザー名(llKey2Nameを使用します)と支払い情報のログをリストとして追加することで、状況をもう少しマシにすることができるでしょう。
そしてあなたが苦情を受けた時には、ログを確認して顧客が本当のことを言っているかどうかを容易にチェックできます。
Q: お金がいつユーザのアカウントに払い込まれるかを見つける方法がありますか?
A: いいえ、直接Money()イベントを含むオブジェクトにお金を支払うときだけ、Money()イベントが発生します。
LSLスクリプトがユーザーのお金の変化をチェックする方法はまったくありませんし、
ユーザーのお金に変化があったこと自体に対して引き起こされるべきイベントもありません。
理論上、外部サーバー上のスクリプトでSLウェブサイト上のSL Accountページのコンテンツを解析して、SL上のスクリプトを使って支払いデータを調整することは可能です。
これは、当然、いくつかの要因(例えばSLアカウントページが実は更新される頻度、あなたが持ってるいくつかのソース、そしてトランザクションの量、リンデンが彼らのサーバーをあなたのボットにハンマーでたたくようなことを良しとするかどうか)に依存します。
スクリプトでお金を与えるには、llGiveMoney()関数を使用してください。
最終更新:2008年09月30日 23:15