////////////////////////////////////////////////////////// // (C) Wizardry and Steamworks 2011, license: GPLv3 // // Please see: http://www.gnu.org/licenses/gpl.html // // for legal details, rights of fair usage and // // the disclaimer and warranty conditions. // ////////////////////////////////////////////////////////// // Orientates the primitive's positive z axis // towards a position and moves the primitive // towards that position. // // IN: vector representing a position in region // coordinates. // OUT: nothing. moveTo(vector position) { llTargetRemove(targetID); targetID = llTarget(position, 0.8); llLookAt(position, 0.6, 0.6); llMoveToTarget(position, 3.0); } // Vector that will be filled by the script with // the initial starting position in region coordinates. vector iPos; // Integer that the script will use to detect // the next target position it will reach. integer targetID; // Begin script. default { state_entry() { iPos = llGetPos(); llSetStatus(STATUS_PHYSICS, FALSE); llSetRot(llEuler2Rot(<180., 65., 180.>*DEG_TO_RAD)); llSetStatus(STATUS_PHYSICS, TRUE); llSetForce(<0,0,9.81> * llGetMass(), 0); llVolumeDetect(TRUE); llSetStatus(STATUS_BLOCK_GRAB, TRUE); llSensorRepeat("", "", AGENT, 64, TWO_PI, 1); } sensor(integer num) { llSetStatus(STATUS_PHYSICS, TRUE); llSetForce(<0,0,9.81> * llGetMass(), 0); llVolumeDetect(TRUE); llSetStatus(STATUS_BLOCK_GRAB, TRUE); llSetStatus(STATUS_ROTATE_X|STATUS_ROTATE_Y|STATUS_ROTATE_Z, TRUE); integer nagent = (integer)llFrand(--num); if(llGetAgentInfo(llDetectedKey(nagent)) & AGENT_FLYING) return; vector dPos = llDetectedPos(nagent); moveTo(dPos + <0,0,2.8>); } no_sensor() { llSetStatus(STATUS_PHYSICS, FALSE); llSetRot(llEuler2Rot(<180., 85., 180.>*DEG_TO_RAD)); } on_rez(integer num) { llSetStatus(STATUS_PHYSICS, FALSE); llSetRot(llEuler2Rot(<180., 65., 180.>*DEG_TO_RAD)); llResetScript(); } }