Jump to content

Tabris Daxter

Resident
  • Posts

    129
  • Joined

  • Last visited

Everything posted by Tabris Daxter

  1. I don't know if its been said yet. Having the "voice dot" but then in profile saying that they don't voice. why can't LL make voice OFF by default
  2. @ Banker sorry, i haven't been able to get in-world lately, i've been having PC issues. when i get in i'll send you a copy of the "latest" version. (not much changed since this one)
  3. i'm having the same problem. i get a bit further, it opens the main window but all i get is white. System specs: Win 7 Ultimate 64. intel q6600 asus comando motherboard 4GB DDR2 ram Sapphire ATI radeon HD 7970 3GB internet ADSL 1+ 8MB. directly wired to modem i have this problem in both Firestorm & the Official Viewer
  4. i ripped the script out and placed it in some sunglasses. wearing a parachute all the time don't look cool. also the amount of weapons you can hide in some glasses. i think i have a nuke packed somehwere in a pair
  5. on an old avi (no longer available) i had a similar version of this i think. when you click ed the backpack it popped up a menu so you could change stuff. if you were cleaning this up what would you remove. this is in a pair of sunnies so i don't need the particle or "show/hide" bits
  6. this is the script for a freebie parachute. the bolded area is the menu API //BeachHead Aerospace SimpleChute v.0.1. You may copy, modify, sell, verbally abuse //this script. It is Not My Problem if this script damages your sim and causes it to run //amok and kill the Pope. //all altitudes are in terms of Above Ground Level, AGL, and not absolute z position. integer chuteHeight = 100; //the altitude (in m) at which the chute deploys integer reserveHeight = 25; //the reserve chute's hardcoded trigger altitude integer cutoffHeight = 5; //the altitude at which the float pushStrength; //the nudge we give to slow the fall of the av wearing the chute integer warned = FALSE; float oldAltitude; float currentAltitude; float fudgeFactor = 0.3; float waterTableTolerance = 0.5;//how close we have to be to the water surface to trigger a splash //the parachute uses two timer intervals, a slow "dormant" interval when the av isn't in //need of the chute, and a fast "active" interval once the chute realizes its wearer is falling. float fastInterval = 0.1; float timerInterval; float slowInterval = 5.0; integer splashActive = FALSE; integer animSet; string gAnimName = "skydive parachute"; //the animation to play once the chute deploys integer version = 11; splash() //the function that creates splash particles when water landing. Adapted from //Ama Omega's fine work { //particle functions based off Ama Omega's unbeatable one. integer glow = FALSE; integer bounce = TRUE; integer interpColor = TRUE; integer interpSize = TRUE; integer wind = FALSE; integer followSource = FALSE; integer followVel = FALSE; integer pattern = PSYS_SRC_PATTERN_ANGLE_CONE; key target = ""; float age = 3; // Life of each particle float maxSpeed = 10; // Max speed each particle is spit out at float minSpeed = 5; // Min speed each particle is spit out at string texture; // Texture used for particles, default used if blank float startAlpha = 1; // Start alpha (transparency) value float endAlpha = 1; // End alpha (transparency) value vector startColor = <1.0,0.0,0.0>; // Start color of particles <R,G,B> vector endColor = <0.0,0.0,1.0>; // End color of particles <R,G,B> (if interpColor == TRUE) vector startSize = <1,1,1>; // Start size of particles vector endSize = <0.5,0.5,0.5>; // End size of particles (if interpSize == TRUE) vector push = <0,0,-15>; // Force pushed on particles float rate = .5; // How fast (rate) to emit particles float radius = 0; // Radius to emit particles for BURST pattern integer count = 100; // How many particles to emit per BURST float outerAngle = 0.5; // Outer angle for all ANGLE patterns float innerAngle = 0.5; // Inner angle for all ANGLE patterns vector omega = <0,0,0>; // Rotation of ANGLE patterns around the source float life = 10; // Life in seconds for the system to make particles integer flags; flags = 0; if (target == "owner") target = llGetOwner(); if (target == "self") target = llGetKey(); if (glow) flags = flags | PSYS_PART_EMISSIVE_MASK; if (bounce) flags = flags | PSYS_PART_BOUNCE_MASK; if (interpColor) flags = flags | PSYS_PART_INTERP_COLOR_MASK; if (interpSize) flags = flags | PSYS_PART_INTERP_SCALE_MASK; if (wind) flags = flags | PSYS_PART_WIND_MASK; if (followSource) flags = flags | PSYS_PART_FOLLOW_SRC_MASK; if (followVel) flags = flags | PSYS_PART_FOLLOW_VELOCITY_MASK; if (target != "") flags = flags | PSYS_PART_TARGET_POS_MASK; llParticleSystem([ PSYS_PART_MAX_AGE,age, PSYS_PART_FLAGS,flags, PSYS_PART_START_COLOR, startColor, PSYS_PART_END_COLOR, endColor, PSYS_PART_START_SCALE,startSize, PSYS_PART_END_SCALE,endSize, PSYS_SRC_PATTERN, pattern, PSYS_SRC_BURST_RATE,rate, PSYS_SRC_ACCEL, push, PSYS_SRC_BURST_PART_COUNT,count, PSYS_SRC_BURST_RADIUS,radius, PSYS_SRC_BURST_SPEED_MIN,minSpeed, PSYS_SRC_BURST_SPEED_MAX,maxSpeed, PSYS_SRC_TARGET_KEY,target, PSYS_SRC_INNERANGLE,innerAngle, PSYS_SRC_OUTERANGLE,outerAngle, PSYS_SRC_OMEGA, omega, PSYS_SRC_MAX_AGE, life, PSYS_SRC_TEXTURE, texture, PSYS_PART_START_ALPHA, startAlpha, PSYS_PART_END_ALPHA, endAlpha ]); } bubbles() //the function to create bubbles AFTER a water landing. { //particle functions based off Ama Omega's unbeatable one. integer glow = FALSE; integer bounce = FALSE; integer interpColor = TRUE; integer interpSize = TRUE; integer wind = FALSE; integer followSource = FALSE; integer followVel = FALSE; integer pattern = PSYS_SRC_PATTERN_EXPLODE; key target = ""; float age = 5; // Life of each particle float maxSpeed = 0.5; // Max speed each particle is spit out at float minSpeed = 0; // Min speed each particle is spit out at string texture = "bubble"; // Texture used for particles, default used if blank float startAlpha = 1; // Start alpha (transparency) value float endAlpha = 0.01; // End alpha (transparency) value vector startColor = <1,1,1>; // Start color of particles <R,G,B> vector endColor = <1,1,1>; // End color of particles <R,G,B> (if interpColor == TRUE) vector startSize = <0.1,0.1,0.1>; // Start size of particles vector endSize = <1,1,1>; // End size of particles (if interpSize == TRUE) vector push = <0,0,0.5>; // Force pushed on particles float rate = .1; // How fast (rate) to emit particles float radius = 0.5; // Radius to emit particles for BURST pattern integer count = 4; // How many particles to emit per BURST float outerAngle = 0.5; // Outer angle for all ANGLE patterns float innerAngle = 0.5; // Inner angle for all ANGLE patterns vector omega = <0,0,0>; // Rotation of ANGLE patterns around the source float life = 0; // Life in seconds for the system to make particles integer flags; flags = 0; if (target == "owner") target = llGetOwner(); if (target == "self") target = llGetKey(); if (glow) flags = flags | PSYS_PART_EMISSIVE_MASK; if (bounce) flags = flags | PSYS_PART_BOUNCE_MASK; if (interpColor) flags = flags | PSYS_PART_INTERP_COLOR_MASK; if (interpSize) flags = flags | PSYS_PART_INTERP_SCALE_MASK; if (wind) flags = flags | PSYS_PART_WIND_MASK; if (followSource) flags = flags | PSYS_PART_FOLLOW_SRC_MASK; if (followVel) flags = flags | PSYS_PART_FOLLOW_VELOCITY_MASK; if (target != "") flags = flags | PSYS_PART_TARGET_POS_MASK; llParticleSystem([ PSYS_PART_MAX_AGE,age, PSYS_PART_FLAGS,flags, PSYS_PART_START_COLOR, startColor, PSYS_PART_END_COLOR, endColor, PSYS_PART_START_SCALE,startSize, PSYS_PART_END_SCALE,endSize, PSYS_SRC_PATTERN, pattern, PSYS_SRC_BURST_RATE,rate, PSYS_SRC_ACCEL, push, PSYS_SRC_BURST_PART_COUNT,count, PSYS_SRC_BURST_RADIUS,radius, PSYS_SRC_BURST_SPEED_MIN,minSpeed, PSYS_SRC_BURST_SPEED_MAX,maxSpeed, PSYS_SRC_TARGET_KEY,target, PSYS_SRC_INNERANGLE,innerAngle, PSYS_SRC_OUTERANGLE,outerAngle, PSYS_SRC_OMEGA, omega, PSYS_SRC_MAX_AGE, life, PSYS_SRC_TEXTURE, texture, PSYS_PART_START_ALPHA, startAlpha, PSYS_PART_END_ALPHA, endAlpha ]); } //this script accepts input from an llDialog script in the same prim that allows for //configuration of the trigger height, etc. This should be cut and dry. message(integer sender_num, integer number, string message, key some_key) { if(llList2String(llParseString2List(message,[" "],[]),0) == "deployAltitude") { //llOwnerSay("Trigger set"); chuteHeight = llList2Integer(llParseString2List(message,[" "],[]),1); llMessageLinked(LINK_ALL_OTHERS,chuteHeight, "", ""); } if(llList2String(llParseString2List(message,[" "],[]),0) == "Launch") { //llOwnerSay("Trigger set"); integer pushStrength = llList2Integer(llParseString2List(message,[" "],[]),1); llPushObject(llGetOwner(),<0,0,pushStrength*llGetMass()>,<0,0,0>,FALSE); llOwnerSay("Launching!"); } if (llList2String(llParseString2List(message,[" "],[]),0) == "Switch" && llList2String(llParseString2List(message,[" "],[]),1) == "On" ) { llSetAlpha(1,ALL_SIDES); //set the chute backpack's color to grey when //it is turned off integer i; for (i = 2 ; i <= llGetNumberOfPrims() ; i++ ) { llSetLinkColor(i,<1,1,1>,ALL_SIDES); } llSetColor(<0.5,0.5,1>,ALL_SIDES); state default; } if (llList2String(llParseString2List(message,[" "],[]),0) == "Switch" && llList2String(llParseString2List(message,[" "],[]),1) == "Off" ) { llSetColor(<0.3,0.3,0.3>,ALL_SIDES); integer i; for (i = 1 ; i <= llGetNumberOfPrims() ; i++ ) { llSetLinkColor(i,<0.3,0.3,0.3>,ALL_SIDES); } state off; } } default { on_rez(integer foo) { llSetBuoyancy(0); version = version + 1;//I increment the version on each rez of the chute for //ease in debugging and rollback if necessary. /* string ownerFullName = llKey2Name(llGetOwner()); //we store the owner's name llSetObjectName(ownerFullName + "'s SimpleChute v."+(string)version); llOffsetTexture(0 , 0.35, ALL_SIDES);//"Dormant"*/ llMessageLinked(LINK_ALL_OTHERS,0,"furl",""); //pack the chute canopy prims upon rez } state_entry() { llMessageLinked(LINK_ALL_OTHERS,0,"furl",""); llSetTimerEvent(slowInterval); llSetBuoyancy(0); llSetText("",<1,1,1>,1); } timer() { if(llGetAnimation(llGetOwner()) == "Falling Down" && timerInterval != fastInterval) { //then we're falling and need to start polling faster llSetTimerEvent(fastInterval); timerInterval = fastInterval; llSetColor(<1,0.3,0.3>,ALL_SIDES); llOffsetTexture(0 , 0.0, ALL_SIDES);//"Primed" } else if(timerInterval != slowInterval && llGetAnimation(llGetOwner()) != "Falling Down") { //then we're doing anything other than falling and we //need to ease up on the server with fewer timer events timerInterval = slowInterval; llSetBuoyancy(0); llSetTimerEvent(slowInterval); llParticleSystem([]); llSetColor(<0.5,0.5,1>,ALL_SIDES); llOffsetTexture(0 , 0.35, ALL_SIDES);//"Dormant" llMessageLinked(LINK_ALL_OTHERS,0,"furl",""); warned = FALSE; } vector position = llGetPos(); currentAltitude = position.z - llGround(<0,0,0>);//we determine AGL vector velocity = llGetVel(); if( currentAltitude < chuteHeight && currentAltitude > cutoffHeight && llGetAnimation(llGetOwner()) == "Falling Down" && velocity.z < 0) { llMessageLinked(LINK_ALL_OTHERS, 1010101, "main", ""); state deployed; } //here we trigger the 'reserve' chute if by some "miracle" the main chute didn't deploy. This event should be logically impossible, but hey. if( currentAltitude < reserveHeight && currentAltitude > cutoffHeight && llGetAnimation(llGetOwner()) == "Falling Down" && velocity.z < 0) { llMessageLinked(LINK_ALL_OTHERS, 1010101, "reserve", ""); state deployed; } } link_message(integer sender_num, integer number, string message, key some_key) { message(sender_num, number, message, some_key); } } state deployed { state_entry() { llSetTimerEvent(fastInterval); //animation elements from //http://secondlife.com/badgeo/wakka.php?wakka=ExampleAnimationBasic llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION); // ask the owner for permission to trigger animations llStopAnimation("falldown"); llStartAnimation(gAnimName); // automatically trigger animation. } on_rez(integer param) { llResetScript(); // reset the script as soon as it starts (switches to default state) } attach(key id) { integer perm = llGetPermissions(); if (id != NULL_KEY) // make sure we're actually attached. { if (! (perm & PERMISSION_TRIGGER_ANIMATION)) // remember to use bitwise operators! { llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION); // request permissions from the owner. } } else { if (perm & PERMISSION_TRIGGER_ANIMATION) { llStopAnimation(gAnimName); // stop the animation } } } timer() { vector position = llGetPos(); currentAltitude = position.z - llGround(<0,0,0>); if( currentAltitude < cutoffHeight ) {//we're within a few m of the ground and can pack the chute state default; } vector speed = llGetVel(); llSetBuoyancy(-speed.z * fudgeFactor); //setting the buoyancy as a function of downward velocity seems to have a nice damping //effect most of the time. Sometimes, it rockets you upwards. Not sure why. if(!warned) { llMessageLinked(LINK_ALL_OTHERS,0,"unfurl",""); llOffsetTexture(0 , -0.37, ALL_SIDES);//"Active" llSetColor(<0,1,0>,ALL_SIDES); warned = TRUE; } if(llFabs((currentAltitude - llFabs((llWater(ZERO_VECTOR) - llGround(ZERO_VECTOR))))) < waterTableTolerance && llWater(ZERO_VECTOR) > llGround(ZERO_VECTOR) && llGetAnimation(llGetOwner()) == "Falling Down") { splash(); splashActive = TRUE; llMessageLinked(LINK_ALL_OTHERS,0,"furl",""); } else if(splashActive) { //llStopAnimation(animation); splashActive = FALSE; if(llGetAnimation(llGetOwner()) == "Falling Down") { bubbles(); llMessageLinked(LINK_ALL_OTHERS,0,"furl",""); } } } link_message(integer sender_num, integer number, string message, key some_key) { message(sender_num, number, message, some_key); } state_exit() { llStopAnimation(gAnimName); llOffsetTexture(0 , 0.35, ALL_SIDES);//"Dormant" llSetColor(<0.5,0.5,1>,ALL_SIDES); llParticleSystem([]); } } state off { link_message(integer sender_num, integer number, string message, key some_key) { message(sender_num, number, message, some_key); } } here is just the menu bit //this script accepts input from an llDialog script in the same prim that allows for //configuration of the trigger height, etc. This should be cut and dry. message(integer sender_num, integer number, string message, key some_key) { if(llList2String(llParseString2List(message,[" "],[]),0) == "deployAltitude") { //llOwnerSay("Trigger set"); chuteHeight = llList2Integer(llParseString2List(message,[" "],[]),1); llMessageLinked(LINK_ALL_OTHERS,chuteHeight, "", ""); } if(llList2String(llParseString2List(message,[" "],[]),0) == "Launch") { //llOwnerSay("Trigger set"); integer pushStrength = llList2Integer(llParseString2List(message,[" "],[]),1); llPushObject(llGetOwner(),<0,0,pushStrength*llGetMass()>,<0,0,0>,FALSE); llOwnerSay("Launching!"); } if (llList2String(llParseString2List(message,[" "],[]),0) == "Switch" && llList2String(llParseString2List(message,[" "],[]),1) == "On" ) { llSetAlpha(1,ALL_SIDES); //set the chute backpack's color to grey when //it is turned off integer i; for (i = 2 ; i <= llGetNumberOfPrims() ; i++ ) { llSetLinkColor(i,<1,1,1>,ALL_SIDES); } llSetColor(<0.5,0.5,1>,ALL_SIDES); state default; } if (llList2String(llParseString2List(message,[" "],[]),0) == "Switch" && llList2String(llParseString2List(message,[" "],[]),1) == "Off" ) { llSetColor(<0.3,0.3,0.3>,ALL_SIDES); integer i; for (i = 1 ; i <= llGetNumberOfPrims() ; i++ ) { llSetLinkColor(i,<0.3,0.3,0.3>,ALL_SIDES); } state off; } } apparently your meant to use llDialog to call llMessageLinked (i think) but i can't make any sense from there.
  7. I had considered the "private" Sims & the best way I think is to ignore them, if I stick to the mainland continents. it would be a pretty accurate list. maybe 2 or 3 bots running 3 weeks apart along the same track. that would give me a window to account for new avatars and 'defunct' ones. have either (or both) a php or lsl script looking up names, if it can't find it delete the entry.
  8. Hey all I was look into o make a name to Key DB as a lot of the current ones are out of date. Mostly for my personally use to begin with in part of my game that I'm developing. My current idea is to have a bot "jumping" from sim to sim using LlTeleportAgentGlobalCoords & using llGetAgentList to get the keys. Upload keys to an external DB Clear list Jump Rinse & Repeat. Have a separate object parsing through the DB and getting both the Username & Display Name of each key. Sacrifice a virgin (mostly found on sex sims) each week to remove duplicates. What I'm asking for is advice or if there are any problems that you can foresee
  9. i usually use a comma so that i can use llCSV2List() & llList2CSV() EDIT this also preserves the commas in vectors
  10. the idea behind this script is as a centralised "server". pinging each player then updating it on a website so the other players can see who is online and where they are (seperate script in the HUD. ie, player TP's and it shows last known location at region level not actual position) but this script is in a location (home base) and "pulls down" a list of players checks the status then changes the status based on the result.
  11. thanks. side note: IF they bork DATA_ONLINE what would be a way that i could test online status. (each person is wearing a HUD that on certain events uploads to a database)
  12. thanks. moving integer Status; to a global worked and i tested it with some of my offline friends. now to move on to the next bit
  13. Hey all, the script following is an ALPHA version but I'm trying to make an Online detector. Eventually it will be pulling the keys from a database looping through the keys and changing the status on the database. the problem i think is in the dataserver event. i want it to get the name if the user is online but for debug purposes display the display name if offline. key Data; key Name; key Display; key Akey; // = "3ca3de18-e809-4d5d-a2fc-9336bd54688a"; default { state_entry() { llSay(0, "Hello, Avatar!"); } touch_start(integer total_number) { Akey = llGetOwner(); llSay(0, "Getting Agent Status"); //Data = llRequestAgentData("3ca3de18-e809-4d5d-a2fc-9336bd54688a",DATA_ONLINE); Data = llRequestAgentData(Akey,DATA_ONLINE); } dataserver(key qID, string msg) { integer Status; //Display = llRequestDisplayName(Akey); if (qID == Data) { if (msg == "1") { Status = 1; Name = llRequestUsername(Akey); } else if (msg == "0") { Status = 0; Name = llRequestUsername(Akey); } llSay(0,(string)Status); } else if (qID == Name) { if(Status == 1) { llSay(0, msg + " Is Online"); } else if(Status == 0) { llSay(0, msg + " Is Offline"); } } } } help appreciated
  14. yeah, thats why i thought it was llListFindList() as i've had problems with that before
  15. i knew it was something simple. something that i over looked. Works Perfectly now. Thanks All
  16. Hey all, i think the problem i'm having with script is in the llListFindList() but it may be in how the lists are made & extracted string gNoteCard = "Settings"; integer gNCline; key gNCquery; list pID; key pCUT; default { state_entry() { llOwnerSay("DMZ Location Test\nTouch to load locations"); llListen(1,"",llGetOwner(),""); } touch_start(integer total_number) { gNCquery = llGetNotecardLine(gNoteCard, gNCline); } listen(integer chan, string name, key id, string msg) { if (msg == "Dump") { llOwnerSay(llDumpList2String(pID,"\n")); } } dataserver(key lquery, string data) { if (gNCquery == lquery) { if (data != EOF) { list tmp = llParseString2List(data, ["="], []); string setting = llList2String(tmp,0); if (setting == "DMZ") { pID += llStringTrim(llList2String(tmp,1),STRING_TRIM); } else if (setting == "AUTH") { pCUT = llList2Key(tmp,1); } } gNCquery = llGetNotecardLine(gNoteCard, ++gNCline); } } changed(integer intnull) { if (intnull & CHANGED_TELEPORT) { llOwnerSay((string)llGetListLength(pID) + " Items Loaded"); list temp = llGetParcelDetails(llGetPos(),[PARCEL_DETAILS_ID]); key Pkey = llList2Key(temp,0); integer pIndex = llListFindList(pID,temp); llOwnerSay("DEBUG "+ (string)pIndex + "\n"+llList2String(pID,pIndex) + "\n" + llList2String(temp,0)); if (Pkey == llList2Key(pID,pIndex)) { llSetColor(<1,0,0>,ALL_SIDES); llSetText("Non-Combat Area",<0,0,1>,1); } else { llSetColor(<0,1,0>,ALL_SIDES); llSetText("Combat Area",<0,0,1>,1); } } } } Notecard: DMZ=5ba1aa40-632e-23cf-dfc3-196ccb0739c2 DMZ=37178dfd-13b4-09b9-cf1e-c7ec51b8752b DMZ=af79b520-aee5-1327-e50e-ac2a3c25f85f DMZ=c8cf9757-2f41-9c04-c98e-8dace645eefa DMZ=c8cf9757-2f41-9c04-c98e-8dace645eefa DMZ=e9604890-dd25-9665-b44a-2424555ee256 DMZ=01dfd8ce-1340-cbc6-cbaf-748bfd11d2bf DMZ=db9a6f90-7b4f-13ae-f2ee-daca09cd1408 DMZ=bfd20b35-0c1d-e4f2-032a-101fba92ae21 DMZ=f52d5722-e5af-f4df-488d-e5c2e975b98b DMZ=158b5788-61ac-3f5a-0af1-68a611267d90 DMZ=5ae3d4d4-24c9-3653-dbed-8e49962d249f DMZ=6be037e8-c84f-25aa-9ba5-8e15f8f7ff63 DMZ=bc7628a7-b806-bcf4-33d6-085270cd8532 DMZ=95e4d71b-622f-1d3d-5c8a-350b82e93146 DMZ=3785be47-ea15-5540-8ec3-67d225bbb4f1
  17. i got it sorted out now. ty for getting me on track. decided to use the script from here to fill in the variables to compact the data being sent somewhat.
  18. the PHP script i'm using is copied and pasted from an online tutorial, but you might be on the right track EDIT: found the tutorial @ w3schools
  19. Hi all, i'm having a bit of a SL-PHP-MYSQL problem. the problem i'm having is the data IS getting from SL > PHP and i'm getting a successful status code (200) but it's not putting any data into the table. i'm not getting any error messages. just a new line in the table with no data. relevant code snippets below. LSL code snippet: playerupdate(string type,key target) { if (type == "loc") { gRegionName = llGetRegionName(); gPlayer = llGetOwnerKey(llGetKey()); gPlayerName = llKey2Name(gPlayer); string URLDATA = URLokey + (string)gPlayer +"&"+ URLoname + gPlayerName +"&"+ URLreg + gRegionName; gHttpPutloc = llHTTPRequest(URLroot + locdbupdate + URLDATA,[HTTP_METHOD,"POST",HTTP_MIMETYPE,"application/x-www-form-urlencoded"],""); } else if (type == "kill") { gRegionName = llGetRegionName(); gPlayer = llGetOwnerKey(llGetKey()); gPlayerName = llKey2Name(gPlayer); gTargetName = llKey2Name(target); string URLDATA = URLokey + (string)gPlayer +"&"+ URLoname + gPlayerName +"&"+ URLkills + gTargetName; gHttpPutloc = llHTTPRequest(URLroot + killdbupdate + llEscapeURL(URLDATA),[HTTP_METHOD,"POST",HTTP_MIMETYPE,"application/x-www-form-urlencoded"],""); llSay(0,URLDATA); } else if (type == "death") { gRegionName = llGetRegionName(); gPlayer = llGetOwnerKey(llGetKey()); gPlayerName = llKey2Name(gPlayer); string URLDATA = URLokey + (string)gPlayer +"&"+ URLoname + gPlayerName +"&"+ URLreg + gRegionName; gHttpPutloc = llHTTPRequest(URLroot + deathdbupdate + URLDATA,[HTTP_METHOD,"POST",HTTP_MIMETYPE,"application/x-www-form-urlencoded"],""); } } PHP code: <?php include("dbinc.php"); $con = mysql_connect($host, $user, $pass); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db($db, $con); $sql="REPLACE INTO round_data (name, pkey, loc) VALUES ('$_POST[name]','$_POST[key]','$_POST[loc]')"; if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); } echo $_POST[name]; mysql_close($con) ?> MYSQL DB structure: -- -------------------------------------------------------- -- -- Table structure for table `round_data` -- CREATE TABLE `round_data` ( `id` tinyint(6) NOT NULL AUTO_INCREMENT, `name` varchar(50) COLLATE latin1_general_ci NOT NULL, `pkey` varchar(40) COLLATE latin1_general_ci NOT NULL, `loc` varchar(50) COLLATE latin1_general_ci NOT NULL, `kills` varchar(4) COLLATE latin1_general_ci NOT NULL, `deaths` varchar(4) COLLATE latin1_general_ci NOT NULL, `score` varchar(4) COLLATE latin1_general_ci NOT NULL, PRIMARY KEY (`pkey`,`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ; -- -- Dumping data for table `round_data` -- REPLACE INTO `round_data` VALUES(1, '', '', '', '', '', '');
  20. hi, llCastRay() was "introduced" to replace "physical type" like this for your exact purpose (ie. detecting individual prims or body parts) the example on the wiki can be modified to be used in a weapon (and has been. i did but i'm not releasing the code) if you go the llCastRay() route i would also back it up with a llSensor() call as it's a bit buggy in attachments. then you use a particle bullet. BUT if you ABSOLUTLY want to go with physical bullets, in the bullet i would put a llCastRay() script with a small range (~1m) and the a llRegionSayTo(llOwnerKey(),[stuff]) and do the calcs in a hud just my 2$l
  21. it worked. ty now just to dump in a loop to cycle through the landmarks & return "home" when done. after that putting it in a nice body. EDIT: extra thoughts, is it better to "inline" a loop creating a list of the LM names or as a seperate function. i'm going to be putting a CHANGED_TELEPORT in which will start a timer untill the next "jump". how long is a good amount of time. 15sec, 30? also i have to figure out how to block ALL other features of the RLV system (i don't want my "ship" getting trapped by an auto-scanning RLV trap)
  22. i had an idea. i could use the RLV force TP system to tp my avi(or an alt, probably an alt) around unassisted. so i butchered the code located at the above link with Example 1 on llRequestInventoryData Butchered code below: key vgKeyOwner; default{ touch_start( integer vIntNull ) { if (llDetectedKey( 0 ) == vgKeyOwner) { integer vIntLMcount = llGetInventoryNumber( INVENTORY_LANDMARK ); //-- make sure we have a landmark in invetory if (vIntLMcount) { llRequestInventoryData( llGetInventoryName( INVENTORY_LANDMARK, 0 ) ); } } } dataserver( key vKeyNull, string vStrData ) { //-- because we don't know who touched us in this event, this //-- only works for the owner when called from the dataserver llOwnerSay(vStrData); list tokens = llParseString2List (vStrData, ["<", ",", ">"], []); string pos_str = ""; vector global_pos; // The coordinates given by the dataserver are the ones of the // South-West corner of this sim // => offset with the specified local coordinates global_pos.x = llList2Float (tokens, 0); global_pos.y = llList2Float (tokens, 1); global_pos.z = llList2Float (tokens, 2); // Build the command pos_str = (string)((integer)global_pos.x) +"/"+(string)((integer)global_pos.y) +"/"+(string)((integer)global_pos.z); llOwnerSay ("Global position : "+(string)pos_str); // Debug purposes // Fire ! llOwnerSay ("@tpto:"+pos_str+"=force"); //llMapDestination( llGetRegionName(), (vector)vStrData, ZERO_VECTOR ); } on_rez( integer vIntNull ) { llResetScript(); } state_entry() { vgKeyOwner = llGetOwner(); }} now it reads from the landmark fine. the llMapDestination() works and shows the correct location. i think i fubb'd something in the re-assembling of the co-ordinates needed for RLV as the force TP won't find the destination
  23. Tommie, there are about 5 or 6 "missing" scripts here as this i just a (very)small part of a much larger (and on hold) project. i only posted the main script as a RFC(Request For Comment) to see if there were any MAJOR "you will blow up the server if you do this" problems. if you message me inworld i can send you a copy of the rental box with all scripts (updated teleport) and notecards. i just ask that you don't sell it. @Rolig, Bingo. addy is the key of the "room" to turn off security. dest is the location. /cookie
  24. i tried a Frank 'n' Stiened version of this: //-- Open map for owner to 1st landmark in object inventory on touch//-- *MUST* be in an attached object (llMapDestination Requirement for non-touch use)key vgKeyOwner; default{ touch_start( integer vIntNull ) { if (llDetectedKey( 0 ) == vgKeyOwner) { integer vIntLMcount = llGetInventoryNumber( INVENTORY_LANDMARK ); //-- make sure we have a landmark in invetory if (vIntLMcount) { llRequestInventoryData( llGetInventoryName( INVENTORY_LANDMARK, 0 ) ); } } } dataserver( key vKeyNull, string vStrData ) { //-- because we don't know who touched us in this event, this //-- only works for the owner when called from the dataserver llMapDestination( llGetRegionName(), (vector)vStrData, ZERO_VECTOR ); } on_rez( integer vIntNull ) { llResetScript(); } state_entry() { vgKeyOwner = llGetOwner(); }} and //calculates your position relative to <0,0,0> of 'Da Boom' in meters when you touch itvector vecrel; //a sum of llgetpos and llgetregioncorner (and another vector). Saving time doing vector math. default{ state_entry() { llSetText("Touch me to get your position", <1,1,1>, 2.0); } touch_start(integer total_number) { vecrel = llGetRegionCorner() + llDetectedPos(0); llWhisper(0, "llGetRegionCorner() is:"+(string)vecrel ); //for debugging before vector addition vecrel -= <256000.0, 256000.0, 0.0>;//Da Boom's region corner is at <256000.0, 256000.0, 0.0> llWhisper (0, "Position relative to <0,0,0> of 'Da Boom': "+ (string)llRound(vecrel.x) +",\t\t\t"+ (string)llRound(vecrel.y) +",\t\t\t"+ (string)llRound(vecrel.z) + "."); llWhisper(0, "Position relative to <0,0,0> of 'Da Boom':"+(string)vecrel ); //faster but unformatted output }} and i think it gave me the right cordinates but had no way of checking because llMapDestination needs a name. i'm thinking of butchering in this: // Pass a global position to this function, and the object// will move there. setGlobalPos(vector globalDest) { vector localDest; do { localDest = globalDest - llGetRegionCorner(); llSetPos(localDest); } while (llVecDist(llGetPos(), localDest) > 0.1);}default { state_entry() { vector DABOOM_CORNER = <256000, 256000, 0>; // DaBoom's region corner. setGlobalPos(DABOOM_CORNER + <128, 128, 128>); // Travel to <128,128,128> in DaBoom. }} make the prim move between locations and record the info, sending it to my DB each time. Side note: Void replied but i can't view the reply.
×
×
  • Create New...