Advertisement
dilmahT

Slap anyone HUD for Second Life

Sep 14th, 2023
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Linden Scripting 3.38 KB | Source Code | 0 0
  1. key owner;
  2. string originalName;
  3. list avatars = [];
  4. string firstName = "";
  5. string secondName = "";
  6. string selectedAction1st = "";
  7. string selectedAction2nd = "";
  8. integer listenHandle1;
  9. integer listenHandle2;
  10. integer listenHandle3;
  11. integer listenHandle4;
  12. list actions1st = ["hugs", "cuddles", "smiles at", "kisses", "waves to", "winks at", "slaps", "high-fives", "glances at", "whispers to", "farts on"];
  13. list actions2nd = ["tightly", "hopelessly" , "firmly", "lovingly", "gently", "playfully", "warmly", "shyly", "mischievously", "passionately", "softly", "on the butt"];
  14.  
  15. default
  16. {
  17.     state_entry()
  18.     {
  19.         owner = llGetOwner();
  20.         originalName = llGetObjectName();
  21.     }
  22.  
  23.     touch_start(integer total_number)
  24.     {
  25.         if(llDetectedKey(0) == owner)
  26.         {
  27.             avatars = []; // Clear avatars list
  28.             llListenRemove(listenHandle1);
  29.             llSensor("", NULL_KEY, AGENT, 10.0, PI);
  30.         }
  31.     }
  32.  
  33.     sensor(integer num_detected)
  34.     {
  35.         avatars = [];
  36.         integer i;
  37.         integer ownerFound = FALSE; // Flag to track if owner is in the detected list
  38.         for (i = 0; i < num_detected; i++)
  39.         {
  40.             avatars += [llDetectedName(i), llDetectedKey(i)];
  41.             if (llDetectedKey(i) == owner)
  42.             {
  43.                 ownerFound = TRUE;
  44.             }
  45.         }
  46.  
  47.         // Ensure the owner is always included
  48.         if (!ownerFound)
  49.         {
  50.             avatars += [llKey2Name(owner), owner];
  51.         }
  52.  
  53.         list avatarNames = llList2ListStrided(avatars, 0, -1, 2);
  54.         listenHandle1 = llListen(-12345678, "", owner, "");
  55.         llDialog(owner, "Choose an avatar:", avatarNames, -12345678);
  56.     }
  57.  
  58.     listen(integer channel, string name, key id, string message)
  59.     {
  60.         if(id == owner && channel == -12345678) // first menu
  61.         {
  62.             firstName = message;
  63.             llListenRemove(listenHandle1);  // Close the first listener
  64.            
  65.             // Open Action 1st dialog
  66.             listenHandle2 = llListen(-12345679, "", owner, "");
  67.             llDialog(owner, "Choose an action:", actions1st, -12345679);
  68.         }
  69.         else if(id == owner && channel == -12345679) // Action 1st menu
  70.         {
  71.             selectedAction1st = message;
  72.             llListenRemove(listenHandle2);  // Close the second listener
  73.            
  74.             // Open Second Avatar dialog
  75.             list secondAvatarNames = llList2ListStrided(avatars, 0, -1, 2);
  76.             listenHandle3 = llListen(-12345680, "", owner, "");
  77.             llDialog(owner, "Choose a second avatar:", secondAvatarNames, -12345680);
  78.         }
  79.         else if(id == owner && channel == -12345680) // second menu
  80.         {
  81.             secondName = message;
  82.             llListenRemove(listenHandle3);  // Close the third listener
  83.  
  84.             // Open Action 2nd dialog
  85.             listenHandle4 = llListen(-12345681, "", owner, "");
  86.             llDialog(owner, "How?", actions2nd, -12345681);
  87.         }
  88.         else if(id == owner && channel == -12345681) // Action 2nd menu
  89.         {
  90.             selectedAction2nd = message;
  91.  
  92.             string msg = selectedAction1st + " " + secondName + " " + selectedAction2nd;
  93.             llSetObjectName(firstName);
  94.             llSay(0, msg);
  95.             llSetObjectName(originalName);
  96.  
  97.             llListenRemove(listenHandle4);
  98.         }
  99.     }
  100. }
  101.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement