Jump to content

Phate Shepherd

Resident
  • Posts

    214
  • Joined

  • Last visited

Posts posted by Phate Shepherd

  1. 4 hours ago, GManB said:

    Thanks All!!

    Nick, that website is perfect. Got the animated gif and script in a minute or so!

    Now, any way to stream a video to a prim face???

     

    Thanks,

    G

    Take a look at the wiki for llSetLinkMedia();

    Media on a prim will let you view (almost) anything on a prim face that you can view on a web page. The problem is, many users may have media turned off in their viewers. You can put a placeholder image on the prim face that will show only if they have media on a prim turned off, and it can show them how to turn it back on.

    If I recall right, the checkbox next to the media slider in the Sounds preference panel has to be turned on. I can't recall for sure if any other options have to be on.

    • Like 1
  2. 7 minutes ago, Miguelito Shilova said:

    Is there a way to have AVSitter2 listen for a link message (or similar) from another script to trigger an animation change for a sitter?

    Just started playing with AVSitter2 and see that in the YT tutorials you can use it with a sailboat. I didn't see where it could use an external trigger to make a change. Does anyone have an example to show how this can be done?

    Thanks!

    --Mig

    AVSItter is very controllable....

    https://avsitter.github.io/avsitter2_scripting.html

    • Like 1
    • Thanks 1
  3. 4 hours ago, GManB said:

    Ah, right. It has, I'll admit, taken me a bit of time to get used to having more than one file in an inventory 'directory' with the same name, whether they are the same file or different files lol. I get that names of assets in SL are display names and the underlying names in the OS filesystem are unique. Just, a bit different to get used to. 

    G

    Still, it might be worth suggesting in a jira entry to change the viewer source so that the temp name is something like "Script Name-UUID.lsl" instead of "sl_script_UUID.lsl"

    Maybe it was simply done out of concern for script names that have characters that are illegal in the 3 supported OSs, like : or / or ? or whatever.

  4. 2 hours ago, VirtualKitten said:

    Have Furware but I used generator to generate the screen and dropped in the control scrip and created a little scrip from the examples it just displays nothing  a bit like xyz als its hard to miniaturize this when i make it small the script makes it larger  is there a newer solution that works?

    What is your ultimate goal? Are you concerned about the .5 land impact of the display prims adding up, and need to get 16 characters on a prim vs 8?

  5. I just realized something from dealing with a hosting company that had firewalled an SL simulator IP address:

    If the proxy pool is going to be on one server (or at least far fewer servers than there are simulators) doesn't that mean that if some griefer creates a DoS attack script, and an outside host firewalls the IP address of the proxy to mitigate the DoS attack, it could potentially kill http comms for an entire swath of regions to the hosting service instead of just a small number as it is now? Any merchant that uses the same hosting service would be SOL?

    Are we all going to have to find hosting companies that DO NOT UNDER ANY CIRCUMSTANCES firewall by ip only??? I'm worried that lower tiered hosting companies aren't going to bother with figuring out exactly what is going on, and simply end up firewalling all of the proxy IPs as the inbound DoS comes from a select few IPs.

    I hope, that as part of the proxy change, there is some beefed up outbound DoS attack detection. Possibly keeping a log of recent IP/FQDN requests, and if there is a sudden jump in requests to a common host, an alarm is set off. (Distributed account DoS attack). Obviously some learning would be needed... some site like casperdns.com is going to have millions of hits a day, but previous stats would tell the algorithm that is to be expected.

  6. I believe the attach even fires on detach. id will equal NULL_KEY. The problem is, the script is only given a small amount of time after detach to execute code. So if there is a lot of work to do, you might be better to fire off a message to some other object on the region to do the work.

    One annoying thing I ran into when doing this is the key of the source object (the one being detached) is no longer valid, so a receiver can't verify who sent the message with llGetOwnerKey(). The message itself needs to carry the owner info.

    You aren't guaranteed to get time, and if you use this feature, take into account that you should use this in your attach handler to properly detect a detach, and not code continuing to execute from the previous detach.

    if (id == NULL_KEY && llGetAttached() == 0) { safe to run detach code }

    • Like 1
  7. 2 hours ago, GManB said:

    Phate,

    THANKS!

    I am on a Mac and using Sublime Text and I had a slightly different command in the External Editor settings. I was getting a new instance of the editor for each file for which I selected 'Edit' inworld....

     

    G

    I hear yah! BBEdit was even worse... it would open a separate instance for each click of Edit, but wouldn't open the file. TextEdit would just say the file had bad permissions. I hadn't tried Sublime.

  8.  

    8 minutes ago, Rowan Afterthought said:

    That was quick, Thanks! I get confused by the terminology. Didn't know vectors don't count as logical operators... or... oof I feel dumb. xD

    I goofed there.... I meant to say bitwise operations like  | and & can only be performed on integer values. Since vectors are comprised of 3 floating point values, that means you can't use bitwise operators (not to be confused with logical operators like || and &&)

    • Thanks 1
  9. I realize the OP and participants on this thread are on PCs, but if any Mac users come here, there is a trick to make it work. There is a bug in the way that Firestorm tries to open the temp .lsl file and the fix was found in a post from Kyle Linden on the jira: https://jira.secondlife.com/browse/BUG-227726

    So, to use BBEdit as your external viewer, you manually put this into the external editor field of FS prefs or debug "External Editor" settings of the LL viewer:

    /usr/bin/open -a BBEdit.app %s

    There is a language file for BBEdit here: http://www.xmir.org/tech-talk/updated-lsl-language-module.html

    It is a little out of date, but it is easy to edit the .plist file and add in any missing LSL commands or constants.

  10. You are trying to use logical operations on a vector, which isn't valid. If I am guessing right, what would work for you is:

    if (llVecDist(Tpos, OP1) > .01 && llVecDist(Tpos, OP2) > .01) { }

    Basically that checks to see if Tpos and either one of the other vectors are very close.... you can adjust the .01 to vary HOW close they have to be to be a match.

    You could also use:

    if (Tpos != OP1 && Tpos != OP2) { }

    But, since vectors are floating point, you may encounter failures if they aren't EXACT matches, even when they should be considered matches.

     

    EDIT: I know I goofed calling them logical operators instead of bitwise.... corrected below.

    • Thanks 1
  11. I wonder if they do, or have considered, hashing all the individual items on the asset servers, and removing duplicates.... pointing all the reference UUIDs to the same asset. Imagine haw many identical items there are with different UUIDs that could be dumped.

  12. For those googling in the future for the cause of http 502 errors in their scripts, it was finally determined to be a firewall issue at the hosting company. After they found and removed the IP address of that particular simulator from their firewall, the error went away. Many thanks to Maestro.

    • Thanks 1
  13. 20 minutes ago, Oz Linden said:

    This is most likely DNS caches not updating to your new server uniformly; it should correct itself in time.

    That's the thing... it's been 5 days, and the TTL on the DNS records were set to an hour LONG before the change... and even if it was pointing to the old server, it is still up, so it would service the call.

    One of the people having the issue restarted their region and it went away. I've got a ticket open to have it checked out on the region Carbonara before it restarts and possibly fixes itself. There is something going on here that isn't DNS caching related.

    OHH, and another domain on the same server that hasn't changed in many years also gives the same 502 error on the troublesome regions.

  14. If you are talking about having a script in object "Box" searching for nearby items and collecting them inside the box, no, can't do that.

     

    What you can do is to have a script search and return items... maybe doing the opposite of what you had in mind, leaving behind the items you want to keep.

    • Like 2
  15. I'm encountering a few customers that are getting http error 502 when product communicates with my server. This started after changing where the DNS pointed from one server to another commercial hosting service. All logs are clean on the host, so I don't know where the communication is breaking down. In one instance, the person having the problem got their region restarted and the problem went away. Two others restarted or had their regions restarted, but it didn't fix it. I don't know yet if they are on full or homestead regions, and if that would change the results. (Maybe restarting a homestead doesn't restart the proxy?)

     

    The body of the 502 error:

    <html>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    </meta>
    <title>ERROR: The requested URL could not be retrieved</title>
    <body id="ERR_READ_ERROR">
    <div id="titles">
    <h1>ERROR</h1>
    <h2>Read Error</h2>
    </div>
    
    <p><b>Read Error</b></p>
    
    <!-- ERR_READ_ERROR -->
    </body></html>

     

     

  16. 3 hours ago, Rolig Loon said:

    To be clear, however, the UUID of a texture or a sound are indeed "global" to SL, so you can refer to them in a script anywhere.  Unlike objects, which receive a new UUID for each rezzed instance, textures and sounds have unique, permanent UUIDs.  It's fairly common practice among scripters to refer to those assets by UUID, rather than putting them into the contents of objects.  As long as your scripts are no-mod, no one can read any UUIDs you may have hard-coded into them, so they can't be stolen.

    Which brings up a perplexing question: Why are animations left out of the club? You can stop an animation by UUID, but not start one.

  17. 1 hour ago, Oz Linden said:

    The script can add a custom header that has that signature in its value; there's no need for the proxy to be involved at all.

    I was trying to come up with a solution to existing content that wouldn't require replacing all in-world items that talk to servers with source verification.

  18.  

    5 hours ago, Oz Linden said:

    We don't own the IP addresses (AWS does), so we can't create an authoritative reverse lookup for them. 

    There are lots of DDOS protection services out there for web sites, but for reasons I hope are obvious we can't make recommendations.

    Oh ... and also, we're mostly stopping using 'lindenlab.com' for the backend service domains (it's mostly being replaced by 'secondlife.io' or some subdomain of that).

    Would it be possible for the proxy itself to insert a hash into the http header that is based on the script creator UUID and a shared secret that the creator can change themselves? I hesitate to suggest a hash made from the creator's UUID and their password, but something that the creator already has control over, and can't be reversed to reveal their plaintext password. (At worst, it could be reversed to reveal the shared secret, but the creator could change it, and update the server code.)

    Doing it this way, existing content could continue to work as only a server side verification of the hash would be needed to know the comms came from a LL proxy by verifying the hash matches the concatenation of known creator UUIDs and the shared secret.

    (Now that I think about it more, it wouldn't help open source scripts that have a creator different than the server being communicated with.)

  19. That would be a huge hurdle as a first LSL project. HTTP comms aren't THE most complex feature to script in LSL, but nearly so.

    Starting from scratch, I would likely point you towards Builders Brewery classes. Maybe start by asking on the Builders Brewery group chat what classes would lead you toward your end goal. If you are already familiar with programming concepts, it may be weeks to months to get proficient enough to do it on your own. If you are not already familiar with languages like php, javascript, http PUT/GET/POST etc.... it may take much longer.

    You could shortcut the process and ask in one of the employment wanted threads if someone could write it for you, but anything that uses something tied to your Steam account (The Steam API key) is a little sketchy as they should build and test with their own, and not use yours. Only once the script is tested and handed over to you would you substitute in your own Key. Even then, I would be wary and ask another scripter to look it over and make sure it isn't trying to do something naughty.

  20. I've used a fairly simple encryption scheme and it has served well.

    * Sender generates a random salt (pick whatever method you like, seeded random number, whatever)

    * Generate MD5/SHA from the concatenation of a password (hard coded in the script) and the salt.

    * Generate the encrypted text with llXorBase64 using the MD5/SHA as the encryption key.

    * Send the salt followed by a separator and then the encrypted data to the receiver (web or another object)

    * The receiver strips off the salt, generates an MD5/SHA from the embedded password and the salt, and then decrypts the Base64 using llXorBase64 to get the original data.

    I dislike time based salts as there is always the possibility that the sender/receiver will calculate them differently. Maybe not the most hardened way to encrypt data, but it is easy, and as long as you aren't repeating salts frequently, it would be difficult to obtain the shared secret... especially if you append/prepend additional random trash data to the data you are encrypting that is just tossed out after decryption.

     

  21. 1 hour ago, Epiphany Carnell said:

    Hey :)

     

    I'm hoping to create an object that pulls my online status (online, away, in-game etc) from the Steam app, and shows it within SL, but I have no idea where to start with this.

     

    I know it can be done, because I own an item from the MP that does this, but it's not modifiable, and I'd like to change how it looks.

     The one I'm attempting to make will be just for personal use though.

     

    Could anyone point me in the direction of how I'd go about creating this please?

    Do you have experience with http communications in SL? If not, it will be a big leap in learning.

     

    It appears steam has an API that can be used to gather information like that. https://steamcommunity.com/dev  Specifically the Steam User API

     

    Looks like you have to obtain an API key, and then scripting the appropriate http calls using that key to get the information you want.

×
×
  • Create New...