Создать скрипт LSL для сдачи объекта в инвентарь - PullRequest
0 голосов
/ 03 апреля 2020

Мне нужен сценарий, который, когда кто-то касается объекта, получит элементы, которые находятся внутри объекта, но у элементов внутри нет разрешений на копирование, изменение, передачу, я не могу ничего найти .... пожалуйста, помогите

1 Ответ

0 голосов
/ 14 апреля 2020

Если у вас нет разрешений на копирование в доставляемом содержимом, вам придется доставлять каждое из них за один раз, например:

DeliverContents(key receiver)
{
    integer item = llGetInventoryNumber(INVENTORY_ALL);
    while (item--)
    {
        string inv_name = llGetInventoryName(INVENTORY_ALL, item);
        if (llGetInventoryType(inv_name)!=INVENTORY_SCRIPT)
        {
            llGiveInventory(receiver, inv_name);

        }
    }
}

default
{
    touch_start(integer num_detected)
    {
        key toucher = llDetectedKey(0);
        DeliverContents(toucher);
    }
}

Однако, если они не -копировать для следующего владельца, но у вас есть разрешения на копирование, вы можете доставить их в виде папки, например:

DeliverContentsFolder(key receiver)
{
    integer item = llGetInventoryNumber(INVENTORY_ALL);
    list folder;
    while (item--)
    {
        string inv_name = llGetInventoryName(INVENTORY_ALL, item);
        if (llGetInventoryType(inv_name)!=INVENTORY_SCRIPT)
        {
            folder+=inv_name;
        }
    }

    if (llGetListLength(folder))
    {
        string folder_name = llGetObjectName();
        llGiveInventoryList(receiver, folder_name, folder);
    }
}

default
{
    touch_start(integer num_detected)
    {
        key toucher = llDetectedKey(0);
        DeliverContentsFolder(toucher);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...