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);

addowner|UUID       adds UUID as owner
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

Popular posts from this blog

Play With The Bots Over At The West Mill Store!

Welcome to the AI Animesh Sexbot Party @ Sunset Forest!

TTS2 - New Text to Audio Speech System! Hear What You Type In Media Audio!