network_receiver.lsl 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. // :SHOW:1
  2. // :CATEGORY:Light
  3. // :NAME:Rene Free Lighting System
  4. // :AUTHOR:Rene10957 Resident
  5. // :KEYWORDS: light,lamp,lighting light
  6. // :CREATED:2015-06-11 14:41:24
  7. // :EDITED:2016-03-30 20:29:28
  8. // :ID:1079
  9. // :NUM:1776
  10. // :REV:2.2.1
  11. // :WORLD:Opensim
  12. // :DESCRIPTION:
  13. // Drop this into the same prim where the SWITCH is located
  14. // :CODE:
  15. // :LICENSE: CC0 (Public Domain)
  16. // Network receiver for Rene's Free Lighting System
  17. //
  18. // Author: Rene10957 Resident
  19. // Date: 05-10-2014
  20. //
  21. // Drop this into the same prim where the SWITCH is located
  22. // Note: only useful if you are also using the network control script
  23. // License: CC0 (Public Domain).
  24. // To the extent possible under law, Rene10957 has waived all copyright and related or neighboring rights.
  25. // For more information, see http://creativecommons.org/publicdomain/zero/1.0/.
  26. string title = "Network Receiver"; // title
  27. string version = "2.2.1"; // version
  28. integer linkSet = TRUE; // LINKSET mode
  29. integer silent = TRUE; // silent startup
  30. // Constants
  31. integer remoteChannel = -975103; // remote channel
  32. integer replyChannel = -975105; // reply channel
  33. integer msgNumber = 10957; // number part of link message
  34. string separator = ";;"; // separator for link or region messages
  35. // Variables
  36. key owner; // object owner
  37. // Functions
  38. string getGroup()
  39. {
  40. string str = llStringTrim(llGetObjectDesc(), STRING_TRIM);
  41. if (llToLower(str) == "(no description)" || str == "") str = "Default";
  42. return str;
  43. }
  44. default
  45. {
  46. state_entry()
  47. {
  48. owner = llGetOwner();
  49. if (linkSet) {
  50. version += "-LINKSET";
  51. }
  52. else {
  53. version += "-REGION";
  54. llListen(remoteChannel, "", "", "");
  55. }
  56. if (!silent) llWhisper(0, title + " " + version + " ready");
  57. }
  58. on_rez(integer start_param)
  59. {
  60. llResetScript();
  61. }
  62. link_message(integer sender_number, integer number, string msg, key id)
  63. {
  64. if (number != remoteChannel) return;
  65. if (msg == "PING") {
  66. llRegionSayTo(id, replyChannel, getGroup());
  67. return;
  68. }
  69. list msgList = llParseString2List(msg, [separator], []);
  70. key target = (key)llList2String(msgList, 0);
  71. string command = llList2String(msgList, 1);
  72. key user = (key)llList2String(msgList, 2);
  73. if (target == llGetKey()) llMessageLinked(LINK_THIS, msgNumber, command, user);
  74. }
  75. listen(integer channel, string name, key id, string msg)
  76. {
  77. if (channel != remoteChannel) return;
  78. if (llGetOwnerKey(id) != owner) return;
  79. if (msg == "PING") {
  80. llRegionSayTo(id, replyChannel, getGroup());
  81. return;
  82. }
  83. list msgList = llParseString2List(msg, [separator], []);
  84. string command = llList2String(msgList, 1);
  85. key user = (key)llList2String(msgList, 2);
  86. llMessageLinked(LINK_THIS, msgNumber, command, user);
  87. }
  88. }