--- /dev/null
+
+// testing of an opensim bug, where there was a new requirement that
+// the object have a sit target before any changed events will be fired.
+//
+// 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.
+//
+
+integer link_changes = 0;
+
+
+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()
+ {
+ llSitTarget(<0, 0, 0.1>, ZERO_ROTATION);
+//above line makes things work. comment it out, and put in new object, and
+// the object will not get changed events.
+ llSay(0, "sit to run the test...");
+ }
+
+ on_rez(integer count) { llResetScript(); }
+
+ changed(integer chang) {
+ llSay(0, "got into changed event...");
+ if (! (chang & CHANGED_LINK) ) {
+ llSay(0, "change was not a link, leaving.");
+ return; // not for us.
+ }
+ llSay(0, "into changed event, CHANGED_LINK...");
+ link_changes++;
+ key av_sitting = llAvatarOnSitTarget();
+ if (av_sitting == NULL_KEY) {
+ llSay(0, "avatar stood up since key is null");
+ } else {
+ llSay(0, "avatar sat down: " + llDetectedName(0));
+ }
+ }
+
+ touch_start(integer count) {
+ llSay(0, "there have been " + (string)link_changes
+ + " 'changed' events for links since the last reset.");
+ }
+}
\ No newline at end of file