| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- // :CATEGORY:Flying Bee
- // :NAME:Flying Bee and Hive
- // :AUTHOR:Ferd Frederix
- // :CREATED:2013-09-08 12:59:45
- // :EDITED:2013-09-18 15:38:53
- // :ID:995
- // :NUM:1491
- // :REV:2
- // :WORLD:Second Life
- // :DESCRIPTION:
- // A free flying bee that gathers pollen and takes it to his hive
- // :CODE:
- // Simple Bee script to locate and gather pollen from all prims named "Flower" then returns to the Beehive"
- // Requires 2 sounds buzz1 and buzz2
- string FLOWER_NAME = "Flower";
- string HIVE_NAME = "Beehive";
- vector offset = <0,.10,.1>;
- vector hive_offset = <0,.5,0>;
- // This is an OpenSim compatible llLookAt()
- default
- {
- state_entry()
- {
- llSetTimerEvent(5); // move every 5 seconds
- }
- on_rez(integer p)
- {
- llSetTimerEvent(5); // move every 5 seconds
- }
- timer()
- {
- llSensor(FLOWER_NAME, NULL_KEY, ACTIVE|PASSIVE, 15.0,PI);
- llSetTimerEvent(0);
- }
- sensor(integer numDetected)
- {
- //llOwnerSay((string) numDetected);
- integer i;
- string name = llDetectedName(0);
- if (name == FLOWER_NAME)
- {
- for (i = 0; i < numDetected; i++)
- {
- llPlaySound("buzz1",1.0);
- vector new = <90,0,0> * DEG_TO_RAD;
- rotation r = llEuler2Rot(new);
- llLookAt(llDetectedPos(i),1,0.1);
- llSetPos(llDetectedPos(i) + <0,0.1,0>);
- llSetRot(llDetectedRot(i) * r);
- llSleep(4);
- }
- llSensor(HIVE_NAME,NULL_KEY,ACTIVE|PASSIVE,15.0,PI);
- } else {
- llPlaySound("buzz1",1.0);
- vector pos = llDetectedPos(0);
- llLookAt(llDetectedPos(0),1,0.1); // face beehive
- llSetPos(pos + hive_offset);
- vector new = <90,0,0> * DEG_TO_RAD;
- rotation r = llEuler2Rot(new);
- llSetRot(llDetectedRot(0) * r); // orient to it
- llSleep(1);
- llSetPos(pos ); // move in
- llSleep(10);
- llSetTimerEvent(2);
- llSetPos(pos + hive_offset); //move out
- llSleep(1);
- }
- }
- no_sensor()
- {
- llSetTimerEvent(15);
- }
- }
|