network_receiver_region.lsl 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. // :SHOW:1
  2. // :CATEGORY:Fire
  3. // :NAME:Realfire by Rene
  4. // :AUTHOR:Rene10957 Resident
  5. // :KEYWORDS: light,lamp,lighting
  6. // :CREATED:2015-06-11 14:37:17
  7. // :EDITED:2015-06-12 16:41:13
  8. // :ID:1078
  9. // :NUM:1758
  10. // :REV:2.2.1
  11. // :WORLD:Second Life, Opensim
  12. // :DESCRIPTION:
  13. // Network receiver for RealFire
  14. // :CODE:
  15. //:LICENSE: CC0 (Public Domain). To the extent possible under law, Rene10957 has waived all copyright and related or neighboring rights.For more information, see http://creativecommons.org/publicdomain/zero/1.0/.
  16. //
  17. // Network receiver for RealFire
  18. // Drop this into the same prim where the FIRE SCRIPT is located
  19. // Note: only useful if you are also using the network control script
  20. string title = "Network Receiver"; // title
  21. string version = "2.2.1"; // version
  22. integer linkSet = FALSE; // REGION mode
  23. integer silent = TRUE; // silent startup
  24. // Constants
  25. integer remoteChannel = -975101; // remote channel
  26. integer replyChannel = -975106; // reply channel
  27. integer msgNumber = 10959; // number part of link message
  28. string separator = ";;"; // separator for link or region messages
  29. // Variables
  30. key owner; // object owner
  31. default
  32. {
  33. state_entry()
  34. {
  35. owner = llGetOwner();
  36. if (linkSet) {
  37. version += "-LINKSET";
  38. }
  39. else {
  40. version += "-REGION";
  41. llListen(remoteChannel, "", "", "");
  42. }
  43. if (!silent) llWhisper(0, title + " " + version + " ready");
  44. }
  45. on_rez(integer start_param)
  46. {
  47. llResetScript();
  48. }
  49. link_message(integer sender_number, integer number, string msg, key id)
  50. {
  51. if (number != remoteChannel) return;
  52. if (msg == "PING") {
  53. llRegionSayTo(id, replyChannel, "DATA");
  54. return;
  55. }
  56. list msgList = llParseString2List(msg, [separator], []);
  57. key target = (key)llList2String(msgList, 0);
  58. string command = llList2String(msgList, 1);
  59. key user = (key)llList2String(msgList, 2);
  60. if (target == llGetKey()) llMessageLinked(LINK_THIS, msgNumber, command, user);
  61. }
  62. listen(integer channel, string name, key id, string msg)
  63. {
  64. if (channel != remoteChannel) return;
  65. if (llGetOwnerKey(id) != owner) return;
  66. if (msg == "PING") {
  67. llRegionSayTo(id, replyChannel, "DATA");
  68. return;
  69. }
  70. list msgList = llParseString2List(msg, [separator], []);
  71. string command = llList2String(msgList, 1);
  72. key user = (key)llList2String(msgList, 2);
  73. llMessageLinked(LINK_THIS, msgNumber, command, user);
  74. }
  75. }