More posts about: emacs Tags: lsl, secondlife // Add Comment »
By default, objects created in Second Life are plywood boxes. I'm not really interested in learning how to making these cubes look like anything in particular. I'm just interested in making them do cool things. Someone else can put time and effort into making a replica of a real-world object or a fantastic new device... I'm just here to play around with programs. =)
Stephen Perelgut wanted a structured interviewer that collected data in-world instead of requiring people to fill out a notecard or leave Second Life and fill out a web-based form. So today, I built an interview-bot which asks a series of questions and stores the answers. Avatars can click on the bot to start, and can resume this "conversation" at any time. Chatting on a separate channel means that answers are reasonably private. The data is stored in the object and can only be retrieved by the object's owner.
In order to build this, I learned a little bit about how to work around Second Life's data limitations. You see, the Linden Scripting Language doesn't have multidimensional arrays. Fortunately, LSLwiki.net has a library for accessing multidimensional arrays by packing and unpacking lists of lists, encoded as strings. The library is kludgey, but as long as my code looks relatively neat, everything's okay.
Future versions of this interview-bot will allow avatars to review, change, and submit their answers through the Web or through e-mail. I also hope to make it easy for owners to customize the list of questions. A notecard would do nicely for setup. I can also make it easy for owners to get a notecard of results.
It was fun programming the scripted object, and even more fun chatting with the other IBMers. I met a number of interesting people today thanks to awesome connectors like Andy Piper and Stephen Perelgut. I can't wait to build other interesting things in Second Life!
Random Emacs symbol: planner-read-non-date-page - Function: Prompt for a page name that does not match `planner-date-regexp'.