tour recorder script 1.1.lsl 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. // recorder
  2. integer wanted = 0;
  3. integer debugger =0;
  4. list prims;
  5. debug(string message)
  6. {
  7. if (debugger)
  8. llOwnerSay(message);
  9. }
  10. string left(string src, string divider) {
  11. integer index = llSubStringIndex( src, divider );
  12. if(~index)
  13. return llDeleteSubString( src, index , -1);
  14. return src;
  15. }
  16. string right(string src, string divider) {
  17. integer index = llSubStringIndex( src, divider );
  18. if(~index)
  19. return llDeleteSubString( src, 0, index + llStringLength(divider) - 1);
  20. return src;
  21. }
  22. default
  23. {
  24. state_entry()
  25. {
  26. llSetText("Click after setting up all tour prims. \nShout on channel '/300 die' to clear all prims", <1.0, 1.0, 1.0>, 2.0);
  27. llListen(300,"","","");
  28. }
  29. touch_start(integer n)
  30. {
  31. llOwnerSay("Please wait");
  32. prims = [];
  33. wanted ++;
  34. llRegionSay(300,"where");
  35. }
  36. listen(integer channel,string name, key id, string message)
  37. {
  38. //debug(llGetObjectName() + " heard " + message);
  39. if (wanted)
  40. {
  41. string l = left(message,"|");
  42. string r = right(message,"|");
  43. string text = right(r,"|");
  44. integer isthere = llListFindList(prims,[(integer) l]);
  45. if (isthere > -1)
  46. {
  47. llOwnerSay("Error, there are two prims named " + l + ". 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.");
  48. }
  49. if (wanted)
  50. {
  51. prims += (integer) l;
  52. prims += (vector) r;
  53. prims += text;
  54. }
  55. llSetTimerEvent(5.0);
  56. }
  57. }
  58. timer()
  59. {
  60. wanted = 0;
  61. llSetTimerEvent(0);
  62. integer i = 0;
  63. prims = llListSort(prims,3,1);
  64. for (i = 0; i < llGetListLength(prims); i+=3)
  65. {
  66. integer primnum = llList2Integer(prims,i);
  67. vector loc = llList2Vector(prims,i+1);
  68. string text = llList2String(prims,i+2);
  69. llOwnerSay( "0|" + (string) loc.x + "|" + (string) loc.y + "|" + (string) loc.z + "|" + text +"||");
  70. }
  71. llOwnerSay("Copy the above lines to the notecard in the tour guide and reset it");
  72. }
  73. on_rez(integer p)
  74. {
  75. llResetScript();
  76. }
  77. }