Jump to content
Sign in to follow this  
Ipecac Burnham

Experience errors....

Recommended Posts

Today, my LL home region was switched to No Scripts, and now all my experience enabled scripts throw errors wen crossing the parcel boundaries, back into the region proper.

 

Said scripts have been in place and working for over 2 weeks.

 

for example, my roof TP, is a super super simple...

 
	
string gsErrorMessage = "";
default
{
    state_entry()
    {
        
    }
    
    collision_start(integer detected)
    {
            llRequestExperiencePermissions(llDetectedKey(0), "");
    }
    
    experience_permissions( key agent_id )
    {
        llTeleportAgent(agent_id, "The Hubgrub Experience - Second Floor", ZERO_VECTOR, ZERO_VECTOR);
    }
    
    experience_permissions_denied( key agent_id, integer reason )
    {
        gsErrorMessage = "Teleport Denied: " + llGetExperienceErrorMessage(reason) + ". ";
        if (reason == 1) gsErrorMessage += "The call failed due to too many recent calls.";
        else if (reason == 2) gsErrorMessage += "The region currently has experiences disabled.";
        else if (reason == 3) gsErrorMessage += "One of the string arguments was too big to fit in the key-value store.";
        else if (reason == 4) gsErrorMessage += "Experience permissions were denied by the user.";
        else if (reason == 5) gsErrorMessage += "This script is not associated with an experience.";
        else if (reason == 6) gsErrorMessage += "The sim was unable to verify the validity of the experience. Retrying after a short wait is advised.";
        else if (reason == 7) gsErrorMessage += "The script is associated with an experience that no longer exists.";
        else if (reason == 8) gsErrorMessage += "The experience owner has temporarily disabled the experience.";
        else if (reason == 9) gsErrorMessage += "The experience has been suspended by Linden Lab customer support.";
        else if (reason == 10) gsErrorMessage += "An unknown error not covered by any of the other predetermined error states.";
        else if (reason == 11) gsErrorMessage += "An attempt to write data to the key-value store failed due to the data quota being met.";
        else if (reason == 12) gsErrorMessage += "The key-value store is currently disabled on this region.";
        else if (reason == 13) gsErrorMessage += "Unable to communicate with the key-value store.";
        else if (reason == 14) gsErrorMessage += "The requested key does not exist.";
        else if (reason == 15) gsErrorMessage += "A checked update failed due to an out of date request.";
        else if (reason == 16) gsErrorMessage += "The content rating of the experience exceeds that of the region.";
        else if (reason == 17) gsErrorMessage += "The experience is blocked or not enabled for this land.";
        else if (reason == 18) gsErrorMessage += "The request for experience permissions was ignored.";
	        llSay(PUBLIC_CHANNEL, gsErrorMessage);
        llRegionSayTo( agent_id, PUBLIC_CHANNEL, gsErrorMessage );  
    }
}
	

since my region got switched to no scripts, every time I leave my borders I now push
        "else if (reason == 17) gsErrorMessage += "The experience is blocked or not enabled for this land.";"

 

"Teleport Denied: not allowed to run in current location. The experience is blocked or not enabled for this land."

Doesn't matter when the user used the asset, or what, the second they leave, I now get error returns...

 

This is for everything experience enabled, I have Coffee cups and a Cookie, that rez/attach/clean up, today, they error too if I leave my parcel.

 

This stands to make grid wide experiences a lot of hassle, as anyone neighboring anyone can turn scripts off, but leaving a parcel should never call llRequestExperiencePermissions(llDetectedKey(0), ""); to be receiving a perms/perms failed event...

 

I have to think it's a listen, the original perms grab is done by a dialog, so it must be heard... but every single subsequent call, or check of the perms on an agent opens that listen too, and leaving the script enabled land, closes it, forcing the error... maybe.

I've tried using llAgentInExperience(); instead, so... if yes, we have perms. but I can't TP the agent without the request for perms, which opens "something" and causes errors on leaving my parcel now that surrounding land has scripts disabled.


