Accessories.lsl 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. // :CATEGORY:Transmogrify
  2. // :NAME:TransmogrifyAvatar
  3. // :AUTHOR:Ferd Frederix
  4. // :CREATED:2013-09-08
  5. // :EDITED:2014-01-01 12:18:57
  6. // :ID:921
  7. // :NUM:1321
  8. // :REV:1
  9. // :WORLD:Second Life
  10. // :DESCRIPTION:
  11. // for anything you wear
  12. // :CODE:
  13. // Transmogrifyer script
  14. // License: CC-BY. Please do not remove the copyright or this notice
  15. // Author: Ferd Frederix
  16. // For all your worn accessories (not the pet)
  17. // makes accessories like shoes and hair disappear when you fly.
  18. integer ownerchannel;
  19. integer listener;
  20. setlisten()
  21. {
  22. if (listener) {
  23. llListenRemove(listener);
  24. }
  25. listener = llListen(ownerchannel,"","","");
  26. }
  27. hide_show( float alpha)
  28. {
  29. integer j = llGetNumberOfPrims();
  30. integer k = 2; // do it twice to get rid of lost packets
  31. while (k--)
  32. {
  33. integer i;
  34. for ( i = 0; i <= j; i++) {
  35. llSetLinkAlpha(i,alpha, ALL_SIDES);
  36. }
  37. }
  38. }
  39. default
  40. {
  41. state_entry()
  42. {
  43. ownerchannel = (integer)("0xF" + llGetSubString( (string)llGetOwner(), 0, 6 ));
  44. hide_show(0); // 0 = invisible
  45. setlisten();
  46. }
  47. on_rez(integer param)
  48. {
  49. hide_show(1); // 1= visible
  50. setlisten();
  51. }
  52. changed(integer what)
  53. {
  54. // no reset needed, we just need to re-establish a listener
  55. if (what & CHANGED_REGION)
  56. setlisten();
  57. if(what & CHANGED_OWNER)
  58. llResetScript();
  59. }
  60. listen(integer channel, string name, key id, string msg)
  61. {
  62. if (msg == "pet") {
  63. hide_show(0);
  64. } else if (msg == "avatar") {
  65. hide_show(1);
  66. }
  67. }
  68. }