#10 prim.lsl 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. // :CATEGORY:Tour
  2. // :NAME:OpenSim Tour Car
  3. // :AUTHOR:Ferd Frederix
  4. // :KEYWORDS:
  5. // :CREATED:2014-09-07 10:50:19
  6. // :EDITED:2014-09-07
  7. // :ID:1040
  8. // :NUM:1627
  9. // :REV:1
  10. // :WORLD:Second Life
  11. // :DESCRIPTION:
  12. // Tour Routing prim for Opensim
  13. // :CODE:
  14. // WAYPOINT #10 PRIM SCRIPT
  15. // When rezzed, does a llRegionSay on channel 300 of the word "number". Other #10 prims hear this
  16. // chats 10||Description on channel 300 when it hears 'number' on 300.
  17. // remembers the highest number it hears and sets the name to 10+ that number
  18. integer wanted = 0;
  19. integer debugger = 1;
  20. list prims;
  21. debug(string message)
  22. {
  23. if (debugger)
  24. llOwnerSay(message);
  25. }
  26. default
  27. {
  28. state_entry()
  29. {
  30. llListen(300,"","","");
  31. wanted++;
  32. llRegionSay(300,"number");
  33. llSetTimerEvent(5.0); // 5 seconds to hear from all prims
  34. llOwnerSay("Setting coordinates");
  35. }
  36. listen(integer channel,string name, key id, string message)
  37. {
  38. if (message == "die")
  39. llDie();
  40. else if (message =="where")
  41. llRegionSay(300,llGetObjectDesc() + "|" + (string) llGetPos() + "|" + (string) llGetRot());
  42. else if (message =="number")
  43. llRegionSay(300,llGetObjectDesc());
  44. else if (wanted)
  45. {
  46. prims += (integer) message; // add to memory list
  47. }
  48. }
  49. timer()
  50. {
  51. wanted = 0;
  52. prims = llListSort(prims,1,0); // sort descending
  53. integer num = (integer) llList2Integer(prims,0); // get highest number
  54. llSetObjectDesc((string) (num + 10)); // leave room for more prims to be added
  55. llSetText((string)(num + 10),<1,1,1>,1.0);
  56. llOwnerSay("Desc set to " + llGetObjectDesc());
  57. llSetTimerEvent(0);
  58. }
  59. on_rez(integer p)
  60. {
  61. llResetScript();
  62. }
  63. }