Jump to content

Syle Devin

  • Posts

  • Joined

  • Last visited


3 Neutral

Recent Profile Visitors

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

  1. I am trying to upload a mesh with a custom physics weight. In the uploader the physics weight shows .600. When I rez the mesh inworld and set the physics shape to prim the land impact jumps to 77. I have no idea what is happening or why the uploader is showing such different numbers. Any ideas?
  2. I am making a skeeball game. I have skeeballs that I want to die when they hit a "score" prim within the link group of the skeeball lane. I know you can have the link group detect which child prim has been hit but can you have a single object detect the child prim that it hit? I'm sure I could use messages between the ball and the skeeball but there may be multiple balls rolling around and I only want the one that has collided to die. Otherwise the other balls would die before the appropriate time and points may not be counted. I'm open to alternatives as long the alternative allows me to only have 1 ball be deleted at a time. Thank you! Edit: I have tried using llCollisionFilter(); but I have not had any luck, it doesn't seem to work for child prims.
  3. I hope nobody minds me asking this here. I have been getting a lot of help from this forums on my first major scripting project and thought I might see if someone could give me a bit more hands on help and hopefully a bit of time inworld. I've been creating a skeeball game as a first major scripting project. I have a crude prim version that I would like to get someone to test. I am asking here because I would like the person testing to have more script knowledge than I do to hopefully get some advice, someone I could ask questions, kind of like a mentor. I don't have much to give but I can give the final mesh version once it is created. Otherwise it is just a sharing of knowledge that I can then share with others later. If you would be willing to take a look, play my game, and possibly give some advice then let me know. I would very much appreciate it! Also, I don't want to come off as rude but, incase a few people want to help I will only let 1 person. I know more help is good but I don't want to show so many people the skeeball game in its current state. Thanks for understanding!
  4. I actually tried it with a regular llCollissionFilter in the root prim. I don't know if the script worked because I wasn't able to set my child prims phantom. So the rest of the script never ran. I used the script that someone put on the wiki but it didn't work. It's supposed to be a a multiplier for a skeeball game. The ball goes through the multiplier before hitting the prim that sets the score. That is why it has to be phantom. Although as of now I'm trying another way that does not involve collision with the child prims.
  5. Hmm, no I had not thought to try that. Thanks, I am testing with it now and will see what happens. I'm assuming I can just use if (llDetectedLinkNumber(0) == "Link Number Here") to check if a certain linked prim was hit?
  6. I'm at a loss of what to do. llVolumeDetect doesn't work on child prims and llCollisionFilter doesn't detect collisions with phantom prims. Anything I can do to make it work? Is there a way to check collision only with the child prim using llVolumeDetect? I know it says llVolumeDetect will cause the whole object to detect but is there anyway at all to control which prim detects the collision?
  7. Hmm, I think I actually tried that but I couldn't get it to work. I don't think it had crossed my mind to add (string) infront of variable. Thanks again, you've helped me a lot.
  8. Thanks so much for pointing that out, I was really hoping the problem was simple like that. I really need to start reading everything about a function before using it. I guess I'll switch to llRegionSayTo but is there anything better like llInstantMessage without the sleep?
  9. I've gone to the task of rewriting a script. I did not plan out the original script and so I ended up not knowing what was going on. Aside from being easier to understand I expected rewriting the script to be more effecient but currently it the script is running slower. In the previous script I had a timer that worked at .25 seconds. Now the timer won't even work at 1 second. Is there something simple that I have done wrong or do I need to rewrite the script differently? Also the timer is located in "state shoot". Actually the timer is a little wrong. I do have some idea that it has to do with my code and not the area I am inworld. The state shoot function runs smoothly by itself. The code only runs slow when the rest of the script is added. // Check if game is on or being played; game starts off. ------ integer gamemode = 0; // Scoreboard ------------------------------------------------- integer scoreboard_link = 3; integer scoreboard_slot_1 = 3; integer scoreboard_slot_2 = 2; integer scoreboard_slot_3 = 1; integer scoreboard_slot_4 = 0; // Digital Number Textures ------------------------------------ key blank = "22569582-40bd-5d95-254e-644cc4ef5129"; key zero = "4241ac4c-0b63-69d8-f048-d24d3bbd58ac"; key one = "92e5fe83-cea4-6bfd-c32c-21ee32a15b90"; key two = "7ab4ca65-528f-aeab-f7c4-de7e9dd0cd48"; key three = "11dceab3-9121-d9ac-8741-34ccaa509f0d"; key four = "d9d87ec3-7379-c859-e663-d7641736df08"; key five = "5ae3f95c-91e8-9683-2666-7b2ae1ebd9b0"; key six = "c3d04bb9-2a91-6857-944a-8a73caaf1f42"; key seven = "6df27617-a5f8-8f14-f196-490089ba8955"; key eight = "4196499f-7554-16ea-d545-2bad00f2f045"; key nine = "ae8f016c-8ccc-b1d0-3a6a-213d1ba8e13a"; // Payment Price in $L --------------------------------------- integer price = 1; key payee = NULL_KEY; // Player ---------------------------------------------------- string player_name = ""; key player_id = NULL_KEY; vector player_pos = < 0.0, 0.0, 0.0>; rotation player_rot = < 0.0, 0.0, 0.0, 0.0> ; // Ball Launch Settings -------------------------------------- float time = .1; float speed = 0; string display_speed; integer max_speed = 6; //Round float speed to 1 point string Float2String ( float num, integer places, integer rnd) { if (rnd) { float f = llPow( 10.0, places ); integer i = llRound(llFabs(num) * f); string s = "00000" + (string)i; // number of 0s is (value of max places - 1 ) if(num < 0.0) return "-" + (string)( (integer)(i / f) ) + "." + llGetSubString( s, -places, -1); return (string)( (integer)(i / f) ) + "." + llGetSubString( s, -places, -1); } if (!places) return (string)((integer)num ); if ( (places = (places - 7 - (places < 1) ) ) & 0x80000000) return llGetSubString((string)num, 0, places); return (string)num; } default { state_entry() { llSetPayPrice( PAY_HIDE, [price,PAY_HIDE, PAY_HIDE, PAY_HIDE] ); llRequestPermissions(llGetOwner(), PERMISSION_DEBIT); } run_time_permissions(integer perm) //Refund Permissions { if(perm & PERMISSION_DEBIT) { state cash; } } } state shoot { touch_start(integer num_detected) //Start ball launch { if (llDetectedKey(0) == player_id && gamemode == 1) { llSetTimerEvent(time); } } timer() //Charging ball launch speed { if ( speed < max_speed) { speed += .5; display_speed = Float2String(speed, 1, FALSE); llInstantMessage(player_id, "Power is " + (string)display_speed); } else { speed = max_speed; llInstantMessage(player_id, "Power is maxed."); time = 0; llSetTimerEvent(time); } } touch_end(integer num_detected) { //state score; time = 0; llSetTimerEvent(time); } } state cash // Payment { state_entry() { llSetPayPrice(price, [price ,PAY_HIDE, PAY_HIDE, PAY_HIDE]); state cash; } money(key id, integer amount) { payee = id; if (gamemode != 1) // Game is not on; allow payment. { if(amount != price) { llTransferLindenDollars(id, amount); llInstantMessage(id, "You paid "+(string)amount+"L$, which is the wrong price, the price is: "+(string)price + "L$."); } else // Game On! { player_id = id; player_name = llGetDisplayName(id); player_pos = llDetectedPos(0); player_rot = (rotation) llList2String(llGetObjectDetails(llDetectedKey(0),[OBJECT_ROT]),0); gamemode = 1; llInstantMessage(player_id, "Enjoy your game! You can play by going into mouselook, click and hold on the skeeball lane to aim and charge your ball speed."); state shoot; } } else if (gamemode == 1) //Game is on; refund payment. { if(id != player_id) { llInstantMessage(id, "Sorry, this game is already being played by " + (string) player_name + "."); llTransferLindenDollars(id, amount); } else if (id == player_id) { llInstantMessage(id, "You have already payed to play. Start or continue playing by going into mouselook anc clicking on the skeeball lane." ); llTransferLindenDollars(id, amount); } } } transaction_result(key id, integer success, string data) { if (success) { llInstantMessage(payee, "You have been refunded."); } else { llInstantMessage(payee, "Refund failed. Please contact the owner, " + (string)llGetDisplayName(llGetOwner()) + ", to get your refund."); } } }
  10. That would help if I could get it to work, I have tried it. Although I couldn't get it to work, I got a syntax error right before (string).
  11. Hmm, for the moment that is a bit much to take in. I'll look into it later but since most of my code is already written, just the score display left, I'll likely stick to pure LSL. Although I am curious, how much slower would you say? But thank you for the suggestion, I'll check it out. I've also run into another problem. I couldn't get string subset to work with my score. I figure that is because score is an integer not a string. Unless should it still work in some way? I'm so confused, I did not think a score display would be this challenging. I'm sure there is something I haven't thought of yet. I'm trying to get teh numbers of a score to equal the UUID counterpart so I can input that into a prim params. I am lost at setting the score to equal the UUID counterpart. I did figure out a way to seperate each number of the score by putting the score into a list, each number being a seperate item. Although I couldn't figure out how to change a list item once it was added. I did not see anything in the wiki for editing a specific list item. That idea stopped short.
  12. Right now I am going about this in a very odd way. I am getting the substring of a numbered score, using an if statement to check which number the substring, then assigning that substring to a variable that is the same as variable assigned to the UUID. This seems so round about, using a bunch of if statements. Is there an easier way to assign substrings to a uuid? I tried setting my variable names to numbers but that didn't work, kept getting syntax error. Maybe I am going about this wrong. I'm simply trying to get score and apply coresponding number textures to faces. I have figured out applying the texture to the faces at appropriate times. Now I am just stuck on getting the inputs to know which textures to use. Any advice or suggestions are highly appreciated!
  13. I have a script that has a linked prim, when hit, send message back to the base prim. I feel like there used to be a way to do this using linked messages but I don't remember it. I was looking at Linked_Messages but it doesn't look familiar to me. Is there any benefit to using Linked_Message over llSay/llListen?
  14. I may be a bit more confused. How does the rotated by work when passing the avatar rotation to the rez velocity? Is it simply saying "x speed" rotated by "x rotation" which would be rotating it by the radians, since it is not angle?
  15. So it was as simple as multiplying velocity by llGetRot. Is there an explanation behind that? Also thank you, I now understand the numbers that I was getting back for llGetRot, the radians I should say. My main objective is now fixed, thanks again. Also thank you Miranda for the explanation of converting radians to degrees. Edit: So I've run into something else. How come when I multiply velocity by the root objects angle it goes in the forward direction but when I multiply by a different angle the ball's direction is not effected? For example in aiming I got the angle between my avatar and a point that I clicked on the lane. Then I multiplied the velocity by that angle but nothing changed.
  • Create New...