Difference between revisions of "LlSetPayPrice"
Jump to navigation
Jump to search
(Added caveats about the behavior of each input parameter.) |
|||
Line 10: | Line 10: | ||
* This function only works when called from the root prim of an object. Its effect applies to all the prims in the object. Calling it from a child prim has no effect. | * This function only works when called from the root prim of an object. Its effect applies to all the prims in the object. Calling it from a child prim has no effect. | ||
* Payment to a prim can be blocked by the llSetPayPrice() setting in the prim, which persists even if the script with llSetPayPrice() is removed. | * Payment to a prim can be blocked by the llSetPayPrice() setting in the prim, which persists even if the script with llSetPayPrice() is removed. | ||
* | * '''Caution:''' Calling this function will enable payment on the prim (or the whole object if it is the root prim) for the current state, even when this state has no money event. | ||
* Otherwise, the pay option will only be shown in prims having a running script with a [[money]] event (or in all the prims of the object if the root has a running script with a money event). | |||
* The effect seems to persist even if the script is recompiled with out the [[llSetPayPrice]] function, even if the script is replaced with another one which includes a [[money]] event, but not [[llSetPayPrice]]. | * The effect seems to persist even if the script is recompiled with out the [[llSetPayPrice]] function, even if the script is replaced with another one which includes a [[money]] event, but not [[llSetPayPrice]]. | ||
* Money cannot be paid to an attachment; "Pay" will go directly to the wearer instead. | * Money cannot be paid to an attachment; "Pay" will go directly to the wearer instead. |
Latest revision as of 04:10, 11 August 2023
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Summary
Function: llSetPayPrice( integer price, list quick_pay_buttons );0.0 | Forced Delay |
10.0 | Energy |
Suggest default amounts for the pay text field and pay buttons of the appearing dialog when someone chooses to pay this object.
• integer | price | – | PAY_* constant or positive value (including zero) | |
• list | quick_pay_buttons | – | Four PAY_* constants and/or positive integer values (zero is not shown) |
|
|
|
Caveats
- This function should not be trusted to limit the values of money payable to the object; always verify the amount paid is the amount expected.
- Use only one call to this function in all the scripts on an object to prevent confusion about which values are used. You still need to check in the money event that the amount is as expected.
- This function only works when called from the root prim of an object. Its effect applies to all the prims in the object. Calling it from a child prim has no effect.
- Payment to a prim can be blocked by the llSetPayPrice() setting in the prim, which persists even if the script with llSetPayPrice() is removed.
- Caution: Calling this function will enable payment on the prim (or the whole object if it is the root prim) for the current state, even when this state has no money event.
- Otherwise, the pay option will only be shown in prims having a running script with a money event (or in all the prims of the object if the root has a running script with a money event).
- The effect seems to persist even if the script is recompiled with out the llSetPayPrice function, even if the script is replaced with another one which includes a money event, but not llSetPayPrice.
- Money cannot be paid to an attachment; "Pay" will go directly to the wearer instead.
- If quick_pay_buttons contains a negative value or zero, the button will not be shown at all.
- However, zero is allowed for price, which is used to set the custom text field's value within the Pay window.
Examples
This will give the user a dialog box without the price field and only one button with a value of 150.
llSetPayPrice(PAY_HIDE, [150,PAY_HIDE,PAY_HIDE,PAY_HIDE])
integer price = 10;
default
{
state_entry()
{
llSetPayPrice(PAY_HIDE, [PAY_HIDE ,PAY_HIDE, PAY_HIDE, PAY_HIDE]);
llRequestPermissions(llGetOwner(), PERMISSION_DEBIT);
}
run_time_permissions(integer perm)
{
if(perm & PERMISSION_DEBIT)
state cash;
}
}
state cash
{
state_entry()
{
llSetPayPrice(price, [price ,PAY_HIDE, PAY_HIDE, PAY_HIDE]);
}
money(key id, integer amount)
{
if(amount != price)
{
llGiveMoney(id, amount);
llInstantMessage(id, "You paid "+(string)amount+", which is the wrong price, the price is: "+(string)price);
}
else
{
//insert your give code here.
llInstantMessage(id, "You paid the right price");
}
}
}