ページ

2009/05/28

売り上げ分配ベンダースクリプト

// 売り上げ分配ベンダー
key av="00000000-0000-0000-0000-000000000000"; // 分配するアバターのキー
float percent=5; // 分配率(%)
integer price;
list items;

init()
{
items=[]; // アイテムリスト初期化
string str;
integer i;
integer j=llGetInventoryNumber(INVENTORY_ALL); // コンテンツ内のアイテム数
for (i=0; i < j; i++) { // アイテムをチェック str=llGetInventoryName(INVENTORY_ALL,i); // アイテム名取得 if (llGetInventoryType(str) == INVENTORY_NOTECARD && llGetSubString(str,0,1) == "L$") { // 名前がL$○○になってるノートのとき price=(integer)llGetSubString(str,2,-1); // ノート名から価格を設定 } else if (str != llGetScriptName()) items+=[str]; // その他は、このスクリプト以外をリストアップ } if (llGetPermissions() & PERMISSION_DEBIT) llSetPayPrice(PAY_HIDE,[price,PAY_HIDE,PAY_HIDE,PAY_HIDE]); } default { state_entry() { llSetPayPrice(PAY_HIDE,[PAY_HIDE,PAY_HIDE,PAY_HIDE,PAY_HIDE]); // 支払い不可に設定 llSetClickAction(CLICK_ACTION_TOUCH); // クリックでタッチに設定 init(); // initでコンテンツ内チェック if (av != "") llOwnerSay("Split money with secondlife:///app/agent/"+(string)av+"/about ?"); // 分配するアバターのプロフ } on_rez(integer start_param) { // 持ち物から出したときリセット llResetScript(); } changed(integer change) { // コンテンツ内が変化したらinitへ if (change & CHANGED_INVENTORY) init(); } touch_start(integer total_number) { if (llDetectedKey(0) == llGetOwner()) { // オーナーがタッチしたとき口座引落し許可のリクエスト llRequestPermissions(llGetOwner(), PERMISSION_DEBIT); } } run_time_permissions(integer perm) { if (perm & PERMISSION_DEBIT) { // 口座引落し許可されたら llSetPayPrice(PAY_HIDE,[price,PAY_HIDE,PAY_HIDE,PAY_HIDE]); // 支払いダイアログに金額を設定 llSetClickAction(CLICK_ACTION_PAY); // クリックで支払いに設定 } } money(key id, integer amount) { // 売れたら llGiveInventoryList(id,llGetObjectName(),items); // リストのアイテムを渡す llInstantMessage(id,"Thank you for your purchase."); integer i=(integer)(amount*percent/100); // 分配額を計算 if (i > 0) llGiveMoney(av,i); // 分配額が0でなければ送金
}
}
UUIDはhttp://search.secondlife.com/

スクリプト参照