EsePibe Borkotron
Resident-
Posts
9 -
Joined
-
Last visited
Content Type
Forums
Blogs
Knowledge Base
Everything posted by EsePibe Borkotron
-
Hello, i was searching the function llSetLinkClickAction() or equivalent in llSetLinkPrimitiveParamsFast(), but i not found. This forces me to use scripts in child primitives. But this is a step backwards. Does anyone know a trick or hack to do this from the root prim?
-
If the owner of the box is also its creator, the script works as a notecard giver and show in float text the name of object and the description. I use the description to put the price but you can put other content. The notecard for delive have the name "__" + objectName. For example, if the box have the name "Pink panty boxed" the notecard must have the name "__Pink panty boxed". If the owner of the box is not the creator, that is, a customer. The script is a unpacker and will autodelete in 120 seconds. Edited: This script is not to be used with no copy objects, or the client may lose its purchasing. integer TIME_TO_DIE = 120; integer g_iTimeToDie; default { state_entry() { llSetMemoryLimit(4096 * 3); llSetText( llGetObjectName() + "\n" + llGetObjectDesc() + "\nTouch here for info", <1, 1, 1>, 1); if (llGetOwner() != llGetCreator()) { state NewOwner; } // if } // state_entry on_rez(integer start_param) { llResetScript(); } // on_rez touch_start(integer total_number) { llGiveInventory(llDetectedKey(0), "__" + llGetObjectName()); } // touch_start changed(integer change) { if (change & CHANGED_OWNER) { state NewOwner; } // if } // changed } // default state NewOwner { state_entry() { g_iTimeToDie = TIME_TO_DIE; llSetTimerEvent(1.0); } // state_entry on_rez(integer start_param) { g_iTimeToDie = TIME_TO_DIE; llSetTimerEvent(1.0); } // on_rez touch_start(integer total_number) { if (llDetectedKey(0) != llGetOwner()) { return; } // if llSetTimerEvent(0.0); llSetText("unpacking.....", <1.0, 1.0, 1.0>, 1.0); list lInventory; integer iCounter; integer iNumItems = llGetInventoryNumber(INVENTORY_ALL); string sName; for (iCounter = 0; iCounter < iNumItems; iCounter++) { sName = llGetInventoryName(INVENTORY_ALL, iCounter); if (sName != llGetScriptName()) { lInventory += [sName]; } // if } // if if (llGetListLength(lInventory) > 0) { llOwnerSay("Search in your inventory one folder with name " + llGetObjectName()); llGiveInventoryList(llGetOwner(), llGetObjectName(), lInventory); } else { llOwnerSay("Sorry, box is empty!"); } // if llSetTimerEvent(1.0); } // touch_start timer() { g_iTimeToDie -= 1; llSetText( "Touch me to unpack.\nThis box will be autodeleted in " + (string) g_iTimeToDie + " seconds.", <1.0, 1.0, 1.0>, 1.0); if (g_iTimeToDie <= 0) { llDie(); } // if } // timer } // NewOwner
-
Deploys for the week of 2012-08-13
EsePibe Borkotron replied to Oskar Linden's topic in Second Life Server
Anything that uses the typical trick "llSetLinkPrimitiveParamsFast (LINK_THIS, [PRIM_FLEXIBLE, TRUE, 0, 0, 0, 0, 0, <0,0,0>]);" to make a single prim phantom in the linset stop working. This includes phantom doors and many sculpted buildings using a script to make phantom the door frame. -
New Feature Proposal: VIRTUAL LANDMARKS
EsePibe Borkotron replied to Toysoldier Thor's topic in Second Life Server
When anyone click on it, just appear the map to your store. If you change the store of site, then edit the <meta ... in your web page. -
New Feature Proposal: VIRTUAL LANDMARKS
EsePibe Borkotron replied to Toysoldier Thor's topic in Second Life Server
Hi, i know that is not the same, but while LL develop the dynamic landmark this script can be a temporary solution for you: First, create yourselt an account in Blogger or other site or open a free web page. In your case you can use your existing web page. Edit the HTML of your site and ADD this line just after of <head> tag, <meta content='SITE' name='Grojnowski (66, 34, 69)'/> Create a primitive and add this script: // Create one prim and put this script inside.// Textures obtained from: http://wiki.secondlife.com/wiki/Sculpted_Prims:_Sculpt_Maps_and_Texturesdefault{ state_entry() { llSetPrimitiveParams([ PRIM_SIZE, <1.0, 1.6, 1.0>, PRIM_ROTATION, llEuler2Rot(<67.0, 0.0, 0.0> * DEG_TO_RAD), PRIM_TYPE, PRIM_TYPE_SCULPT, "39fba6dd-ae01-bd23-6fad-a25e4ea2a5fc", PRIM_SCULPT_TYPE_SPHERE, PRIM_TEXTURE, ALL_SIDES, "ddb769c5-f893-96f3-0cfc-641d660a7e35", <1.0, 1.0, 0.0>, ZERO_VECTOR, PI/2, PRIM_BUMP_SHINY, ALL_SIDES, 1, 0 ]); llRemoveInventory(llGetScriptName()); }} This will convert the ugly prim in a sculpted pin landmark. Create other script with this content. I changed the constants for your case. //_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_///_/_/ _/_///_/_/ DINAMIC LANDMARK SCRIPT _/_///_/_/ By: EsePibe Borkotron _/_///_/_/ _/_///_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_///// Create yourself an account in Blogger and edit the HTML to put this line just after of <head>// <meta content='SITE' name='RegionName (128, 128, 22)'/>string FLOAT_TEXT = "Click here to go to my store.\n.\n.\n.";string MY_BLOG_URL = "http://toytalks.weebly.com/";float HOUR = 3600.0; // Seconds in one hour.float UPDATE = 24; // Every how many hours make an update.key gkReqId;string gsRegion = "";vector gvCoors = ZERO_VECTOR;integer giNumHours;default { state_entry() { gkReqId = llHTTPRequest(MY_BLOG_URL, [HTTP_METHOD,"GET"], ""); giNumHours = 0; llSetTimerEvent(3600.0); } // state_entry on_rez(integer start_param) { llResetScript(); } // on_rez timer() { if (giNumHours < UPDATE) { giNumHours++; } else { giNumHours = 0; gkReqId = llHTTPRequest(MY_BLOG_URL, [HTTP_METHOD,"GET"], ""); } // if } // timer touch_start(integer num_detected) { if (gsRegion == "") { return; } // if integer iCount; for (iCount = 0; iCount < num_detected; iCount++) { key kUser = llDetectedKey(0); llMapDestination(gsRegion, gvCoors, ZERO_VECTOR); } // for } // touch_start http_response(key request_id, integer status, list metadata, string body) { integer i; if (request_id == gkReqId) { list lDatos = llParseString2List(body, ["<meta content=SITE' name=], []); integer iLong = llGetListLength(lDatos); if (iLong < 2) { llOwnerSay("Error: Dinamic landmark data not found."); } else { list lTokens = llParseString2List(llList2String(lDatos, 1), ["'"], []); string sLandmark = llList2String(lTokens, 0); //llOwnerSay("DEBUG " + sLandmark); lTokens = llParseString2List(sLandmark, ["(", ")"], []); gsRegion = llStringTrim(llList2String(lTokens, 0), STRING_TRIM); gvCoors = (vector) ("<" + llList2String(lTokens, 1) + ">"); if (gsRegion != "") { //llOwnerSay("DEBUG - Region: [" + gsRegion + "] Coordinates: " + (string) gvCoors); llSetText(FLOAT_TEXT, <1.0, 1.0, 1.0>, 1.0); } else { llOwnerSay("ERROR: The format of your region string is incorrect: [" + sLandmark + "]"); llSetText("", <1.0, 1.0, 1.0>, 1.0); } // if } // if } else { llSay(0, (string) status + " error"); } // if } // http_response } // default The HTTP petittion is maded when the pin is rezzed or every 24 hours. You can give to your visitors a normal landmark and this dinamic landmark. EDIT: Modified error in timer event. -
Export to CSV the transaction History
EsePibe Borkotron replied to EsePibe Borkotron's topic in Merchants
thanks, it worked -
I want to send to all purchasers of a script an update that fixes a minor bug and implements some improvements. I have a list in a notecard of everyone who purchased inworld, but I just discovered that the list of transactions in marketplace not to dump to CSV or XML. I remember doing it once with the old XStreetSL. Has anyone found a way to do this in Marketplace?.