我有一个 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);
}
}
无法知道交易是否失败。除非您在向 prim 提供库存时发送消息,并且 prim 的脚本检查其库存并使用 llRegionSay 发回消息。 -LSL 维基
遗憾的是您无法看到交易是否成功
答案是正确的,但在我看来并不完整。
如果您想知道,是否有人接受并附加/重新调整了该对象,那么您必须在对象本身中添加一个脚本。
您使用函数“on_rez(){}”或“state_entry(){ }”并让对象通知您,llDetected_Key(0) 已重新调整对象。或者您可以向服务器发送电子邮件,服务器将对象发送给指定的居民,其中包含一些信息,例如重新/附加了哪些内容以及重新/附加了谁。
然后服务器脚本可以分析接收者列表并将其与“开启者”列表进行比较。