Jump to content

panterapolnocy

Resident
  • Posts

    538
  • Joined

  • Last visited

Everything posted by panterapolnocy

  1. I may be wrong, but from what I see the function does not open a viewer floater window like @Henri Beauchampsuggests, but a web browser window ("function will (..) open a new browser floater pointed at the URL provided by the LSL script") and it won't be THAT easy to use it for spamming, as the deploy plan message specifies that "function is restricted to being invoked by experiences that are enabled for all Residents" - and as far as I know not many experiences have such privileged status - their owners won't risk losing them by disrupting user experience. Especially for newcomers, in newcomer friendly areas / Portal Park installations. For what purpose this function was actually created: "(...) New User Experience (which will rely on this function being present)."
  2. The limits page does say that there is "no maximum height where scripts can run, as long as the object remains rezzed or attached" - therefore scripts themselves must have some issues. Are there any functions that may be altitude dependent in the source? Are they all compiled as Mono and set to Running state, are there any stack-heap collisions? Some floating point number precision error may be at play here, too... but on the other hand 4000m is not THAT high.
  3. What you need to do is to write a small script with http://wiki.secondlife.com/wiki/LlGetAgentSize - check if every avatar from the list is present, get the amount of avatars that are around and split the amount accordingly. Something like this, perhaps, may be a good base for further modifications. string gThankYouMessage = "Thank you for your tip!"; string gNotecardName = "participants"; key gNotecardQueryId; integer gNotecardLine; list gParticipants; integer gParticipantsLength; integer gDebitPermns; default { on_rez(integer sp) { llResetScript(); } state_entry() { llSetClickAction(CLICK_ACTION_PAY); llSetPayPrice(50, [PAY_DEFAULT, PAY_DEFAULT, PAY_DEFAULT, PAY_DEFAULT]); if (llGetInventoryKey(gNotecardName) == NULL_KEY) { llOwnerSay("Notecard '" + gNotecardName + "' missing or unwritten."); llSetMemoryLimit(llGetUsedMemory() + 2048); } else { gNotecardQueryId = llGetNotecardLine(gNotecardName, 0); } } dataserver(key query_id, string data) { if (query_id == gNotecardQueryId) { if (data == EOF) { gParticipantsLength = llGetListLength(gParticipants); llOwnerSay("Participants: " + (string)gParticipantsLength); if (gParticipantsLength) { llOwnerSay("Accept debit perms for money splitting."); llRequestPermissions(llGetOwner(), PERMISSION_DEBIT); } llSetMemoryLimit(llGetUsedMemory() + 10240); } else { data = llStringTrim(data, STRING_TRIM); key uuid = (key)data; if (uuid) { gParticipants += uuid; } ++gNotecardLine; gNotecardQueryId = llGetNotecardLine(gNotecardName, gNotecardLine); } } } run_time_permissions(integer perm) { if (perm & PERMISSION_DEBIT) { gDebitPermns = TRUE; } } changed(integer change) { if (change & (CHANGED_OWNER | CHANGED_INVENTORY)) { llResetScript(); } } money(key id, integer amount) { llRegionSayTo(id, 0, gThankYouMessage); if (!gDebitPermns || !gParticipantsLength) { return; } integer index; list present; while (index < gParticipantsLength) { key person = llList2Key(gParticipants, index); if (llGetAgentSize(person)) { present += person; } ++index; } integer presentAmount = llGetListLength(present); if (presentAmount < 1) { return; } integer finalAmount; integer moduloTest = amount % presentAmount; if (moduloTest > 0) { finalAmount = (amount - moduloTest) / presentAmount; } else { finalAmount = amount / presentAmount; } if (finalAmount < 1) { return; } index = 0; while (index < presentAmount) { llGiveMoney(llList2Key(present, index), finalAmount); ++index; } } }
  4. Uplifting (as in: infusing with a human-like level of intelligence) animals is not a new idea in culture (similar case with machines - "ST TNG: Measure of a Man") and personally I'm in favor of it... under a condition of making them equal with humans in terms of available laws - nothing less, nothing more. What most probably won't happen, at least now, as humanity is divided enough within itself and adding yet another layer of complexity on top of that may cause a disaster. Nonetheless, if such a thing would happen - it would both allow humanity to have a different look on itself and non-human species to have a chance against all the abuse... and maybe another one to build a future together with humans.
  5. I'd still suggest to reboot the router/modem even if your websites are loading fine. Well then. Are you able to log in with an alternate account? I'm asking that to rule out a possibility that the login issue may be account-specific; Also make sure that your max bandwidth limit in preferences is not set to a huge value. Plus - if you're using a VPN/proxy - try to log in with them disabled.
  6. I'd suggest to try to log in to a different region first, as the one you are logging in may have performance issues - on the login screen in the "location" field you can put https://maps.secondlife.com/secondlife/Loch Linden/ for example. This region has scripts disabled, so if you log in HUDs will not work. If that won't help you may want to unplug your modem/router from the power for one full minute, then reconnect them and see if the problem still exists.
  7. You may want to try to check the main viewer's logfile and see what llviewermedia.cpp is trying to load. This may help a little with narrowing down the source, at least.
  8. See "Changing usernames" section in this document.
  9. When you open Help -> About Firestorm window and look for the "audio driver version" line... does it show anything there, or "undefined"? You may also want to check in your sound manager/mixer (I assume that you're using Windows) that Firestorm itself is not muted like this: If by any reason you have Skype enabled in the background, try to disable it and reboot Firestorm to see if that may be an issue.
  10. "Deny" would be enough, Henri. I think that personal experience is not exactly the same thing as shared experience , as the name itself suggests - as in, the 3D world experience that everyone is able to see. Even in the official SL viewer you can switch off ALM and you'll see the world in a different way than another SLV user who has ALM enabled, no one denies that. But if the functionality itself (here: the ability to render old Windlight skies) is not present in the SL Viewer, then it's not something that falls into the "shared" bucket any more, as SL Viewer is the "standard" TPVs should respect. Sure, some exceptions can be made, after battles and agreements - like RLV - but not sticking to that rule is putting a viewer in a gray zone. And EEP - for some people better, for others worse - is the new standard as of today. I'm no fortune teller, but I guess it is logical to assume that in time content creators (region owners, product makers etc.) will stop bothering with Windlight viewers and tune everything for EEP. So, using a Windlight viewer would be like using Second Life without Bento or BOM, I guess? Faster, but inferior to EEP rendering.
  11. At the end every single viewer most probably will offer EEP-only experience. Just saying. You may not like it, but you will need to live with it - sooner or later. I'd suggest to go to the Lab's JIRA and post constructive and well described change requests / suggestions, but it's unlikely that EEP will be dropped. That said... Then you'd need to convince Linden Lab to remove EEP and implement Windlight instead. All TPVs should/must follow the Shared Experience rule - EEP is how the world looks now. Please see this topic. Oh, and as a side note - pinging Oz in posts won't have any effect... https://community.secondlife.com/forums/topic/468184-farewell-soon/
  12. Because EEP has a different internal structure than the old Windlight system and slider would not work - for fixed skies there is no such thing as "time of the day" anymore. See: https://jira.secondlife.com/browse/BUG-229982 https://jira.secondlife.com/browse/BUG-228566 https://jira.secondlife.com/browse/BUG-230190 https://jira.firestormviewer.org/browse/FIRE-29896 https://jira.firestormviewer.org/browse/FIRE-29984 Try to use the personal lighting feature and change sun position after selecting desired sky preset.
  13. It took me a few days to find a decent medieval armour (as in: I would like it, it wouldn't reveal 90% of the skin like most of the armours for fantasy girls and would fit the form of my dragoness after some fittings), sword and shield. I think that I like the effect. Mask/helmet is reused from one of my other outfits, with glow removed.
  14. Please see @NiranV Dean's answer in this post: To quote:
  15. That's why I suggested creating a ticket as soon as possible. @Lindal Kiddalso suggested the fraud hotline, which is a good idea. Changing password to a completely new one also is required, I'd say. Exactly. The "is not a bug" is an answer to the "It's been about an hour since removing the card and I have logged out and logged back in but it still sits there in the profile."
  16. It should work, unless script explicitly works only if it's not attached. Make sure it's not obscured by any transparency that may be in the way.
  17. From Second Life standpoint it's completely normal and not a bug. The http://wiki.secondlife.com/wiki/DATA_PAYINFO says: "It is important to know that it is possible to have PAYMENT_INFO_USED but currently not have PAYMENT_INFO_ON_FILE (payment info can be removed after being used)." I'd suggest you to create a support ticket and describe everything in detail.
  18. I've read your original post and noticed, that you want to assign URLs to faces, actually - not necessarily detect touch by UUID itself. I don't know if this thing would be helpful, but you may give it a try. // Format: Face, Link URL, Texture UUID (only used on script boot) list gData = [ 0, "https://www.google.com", "f2f807ce-c5f9-2156-eb03-f36a3c976a83", 1, "https://www.duckduckgo.com", "5a0538f5-23c7-b76c-7115-905cb4f8beb2", 2, "https://www.bing.com", "10522cbd-8d18-3ba0-0043-782018b086b1" ]; list gIndexes; default { state_entry() { // Set some faces on the prim to the correct textures integer dataLength = llGetListLength(gData); integer index; while (index < dataLength) { llSetTexture(llList2String(gData, (index + 2)), llList2Integer(gData, index)); index += 3; } // Build index list for faster lookups gIndexes = llList2ListStrided(gData, 0, -1, 3); // Optimization under Mono. Delete this line if you run into problems, or don't know what it does. llSetMemoryLimit(llGetUsedMemory() + 5120); // Say hello llOwnerSay("Touch me to go to a search engine!"); } touch_start(integer total_number) { key toucherKey = llDetectedKey(0); integer indexPosition = llListFindList(gIndexes, (list)llDetectedTouchFace(0)); if (~indexPosition) { // Get the URL from data list, by index position multiplied by stride length and added 1 string url = llList2String(gData, (indexPosition * 3) + 1); // Send the URL to whoever touched me llRegionSayTo(toucherKey, 0, "Sending you to " + url); llLoadURL(toucherKey, "Navigate to " + url, url); } else { llRegionSayTo(toucherKey, 0, "I don't know what to do with that face!"); } } on_rez(integer sp) { llResetScript(); } } If you want to do an actual detection by touched texture UUID and apply all textures manually, then you may take a look at this simplified version, with shuffled data table. // Format: Texture UUID, Link URL list gData = [ "f2f807ce-c5f9-2156-eb03-f36a3c976a83", "https://www.google.com", "5a0538f5-23c7-b76c-7115-905cb4f8beb2", "https://www.duckduckgo.com", "10522cbd-8d18-3ba0-0043-782018b086b1", "https://www.bing.com" ]; default { state_entry() { llOwnerSay("Touch me to go to a search engine!"); // Optimization under Mono. Delete this line if you run into problems, or don't know what it does. llSetMemoryLimit(llGetUsedMemory() + 5120); } touch_start(integer total_number) { key toucherKey = llDetectedKey(0); string touchedTexture = llGetTexture(llDetectedTouchFace(0)); integer indexPosition = llListFindList(gData, (list)touchedTexture); if (~indexPosition) { // Get the URL from data list, by texture uuid position with added 1 string url = llList2String(gData, indexPosition + 1); // Send the URL to whoever touched me llRegionSayTo(toucherKey, 0, "Sending you to " + url); llLoadURL(toucherKey, "Navigate to " + url, url); } else { llRegionSayTo(toucherKey, 0, "I don't know what to do with that face!"); } } on_rez(integer sp) { llResetScript(); } }
  19. If you'd like to convert audio to proper format (and generally play with audio files), then I'd strongly suggest you to use Audacity. You can easily both make sure that the project is using the correct sampling and that file/s have correct length. In the main application's window, in lower left corner, you can preview how a file would sound in different kHz... You can change the actual sampling in Tracks -> Resample (you are probably looking for that)... And at the end, in Analyze -> Regular Interval Labels you can split audio to 9.9 seconds fragments/labels... ... which you can nicely export with File -> Export multiple: Footnote: I'm using Audacity 2.x. For 3.x some of these tools are in different menus, like the Regular Interval Labels feature.
  20. A quick snippet I've written without testing and outside of Second Life, but should work inworld. Maybe someone would find it useful... still, it would be much easier to just talk with the land/region owner and ask them to tick option in access panel. ~ key gRequestId; list gAgentList; integer gAgentListLength; key gCurrentResident; key gOwnerKey; scanArea() { gAgentList = llGetAgentList(AGENT_LIST_PARCEL, []); integer ownerIndex = llListFindList(gAgentList, [gOwnerKey]); if (~ownerIndex) { gAgentList = llDeleteSubList(gAgentList, ownerIndex, ownerIndex); } gAgentListLength = llGetListLength(gAgentList); getNextAvatarKey(); } getNextAvatarKey() { if (gAgentListLength > 0) { --gAgentListLength; gCurrentResident = llList2Key(gAgentList, gAgentListLength); gRequestId = llRequestAgentData(gCurrentResident, DATA_PAYINFO); } } default { state_entry() { gOwnerKey = llGetOwner(); scanArea(); llSetTimerEvent(30); } timer() { scanArea(); } dataserver(key queryid, string data) { if (gRequestId == queryid) { if (data == "0" && llOverMyLand(gCurrentResident)) { llOwnerSay("Ejecting secondlife:///app/agent/" + (string)gCurrentResident + "/about"); llRegionSayTo(gCurrentResident, 0, "Residents without payment info on file are not allowed in this area, goodbye."); llEjectFromLand(gCurrentResident); } getNextAvatarKey(); } } on_rez(integer sp) { llResetScript(); } changed(integer change) { if (change & CHANGED_OWNER) { llResetScript(); } } }
  21. When I'm filming I personally just enable busy/dnd mode in the viewer, from the Comms menu at the top. Downside: It also hides the Nearby Chat console at the bottom of the screen.
  22. If a region owner doesn't like furries and ban them judging only by the appearance - that's his/hers problem, not yours. By doing so they've just lost a visitor and potential positive asset to their community by building/forcing boundaries like people build/force in RL already, far too many at that. Moving along and finding a new place to visit is the best solution in such a case. You may however want to check out this topic, but beware - it's pretty old. As for Kemono itself - I'd say that every single avatar out there has a potential to be nice and to be horrible, look adult or childlike as well - and all are subject to personal tastes. Some people like Kemono, some people don't - same applies to DSD, KZK, Rawr etc.. If you'd make your looks nice, like Alwin said, you should be okay and not need to worry. For me, personally, Kemono looks "just anime", sometimes even "kawaii" (bonus comment: see "BNA: Brand New Animal"). At the end, just be yourself. If you'd try to be someone else, for someone else, you'll never feel immersive.
  23. Since you're setting text to "" (empty string) even on "Show" command then it's natural you'll see nothing. You need to save the hover text value in a variable or get it on show/hide and set it instead of clearing it like this. Alpha 0.0 - 1.0 should be enough for your usage. integer gListenHandle; stopListener() { llListenRemove(gListenHandle); llSetTimerEvent(0); } default { touch_start(integer nd) { key toucherKey = llDetectedKey(0); if (toucherKey == llGetOwner()) { gListenHandle = llListen(-1234567, "", toucherKey, ""); llDialog(toucherKey, "Select an option", ["Show", "Hide"], -1234567); llSetTimerEvent(60); } } timer() { stopListener(); } listen(integer channel, string name, key id, string message) { stopListener(); string hoverText = llList2String(llGetPrimitiveParams([PRIM_TEXT]), 0); if (message == "Hide") { llSetLinkAlpha(LINK_SET, 0.0, ALL_SIDES); llSetText(hoverText, <1.0, 1.0, 1.0>, 0.0); } else if (message == "Show") { llSetLinkAlpha(LINK_SET, 1.0, ALL_SIDES); llSetText(hoverText, <1.0, 1.0, 1.0>, 1.0); } } on_rez(integer start_param) { llResetScript(); } changed(integer change) { if (change & CHANGED_OWNER) { llResetScript(); } } }
  24. These need to be updated by HUD creators if they use deprecated technology. I'd personally suggest to contact them and tell about your issue mentioning, that Flash is not supported anymore. But only after... If your antivirus ate your SLPlugin.exe then indeed it may help. Nonetheless, that should be the last thing you try. See this document first and try to follow it step-by-step. If you use a different world viewer then you'd need to adapt the steps to your UI.
×
×
  • Create New...