Jump to content

Shymus Roffo

  • Posts

  • Joined

  • Last visited


11 Good

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Job Overview Are you a killer Animator looking to show off your skills and better engage yourself and test your skills? While working in your role, you will be tasked with assisting on larger projects throughout all brands of Nexus and Partners (Cliff Side Motor, MoreThanPixels, Osh Fergana, Shinybrand, Qube and Needs). Along with helping partners, you will also be given a place to start your own store and the assistance on getting the name out there. Along with your skills, we will assist you ass necessary for any projects you are looking to achieve. Want to come to visit us? Visit our Store Region in Silesia. http://maps.secondlife.com/secondlife/Silesia/128/128/2 Responsibilities Work with Nexus & Partner Companies to provide a strong product. Develop Animations for Second Life Avatars, Bento Avatars, and Animesh. Assisting with Customer Support on products you assist in developing. Requirements Knowledge of QAvimator, Blender, or other Animation Software. Experience in Motion Capture a plus. Experience in 3D Modelling a Plus. (Blender, Maya, etc.) Experience in Visual Animation a plus. (GIF, Adobe Premiere and After Effects). Experience in LSL, or Software(C#, C++, C, VB) / Web Languages(PHP, Ruby, Perl, Python, ASP) a plus. Experience in Graphic Design a plus. (Illustrator, Photoshop, etc Good knowledge of MediaWiki Software a plus. Benefits Working with us at Nexus has a large number of benefits. Along with getting to work on what you love, you also will learn great new skills from everyone who you work with. We have a large amount of talent that works with us. From Builders, Scripters, Texture Artists, and Modelers. Everyone is willing to help teach each other and learn. If you are a new creator, we love helping you get started and help facilitate you into the market. A large majority of our creators have Stores on our home sim. Once you get established, we are more than willing to allow you a place in our sim. Life At Nexus We are a very well established company that focuses on the Second Life Roleplaying Community. We have vast products that are focused towards Family, Firefighting, Police, and other similar roleplaying areas. Upon entering the Nexus community, most developers will start their own company. While you are working with us, you are considered a partner with Nexus. As a Partner, we will occasionally work with each other on larger projects. In our free time, we closely knit together as friends and will sometimes game together or hang out. If you are someone who’s looking to better their skills, we are the right place for you. How To Apply If you are interested in applying for the position, please contact Shymus Roffo at shymus.roffo@nexus-sl.net or Shymus Roffo In-World.
  2. I don't understand why the female thing would come up, they would have had absolutely no way of even knowing that you're a female, let alone even care. I think one of the reasons that your JIRA might have been closed was either from the lack of information provided or they were not able to replicate errors. However, as Rolig Loon said, everything is working perfectly fine. You're just having slight complications getting it to work. Just cause you don't understand how something works or it doesn't work the way you want it to; does not mean that it's broken. That is where you need to look at other ways and workarounds. I deal with people all the time accusing me of making products that are broken, only because they did not have a greater understanding of the item.
  3. A very good example of the no_sensor event can be found on the wiki. http://wiki.secondlife.com/wiki/No_sensor I'm assuming you're trying to see if the person who touched the prim is within 20m of the prim. Another way you could go about this like the example below. This may remove your use for the sensor. (Unless you want it, then don't do this.) key avKey; float distance = 20; integer InRange(key uuid, float distance) { list data = llGetObjectDetails(uuid, [OBJECT_POS]); if(data == []) return 0; return llVecDist(llList2Vector(data, 0), llGetPos()) <= distance; } default { touch_start(integer n) { avKey = llDetectedKey(0); if(InRange(avKey, distance)) { llOwnerSay("Within Range"); } else { llOwnerSay("Not within range"); } } }
  4. If you are trying to do a bunch of textures in a particle system at once, one thing you could do is work with link particles. If you're going to go that route, the perfect function for you would be llLinkParticleSystem. One thing that I've done in the past was created two prims for emitters, make both the prims the same size and location, link them together, and you should have a simple emitter that you can add your script to that will allow two emitters.
  5. Yeah, I noticed that as well. I've had that problem in the past. Luckily, we're not really looking to distribute the HUD that this will work with, so we won't really have to deal with helping other's make it work in their mesh sims. It'll most likely be used to help us with our pathfinding waypoints in our sim. That way we have a way of visualizing the AI's path. Since most of our sim is still built out of prims and we don't really use mesh on any of our builds, we don't have a large problem with that. A lot of our items that we do use that are mesh, we give a basic cube physics shape. After most attempts of trying to find a way to do it, I'm rather confused. Multiple attempts have left me in the dust.
  6. I am not really to sure how to calculate a Theta or what a Theta is. Sadly, the calculations need to stay within the HUD (assuming this goes into the debug object). The debug item is just there so I can see where the ray lands. This is the script that I have gotten so far from your example. (Assuming this is what you meant. ) Sadly, I'm assuming I did something wrong as I was not getting the expected result. integer channel = -500; default { state_entry() { if(llGetAttached()) llRequestPermissions(llGetOwner(), PERMISSION_TRACK_CAMERA); } touch(integer n) { float cam2hud = 1; // this is the distance from the camera origin to the hud. vector touched = llDetectedTouchST(0); // this is the vector of the detected touch. (I'm assuming it's in relationiship to screen center) vector euler; //this is the euler we're going to convert into a rotation. rotation touchrot; //this is the rotation that points at touched from the camera position. euler.x = 0; euler.y = llAtan2(touched.x, cam2hud); // sets the horizontal theta given opposite and adjacent euler.z = llAtan2(touched.y, cam2hud); // Sets the vertical theta given opposite and adjacent touchrot = llEuler2Rot(euler); // converts euler into quaternion rotation list t = llCastRay(llGetCameraPos(),llGetCameraPos() + <50,0,0> * llGetCameraRot() * touchrot, []); llRegionSay(-54354,(string)llList2String(t,1)); } } Basically, the final result that I'm looking for is what is in this Youtube video here. I have done everything except placing the waypoints, which is requiring the cast ray. https://www.youtube.com/watch?v=9mPc_9yX2mM
  7. @Myrmidon Hasp I kind of understand; but then I kind of don't. I would have to see an example to start to understand a little better what you mean to a better extent. I tried your example @Wulfie Reanimator. That Worked better than mine.
  8. Yeah, all the camera tracking is good. That was easy. (Thankfully) The major issues that I've been having are the math part getting the raycasts to offset correctly in the hud. In the scripts that I tested, my cast ray worked based off the center of the HUD. The only negative is it was not offsetting. If you view it below and test with the debug prim, you'll notice the prim only moves a little bit. This is the script that I have so far that attempts to find the position. (mind my math, I suck at it...) Basic HUD Place within a prim, wear as a HUD, and scale to fit your window, then set transparency to 75-100. integer c = -54354; float fov = 1.7320508075688774; vector offset = <50,0,0>; vector touch_offset = ZERO_VECTOR; default { state_entry() { llRequestPermissions(llGetOwner(), PERMISSION_TRACK_CAMERA); } touch(integer n) { if(llDetectedKey(0) == llGetOwner()) { vector c_pos = llGetCameraPos(); rotation c_rot = llGetCameraRot(); vector touch_pos = llDetectedTouchPos(0); touch_offset = llVecNorm(<fov,touch_pos.y,touch_pos.z>); vector offset_pos = (c_pos+(offset+<0,touch_offset.y,touch_offset.z>)*c_rot); list t = llCastRay((c_pos+(<0,touch_offset.y,touch_offset.z>)*c_rot),(c_pos+(offset+<0,touch_offset.y,touch_offset.z>)*c_rot),[ RC_REJECT_TYPES, RC_REJECT_AGENTS|RC_REJECT_PHYSICAL, RC_MAX_HITS, 4, RC_DATA_FLAGS, RC_GET_NORMAL, RC_DETECT_PHANTOM, FALSE ]); // Used for debugging below. llRegionSay(c,llList2String(t,1)+","+(string)c_rot); llSetText(llList2CSV(t),<1,1,1>,1); } } touch_end(integer n) { touch_offset = ZERO_VECTOR; // Used to put the debug prim back, serves no purpose. } } Debug Prim This isn't really needed, this just lets me know where the script's ray cast in landing. integer c = -54354; quickPosRot(vector pos, rotation rot) { llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_POSITION, pos, PRIM_ROTATION, rot]); } default { state_entry() { llListen(c,"","",""); } listen(integer c, string n, key i, string m) { if(llGetOwnerKey(i) == llGetOwner()) { list t = llCSV2List(m); vector pos = (vector)llList2String(t,0); rotation rot = (rotation)llList2String(t,1); if(pos != ZERO_VECTOR) quickPosRot(pos,rot); } } }
  9. If you learn better by visual example, this might slightly help better. This would give that padding that Klytyna would be referring too. Have the padding will make the rotations on the texture work better without the corners bleeding/repeating.
  10. Hello, I have been experimenting lately on a HUD. I've been attempting to get positions within the world when a spot is clicked on the HUD. There are a lot of problems I've faced, here is what I've managed to get so far, only cause it was easy. Sadly, nothing I have made has come close the result I've been looking for. Right now the HUD is currently an invisiprim that takes up the entire screen. The intended behavior is; when a user clicks somewhere on the HUD, it's as if they are clicking somewhere in the world and it will report the position where the simulated world click was. I know that Raycast would need to be used, the problem is I can get figure out how to offset and get it to shoot to the correct spot.
  11. There is a nice way of doing it by giving the user a choice in allowing it with the RLV functions that some viewers have. However, the User needs to allow it by having RLV enabled. If they don't have RLV enabled, it's just going to give them the RLV message. http://wiki.secondlife.com/wiki/LSL_Protocol/RestrainedLoveAPI#Name_Tags_and_Hovertext If you're unfamiliar with RLV, it's highly recommended that you read that wiki page.
  12. Hello, I was recently searching around YouTube and came across this old video by Nexii Malthus. He did a very good job on the Hud. I'm curious how did this kind of thing. It's very impressive. It's very interesting how he got it all on a HUD and took the object's world positions and displayed them on the HUD.
  13. Hello Marlon, Before you spend a bit of money on this kind of thing, here is a tool that may help you. Please try this tool out before you spend the money. Align Tool Demonstration This tool is located under your build menu.
  14. Yes, it is for an apache set up. It could be modified to work with other systems. I'm not that familiar with other languages or servers, so this is what I made it for. If anyone else makes the server code with a different language, let me know and I'll put it onto the thread.
  15. Now with the new functions that were released onto the Wiki, a lot of my web servers used a Name2Key service(Such as W-Hat, or similar). One problem we were having is some services are not 100% reliable. Every now and then, we had NULL_KEYs returned. These scripts we made; we used as a backup when the online services were not working or did not produce the desired result. This is not meant to be used as an alternative to Name2Key with LSL scripts, it is used for websites that need Name2Key and are looking for a backup to their current Name2Key. This could obviously be expanded and is very basic. I would expand on this to allow multiple in-world servers in case of an outage and make it update to the prim's URLs into a database and not a text file. Server Directory/Structure /Name2Key | | - .htaccess | - index.php Once your directory is set up on your server, here are the files! .httaccess RewriteEngine On RewriteBase / RewriteRule ^(.*)$ index.php?name=$1 [L,QSA] index.php <?php if(!empty($_GET['name'])) { if($_GET['name'] == "update_url") { $fh = fopen("server_url.txt","w"); fwrite($fh,base64_decode($_GET['url'])); fclose($fh); } else { header("Content-Type: text/plain"); $fh = fopen("server_url.txt","r"); $url = fread($fh, filesize("server_url.txt")); fclose($fh); $ch = curl_init($url); curl_setopt_array($ch,array( CURLOPT_RETURNTRANSFER=>TRUE, CURLOPT_POST=>TRUE, CURLOPT_HEADER=>"application/x-www-form-urlencoded", CURLOPT_POSTFIELDS=>base64_encode($_GET['name']) )); $data = curl_exec($ch); curl_close($ch); echo $data; } } Now for the in-world scripts. This is meant to go into a single prim and be left to sit there. Name2Key.lsl string update_url = "http://WebsiteName.com/Name2Key/update_url&url="; string url; key urlRequestId; key selfCheckRequestId; key name_query; key return_key; request_url() { llReleaseURL(url); url = ""; llSetTimerEvent(0.0); urlRequestId = llRequestURL(); } throw_exception(string inputString) { llInstantMessage(llGetOwner(), inputString); llResetScript(); } default { state_entry() { request_url(); } on_rez(integer start_param) { llResetScript(); } changed(integer change) { if (change & CHANGED_OWNER | CHANGED_REGION | CHANGED_REGION_START) llResetScript(); } timer() { selfCheckRequestId = llHTTPRequest(url,[HTTP_METHOD, "GET",HTTP_VERBOSE_THROTTLE, FALSE,HTTP_BODY_MAXLENGTH, 16384],""); } dataserver(key i, string d) { if(i == name_query) { if(d != NULL_KEY) { llHTTPResponse(return_key,200,d); } else { llHTTPResponse(return_key,200,NULL_KEY); } } } http_request(key id, string method, string body) { integer responseStatus = 400; string responseBody = "Unsupported method"; if (method == URL_REQUEST_DENIED) throw_exception("The following error occurred while attempting to get a free URL for this device:\n \n" + body); else if (method == URL_REQUEST_GRANTED) { url = body; llHTTPRequest(update_url+""+llStringToBase64(url),[HTTP_METHOD,"GET",HTTP_VERBOSE_THROTTLE,FALSE],""); llSetTimerEvent(300.0); } else if (method == "GET") { llHTTPResponse(id, 400, "Unsupported Method"); } else if (method == "POST") { body = llBase64ToString(body); name_query = llRequestUserKey(body); return_key = id; } } http_response(key id, integer status, list metaData, string body) { if (id == selfCheckRequestId) { selfCheckRequestId = NULL_KEY; if (status != 200) request_url(); } else if (id == NULL_KEY) throw_exception("Too many HTTP requests too fast!"); } } As I said, this is not a "finished" product, as it still needs some upgrades. We highly recommend that you use it as a backup to other online Name2Key Services when you get a NULL_KEY. Hope this helps out other users!
  • Create New...