Easter Eggs for Submissive-Doll-Gynoid-Fembot AI-RLV Controller (and Animeshes and Wearables)
Happy Thanksgiving! To go with your turkey and football I wanted to write an article to point out a few features of the Submissive-Doll-Gynoid-Fembot AI-RLV Controller which has become quite popular as a system to automate avatars in Second Life. The design of this AI system is complex and has some hidden features. The comments below also apply to the AI components of our animesh bots and the "wearable" bot systems.
1. Change boot-time settings without rebooting
There are a number of system settings that are, according to the documentation, only adjustable during a reboot of the AI system. These include things like the trigger word ( aitrigger|TRIGGER_WORD ), whether the ai system is on or off ( ai|1 or ai|0 ). Well, it turns out you can send at least some of these commands without rebooting but they have to be sent as special link messages from a LSL script. The format is
llMessageLinked(LINK_SET,0,"whatever-command-you-like",NULL_KEY);
For example, you could turn the AI cortex entirely off with
llMessageLinked(LINK_SET,0,"ai|0",NULL_KEY);
and turn it back on with
llMessageLinked(LINK_SET,0,"ai|1",NULL_KEY);
Another thing you might do is block the normal open chat input by putting a crazy aitrigger that will never be matched
llMessageLinked(LINK_SET,0,"aitrigger|supercalifragilate",NULL_KEY);
So now the cortex input from nearby chat is entirely blocked, but the cortex is still running. Why would you want that? Have a look at the next topic!
2. Send input from code to the ai cortex
There is a special linked message channel that is used internally to send input directly to the cortex, bypassing the usual input coming from Nearby Chat:
llMessageLinked(LINK_SET,-5235,"input-text",id);
This sends the string input-text directly to the cortex, with the key id indicating the speaker's uuid. I don't think it even needs to be the uuid of an avatar, could be id of an object, in which case the cortex will probably get a null string as a name of speaker. You may want to make sure id is a key of a speaker by using llGetOwnerKey(id) in the call.
So, if you stop normal cortex input using the aitrigger command above, you can then provide your *own* input path to, e.g., preprocess input from other sources with your own scripts. Diabolical!
---------------------------------------------------------------------------------------------------------------------
Boot-time commands that *might* work with llMessageLinked(LINK_SET,0,"command",NULL_KEY);
adduser|UUID adds UUID as user
ai|N turns AI responses on (N=1, default) or off (N=0);
note that manual | commands will still execute, and
stimuli including the special word poweron will be sent to the ai system
(so you can turn the AI system back on!)
aidelete|SRD removes the matching SRD from memory (requires perfect match!)
ailock|N locks (N=1) or unlocks (N=0) AI - unlocked mode allows you to send responses yourself
by touching the HUD
aimaxcut|N allows matches to stimuli with as many as N characters cut from end
(N=0 by default, i.e., exact match)
aitrigger|AITRIGGER AI system requires AITRIGGER to be in the input in order to respond
channelsay|N TEXT immediately say TEXT on channel N (one space between N and TEXT)
collarchannel|N sets collar channel to N
collarprefix|PREFIX sets collar prefix to PREFIX
ctrl|COMMAND sends COMMAND immediately to the RLV Controller (for setting things at boot time)
deleteowner|UUID removes UUID as owner
deleteuser|UUID removes UUID as user
eof|eof ends reading of ai notecard (used to truncate reading, usually for debugging)
eof|eof does NOT stop auxiliary notecard or web page reading.
moodtimeout|TIME sets mood timeout to TIME
nc|TEXT starts reading nc in prim inventory with name TEXT (SRDs only are
guaranteed to work - some control lines will not work)
ownersay|TEXT OwnerSay TEXT
say|TEXT Nearby Chat TEXT
setrange|RANGE set range for response to Nearby Chat by avs to RANGE m
setsensor|RANGE OLDTIMEOUT NEWTIMEOUT set proximity sensor response to RANGE m,
with timeouts for old and new responses of OLDTIMEOUT and NEWTIMEOUT s
sleep|TIME ai will suspend all responses for TIME s
title|TEXT set title on HUD prim to TEXT
trainingtime|TIME mantra time set to TIME s
trainingtime2|TIME second set of mantras set to occur at intervals TIME s
unknown|TEXT if no ai response, respond TEXT
web|URL start reading webpage URL (SRDs only are guaranteed to work - some control lines won't work)
These commands may work (beware of ones that alter the stored SRDs, e.g., web|URL ).If the ai system seems screwed up, just reboot - you can't break anything permanently with these commands. Enjoy writing scripts to play with them!

Comments
Post a Comment