The expensive Vista animation overriders in Second Life are based on the ZHAO-II engine (by Ziggy Puff, mod by Marcus Gray, Johann Ehrler and Moeka Kohime) and the Vista AOs that were tested contain the ZHAO-II-core MGJEmod 1.1.9 script.

Even though the Vista animation creator does not disclose the GPLv2 source, the header of the ZHAO-II-core MGJEmod 1.1.9 script mentions the following:

// ZHAO-II-core - Ziggy Puff, 07/07

// Main engine script - receives link messages from any interface script. Handles the core AO work
// Interface definition: The following link_message commands are handled by this script. All of 
// these are sent in the string field. All other fields are ignored
// ZHAO_RESET                          Reset script
// ZHAO_LOAD|<notecardName>            Load specified notecard
// ZHAO_NEXTSTAND                      Switch to next stand
// ZHAO_STANDTIME|<time>               Time between stands. Specified in seconds, expects an integer.
//                                     0 turns it off
// ZHAO_AOON                           AO On
// ZHAO_AOOFF                          AO Off
// ZHAO_SITON                          Sit On
// ZHAO_SITOFF                         Sit Off
// ZHAO_RANDOMSTANDS                   Stands cycle randomly
// ZHAO_SEQUENTIALSTANDS               Stands cycle sequentially
// ZHAO_SETTINGS                       Prints status
// ZHAO_SITS                           Select a sit
// ZHAO_GROUNDSITS                     Select a ground sit
// ZHAO_WALKS                          Select a walk
// ZHAO_SITANYWHERE_ON                 Sit Anywhere mod On 
// ZHAO_SITANYWHERE_OFF                Sit Anywhere mod Off 
// ZHAO_TYPE_ON                        Typing AO On 
// ZHAO_TYPE_OFF                       Typing AO Off 
// ZHAO_TYPEKILL_ON                    Typing Killer On 
// ZHAO_TYPEKILL_OFF                   Typing Killer Off 
// So, to send a command to the ZHAO-II engine, send a linked message:
//   llMessageLinked(LINK_SET, 0, "ZHAO_AOON", NULL_KEY);
// This script uses a listener on channel -91234. If other scripts are added to the ZHAO, make sure 
// they don't use the same channel

In other words, the script provides a micro-API accessible to scripters to enable and disable the AO.

Interfacing with Vista AOs

By injecting (creating) a script into any Vista AO:

with the following contents:

    listen(integer channel, string name, key id, string text) {
        if(text == "on") {
            llMessageLinked(LINK_SET, 0, "ZHAO_AOON", NULL_KEY);
        if(text == "off") {
            llMessageLinked(LINK_SET, 0, "ZHAO_AOOFF", NULL_KEY);
        // More, if you so desire...
    on_rez(integer num) {
    changed(integer channel) {

will enable the owner of the AO to type on local chat:

/7331 on

to enable the AO, respectively:

/7331 off

Making Corrade Toggle the Vista AO

Using the tell command, Corrade can send the on or off message on channel 7331 defined in the script from the previous section:

            "command", "tell",
            "group", wasURLEscape(GROUP),
            "password", wasURLEscape(PASSWORD),
            // or "off" to switch the Vista AO off
            "message", "on",
            "entity", "local",
            "type", "Normal",
            "channel", "7331"

Happy Corrading! :-)

Further Extensions

Based on the ZHAO-II API, it is possible to do more programatically with the Vista AO, for instance: cycling stands, sits, etc… The principle is still the same.

secondlife/scripted_agents/corrade/tutorials/enabling_and_disabling_vista_animation_overriders.txt · Last modified: 2020/09/04 06:44 (external edit)

Access website using Tor Access website using i2p Wizardry and Steamworks PGP Key

For the copyright, license, warranty and privacy terms for the usage of this website please see the license, privacy, copyright and the plagiarism pages.