To compile a script & associate with an experience you need to have mod perms to the script itself. I want to distribute scripted products that may be associated with the buyers experiences but not give them access to view my scripts themselves.
eg: 1. integer llAssociateExperience(key UUID of experience)
2. list llAssociateExperience(key UUID of experience)
or: 3. key llRequestExperienceAssociation(key UUID of experience)
Associates the experience with the script (overriding what may already be there) exactly as if the script was recompiled associated with it. The same checks are performed that "Use Experience" does.
Option 1 Delivers true if UUID corresponds to an experience the owner of the object the script is running in has appropriate permissions
Option 2 Delivers the same information as llGetExperienceDetails (after association of course)
Option 3 delivers data Server event or similar with results
As llGetExperienceDetails is immediate & doesn't require an event I prefer option 1 or 2.