Recorder.lsl 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  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:1628
  9. // :REV:1
  10. // :WORLD:Opensim
  11. // :DESCRIPTION:
  12. // Tour recordwer. Touch this after placing #10 prims
  13. // :CODE:
  14. osMakeNotecard(string notecardName, string contents) {
  15. llOwnerSay("Make Notecard " + notecardName + "Contents:" + (string) contents);
  16. }
  17. integer wanted = 0;
  18. integer debugger =1;
  19. list prims;
  20. debug(string message)
  21. {
  22. if (debugger)
  23. llOwnerSay(message);
  24. }
  25. string left(string src, string divider) {
  26. integer index = llSubStringIndex( src, divider );
  27. if(~index)
  28. return llDeleteSubString( src, index , -1);
  29. return src;
  30. }
  31. string right(string src, string divider) {
  32. integer index = llSubStringIndex( src, divider );
  33. if(~index)
  34. return llDeleteSubString( src, 0, index + llStringLength(divider) - 1);
  35. return src;
  36. }
  37. default
  38. {
  39. state_entry()
  40. {
  41. llSetText("Click after setting up all tour prims.", <1.0, 1.0, 1.0>, 2.0);
  42. llListen(300,"","","");
  43. }
  44. touch_start(integer n)
  45. {
  46. llOwnerSay("Please wait");
  47. prims = [];
  48. wanted ++;
  49. llRegionSay(300,"where");
  50. }
  51. listen(integer channel,string name, key id, string message)
  52. {
  53. debug(llGetObjectName() + " heard " + message);
  54. if (wanted)
  55. {
  56. list msg = llParseString2List(message,["|"],[""]);
  57. integer aname = (integer) llList2String(msg,0);
  58. vector dest = (vector) llList2String (msg,1);
  59. rotation arot = (rotation) llList2String(msg,2);
  60. integer isthere = llListFindList(prims,[aname]);
  61. if (isthere > -1)
  62. {
  63. llOwnerSay("Error, there are two prims named " + aname + ". Please make sure each prim is uniquely numbered from - to N in sequence from the start prim to the finish prim. Gaps in the sequence are allowed.");
  64. }
  65. if (wanted)
  66. {
  67. prims += (integer) aname;
  68. prims += (vector) dest;
  69. prims += (rotation) arot;
  70. }
  71. llSetTimerEvent(10.0);
  72. }
  73. }
  74. timer()
  75. {
  76. wanted = 0;
  77. llSetTimerEvent(0);
  78. integer i = 0;
  79. prims = llListSort(prims,3,1);
  80. string out;
  81. for (i = 0; i < llGetListLength(prims); i+=3)
  82. {
  83. integer primnum = llList2Integer(prims,i);
  84. vector loc = llList2Vector(prims,i+1);
  85. rotation arot = llList2Rot(prims,i+2);
  86. out += (string) primnum + "|" + (string) loc + "|" + (string) arot +"|\n";
  87. }
  88. osMakeNotecard("Route",out);
  89. llOwnerSay("The Route notecard is ready");
  90. }
  91. on_rez(integer p)
  92. {
  93. llResetScript();
  94. }
  95. }