door script.txt.txt 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. // door swing script
  2. integer open = 0;
  3. integer side = 2;
  4. opendoor()
  5. {
  6. if (open == TRUE)
  7. return;
  8. float swing = 120; // in degrees
  9. rotation rot = llGetRot();
  10. rotation delta = llEuler2Rot(<0,0,swing> );
  11. rotation finalrot = delta * rot; // add the delta
  12. llSetRot(finalrot);
  13. open = TRUE;
  14. }
  15. closedoor()
  16. {
  17. if (open == FALSE)
  18. return;
  19. float swing = -120; // in degrees
  20. rotation rot = llGetRot();
  21. rotation delta = llEuler2Rot(<0,0,swing> );
  22. rotation finalrot = delta * rot; // add the delta
  23. llSetRot(finalrot);
  24. open = FALSE;
  25. }
  26. default
  27. {
  28. state_entry()
  29. {
  30. }
  31. touch_start(integer total_number)
  32. {
  33. if (open)
  34. {
  35. llSetTimerEvent(0.1); //close door
  36. }
  37. else
  38. {
  39. opendoor();
  40. llMessageLinked(LINK_ALL_OTHERS, 0,"rez","");
  41. llSetTimerEvent(30.0);
  42. }
  43. }
  44. timer()
  45. {
  46. closedoor();
  47. llSetTimerEvent(0.0);
  48. }
  49. link_message(integer sender_num,integer num, string str, key id)
  50. {
  51. //llOwnerSay("Heard:" + str);
  52. if (str =="open")
  53. {
  54. llSetTimerEvent(30.0);
  55. opendoor();
  56. }
  57. else if (str =="close")
  58. {
  59. llSetTimerEvent(0.0);
  60. closedoor();
  61. }
  62. }
  63. on_rez(integer p)
  64. {
  65. llResetScript();
  66. }
  67. }