recorder.lsl 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. // :CATEGORY:Tour
  2. // :NAME:swan tour guide
  3. // :AUTHOR:Ferd Frederix
  4. // :CREATED:2013-09-06
  5. // :EDITED:2013-09-18 15:39:05
  6. // :ID:854
  7. // :NUM:1186
  8. // :REV:1
  9. // :WORLD:Second Life
  10. // :DESCRIPTION:
  11. // Tour
  12. // :CODE:
  13. integer wanted = 0;
  14. integer debugger =0;
  15. list prims;
  16. debug(string message)
  17. {
  18. if (debugger)
  19. llOwnerSay(message);
  20. }
  21. string left(string src, string divider) {
  22. integer index = llSubStringIndex( src, divider );
  23. if(~index)
  24. return llDeleteSubString( src, index , -1);
  25. return src;
  26. }
  27. string right(string src, string divider) {
  28. integer index = llSubStringIndex( src, divider );
  29. if(~index)
  30. return llDeleteSubString( src, 0, index + llStringLength(divider) - 1);
  31. return src;
  32. }
  33. default
  34. {
  35. state_entry()
  36. {
  37. llSetText("Click after setting up all tour prims.", <1.0, 1.0, 1.0>, 2.0);
  38. llListen(300,"","","");
  39. }
  40. touch_start(integer n)
  41. {
  42. llOwnerSay("Please wait");
  43. prims = [];
  44. wanted ++;
  45. llRegionSay(300,"where");
  46. }
  47. listen(integer channel,string name, key id, string message)
  48. {
  49. //debug(llGetObjectName() + " heard " + message);
  50. if (wanted)
  51. {
  52. string l = left(message,"|");
  53. string r = right(message,"|");
  54. string text = right(r,"|");
  55. integer isthere = llListFindList(prims,[(integer) l]);
  56. if (isthere > -1)
  57. {
  58. 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.");
  59. }
  60. if (wanted)
  61. {
  62. prims += (integer) l;
  63. prims += (vector) r;
  64. prims += text;
  65. }
  66. llSetTimerEvent(5.0);
  67. }
  68. }
  69. timer()
  70. {
  71. wanted = 0;
  72. llSetTimerEvent(0);
  73. integer i = 0;
  74. prims = llListSort(prims,3,1);
  75. for (i = 0; i < llGetListLength(prims); i+=3)
  76. {
  77. integer primnum = llList2Integer(prims,i);
  78. vector loc = llList2Vector(prims,i+1);
  79. string text = llList2String(prims,i+2);
  80. llOwnerSay((string) primnum + "|" + (string) loc.x + "|" + (string) loc.y + "|" + (string) loc.z + "|" + text);
  81. }
  82. llOwnerSay("Copy the above lines to the notecard in the tour guide and reset it");
  83. }
  84. on_rez(integer p)
  85. {
  86. llResetScript();
  87. }
  88. }