xs_infomatic.lsl 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. // :CATEGORY:XS Pet
  2. // :NAME:XS Pet Xundra Snowpaw Original Quail
  3. // :AUTHOR:Xundra Snowpaw
  4. // :CREATED:2013-09-06
  5. // :EDITED:2013-09-18 15:39:10
  6. // :ID:989
  7. // :NUM:1475
  8. // :REV:1
  9. // :WORLD:Second Life, Opensim
  10. // :DESCRIPTION:
  11. // Original Pet Quail
  12. // :CODE:
  13. integer API_CHANNEL = -999198;
  14. integer MAXIMUM_HUNGER = 30;
  15. integer ANIMAL_CHANNEL = -999192;
  16. integer hunger_amount;
  17. //integer eaten;
  18. vector colour1;
  19. vector colour2;
  20. integer sex;
  21. integer shine;
  22. float glow;
  23. string pregnant;
  24. string sleep;
  25. integer gen;
  26. integer name_listener;
  27. integer menu_listener;
  28. integer age;
  29. integer play_sounds;
  30. string special;
  31. integer menu_expired;
  32. integer sleep_disabled;
  33. say_details()
  34. {
  35. string mysex;
  36. string myshine;
  37. if (sex == 1) {
  38. mysex = "Male";
  39. } else
  40. if (sex == 2) {
  41. mysex = "Female";
  42. } else {
  43. mysex = (string)sex;
  44. }
  45. if (shine == 0) {
  46. myshine = "None";
  47. } else
  48. if (shine == 1) {
  49. myshine = "Low";
  50. } else
  51. if (shine == 2) {
  52. myshine = "Medium";
  53. } else
  54. if (shine == 3) {
  55. myshine = "High";
  56. }
  57. llWhisper(0, "Head/Body Colour: " + (string)colour1);
  58. llWhisper(0, "Tail/Wing Colour: " + (string)colour2);
  59. llWhisper(0, "Shine: " + myshine);
  60. llWhisper(0, "Glow: " + (string)((integer)(glow * 100)) + "%");
  61. llWhisper(0, "Special: " + special);
  62. llWhisper(0, "Sex: " + mysex);
  63. llWhisper(0, "Age: " + (string)age + " days");
  64. llWhisper(0, "Generation: " + (string)gen);
  65. llSay(API_CHANNEL, "XSQuail^" + (string)llGetKey() + "^" + (string)colour1 + "^" + (string)colour2 + "^" + (string)shine + "^" + (string)glow + "^" + special + "^" + (string)gen + "^" + (string)sex + "^" + (string)age + "^XSQuailEnd");
  66. }
  67. default
  68. {
  69. link_message(integer sender, integer num, string str, key id)
  70. {
  71. if (num == 800) {
  72. state running;
  73. }
  74. }
  75. }
  76. state running
  77. {
  78. state_entry()
  79. {
  80. hunger_amount = 0;
  81. age = 0;
  82. pregnant = "";
  83. play_sounds = 1;
  84. llListen(API_CHANNEL, "", "", "");
  85. }
  86. touch_start(integer total_number)
  87. {
  88. string mysex;
  89. if (sex == 1) {
  90. mysex = "Male";
  91. } else
  92. if (sex == 2) {
  93. mysex = "Female";
  94. } else {
  95. mysex = (string)sex;
  96. }
  97. llSetText(llGetObjectName() + "\n" + mysex + " - Age: " + (string)age + " - Gen: " + (string)gen + "\n" + "Hunger: " + (string)hunger_amount + "/" + (string)MAXIMUM_HUNGER + "\n" + pregnant + sleep, <1,1,1>, 1.0);
  98. say_details();
  99. menu_expired = 0;
  100. if (llDetectedKey(0) == llGetOwner()) {
  101. integer menu_chan = (integer)llFrand(10000.0) + 100;
  102. llListenRemove(menu_listener);
  103. menu_listener = llListen(menu_chan, "", llGetOwner(), "");
  104. menu_expired = 1;
  105. }
  106. llSetTimerEvent(30.0);
  107. }
  108. timer()
  109. {
  110. llListenRemove(menu_listener);
  111. llListenRemove(name_listener);
  112. llSetTimerEvent(0.0);
  113. llSetText("", <1,1,1>, 1.0);
  114. if (menu_expired) {
  115. llWhisper(0, "Menu Expired");
  116. menu_expired = 0;
  117. }
  118. }
  119. link_message(integer sender, integer num, string str, key id)
  120. {
  121. if (num == 903 || num == 904) {
  122. hunger_amount = (integer)str;
  123. } else
  124. if (num == 901) {
  125. hunger_amount --;
  126. //eaten ++;
  127. } else
  128. if (num == 930) {
  129. colour1 = (vector)str;
  130. } else
  131. if (num == 931) {
  132. colour2 = (vector)str;
  133. } else
  134. if (num == 932) {
  135. sex = (integer)str;
  136. } else
  137. if (num == 933) {
  138. shine = (integer)str;
  139. } else
  140. if (num == 934) {
  141. glow = (float)str;
  142. } else
  143. if (num == 935) {
  144. gen = (integer)str;
  145. } else
  146. if (num == 940) {
  147. age += (integer)str;
  148. } else
  149. if (num == 972) {
  150. pregnant = "Pregnant";
  151. llSay(API_CHANNEL, "I'm Pregnant!");
  152. } else
  153. if (num == 5000) {
  154. sex = 2;
  155. if ((integer)str != 0) {
  156. pregnant = "Pregnant";
  157. }
  158. } else
  159. if (num == 970) {
  160. pregnant = "";
  161. } else
  162. if (num == 990) {
  163. sleep = "\nSleeping";
  164. } else
  165. if (num == 991) {
  166. sleep = "";
  167. } else
  168. if (num == 1001) {
  169. if (play_sounds) {
  170. llPlaySound("bird_sound", 1.0);
  171. }
  172. } else
  173. if (num == 1010) {
  174. special = str;
  175. }
  176. //
  177. if (num == 910) {
  178. list data = llParseString2List(str, ["^"], []);
  179. llSetText("Home Set: " + llList2String(data, 0) + " " + llList2String(data, 1) + "m", <1,1,1>, 1.0);
  180. llSetTimerEvent(15.0);
  181. }
  182. }
  183. listen(integer channel, string name, key id, string msg)
  184. {
  185. if (channel == 0 && id == llGetOwner()) {
  186. list name_parts = llParseString2List(msg, [","], []);
  187. if (llToLower(llList2String(name_parts, 0)) == "name") {
  188. string myname = llStringTrim(llList2String(name_parts, 1), STRING_TRIM);
  189. integer i;
  190. for (i=0;i<llStringLength(myname);i++) {
  191. if (llGetSubString(myname, i, i) == "^") {
  192. llWhisper(0, "Sorry, cannot have a \"^\" in the name.");
  193. llListenRemove(name_listener);
  194. return;
  195. }
  196. }
  197. llWhisper(0, "My new name is " + myname);
  198. llSetObjectName(myname);
  199. llListenRemove(name_listener);
  200. }
  201. } else if (channel == API_CHANNEL) {
  202. list data = llParseString2List(msg, ["^"], []);
  203. if (llList2String(data, 0) == "XSQuail" && llList2Key(data, 1) == llGetKey()) {
  204. llSay(API_CHANNEL, "XSQuail^" + (string)llGetKey() + "^" + (string)colour1 + "^" + (string)colour2 + "^" + (string)shine + "^" + (string)glow + "^" + special + "^" + (string)gen + "^" + (string)sex + "^" + (string)age + "^XSQuailEnd");
  205. }
  206. } else if (channel != ANIMAL_CHANNEL) {
  207. llListenRemove(menu_listener);
  208. menu_expired = 0;
  209. if (msg == "Name") {
  210. name_listener = llListen(0, "", llGetOwner(), "");
  211. llSetTimerEvent(30.0);
  212. } else
  213. if (msg == "Package") {
  214. llMessageLinked(LINK_SET, 950, "", "");
  215. } else
  216. if (msg == "Sound") {
  217. if (play_sounds) {
  218. llWhisper(0, "Turning sound off.");
  219. } else {
  220. llWhisper(0, "Turning sound on.");
  221. }
  222. play_sounds = !play_sounds;
  223. } else
  224. if (msg == "Home Object") {
  225. llGiveInventory(llGetOwner(), "XS Home Object");
  226. } else
  227. if (msg == "Sleep") {
  228. if (sleep_disabled) {
  229. llWhisper(0, "Enabling Sleeping.");
  230. } else {
  231. llWhisper(0, "Disabling Sleeping.");
  232. }
  233. sleep_disabled = !sleep_disabled;
  234. llMessageLinked(LINK_SET, 7999, (string)sleep_disabled, "");
  235. }
  236. }
  237. }
  238. }