Jump to content

Miranda Umino

Resident
  • Posts

    411
  • Joined

  • Last visited

Everything posted by Miranda Umino

  1. I m sorry Babette ; i can t help you because i don t have got 3DS max. In trying with Blender ; for now , i see the weight painting correctly in the files for blender .2.69 Unfortunately , i have not understood my actual problem with armature ; the skeleton is totally deformed after importation in SL . But , i hope i will understand later what i ve done wrong **edit ** ok i ve understood my problem .. The exporter is not ready yet : the Collada Exporter as of Blender 2.69 is incompatible with Collision bones. a fix in the nexts versions of Blender is expected I hope someone else could answer to you
  2. Great news . Thanks @babette : i am not sure to understand you ; but if you are talking about weighting paints , they are on the bones in Majuscules , not the bones prefixed with m* ( except the m_Toes ) So , NECK , not mNeck ; HEAD not mHead so : PELVIS BELLY CHEST NECK HEAD L_CLAVICLE L_UPPER_ARM L_LOWER_ARM L_HAND R_CLAVICLE R_UPPER_ARM R_LOWER_ARM R_HAND L_UPPER_LEG L_LOWER_LEG L_FOOT R_UPPER_LEG R_LOWER_LEG R_FOOT BUTT * LEFT_PEC * RIGHT_PEC * LEFT_HANDLE RIGHT_HANDLE LOWER_BACK UPPER_BACK If not , i don t see . Maybe an import problem ? What software / version do you use ?
  3. Your max speeed in other games of around 80-100 kbps : they are kilo BYTES per seconds When youplay SL, your download speed around 300-400 kbps : they are kilo BITS per seconds . So 8 X less . Yes your SL download with the very , very , very low performance of 40-50 kilo bytes per seconds . To add .. I have never seen in Europe with DASL connections , someone having SL upper to 1500 kilo BIT per seconds .. So a ridculous low traffic of 200 kilo Bytes per second Even when their DASL bandwith can download 20 mega bit per seconds ( 20 000 kilo bits per seconds if you prefer ) SL has ALWAYS downloaded lower than the other applications . You may verify by other tools who log your traffic network
  4. As the simulator can t brodacast to objects and viewers a refresh rate more than 45 FPS , it s normal More : you iterate 65536 times , but your text can change only 100 times . So you loose time and efficience You should write your script for instance like this : default{ touch_start(integer total_number) { integer size = 256; float water_level = (integer)llWater(ZERO_VECTOR); integer row = 0; integer column = 0; integer water_count; integer land_count; integer hill_count; integer cell_size = 1; vector current_pos = llGetPos(); integer process_count = (size/cell_size)*(size/cell_size); float mytime ; llResetTime(); while(column<=size&&row<=size) { column+=cell_size; if(column>=size) { column = 0; row+=cell_size; } vector pos = <column,row,0>; float ground_level = llGround(pos-current_pos); if(ground_level<water_level) ++water_count; else if(ground_level < 50) ++land_count; else ++hill_count; --process_count; if ( llGetTime() - mytime > 0.022222 ) { mytime = llGetTime(); // llSetText((string) (process_count/ ((size/cell_size)*(size/cell_size)/100)),<1,1,1>,1); llSetLinkPrimitiveParamsFast(0,[PRIM_TEXT,(string)(process_count/ ((size/cell_size)*(size/cell_size)/100)),<1,1,1>,1]); //llSetText((string) (process_count/ ((size/cell_size)*(size/cell_size)/100)),<1,1,1>,1); } } float time = llGetTime(); llOwnerSay("water count:"+(string)water_count+"\nland count:"+(string)land_count+"\nhill count:"+(string)hill_count+"\ncall time:"+(string)time+"s"); }} ( the 0.02222 is equal to 1 /45 , so the tiime for one frame of the simulator) It exists again a little overhead because of llGetTime, ( and all your costly divisions inside llsfp) , but it s around your times expected
  5. "Overall, Grand Theft Auto IV took over 1000 people and more than three and a half years to complete, with a total cost estimated at approximately $100 million" Probably GTA V has costed around the same resources , maybe more So , as you are working alone in SL , it will take you 1000 * 3.5 years = 3500 years to get your sim like GTA V . And of course , only if you are connected online ( or build on maya/blender etc.. ) with 40 hours per week . If you work only the week end , for instance , with 4 hours , it will take you 35 000 years to finish your dream. And you will need to fill your tip jars with 100 millions $ = 12 500 millions l$ Good luck ! Don t loose hope ! We trust in you !
  6. A good thing to know is that the density is homogenous for objects . So you could avoid your computations in using the mass of the object and its density ComputeVolume(){ float volume; list l = llGetPhysicsMaterial(); float mass = llGetMassMKS(); float density = llList2Float(l,-1); if ( density != 0.0 ) { volume = mass / density; } llOwnerSay(llList2CSV( [ "Mass ", mass , "\n", "Density", density, "\n", "Volume", volume, `"\n" ]));} mass in kilograms, Density in kilograms/meter cube Volume in meter cube It will avoid you to remember every formulas for tores , prisms , more complex objects, and sliced objects ( size of a sliced object is not the "visible" size of the object) To add , you ll get less errors because of floating point errors , in using mass and density
  7. Interesting : the point should be normalized ( if i understand you , the magnitude has no importance ) . But in the build tools of the flexi prim , we can set the vector , but it s not normalized . Probably it explains the confusions happened and the difficulties to undertand how work the flexis
  8. It depends of your method called in your form .. When your method of the form is "GET", your pararams are not in the body of the http request , but they are in the queryy String .. So you do : http_request(key id, string method, string body) { if (method == URL_REQUEST_GRANTED) { url = body; llOwnerSay(url); } else if (method == URL_REQUEST_DENIED) { llWhisper(0, "Error! I was unable to get an HTTP url for server communication. " + body); } else if (method == "GET") { string params = llGetHTTPHeader(id, "x-query-string"); llHTTPResponse(id, 200, "GET received!" + "body=" + body + "\nparams="+params); llOwnerSay("GET received!" + body); } else { llHTTPResponse(id, 405, "Method unsupported"); } } If in your HTML form , your method is "POST" , your params are in the body , but not in the query string
  9. It s a very very very alpha ... But they talk there http://community.secondlife.com/t5/LSL-Scripting/LSL-Editor-Test-version-for-Visual-Studio/td-p/1361097
  10. Just sets to null its value : jsonString= llJsonSetValue(jsonString, ["field"] , JSON_NULL ); It makes sense : suppose you have got an object { field1 : 3.1415926 , field2 : [ 1 ,2,3,4 ], field3 : "hello world" } You want to delete the field2 . It sgenerally better to get { field1 : 3.1415926 , field2 :null, field3 : "hello world" } and not { field1 : 3.1415926 , field3 : "hello world" } Because the next times you will try to fetch values from your JSON string , you couldn t know which fields ( keys if you prefer ) your JSON string has . So you will get JSON_INVALID without to know why ; without to know if your JSON string was badly parsed , or if your accessors/keys/specifiers (field2) was incorrect
  11. What is the interest to talk on the local chat to set the name of object ? you may use llTextBox : ( http://wiki.secondlife.com/wiki/LlTextBox) Every viewer has implemented it for a long time listen(integer channel, string name, key id, string message) { message = llStringTrim(message , STRING_TRIM); if(message == "Name Object") { llOwnerSay("Please List name in Local Chat"); llTextBox(channel, id, "Please list name in this text box") } else if ( message != "") { llSetObjectName(message); llListenRemove(handleListener); } }
  12. It depends of your build : llSetKeyFramedMotion turns "naturally" around some axes reported on the center of the root prim of the object . llSetAngularVelocity turns "naturally" around some axis reported on the center of the mass of the object .
  13. There were no changes about llListen and llGetOwner .recently Check again you script . Or reset it ( particulary if your object has changed owner and you listen the owner )
  14. ha ha , my bad . I have been too fast llFrand need a +1 when we want an integer because there is 1/2^32 possibilty to get the upper limit. But the number of lines are already +1 compared to the upper index of the list You are right
  15. // Touch a quote script// By CodeBastard Redgrave// Reads quotes from a notecard and displays them randomly when you touch!// BEWARE it cannot handle quotes more than 256 characters. Split them into multiple lines if needed.// This is a free script, DO NOT RESELL!// It's loosely based on the classic dataserver script from the LSL wiki.// Feel free to modify it to make your own book! Make code not war <3string notecardName = "Quotes";integer currentLine;key notecardRequestID;integer quoteIndex;integer numberOfQuotes;list listOfQuotes;init(){ integer numberOfNotecards = llGetInventoryNumber(INVENTORY_NOTECARD); if (numberOfNotecards) { currentLine = 0; notecardRequestID = llGetNotecardLine(notecardName, currentLine); llOwnerSay("Loading notecards now..."); }}default{ on_rez(integer start_param) { llResetScript(); } changed(integer change) { if (change & CHANGED_INVENTORY) llResetScript(); } state_entry() { init(); } touch_start(integer num_detected) { quoteIndex = (integer)llFrand(numberOfQuotes + 1); llSay(PUBLIC_CHANNEL, llList2String(listOfQuotes, quoteIndex)); } dataserver(key id, string data) { notecardRequestID = NULL_KEY; if (data == EOF) { currentLine = 0; numberOfQuotes = llGetListLength(listOfQuotes); integer freeMemory = llGetFreeMemory(); llOwnerSay("Done loading notecards!\n" + (string)numberOfQuotes + " quotes loaded, free memory " + (string)freeMemory); } else { if (data != "") listOfQuotes += [data]; notecardRequestID = llGetNotecardLine(notecardName, ++currentLine); } }} Just change the touch_start event
  16. I don t know But i llGetParcelDetails returns some informations than the sim knows . The sim doesn t need to fetch some datas from other servers to return the data to the script And i guess the price of a parcel is probably not stored in the sim , but , because it s a market data , in the dataservers or other centralized servers. So , if one day Linden Lab decides to return the price of a parcel to the scripts , i guess Linden Lab will choose to create an another function . Some async functions in the same kind of llRequestAgentData , llRequestUserName, llRequestSimulatorData etc .. Or to give us an HTTP API as slurl It s only a guess, an hypothesis About llReclaimParcel(ID) or llSetParcelSalePrice(ID, amount) , i am not sure it s a good idea to allow a script to do an action who can change the owner of the parcel . For me , it s a different problem
  17. The real limit/cap is 45 per second . .. because a script can t trigger twice the same event in the same frame . And a sim can get only 45 frames per seconds . Probably for the listen event , the limit is the half of 45 , so 22 events max per seconds. By experience , it was 22 events per seconds , my own cap . I don t know exactly why the half and not the full . Anyway , it will be difficult to process the message within 1/45 seconds Nevertheless , it s very dependant about what is your code inside the listen event . If you take more time or use some functions with delays , your rate will be lower . I guess than in your quick test , you have stored the messages , or their times , in a list or a string . Your first test with only one channel was dealing with a list of 1500 elements . So it has been slowed down by your process time Your second test with three channels was dealing with 3 lists of 500 elements . So it was faster I
  18. My opinion is just you have met some huge lag when your script was running the loop for the shout . For instance , some avatars who have TPed in the sim . Or your used channel has been spammed by other scripts ( probably your owns ) llShout doesn t take more time than the others messages functions ( well .. in truth , yes but not with a time spent of 8 seconds ) IllShout has not a forced delay .. When you want to measure , loop your tests several times to verify your doubts and hypothesis . Store the results of time in lists and use llListStatistics To add , you could use the llGetEnv(frame_number) in parallel to count the frames ran by the simulator . So , in comparing time spent measured in frames , and time spent measured in seconds , you could know if you have met some lag while your tests integer count = 500; list GenerateList(){ list temp = []; integer i; for (i=0; i<count; i++) { temp += [i]; } return temp;}list stats_listtostring;list stats_llShout; list stats_llRegionSay;list stats_frames_listtostring;list stats_frames_llShout; list stats_frames_llRegionSay;default{ touch_end(integer total_number) { integer i; list l = GenerateList(); integer numberTests; integer maxNumberTests = 100; llOwnerSay("Running"); float startFrame = (float)llGetEnv("frame_number"); float refFrame = (float)llGetEnv("frame_number"); float refFrame2 = (float)llGetEnv("frame_number"); do { llResetTime(); refFrame = (float)llGetEnv("frame_number"); for (i=0; i<count; i++) { llList2String(l, i); } stats_listtostring += llGetAndResetTime(); refFrame2 = (float)llGetEnv("frame_number"); stats_frames_listtostring += (refFrame2 - refFrame); refFrame = (float)llGetEnv("frame_number"); for (i=0; i<count; i++) { llShout(-384853, llList2String(l, i)); } stats_llShout += llGetAndResetTime(); refFrame2 = (float)llGetEnv("frame_number"); stats_frames_llShout += (refFrame2 - refFrame); refFrame = (float)llGetEnv("frame_number"); for (i=0; i<count; i++) { llRegionSay(-384853, llList2String(l, i)); } stats_llRegionSay += llGetAndResetTime(); refFrame2 = (float)llGetEnv("frame_number"); stats_frames_llRegionSay += (refFrame2 - refFrame); llSetLinkPrimitiveParamsFast( LINK_THIS, [PRIM_TEXT, (string)(100.0*numberTests/(float)maxNumberTests) + " % done",<1,1,1>, 1 ]); } while ( ++numberTests < maxNumberTests ); float endFrame = (float)llGetEnv("frame_number"); llSetText("",<1,1,1>,1.0); float totalTime = llListStatistics(LIST_STAT_SUM, stats_listtostring ) + llListStatistics(LIST_STAT_SUM, stats_llShout ) + llListStatistics(LIST_STAT_SUM, stats_llRegionSay ); float totalFrames = llListStatistics(LIST_STAT_SUM, stats_frames_listtostring ) + llListStatistics(LIST_STAT_SUM, stats_frames_llShout ) + llListStatistics(LIST_STAT_SUM, stats_frames_llRegionSay ); llOwnerSay(llList2CSV([ "total running Frames", (endFrame - startFrame) / 45.0 ,"\n", "time spent in loops" , totalTime, "\n", "frames spent in loops" , totalFrames/45.0, "\n", "dilatation time during the loops", totalFrames / ( 45.0 * totalTime) ])); llOwnerSay("Min stats_listtostring " +(string)llListStatistics(LIST_STAT_MIN, stats_listtostring )); llOwnerSay("Min stats_llShout " +(string)llListStatistics(LIST_STAT_MIN, stats_llShout )); llOwnerSay("Min stats_llRegionSay " +(string)llListStatistics(LIST_STAT_MIN, stats_llRegionSay )); llOwnerSay("Max stats_listtostring " +(string)llListStatistics(LIST_STAT_MAX, stats_listtostring )); llOwnerSay("Max stats_llShout " +(string)llListStatistics(LIST_STAT_MAX, stats_llShout )); llOwnerSay("Max stats_llRegionSay " +(string)llListStatistics(LIST_STAT_MAX, stats_llRegionSay )); llOwnerSay("Mean stats_listtostring " +(string)llListStatistics(LIST_STAT_MEAN, stats_listtostring )); llOwnerSay("Mean stats_llShout " +(string)llListStatistics(LIST_STAT_MEAN, stats_llShout )); llOwnerSay("Mean stats_llRegionSay " +(string)llListStatistics(LIST_STAT_MEAN, stats_llRegionSay )); llOwnerSay("Median stats_listtostring " +(string)llListStatistics(LIST_STAT_MEDIAN, stats_listtostring )); llOwnerSay("Median stats_llShout " +(string)llListStatistics(LIST_STAT_MEDIAN, stats_llShout )); llOwnerSay("Median stats_llRegionSay " +(string)llListStatistics(LIST_STAT_MEDIAN, stats_llRegionSay )); }} Result : Object: total running Frames, 98.644447, , time spent in loops, 98.536987, , frames spent in loops, 98.288887, dilatation time during the loops, 0.997482 Object: Min stats_listtostring 0.021235 Object: Min stats_llShout 0.176874 Object: Min stats_llRegionSay 0.399096 Object: Max stats_listtostring 0.110616 Object: Max stats_llShout 0.711185 Object: Max stats_llRegionSay 0.663242 Object: Mean stats_listtostring 0.053231 Object: Mean stats_llShout 0.458603 Object: Mean stats_llRegionSay 0.473536 Object: Median stats_listtostring 0.045074 Object: Median stats_llShout 0.467005 Object: Median stats_llRegionSay 0.466646 As you can observe it , llShout is seamless with llRegionSay Done over 100 loops of 500 calls in a sim with few lag ( time dilatation = 0.997482) Note : the speed of llShout , llSay , llWhisper and llregionSay are essentialy dependants of the length of the message . In you test , you send only a number betwen 1 and 500 , so a message with a length of 3 characters . I have redone a test with a more "realistic" message with a length of 400 charcters . total running Frames, 475.644440, , time spent in loops, 475.405334, , frames spent in loops, 474.600006, , dilatation time during the loops, 0.998306 exemple tests stats: Min stats_listtostring 0.020166 exemple tests stats: Min stats_llShout 0.689046 exemple tests stats: Min stats_llRegionSay 2.512136 exemple tests stats: Max stats_listtostring 0.133063 exemple tests stats: Max stats_llShout 3.422645 exemple tests stats: Max stats_llRegionSay 3.377404 exemple tests stats: Mean stats_listtostring 0.043291 exemple tests stats: Mean stats_llShout 1.915376 exemple tests stats: Mean stats_llRegionSay 2.795386 exemple tests stats: Median stats_listtostring 0.044351 exemple tests stats: Median stats_llShout 1.947074 exemple tests stats: Median stats_llRegionSay 2.777997 As you can observe it : - llregionsay takes more time than llshout . But it s again seamless . - llshout and llregionsay takes between 5 and 8 X more than in your test . So the length of the message is the most important .
  19. I think it sjust a substitution of charcaters by others . A B C D E F G H I J K L M N O P Q R S T U V W X Y Z English U R S T O V W X A Z B C M D E F G H J K I L N P 0 Q Saurian Use 2 lists with the the english alphabet and the saurian alphabet . The letter translated has the same index in the saurian alphabet than the index in the english alphabet string alphabetEnglish = "abcdefghijklmnopqrstuvwxyz";string alphabetSaurian = "urstovwxazbcmdefghjkilnp0q";string translate(string inputMessage , string alphabetSource , string alphabetDest){ integer index; integer i; string output; string letter; do { index = llSubStringIndex(alphabetSource, letter = llGetSubString(inputMessage,i,i)); if ( index != -1) { // we have found the letter in the source aphabet .. So we translate it output += llGetSubString(alphabetDest, index, index); } else { // we have not found the letter in the source aphabet .. So we add it as in input output += letter; } } while (++i < llStringLength(inputMessage)); return output; }// USAGE :// translate( message , alphabetEnglish , alphabetSaurian ) = > translates from english to saurian// translate( message , alphabetSaurian , alphabetEnglish ) = > translates from saurian to english // you may build your own alphabets . Try to get alphabets with the same length
  20. http://wiki.secondlife.com/wiki/Json_usage_in_LSL on beta sims ***edit** damn .. too soon .. again some little hours to wait
  21. I am not sure what was the goal of your question . But maybe has it a link with the migration of hotmail acounts towards outlook.com ? http://windows.microsoft.com/en-us/windows/outlook/auto-upgrade-outlook-faq If it was the goal of your question , connect with internet explorer to outlook.com to enable your migration of your hotmail account ( it doesn t work with chrome browser , i dont know why )
  22. don t use the form after the submit button "add paypal" from second life . Because , indeed , SL redirects to a form from Paypal requiring a bank card . But create your paypal account directly on the site of paypal . Choose the site of Paypal dedicated for your country ( netherlands for you ) , not the paypal US site . Create an account there . After this , you could set up your paypal account in adding a bank account . Add it , and start the process to get the "verified" status from Paypal . When you add a bank account to your PayPal account, PayPal deposits two small amounts into your bank account. These deposits should appear in your bank account within 2 or 3 business days. To confirm your bank account: Make a note of the deposit amounts in your bank statement (or via internet banking) Log in to your PayPal account. Click the Confirm Bank Account link on your Account Overview page. Enter the amounts. If the amounts are correct, your bank account is confirmed and your account is verified Go back to second life and add your paypal account Enjoy
  23. Or facebook currency ( nevertheless abandonned) , or amazon currency , or casinos currency ....... http://abcnews.go.com/Technology/amazon-introduces-amazon-coins-virtual-currency-buying-apps/story?id=19170199#.UZLq1LXQYrU
  24. Hi joe . Read carefully the section 2.2 and the section 6 of this document http://community.secondlife.com/t5/English-Knowledge-Base/Account-balance/ta-p/700015#Section_.2.2 http://community.secondlife.com/t5/English-Knowledge-Base/Account-balance/ta-p/700015#Section_.6
  25. Official IMVU sell credits from $ , but don t buy credits for $ . Converting credits for $ has always been in black market on external sites TPE for SL were using a risk API given by LindenI , a system to limit frauds . This system doens t exist for IMVU TPE for SL were buying , selling lindens on the lindex when they didn t get funds enough . External sites for IMVU couldn t exchange with the official site in the two ways , buy and sell .
×
×
  • Create New...