// SPDX-License-Identifier: MIT // Copyright (c) 2026 Incoprea // Exhibit scene command bus // Not compiled or tested in-world // Setup: Put in root. Receivers you author can handle link code 7890 with Preview, Quiet, Restore, or Describe. Owner-touch opens the menu. // Stop / restore: Use Restore to request restoration from receivers, then remove. This sender itself changes no display. // Notes: Commands are requests, not guaranteed acknowledgments. Receivers should validate root sender and implement their own restore actions. No regional chat or visitor records. Keep example captions and notecard lines short, preferably ASCII. Character clipping is not UTF-8 byte-budget clipping: multibyte text may reach hover-text or chat limits sooner and be truncated. // License: see LICENSE in this distribution. // Original Incoprea. MIT. Not compiled or tested in-world. integer channel; integer handle; close() { if(handle)llListenRemove(handle); handle=0; llSetTimerEvent(0.0); } default { touch_start(integer n) { if(llDetectedKey(0)!=llGetOwner()||llGetLinkNumber()>1)return; close(); channel=-1000-(integer)llFrand(1000000.0); handle=llListen(channel,"",llGetOwner(),""); llDialog(llGetOwner(),"Request an exhibit scene",["Preview","Quiet","Restore","Describe"],channel); llSetTimerEvent(30.0); } listen(integer ch,string name,key id,string message) { if(!handle||ch!=channel||id!=llGetOwner()||llListFindList(["Preview","Quiet","Restore","Describe"],[message])<0)return; close(); llMessageLinked(LINK_ALL_CHILDREN,7890,message,NULL_KEY); llOwnerSay("Scene request sent: "+message); } timer() { close(); } }