LlTransferLindenDollars

来自人工智能助力教育知识百科
跳转至: 导航搜索

Template:Needs Translation/


函数名
Function: key llTransferLindenDollars( key destination, integer amount );
参数:将L$钱从脚本所有者转移到目的地头像。

•主要目的地——虚拟人UUID

•整数金额–L$的数量,必须大于零,(金额>0)

要运行此函数,脚本必须使用llRequestPermissions请求权限\u DEBIT权限,并且必须由所有者授予。 如果不打算使用返回值或生成的transaction\u result事件,请考虑使用llGiveMoney而不是此函数。

返回值:返回在匹配的transaction\u result事件中用于传输成功或失败的密钥。如果事务成功,此键将显示在事务历史记录中。
注意事项
权限

不要依赖于权限的自动授予状态。始终使用“运行时”权限事件。 如果脚本缺少权限\u DEBIT,脚本将在DEBUG CHANNEL上发出错误消息,操作失败(但脚本继续运行)。 如果权限_DEBIT是由所有者以外的任何人授予的,那么当函数被调用时,DEBUG频道将发出一个错误。 一旦PERMISSION_DEBIT权限被授予,除了从脚本内部(例如,使用一个新的llRequestPermissions调用)或脚本被重置或删除之外,就无法撤消它。 一个对象不能支付另一个对象。 分配给组的对象不能给钱(不能授予权限)。 对于某个地区的居民拥有的所有脚本,在30秒的时间间隔内,使用限制为30次付款。持续的超期将产生一个脚本错误,并停止支付,而费率仍然过高。从历史上看,更快的支付方式断断续续地失败。 一旦脚本拥有“借记”权限,它就可以清空一个L$的帐户。 欺诈和盗窃都是LL:违反服务条款和犯罪。滥用此功能,您将面临被禁止和法律诉讼的风险。此外,LL可以冻结任何人的帐户,把钱归还给它的合法拥有者。这可能涉及到从第三方交易所和那些被冻结的交易所上的账户中检索。该系统的设计并不是为了方便欺诈。

示例
示例1
// Pay 100 L$ to Fred Bloggs when he touches this prim
// Die if the transfer of funds was successful, else keep running
 
string  Recipient = "Fred Bloggs";      // Authorised recipient
integer Amount = 100;                   // Amount to pay Fred when he touches the prim
 
integer DebitPerms;
key     TransactionID=NULL_KEY;
 
default
{
    state_entry()
    {
        // Ask the owner for permission to debit their account
        llRequestPermissions(llGetOwner(), PERMISSION_DEBIT);
    }
 
    run_time_permissions (integer perm)
    {
        if  (perm & PERMISSION_DEBIT)
            DebitPerms = TRUE;
    }
 
    touch_start(integer num_detected)
    {
        if (!DebitPerms)
            return;  // Cannot proceed - debit permissions not granted
        if (llDetectedName(0) != Recipient)
            return;  // unauthorised person is touching - ignore
        if (TransactionID != NULL_KEY)
            return;  // waiting on previous transaction to complete/fail
 
        key id = llDetectedKey(0);
        TransactionID = llTransferLindenDollars(id, Amount);
    }
 
    transaction_result(key id, integer success, string data)
    {
        if (id != TransactionID)
            return;          // Ignore if not the expected transaction
 
        if (success)
        {
            llOwnerSay( "Transfer of L$ to " + Recipient + " was successful");
            llSleep(1.0);
            llDie();          // Die so Fred can't keep taking money
        }
        else
        {
            llOwnerSay( "Transfer of L$ failed");
            TransactionID = NULL_KEY;
            // Keep the script running so Fred can try again, clear TransactionID to allow a new attempt
        }
    }
}
相关函数
llGetPermissions–获得授权

llGetPermissionsKey–找到授予权限的代理

llRequestPermissions–请求权限

llGiveMoney

llSetPayPrice

相关事件
run_time_permissions–权限接收事件

transaction_result

money