Jump to content

deeded script changes ?


Recommended Posts

I have to relearn it every time. If I recall correctly, you must have the owning group active and the script needs to be set to "share with group" and both the object and script must be modifiable by the group as owner. Not sure if there are other gotchas, too.

Link to post
Share on other sites

It's the "shared with group" setting that makes the difference.  Remember that when an object is deed to a group, its ownership changes.  It is no longer owned by an individual, even someone as talented and worthy as you.  You are not the owner, therefore you cannot edit the script unless the owner -- the group -- shares it with you.

Link to post
Share on other sites

heh, yah i've got all the perms set,  and share clicked before i deed it... after i deed, the share goes unclicked, and i re-click it.. still can't edit.

i think someone may have cursed me!

:(

Link to post
Share on other sites

Just making sure: there are two "Share" settings, one for the object and one for the script... and make sure you have the owning group active. If you've got those set, along with the owner perms, then... yeah, I guess you're cursed. 👿

  • Like 1
Link to post
Share on other sites
1 hour ago, Xiija said:

just for clarification,

You others can deed a script, and still edit it after ?

in the Group Allowed Abilities, make sure that the others for their group role have these enabled (ticked):

Object Management
[✓] Deed objects to group
[✓] Manipulate (move,copy.modify) group-owned objects

 

Link to post
Share on other sites

I went in-world to test and indeed, once I'd made all the settings, I could edit a script I'd deeded to group.

Every time I do this, I have to remind myself to make sure the script is shared -- for me, it didn't matter whether the object was shared or not, but my underprivileged alt needed both the object and script to be shared. So then I tried giving that alt's role the "Manipulate (move,copy.modify) group-owned objects" Ability that @Mollymews identified, and then he too could edit the script while only the script, not the object, was shared.

  • Like 2
Link to post
Share on other sites

There is a nifty script I found to deal with these sort of issues of deeding objects .I have this called .deededTools in my objects I deed and cant remember who wrote it please give credit if you know but its very useful as it no longer shows the creator

integer CHANNEL = 1;
key gGhostPrim;
default 
{
    state_entry() 
    {
        llListen(CHANNEL,"",llGetCreator(),"");
        llInstantMessage(llGetCreator(),"For help, type: /" + (string)CHANNEL + llGetObjectName() + " help\n");
    }
    listen(integer channel, string name, key id, string msg) 
    {
        string name = llToLower(llGetObjectName());
 
        if( llSubStringIndex(llToLower(msg),name) != 0) return;
        msg = llStringTrim(llGetSubString(msg,llStringLength(name),-1),STRING_TRIM);
 
        list params = llParseString2List(msg,[" "],[]);
        string command = llToLower(llList2String(params,0));
        string param = llDumpList2String(llDeleteSubList(params,0,0)," ");
 
        params = [];
 
        if( command == "help" )
        {
            llInstantMessage(id,"\nSyntax: /"+ (string)CHANNEL + llGetObjectName() + " <command> <params>\n\n" +
                "kill: Kills the object\n" +
                "ghost <name/UUID>: Follow the object and rotate along with in\n" +
                "unghost: Stop following an object\n" +
                "pin #: Sets script loading pin to <#>\n" +
                "unpin: Removes loading script pin"
            );
            llInstantMessage(id,"\n"+
                "drop: Allows objects to be dropped into the prim\n" +
                "undrop: Prevents objects from being dropped into the prim\n" +
                "reset <script>: Resets the script named <script>\n" +
                "run <script>: Starts the script named <script>\n" +
                "stop <script>: Stopts the script named <script>"
            );            
        }
 
        else if( command == "kill" )
        {
            llInstantMessage(id,"Killing " + llGetObjectName() );
            llDie();
        }
 
        else if( command == "move" || command == "rmove") 
        {
            vector p = (vector)param;
            if( command == "rmove" ) p += llGetPos();
            if( llVecMag( p - llGetPos() ) > 100 ) 
            {
                llInstantMessage(id,"Unable to move: Distance is too great");
                return;
            }
            while( llGetPos() != p ) {llSetPos(p);}
        }
 
        else if( command == "rot" || command == "rrot" )
        {
            rotation r = llEuler2Rot((vector)param*DEG_TO_RAD);
            if( command == "rrot" ) r = llGetRot() * r;
 
            llSetRot(r);
        }
        else if( command == "pin" )
        {
            llSetRemoteScriptAccessPin((integer)param);
        }
        else if( command == "unpin" )
        {
            llSetRemoteScriptAccessPin(0);
        }
        else if( command == "drop" ) llAllowInventoryDrop(TRUE);
        else if( command == "undrop") llAllowInventoryDrop(FALSE);
 
        else if( command == "reset" ) llResetOtherScript(param);
        else if( command == "run" ) llSetScriptState(param,TRUE);
        else if( command == "stop") llSetScriptState(param,FALSE);
 
        else if(command == "remove") {
            if( llGetInventoryType(param) != INVENTORY_NONE) {
                llRemoveInventory(param);
            }
        }
 
        else if( command == "ghost" )
        {
            gGhostPrim = param;
            if( llGetOwnerKey(param) == NULL_KEY ) 
            {
                llSensor(gGhostPrim,"",ACTIVE|PASSIVE,20.0,PI);
            } else {
                llSetTimerEvent(1.0);
            }
        }
        else if( command == "unghost" )
        {
            llSetTimerEvent(0.0);
        }
    }
    sensor(integer i)
    {
        gGhostPrim = llDetectedKey(0);
        llSetTimerEvent(1.0);            
    }
    no_sensor()
    {
        llInstantMessage(llGetCreator(),(string)gGhostPrim + " not found");
    }
 
    timer() 
    {
        list p = llGetObjectDetails(gGhostPrim,[OBJECT_POS,OBJECT_ROT]);
        if( llGetListLength(p) == 0 ) 
        {
            llSetTimerEvent(0.0);
            llInstantMessage(llGetCreator(),"Object Lost..");
        } else {
            llSetPos(llList2Vector(p,0));
            llSetRot(llList2Rot(p,1));
        }
    }
}

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...