ぱすわーどつきべんだーのさんぷるです。
本スクリプトは販売金額などの機能は有してませんが、money 関数など足してゆけば販売用にも使えるので挑戦してね!
string passwd にパスワードを
string folder は渡した相手のインベントリに作成されるフォルダー名です。アイテムはその中に入れられます。
では おたのしんでね!
password_vendor.LSL
integer handle;
integer channel;
key user_key;
string passwd = "ぱすわーど";
string folder = "folder";
string err_message = "ぱすわーどがちがうみたい。もう一度かくにんしてね!";
integer genCh()
{
integer gen;
key id = llGetKey();
string str = llGetSubString((string)id,0,3);
gen = -1-(integer)("0x"+str);
return gen;
}
do_given(key user)
{
list inventory;
integer num = llGetInventoryNumber(INVENTORY_ALL);
string script = llGetScriptName();
integer i = 0;
for (; i < num; ++i)
{
string name = llGetInventoryName(INVENTORY_ALL, i);
//販売スクリプトをあげないように
if(name != script)
{
if(llGetInventoryPermMask(name, MASK_OWNER) & PERM_COPY)
{
inventory += name;
}
else
{
llSay(0, "Don't have permissions to give you \""+name+"\".");
}
}
}
if (llGetListLength(inventory) < 1)
{
llSay(0, "No items to offer.");
}
else
{
// エージェントにフォルダをあげます。オブジェクトの名前をあげるフォルダの名前に使います
llGiveInventoryList(user, folder, inventory);
}
}
menu_passwd(key user)
{
llTextBox(user,"ぱすわーどをいれてね\n", channel);
}
default
{
state_entry()
{
llSetText("", <1,0.5,0.5>,1);
channel = genCh();
handle = llListen(channel, "", NULL_KEY, "");
}
listen( integer channel, string name, key id, string message )
{
if(message == passwd)
{
do_given(id);
}
else
{
llInstantMessage(id, err_message);
}
}
touch_start(integer total_number)
{
user_key = llDetectedKey(0);
menu_passwd(user_key);
}
}