Jump to content

Wulfie Reanimator

Resident
  • Posts

    5,753
  • Joined

Everything posted by Wulfie Reanimator

  1. I would still strongly recommend that you reconsider optimizing your mesh. 28k triangles is enough for entire, clothed, human body.
  2. Shading is done based on the vertex normals. You seem to have a lot (way too many) vertices on your model. It's not just an SL issue either, your Blender screenshot also shows a lot of "pinching" (tops of the eyes, and especially the stem) with the shading. First, simplify your model. Then, retopo the areas where the shading is messed up.
  3. I was going to counter with "VB and Robux cannot be traded back to real currency," but it's been a lifetime since I last looked at Roblox. Robux seem identical to Linden Dollars. You buy them with money, spend them in-game, and can cash them out the same as L$. So I would agree, their context of "virtual currency" does not seem to touch what we would consider virtual currency. (Not that I care, I'm not in the US.)
  4. Firestorm's "native" move-lock is just an LSL script. When you log in with Firestorm, it automatically attaches the "LSL Bridge" to you. It's full-perm, you can look inside it. // // Movelock // movelockMe(integer lock) { if (lock) { llMoveToTarget(llGetPos() - <0, 0, 0.1>, 0.05); llSetVehicleType(VEHICLE_TYPE_SLED); llSetVehicleFloatParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, 0.05); llSetVehicleFloatParam(VEHICLE_ANGULAR_FRICTION_TIMESCALE, 0.05); } else { llStopMoveToTarget(); llSetVehicleType(VEHICLE_TYPE_NONE); } }
  5. Ah, small mistake on my part. Here's the fix, using your code as an example: default { state_entry() { integer otherLink = 2; vector pos = <0.621, -0.235, 0> * -1; rotation rot = ZERO_ROTATION / <0, 0, 0.924, 0.383>; pos *= rot; // Apply the new rotation to the new position. llSetLinkPrimitiveParamsFast(otherLink, [PRIM_POS_LOCAL, pos, PRIM_ROT_LOCAL, rot]); } } P.S. I'm sorry that I can't really explain how this works, I just kind of "intuitively know."
  6. If you know the world-positions of both, you can get the relative values: vector relative_pos = avatar_pos - table_pos; rotation relative_rot = avatar_rot / table_rot; If you want it the other way around, just swap the values: vector relative_pos = table_pos - avatar_pos; rotation relative_rot = table_rot / avatar_rot; But you can also just "flip" the values you already have. Your first guess was close. vector opposite_pos = relative_pos * -1; rotation opposite_rot = ZERO_ROTATION / relative_rot;
  7. Heard this randomly and for some reason it makes me think of @Orwar.
  8. Renaming the links would definitely allow easy cheating, and you'd have to rename all of the links by hand or figure out a way to rename the links in the correct order by script, which is the same problem as the original. If you want the prize prim to change at the start of each game, what I might suggest is a quite literal solution to the problem: You want to know how close you were to the prize, whenever you touch the wrong prim. You know the prize prim, and you know the prim that was touched. So... If the prize prim wasn't touched, use llGetLinkPrimitiveParams to get the position of the prize prim and the one that was touched. Then just use llVecDist to get the distance between them. This way, your code doesn't have to change no matter how many squares you add/remove, or what order you've linked them in.
  9. And on the flipside... just because you've literally just received an event from an object doesn't mean the object/UUID is valid anymore. Classic example: Detach, llSetDamage, llDie on collision, etc.
  10. Occam's razor would suggest that if this was truly some targeted, malicious intent, you would've lost more than that one script. Does it happen again? What does the script do, as in, what is its expected behavior? Was the object that spoke an object actually owned by you? (You can find this out by clicking the name of the object.)
  11. Parcel media does not sync the content for all viewers. There is no built-in way to do this in SL.
  12. It's a pretty funny bug, but I don't think it has anything to do with "concurrency." No matter what kind of system you're working with, you should never expect to be able to expect a response before you've registered a listener. Neither should you expect there to be a long enough delay before the response, that you should have enough time to register the listener after-the-fact.
  13. Second Life only accepts things that are rigged to its own built-in skeleton. I'm by far not the expert, but you will need at least bones that are named according to the SL skeleton. You can find official rigs here: http://wiki.secondlife.com/wiki/Mesh/Rigging_Fitted_Mesh#Rigging_using_the_Fitted_Mesh_technique
  14. It's hard to give specific advice if we don't know what exactly you're trying to do. Rolig linked a page that lists all of the different ways you can control when a script does something. The simplest loop is the while loop. while ( condition ) { do something } So what even is a "condition?" It's some expression that can be either "true" or "false." That might open more questions, so here's a practical example: integer count = 0; while ( count < 3 ) { do something } Here, the condition is determined by the value of count and whether or not it's less than 3. "While count is less than 3, do something." In this case, you could think of count as your index. We could do... integer count = 0; while ( count < 3) { llOwnerSay( "index: " + (string)count ); ++count; } Here, we're using llOwnerSay, typecasting the integer value to a string, combining two strings together, and incrementing count by one. The variable count is created, and given the value 0. The condition is checked. count is less than 3. The condition is true, the condition passes and we enter the while-loop. The script will say "index: 0" count is incremented by one. count is now 1. The condition is checked again. 1 is less than 3. The condition is true and we will re-enter the loop. The script will say "index: 1" count is incremented by one. count is now 2. The condition is checked again. 2 is less than 3. The condition is true and we will re-enter the loop. The script will say "index: 2" count is incremented by one. count is now 3. The condition is checked again. 3 is not less than 3. The condition is false and we will skip the loop. (the curly-braces) If there is no code after the while-loop, nothing more will happen. The script becomes idle until something triggers an event. If you made the very common mistake of not changing the value of count, you would create an infinite loop. Generally speaking, infinite loops are bad because nothing can stop them, besides restarting the script. The loop will continue working forever without letting the script do anything else. It might even cause the script to crash if it's using too much script-memory.
  15. I've gone back and read it. I still don't understand your point. Molly didn't mention the search at all, you did. You said that the review system should be removed because merchants abuse it. Just like search. If search is being abused but shouldn't be removed because of that, why should reviews be removed because of abuse? Doesn't seem very consistent.
  16. Are you saying... search should be removed because merchants abuse it?
  17. What exactly did you try to copy (link or copy it here), and are you 100% sure you pasted what was expected? Does it happen again? It's not impossible that there could have been extra stuff in the clipboard, but it'd more likely cause a syntax error.
  18. For me, the simplest solution would be to simply index the labels themselves. 1. Food Bowl | 2. Food Bowl | 3. Food Bowl 4. Food Bowl | 5. Food Bowl | 6. Food Bowl 7. Food Bowl | 8. Food Bowl | 9. Food Bowl 10. Food Bowl | 11. Food Bowl | 12. Food Bowl It's not obnoxious or stand out. The user might not intuitively know which bowl is which, but you could include in the dialog text: "The bowls are sorted by distance." This even has the additional benefit that you can typecast the name of the label into an integer, and get the correct number. (integer)"1. Food bowl" // 1 (integer)"12. Food bowl" // 12 (integer)" -892. food bowl" // Still correct: -892 Edit: Right, as Mollymews says below, the "outsider" listening still wouldn't know what the index means. So you'd have to inevitably construct the "real" message beyond the dialog choice. Having the object name and key in the same list (or two adjacent lists) would be a good solution.
  19. Other commands like @sit work fine, so it could be possible that that specific command is either unsupported by the viewer, or other commands need to be set as well. I've never used this command so I can only guess. I don't recall who maintains the RLV API right now, is it still @Marine Kelley? @Kitty Barnett?
  20. If you're on Firestorm, the RLVa menu includes an actual console where you can enter RLV commands. It also has a list of active restrictions/exceptions. > camdrawmax:1=y Invalid command > @camdrawmax:1=y INFO: @camdrawmax:1=y (unset) > But I have no idea why it says "unset."
  21. The same applies to your proposed alternative and any other online service. Yes, even World or Warcraft.
  22. Most ad-blockers (I use uBlock Origin) allow you to pick any elements of a webpage by hand and set them to be removed automatically.
  23. You've got some of the terminology mixed up. Prims and sculpts are rigid -- completely solid, not form-fitting. Prims are created ("rezzed") from the Build menu. (From the top of your viewer, or Ctrl B, or Ctrl 4) Sculpts are generally created with 3D modeling software, outside of Second Life, then uploaded as textures. "Form-fitting" clothes (the ones with the shirt icon for example) are generally called "system clothes" or "system layers." They are created in your inventory (new clothes > new shirt, or new clothes > new universal) They use 2D images or "textures" for their look. You'll need to know how to use an image editor. The "system avatar" (the base avatar you see if you don't use a mesh body) has a UV map or "texture layout," which is something you'll have to use as a template for your clothes. Otherwise your shirt is going to look very weird. You can download free body-templates from here: https://www.robinwood.com/Catalog/Technical/SL-Tuts/SLPages/AVUVTemplates.html
  24. I'm not sure what you're doing wrong, since I haven't read your script. Here's the object though, it's a default prim with changed size: Not to you, not from me. I've wasted too much time trying to help you. I'm only here to confirm that it can be done, since this thread is active again since August.
  25. Works quite alright. Effectively 3 lines of code. No problems with energy. 50 times the force, minor complication with the angular direction but easy to account for.
×
×
  • Create New...