// huffware script: button pusher, by fred huffhines // // a simple API for reporting when buttons are pushed. // // this script is licensed by the GPL v3 which is documented at: http://www.gnu.org/licenses/gpl.html // do not use it in objects without fully realizing you are implicitly accepting that license. // // this is a kludgy thing, but this must be hard-coded to have the right button // name for what the rest of the device is expecting. it should vary depending on // the actual button prim that this script is placed in. string BUTTON_NAME = "next"; // the button pushing API. ////////////// integer BUTTON_PUSHER_HUFFWARE_ID = 10035; // a unique ID within the huffware system for this script. string HUFFWARE_PARM_SEPARATOR = "{~~~}"; // this pattern is an uncommon thing to see in text, so we use it to separate // our commands in link messages. string HUFFWARE_ITEM_SEPARATOR = "{|||}"; // used to separate lists of items from each other when stored inside a parameter. // this allows lists to be passed as single string parameters if needed. integer REPLY_DISTANCE = 100008; // offset added to service's huffware id in reply IDs. ////////////// string BUTTON_PUSHED_ALERT = "#btnp"; // this event is generated when the button is pushed. the number parameter will be // the huffware id plus the reply distance. the id parameter in the link message will // contain the name of the button that was pushed. ////////////// // generates our button pressed alert, when the user has finished clicking on the button. send_button_event() { //llOwnerSay("user clicked on button " + BUTTON_NAME); llMessageLinked(LINK_SET, BUTTON_PUSHER_HUFFWARE_ID + REPLY_DISTANCE, BUTTON_PUSHED_ALERT, BUTTON_NAME); } default { state_entry() { if (llSubStringIndex(llGetObjectName(), "huffotronic") < 0) state real_default; } on_rez(integer parm) { state rerun; } } state rerun { state_entry() { state default; } } state real_default { state_entry() { } touch_end(integer count) { if (llDetectedLinkNumber(0) == llGetLinkNumber()) send_button_event(); } }