Is this normal, and expected?

 

The Edit : Erwin Solo is the writer of the error if tree, which I copy pasta'd from these forums, so TY Erwin, for sharing!

Edited by Ipecac Burnham
Stuffs!
  • Like 1

Share this post


Link to post
Share on other sites
40 minutes ago, Ipecac Burnham said:

now all my experience enabled scripts throw errors wen crossing the parcel boundaries, back into the region proper

I don't quite understand what that means.    If scripts are turned off, how does your coffee-cup rezzer manage to rez coffee cups?   Do you mean your experience-enabled scripts are in items you're wearing, or in vehicles, and that they throw errors when you're leaving the parcel and entering a no-script area?   

I don't see what the region as a whole being set to no scripts has to do with it, since presumably your scripts are still running, despite the region not allowing running scripts, since they're calling llGetExperiencePermissions and the experience_permissions_denied event is firing (so if they're in HUDs or in vehicles, you must have called llTake(controls()).   

The most obvious explanation for what you're seeing is that your experience got turned off for the region at the same time it got set to no scripts.   Are you sure that's not what's happened?  You've presumably turned on the experience for your parcel, which would override that for your parcel only.    If that's the case, then the problem will go away when you're able to make your experience grid-wide.

Share this post


Link to post
Share on other sites

It's a LL home, so on My parcel scripts are on, and working, fine, leaving the parcel, is triggering

experience_permissions_denied

on every asset that has been used, on every agent who has used the asset.

Share this post


Link to post
Share on other sites

Say I'm in my house, I tp upstairs, Works, I then bump the parcel borders for a second, because they are so tightly fitting on the LL homes and I'm no longer in my parcel, so scripts are off, and the errors kick as the agent who is now outside lost "perms" maybe.

 

But why is crossing a parcel boundary triggering a request for perms, at all?.

 

How would I mitigate it, I could use all kinds of laggy sensors to ensure the agent is in the parcel, but if they decide to walk out between sweeps... Experience perms denied is instantly triggered, making it entirely useless, as it's triggered by a thing that's not scripted, not interactable, is in noway a controllable event unless I put in walls all the way to the ceiling of the region to stop them, but they can simply double click the minimap, TP outside the parcel, and trips exp.perms denied on every item they have used, so I can't use it for anything legitimately, as it's being tripped by the "every day action" of leaving a parcel.

 

I can filter out all errors that == 17, but what if it's a legitimate error, say, LL disabled experiences region wide I'll miss my own needed errors...

Share this post


Link to post
Share on other sites

I have 2 parcels on a homestead in the Blake Sea. I use a walk through teleporter to cross easily between them. I am also getting the same 17 error.

 

And then.. like magic it works again. Then like evil magic it starts doing it once more.

Edited by Callum Meriman

Share this post


Link to post
Share on other sites
6 hours ago, Ipecac Burnham said:

Say I'm in my house, I tp upstairs, Works, I then bump the parcel borders for a second, because they are so tightly fitting on the LL homes and I'm no longer in my parcel, so scripts are off, and the errors kick as the agent who is now outside lost "perms" maybe.

 

But why is crossing a parcel boundary triggering a request for perms, at all?.

 

How would I mitigate it, I could use all kinds of laggy sensors to ensure the agent is in the parcel, but if they decide to walk out between sweeps... Experience perms denied is instantly triggered, making it entirely useless, as it's triggered by a thing that's not scripted, not interactable, is in noway a controllable event unless I put in walls all the way to the ceiling of the region to stop them, but they can simply double click the minimap, TP outside the parcel, and trips exp.perms denied on every item they have used, so I can't use it for anything legitimately, as it's being tripped by the "every day action" of leaving a parcel.

 

I can filter out all errors that == 17, but what if it's a legitimate error, say, LL disabled experiences region wide I'll miss my own needed errors...

Sorry, I'm still confused.   You TP upstairs (using the teleporter script you posted earlier, I assume).  You then leave the parcel.   Something throws an error --- the teleporter or something else?   And what's the coffee-cup rezzer you mentioned in the OP got to do with it?

 

Share this post


Link to post
Share on other sites

I think this is just the way it is, although I can't remember whether there's some reason for it to behave this way or if it may be a defect that was never fixed. There's a related jira from 2015 with this comment by @Lucia Nightfire that includes:

Quote

 

Whenever anyone over your parcel touches the object and grants experience perms, their perms are stored in the script.
llGetPermissionsKey() will return their key and llGetPermissions() will return 15412(0x3c34).

If that person walks off your parcel onto a parcel that does not have your experience allowed, your object will trigger experience_permissions_denied() with error 17 and their perms will be removed.
llGetPermissionsKey() will return NULL_KEY and llGetPermissions() will return 0.

 

I checked my own Experience-based teleporter scripts and they only use experience_permissions_denied to initiate some clean-up, not to throw any error messages.

Testing variants of the script above, I always get the error 17 experience_permissions_denied() event the first time I cross into an Experience-disabled parcel after the experience_permissions() event, unless I reset the script within the experience_permissions handler.

This testing is with all parcels script-enabled; I don't think that's relevant. It's a mystery, though, how this was working for weeks with users presumably crossing into other parcels not encountering this error. Are we sure that's true?

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

Thanks, Qie.   That explains a lot.   The fix, then, would be simply not to include all that completely unnecessary event handling in the experience_permissions_denied event, since all it's doing in this script is annoying people.

I use the experience_permissions_denied event very sparingly -- typically, only to tell the script what to do if someone refuses to grant the experience perms.    Otherwise I use it primarily for debug purposes.   

  • Sad 1

Share this post


Link to post
Share on other sites

The two scenarios I mainly worry about sending a user a message is:

if experience_permissions_denied() triggers with XP_ERROR_NOT_PERMITTED immediately after llRequestExperiencePermissions() executes, which is the only way to assume they have the experience already blocked.

if experience_permissions_denied() triggers with XP_ERROR_NOT_PERMITTED_LAND within the expected use period after llRequestExperiencePermissions() executes, in case they wander on to someone else's parcel then grant perms or use a menu selection.

  • Like 3

Share this post


Link to post
Share on other sites

I get it with the handling, that was purely me trying to find out what's actually going on in the scripts for experiences as there's so few actual examples or informational info on them.

 

As it stands, in my scenario...

 

If 10 people are in my parcel, who can use the experience, it's not disabled region wide so runs...

 

If I have 40 props... Food, drinks, books, toys, gadgets, furniture, all scripted using experience permissions for animations, attaches, whatever.

 

if all 10 people leave my parcel, weather I'm handling them or not, 400 events are going to run through my parcel if we all clicked each item once, that doesn't feel right, at all, to the point I don't feel comfortable using the scripts any more.

Edited by Ipecac Burnham

Share this post


Link to post
Share on other sites
On 03/05/2018 at 6:55 PM, Ipecac Burnham said:

if all 10 people leave my parcel, weather I'm handling them or not, 400 events are going to run through my parcel if we all clicked each item once, that doesn't feel right, at all, to the point I don't feel comfortable using the scripts any more.

This isn't really the conclusion I'd draw here. While grid-scope Experiences are much to be desired -- and in this case, will enable attachments that stay attached everywhere -- it's not really necessary to avoid spam events. The sample code in the wiki article for llRequestExperiencePermissions() for example jumps to a state that doesn't have a handler for experience_permissions_denied, removing any script involvement in the sim's enforcement of land-scope on the Experience, other than processing the resulting detachment. (Especially for temp attachments, a state change is way better than the quick-and-dirty reset I did to test the teleport script above.)

  • Like 1

Share this post


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.

Sign in to follow this  

×
×
  • Create New...