获取llGiveInventory的结果

问题描述 投票:0回答:2

我有一个 LSL 脚本,它使用 llGiveInventory() 向用户提供一个对象。 有没有办法让我的脚本知道用户是否接受或拒绝该对象?

在我的查看器(Firestorm)中,当我接受给出的对象时,我可以看到一条消息:

“网格:测试用户拥有的基元给了您披萨。基元位于 MyRegion <107.7737, 137.6579, 23.5>。

该消息甚至会显示在对话日志中,因此它似乎显示为消息。 我尝试在频道 0 和 DEBUG_CHANNEL 上收听,但都没有听到消息。

这是当前脚本:

string objName = "Pizza";
default {
    state_entry() {
        llListen(DEBUG_CHANNEL, "", NULL_KEY, "");
    }

    touch_start(integer num_detected) {
        llGiveInventory(llDetectedKey(0), objName);
    }

    listen (integer channel, string name, key id, string message) {
        llOwnerSay("Did you hear that?  I heard " + message);
    }
}
linden-scripting-language
2个回答
2
投票

无法知道交易是否失败。除非您在向 prim 提供库存时发送消息,并且 prim 的脚本检查其库存并使用 llRegionSay 发回消息。 -LSL 维基

遗憾的是您无法看到交易是否成功

http://wiki.secondlife.com/wiki/LlGiveInventory


0
投票

答案是正确的,但在我看来并不完整。

如果您想知道,是否有人接受并附加/重新调整了该对象,那么您必须在对象本身中添加一个脚本。

您使用函数“on_rez(){}”或“state_entry(){ }”并让对象通知您,llDetected_Key(0) 已重新调整对象。或者您可以向服务器发送电子邮件,服务器将对象发送给指定的居民,其中包含一些信息,例如重新/附加了哪些内容以及重新/附加了谁。

然后服务器脚本可以分析接收者列表并将其与“开启者”列表进行比较。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.