/////////////////////////////////////////////////////////////////////////// // Copyright (C) Wizardry and Steamworks 2011 - License: GNU GPLv3 // // Please see: http://www.gnu.org/licenses/gpl.html for legal details, // // rights of fair usage, the disclaimer and warranty conditions. // /////////////////////////////////////////////////////////////////////////// key _owner = NULL_KEY; key nQuery = NULL_KEY; integer xLine = 0; integer agentInfo = 0; string _lastAnim = ""; string _lastAnimName = ""; string stream = ""; list sList = []; //pragma inline string xName = "XAO"; list walk_list = []; list fly_list = []; list sit_list = []; list stand_list = []; list run_list = []; list type_list = []; list sitobj_list = []; //pragma inline list ANIMATION_NODES = [ "walking", "flying", "sitting", "standing", "running", "typing", "sitobject" ]; //pragma inline string wasStAX_GetNodeValue(string node) { list StAX = []; string value = ""; xLine = 0; do { string current = llList2String(sList, xLine); string lookback = llList2String(sList, xLine-1); if(current != "/" && lookback == "<") { StAX += current; jump next_tag; } integer len = llGetListLength(StAX)-1; if(lookback == "/") { StAX = llDeleteSubList(StAX, len, len); jump next_tag; } if(current != ">" && current != "/" && current != "<") if(llList2String(StAX,len) == node) value += current + " "; @next_tag; } while(++xLine", "/"]); stream = ""; agentInfo = llGetListLength(sList); integer itra = llGetListLength(ANIMATION_NODES)-1; do { if(llList2String(ANIMATION_NODES, itra) == "walking") { walk_list = llParseString2List(wasStAX_GetNodeValue("walking"), [" "], []); jump anim_type; } if(llList2String(ANIMATION_NODES, itra) == "flying") { fly_list = llParseString2List(wasStAX_GetNodeValue("flying"), [" "], []); jump anim_type; } if(llList2String(ANIMATION_NODES, itra) == "sitting") { sit_list = llParseString2List(wasStAX_GetNodeValue("sitting"), [" "], []); jump anim_type; } if(llList2String(ANIMATION_NODES, itra) == "standing") { stand_list = llParseString2List(wasStAX_GetNodeValue("standing"), [" "], []); } if(llList2String(ANIMATION_NODES, itra) == "running") { run_list = llParseString2List(wasStAX_GetNodeValue("running"), [" "], []); } if(llList2String(ANIMATION_NODES, itra) == "typing") { type_list = llParseString2List(wasStAX_GetNodeValue("typing"), [" "], []); } if(llList2String(ANIMATION_NODES, itra) == "sitobject") { sitobj_list = llParseString2List(wasStAX_GetNodeValue("sitobject"), [" "], []); } @anim_type; } while(--itra>=0); llRequestPermissions(_owner, PERMISSION_TRIGGER_ANIMATION); return; } if(data == "") jump next_line; stream += data; @next_line; nQuery = llGetNotecardLine(xName, ++xLine); } run_time_permissions(integer perm) { if(perm & PERMISSION_TRIGGER_ANIMATION) { llOwnerSay("Acquired permissions..."); sList = llParseString2List(llDumpList2String(sList, ""), ["<", ">", "/"], []); integer itra=llGetListLength(sList)-1; do { llStopAnimation(llList2String(sList, itra)); } while(--itra>=0); llOwnerSay("Starting..."); state walking; } } changed(integer change) { if(change & CHANGED_OWNER) { _owner = llGetOwner(); return; } if(change & CHANGED_INVENTORY) { llResetScript(); return; } } on_rez(integer param) { _owner = llGetOwner(); } } state walking { state_entry() { llSetTimerEvent((1.02-llGetRegionTimeDilation())); } timer() { // Get next state. agentInfo = commute(); if(agentInfo == 0 && _lastAnim != "walking") { changeAnimation("walking"); state walking; } if(agentInfo == 1 && _lastAnim != "flying") { changeAnimation("flying"); state flying; } if(agentInfo == 2 && _lastAnim != "sitobject") { changeAnimation("sitobject"); state sitobject; } if(agentInfo == 3 && _lastAnim != "sitting") { changeAnimation("sitting"); state sitting; } if(agentInfo == 4 && _lastAnim != "running") { changeAnimation("running"); state running; } if(agentInfo == 5 && _lastAnim != "typing") { changeAnimation("typing"); state typing; } if(agentInfo == 6 && _lastAnim != "standing") { changeAnimation("standing"); state standing; } } } state standing { state_entry() { llSetTimerEvent((1.02-llGetRegionTimeDilation())); } timer() { // Get next state. agentInfo = commute(); if(agentInfo == 0 && _lastAnim != "walking") { changeAnimation("walking"); state walking; } if(agentInfo == 1 && _lastAnim != "flying") { changeAnimation("flying"); state flying; } if(agentInfo == 2 && _lastAnim != "sitobject") { changeAnimation("sitobject"); state sitobject; } if(agentInfo == 3 && _lastAnim != "sitting") { changeAnimation("sitting"); state sitting; } if(agentInfo == 4 && _lastAnim != "running") { changeAnimation("running"); state running; } if(agentInfo == 5 && _lastAnim != "typing") { changeAnimation("typing"); state typing; } if(agentInfo == 6 && _lastAnim != "standing") { changeAnimation("standing"); state standing; } } } state flying { state_entry() { llSetTimerEvent((1.02-llGetRegionTimeDilation())); } timer() { // Get next state. agentInfo = commute(); if(agentInfo == 0 && _lastAnim != "walking") { changeAnimation("walking"); state walking; } if(agentInfo == 1 && _lastAnim != "flying") { changeAnimation("flying"); state flying; } if(agentInfo == 2 && _lastAnim != "sitobject") { changeAnimation("sitobject"); state sitobject; } if(agentInfo == 3 && _lastAnim != "sitting") { changeAnimation("sitting"); state sitting; } if(agentInfo == 4 && _lastAnim != "running") { changeAnimation("running"); state running; } if(agentInfo == 5 && _lastAnim != "typing") { changeAnimation("typing"); state typing; } if(agentInfo == 6 && _lastAnim != "standing") { changeAnimation("standing"); state standing; } } } state sitting { state_entry() { llSetTimerEvent((1.02-llGetRegionTimeDilation())); } timer() { // Get next state. agentInfo = commute(); if(agentInfo == 0 && _lastAnim != "walking") { changeAnimation("walking"); state walking; } if(agentInfo == 1 && _lastAnim != "flying") { changeAnimation("flying"); state flying; } if(agentInfo == 2 && _lastAnim != "sitobject") { changeAnimation("sitobject"); state sitobject; } if(agentInfo == 3 && _lastAnim != "sitting") { changeAnimation("sitting"); state sitting; } if(agentInfo == 4 && _lastAnim != "running") { changeAnimation("running"); state running; } if(agentInfo == 5 && _lastAnim != "typing") { changeAnimation("typing"); state typing; } if(agentInfo == 6 && _lastAnim != "standing") { changeAnimation("standing"); state standing; } } } state running { state_entry() { llSetTimerEvent((1.02-llGetRegionTimeDilation())); } timer() { // Get next state. agentInfo = commute(); if(agentInfo == 0 && _lastAnim != "walking") { changeAnimation("walking"); state walking; } if(agentInfo == 1 && _lastAnim != "flying") { changeAnimation("flying"); state flying; } if(agentInfo == 2 && _lastAnim != "sitobject") { changeAnimation("sitobject"); state sitobject; } if(agentInfo == 3 && _lastAnim != "sitting") { changeAnimation("sitting"); state sitting; } if(agentInfo == 4 && _lastAnim != "running") { changeAnimation("running"); state running; } if(agentInfo == 5 && _lastAnim != "typing") { changeAnimation("typing"); state typing; } if(agentInfo == 6 && _lastAnim != "standing") { changeAnimation("standing"); state standing; } } } state typing { state_entry() { llSetTimerEvent((1.02-llGetRegionTimeDilation())); } timer() { // Get next state. agentInfo = commute(); if(agentInfo == 0 && _lastAnim != "walking") { changeAnimation("walking"); state walking; } if(agentInfo == 1 && _lastAnim != "flying") { changeAnimation("flying"); state flying; } if(agentInfo == 2 && _lastAnim != "sitobject") { changeAnimation("sitobject"); state sitobject; } if(agentInfo == 3 && _lastAnim != "sitting") { changeAnimation("sitting"); state sitting; } if(agentInfo == 4 && _lastAnim != "running") { changeAnimation("running"); state running; } if(agentInfo == 5 && _lastAnim != "typing") { changeAnimation("typing"); state typing; } if(agentInfo == 6 && _lastAnim != "standing") { changeAnimation("standing"); state standing; } } } state sitobject { state_entry() { llSetTimerEvent((1.02-llGetRegionTimeDilation())); } timer() { // Get next state. agentInfo = commute(); if(agentInfo == 0 && _lastAnim != "walking") { changeAnimation("walking"); state walking; } if(agentInfo == 1 && _lastAnim != "flying") { changeAnimation("flying"); state flying; } if(agentInfo == 2 && _lastAnim != "sitobject") { changeAnimation("sitobject"); state sitobject; } if(agentInfo == 3 && _lastAnim != "sitting") { changeAnimation("sitting"); state sitting; } if(agentInfo == 4 && _lastAnim != "running") { changeAnimation("running"); state running; } if(agentInfo == 5 && _lastAnim != "typing") { changeAnimation("typing"); state typing; } if(agentInfo == 6 && _lastAnim != "standing") { changeAnimation("standing"); state standing; } } }