Advertisement
Guest User

llTransferOwnership example with verbose permissions reporting

a guest
Apr 7th, 2025
19
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.73 KB | None | 0 0
  1. string getPermsAsReadableString(integer perm)
  2. {
  3.     integer allPerms = PERM_ALL;
  4.     integer fullPerms = PERM_COPY | PERM_MODIFY | PERM_TRANSFER;
  5.  
  6.     integer copyModMovePerms = PERM_COPY | PERM_MODIFY | PERM_MOVE;
  7.     integer copyModPerms = PERM_COPY | PERM_MODIFY;
  8.  
  9.     integer copyTransMovePerms = PERM_COPY | PERM_TRANSFER | PERM_MOVE;
  10.     integer copyTransPerms = PERM_COPY | PERM_TRANSFER;
  11.  
  12.     integer modTransMovePerms = PERM_MODIFY | PERM_TRANSFER | PERM_MOVE;
  13.     integer modTransPerms = PERM_MODIFY | PERM_TRANSFER;
  14.  
  15.     integer copyMovePerms = PERM_COPY | PERM_MOVE;
  16.  
  17.     integer transMovePerms = PERM_TRANSFER | PERM_MOVE;
  18.  
  19.     string output = " perms: ";
  20.  
  21.     if ((perm & allPerms) == allPerms)
  22.         output += "full and move";
  23.     else if ((perm & fullPerms) == fullPerms)
  24.         output += "full";
  25.     else if ((perm & copyModMovePerms) == copyModMovePerms)
  26.         output += "copy & modify & move";
  27.     else if ((perm & copyModPerms) == copyModPerms)
  28.         output += "copy & modify";
  29.     else if ((perm & copyTransMovePerms) == copyTransMovePerms)
  30.         output += "copy & transfer & move";
  31.     else if ((perm & copyTransPerms) == copyTransPerms)
  32.         output += "copy & transfer";
  33.     else if ((perm & modTransMovePerms) == modTransMovePerms)
  34.         output += "modify & transfer & move";
  35.     else if ((perm & modTransPerms) == modTransPerms)
  36.         output += "modify & transfer";
  37.     else if ((perm & copyMovePerms) == copyMovePerms)
  38.         output += "copy & move";
  39.     else if ((perm & PERM_COPY) == PERM_COPY)
  40.         output += "copy";
  41.     else if ((perm & transMovePerms) == transMovePerms)
  42.         output += "transfer & move";
  43.     else if ((perm & PERM_TRANSFER) == PERM_TRANSFER)
  44.         output += "transfer";
  45.     else if ((perm & PERM_MOVE) == PERM_MOVE)
  46.         output += "move";
  47.     else
  48.         output += "none";
  49.  
  50.     //  Remember, items in Second Life must have either
  51.     //  PERM_COPY or PERM_TRANSFER when "talking about"
  52.     //  owner perms or perms for next owner.
  53.  
  54.     return
  55.         output;
  56. }
  57.  
  58. showAllPerms(integer showCombined)
  59. {
  60.     // optionally include combined permissions
  61.     integer combinedMask = 0;
  62.     if(showCombined) combinedMask = MASK_COMBINED;
  63.    
  64.     integer basePerms      = llGetObjectPermMask(MASK_BASE | combinedMask);
  65.     integer ownerPerms     = llGetObjectPermMask(MASK_OWNER |combinedMask);
  66.     integer nextOwnerPerms = llGetObjectPermMask(MASK_NEXT | combinedMask);
  67.     integer groupPerms     = llGetObjectPermMask(MASK_GROUP | combinedMask);
  68.     integer everyonePerms  = llGetObjectPermMask(MASK_EVERYONE | combinedMask);
  69.  
  70.     llSay(0, "base"       + getPermsAsReadableString(basePerms));
  71.     llSay(0, "owner"      + getPermsAsReadableString(ownerPerms));
  72.     llSay(0, "next owner" + getPermsAsReadableString(nextOwnerPerms));
  73.     llSay(0, "group"      + getPermsAsReadableString(groupPerms));
  74.     llSay(0, "everyone"   + getPermsAsReadableString(everyonePerms));
  75. }
  76.  
  77. default
  78. {
  79.     touch_start(integer total_number)
  80.     {
  81.         llSay(0, "Prior to transfer, object permissions *excluding* contents are:");
  82.         showAllPerms(FALSE);
  83.        
  84.         llSay(0, "Prior to transfer, combined object permissions (including contents) are:");
  85.         showAllPerms(TRUE);
  86.        
  87.         integer result = llTransferOwnership(llDetectedKey(0),FALSE,[]);
  88.         llSay(0,"transfer result= " + (string)result);
  89.     }
  90.    
  91.     changed(integer change)
  92.     {
  93.         if( !(change & CHANGED_OWNER) ) return;
  94.        
  95.         llSay(0, "Post transfer, object permissions *excluding* contents are:");
  96.         showAllPerms(FALSE);
  97.        
  98.         llSay(0, "Post transfer, combined object permissions (including contents) are:");
  99.         showAllPerms(TRUE);
  100.     }
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement