network_receiver.lsl 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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:16
  7. // :EDITED:2015-06-12 16:41:13
  8. // :ID:1078
  9. // :NUM:1757
  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. // Drop this into the same prim where the FIRE SCRIPT is located
  17. // Note: only useful if you are also using the network control script
  18. string title = "Network Receiver"; // title
  19. string version = "2.2.1"; // version
  20. integer linkSet = TRUE; // LINKSET mode
  21. integer silent = TRUE ; // silent startup
  22. // Constants
  23. integer remoteChannel = -975101; // remote channel
  24. integer replyChannel = -975106; // reply channel
  25. integer msgNumber = 10959; // number part of link message
  26. string separator = ";;"; // separator for link or region messages
  27. // Variables
  28. key owner; // object owner
  29. default
  30. {
  31. state_entry()
  32. {
  33. owner = llGetOwner();
  34. if (linkSet) {
  35. version += "-LINKSET";
  36. }
  37. else {
  38. version += "-REGION";
  39. llListen(remoteChannel, "", "", "");
  40. }
  41. if (!silent) llWhisper(0, title + " " + version + " ready");
  42. }
  43. on_rez(integer start_param)
  44. {
  45. llResetScript();
  46. }
  47. link_message(integer sender_number, integer number, string msg, key id)
  48. {
  49. if (number != remoteChannel) return;
  50. if (msg == "PING") {
  51. llRegionSayTo(id, replyChannel, "DATA");
  52. return;
  53. }
  54. list msgList = llParseString2List(msg, [separator], []);
  55. key target = (key)llList2String(msgList, 0);
  56. string command = llList2String(msgList, 1);
  57. key user = (key)llList2String(msgList, 2);
  58. if (target == llGetKey()) llMessageLinked(LINK_THIS, msgNumber, command, user);
  59. }
  60. listen(integer channel, string name, key id, string msg)
  61. {
  62. if (channel != remoteChannel) return;
  63. if (llGetOwnerKey(id) != owner) return;
  64. if (msg == "PING") {
  65. llRegionSayTo(id, replyChannel, "DATA");
  66. return;
  67. }
  68. list msgList = llParseString2List(msg, [separator], []);
  69. string command = llList2String(msgList, 1);
  70. key user = (key)llList2String(msgList, 2);
  71. llMessageLinked(LINK_THIS, msgNumber, command, user);
  72. }
  73. }