N&D controller.lsl 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. integer busy ;
  2. integer Helmet_Channel = 576;
  3. key NamakasKey;
  4. float MaxBeam = 2.0; // how far the helmet beam happens
  5. vector currPos(); // Namakas current position;
  6. vector centerPoint = <128,128,32>; // the center of where Namaka can walk
  7. list avatarPos = [<0,1,1>,<2,2,2>,<3,3,3> ]; // all 6 avatars are here
  8. default
  9. {
  10. state_entry()
  11. {
  12. }
  13. link_message(integer sender_number, integer number, string message, key id)
  14. {
  15. // -1 is Namakas key
  16. // 0 is for NPC direction commands
  17. // 1 is for doorway
  18. // 2 is the helment beam channel
  19. if (number == -1){
  20. NamakasKey = id;
  21. } else if (number == 0){
  22. if (! busy) {
  23. llMessageLinked(LINK_SET,1,message);
  24. }
  25. } else if (number == 1) {
  26. vector direction = (vector) message;
  27. } else if (number == 2){
  28. // GO
  29. llShout(Helmet_Channel,"BOOM");
  30. integer i;
  31. integer j = llGetListLength(avatarPos);
  32. for (i = 0; i < j; i++)
  33. {
  34. float dist = llVecDist(llList2Vector(avatarPos,i),centerPoint);
  35. if (dist > MaxBeam) {
  36. ChangeNPC();
  37. ToDo --;
  38. if (ToDo == 0) {
  39. Win();
  40. }
  41. }
  42. }
  43. }
  44. }
  45. }