LlGiveMoney/ja

From Second Life Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

要約

関数: integer llGiveMoney( key destination, integer amount );

amount L$ のお金をスクリプトのオーナーから destination のアバターへ転送します。
常に 0 を integer で返します。

• key destination アバターの UUID
• integer amount L$ の額, ゼロより大きくないといけない (amount > 0)

実行するには、llRequestPermissions による PERMISSION_DEBIT 権限がオーナーから与えられなければなりません。

警告

  • 権限の自動付与に頼らないようにしましょう。常に run_time_permissions イベントを使用しましょう。
  • スクリプトに PERMISSION_DEBIT の権限が不足していると、スクリプトはエラーを DEBUG_CHANNEL で叫び、操作に失敗します (しかしスクリプトは処理を続けます)。
  • PERMISSION_DEBIT がオーナー以外の人から許可され、関数が呼び出されると、 DEBUG_CHANNEL でエラーが叫ばれます。
  • いったん PERMISSION_DEBIT 権限が付与されると、スクリプトの中で (例えば、新しい llRequestPermissions 呼び出しなどにより) 権限をはく奪することができません。スクリプトはオブジェクトが derez (削除、取り外し、取り込み) されない限り権限が失われません。
  • オブジェクトからほかのオブジェクトへ払うことはできません。
  • この関数がお金をあげるのに成功したか失敗したかをスクリプトが伝えることはできません。
  • グルーブに譲渡したオブジェクトは、お金を渡すことができません (権限は付与されません) 。
  • 地域でその住人が所有しているスクリプト全体で、30 秒間に 30 回の支払制限があります。支払いが度を過ぎるとスクリプトエラーを発生させ、過剰レートが収まるまでは支払いを中断します。以前は、ペースの速い支払いは飛び飛びに失敗していました。
  • 一度 PERMISSION_DEBIT 権限を持ったスクリプトは、アカウントの L$ を空にできます。
    • 詐欺と窃盗はLinden Labの違反と犯罪の両方にあたります。この関数を悪用すると、BAN されたり、法的措置がとられたりするリスクを冒すこととなります。さらに、LL はお金が振り込まれたアカウントを差し止め、正当な持ち主にお金を返すこともあります。関係のない取引によるものも差し戻しされ、取引にかかわったアカウントが差し止められることもあります。このシステムは詐欺師に親切なようにはできていません。
All Issues ~ Search JIRA for related Bugs

サンプル

//シンプルなブタの貯金箱です。だれでも支払え、だれでもクリックしてお金を引き出すことができます。

integer AMOUNT = 10;  //クリックされるたびに支払うお金の金額
integer STASH = 50;   //スクリプトのデフォルトの支払い残高

update()
{
    if(STASH >= AMOUNT)
        llSetText("I have L$"+(string)STASH + " to give away!", <1,1,1>, 1);
    else
        llSetText("I have no L$ to give away :(", <1,1,1>, 1);
}

default
{
    state_entry()
    {
        llRequestPermissions(llGetOwner(), PERMISSION_DEBIT );  
    }

    run_time_permissions (integer perm)
    {
        if(perm & PERMISSION_DEBIT)
        {
            state ready;     
        }
    }
}

state ready
{
    state_entry()
    {
        update();
    }
    touch_start(integer num)
    {
        if(STASH >= AMOUNT)
        {
            llGiveMoney(llDetectedKey(0), AMOUNT);
            STASH -= AMOUNT;
            update();
        }
        else
        {
            llWhisper(0, "No more money to give away :(");
        }
    }
    money(key id, integer m)
    {
        STASH += m;
        update();
    }
}

関連項目

イベント

•  run_time_permissions 権限取得イベント
•  money

関数

•  llGetPermissions 付与されている権限を取得します
•  llGetPermissionsKey 権限を許可したエージェントを取得します
•  llRequestPermissions 権限を要求します
•  llSetPayPrice

記事

•  権限/スクリプト

特記事項

Search JIRA for related Issues

Signature

function integer llGiveMoney( key destination, integer amount );
この翻訳は 原文 と比べて古いですか?間違いがありますか?読みにくいですか?みんなで 修正 していきましょう! (手順はこちら)
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。