-
Posts
184 -
Joined
-
Last visited
Content Type
Forums
Blogs
Knowledge Base
Posts posted by Gayngel
-
-
I am a programmer with 3 years experience in scripting with LSL. I enjoy building custom systems ground-up and will provide low lag reasonably priced solutions to my customer's specifications.
I can do simple, minor fixes to existing scripts, tip jars, club systems, dialog menus, detections, HUDs and vendors to more advanced systems such as pose systems, vehicles, pathfinding and weapons.
Script adaptations and library resources if used will be fully cited.
I work closely with my clients providing working demos of their products with full perm models (with user license) on completion and delivery. Note: Models will be mockups to present the functioning script, clients must finalise prim designs and builds themselves.
I charge only for what is in the script on completion and not an hourly rate.
Price for personal use only scripts is a surcharge on events used + L$1 per line/function with 50% retainer. Typically a script will cost L$500 - L$900. Every 5th project free!
Price for commmercial scripts to be sold in creations is the same fee + L$1000 for a reseller license + 10% per sale.
Working hours: 9AM SLT- 5PM SLT. Delivery may be a few hours to days depending on script complexity and work load.
IM me inworld for a price list and consultation. If I'm offline IMs will go to email and will get back to you ASAP. (Forwarning: Adult rated profile)
Copy/paste this link to the nearby chat window in your viewer, press enter then click on my name in chat to open my profile:
secondlife:///app/agent/a9ba2797-81af-429d-9833-51127ad5593c/about
-
You don't necessarily need 2 lists you can just loop thorugh inventory during a changed event and if the item dropped has not been added to the list you will know what was added and can append it to the list for the next drop.
list invlist;integer i;default{ state_entry() { llAllowInventoryDrop(TRUE); } touch_start(integer total_number) { } changed(integer change) { if(change & CHANGED_INVENTORY) { integer llength = llGetListLength(invlist); for(i = 0; i < llength; ++i) { string name = llGetInventoryName(INVENTORY_ALL, i); if(!~llListFindList(invlist, [name])) { llSay("Item named '" + name + "' was dropped in your mailbox."); invlist+=name; } } } }}
-
I am creating a visitor log that posts names of avatars to an external server script by http however it fails after a region restart because the url is released and the url has to be harcoded into the server.
How can I keep a persistent url to keep communicating with inworld objects?
I see a url can be requested again with CHANGED_REGION_START but doesn't that create a unique url for every request?
-
The math is correct but it calculates the percentage paid as commission to someone else, what you probably want is the remainder that you keep for yourself.
If you substitute a number as the amount, say 40% of 50 which is 20 paid as commission.
newamount = 50 * (40/100)
newamount = 50* 0.4
newamount = 20
If you want the remainder:
newamount = amount - (llRound(amount * (float)(commissionpercent/100)));
-
string foldername = "New Avi"; // Name of the folder that will be given to the avatar containing the items. Will be placed in their RLV folder.
list folderitems = ["skin", "shape", "hair", "alpha", "shoes", "pants", "shirt","Mesh Item"]; // List of all items that will be given to and force worn by the avatar that bumps into the prim. Items must be in the prim's invententory to give them.
list victim_list;
key av;
integer RLVchan = -1812221819;
integer rlv_handle;
integer version_handle;
integer version_chan = 49;
integer GiveItemHandle;
integer AcceptItemHandle;
checkrelay(string type,key victim,string command) //send command to relay
{
llRegionSayTo(victim, RLVchan, type+","+(string)victim+","+command);
}
relay(string type,key victim,string command) //send command to relay
{
llRegionSayTo(victim, RLVchan, type+","+(string)victim+","+command);
}
AttachItem()
{
relay("GiveItems",av,"@attach:~"+foldername+"/~"+foldername+"=force");
llListenRemove(AcceptItemHandle);
llSetTimerEvent(0.0);
llSetTimerEvent(2.0);
}
default
{
collision_start(integer num)
{
llListenRemove(rlv_handle);
llListenRemove(version_handle);
rlv_handle = llListen(RLVchan, "", "", "");
version_handle = llListen(version_chan, "", "", "");
av = llDetectedKey(0);
checkrelay("check", av, "@versionnew="+(string)version_chan);
llSetTimerEvent(0.0);
llSetTimerEvent(5.0);
}
listen(integer chan, string name, key id, string msg)
{
if (chan == RLVchan)
{
list rlvmsg = llParseStringKeepNulls(msg,[","],[]);
if (llGetListLength(rlvmsg) > 3)
{
if (llList2Key(rlvmsg,1) == llGetKey())
{
string resp = llList2String(rlvmsg,3);
string cmd = llList2String(rlvmsg,2);
if (resp == "ok")
{
if(llGetSubString(cmd,0,10) == "@versionnew")
{
GiveItemHandle = llListen(222,"",av,"");
relay("CheckFolders",av,"@getinv:~"+foldername+"=222");
llSetTimerEvent(0.0);
llSetTimerEvent(300.0);
}
}
}
}
}
else if (chan == 222)
{
if(msg == "")
{
AcceptItemHandle = llListen(444,"",av,"");
//cmd = cmdname + "," + (string)victimkey + "," +"@notify:444;inv_offer=add";
// llSay(relaychannel,cmd);
relay("GiveItems",av,"@notify:444;inv_offer=add");
llGiveInventoryList(av, "#RLV/~"+foldername+"/~"+foldername, folderitems);
}
else
{
AttachItem();
}
llListenRemove(GiveItemHandle);
}
else if(chan == 444)
{
list response = llParseString2List(msg, [ " " ], []);
string behaviour = llList2String(response, 0);
if ("/accepted_in_rlv" == behaviour)
{
AttachItem();
}
else if ("/accepted_in_inv" == behaviour)
{
AttachItem();
}
else if ("/declined" == behaviour)
{
llSay(0,llKey2Name(av) + " declined the attachment.");
llListenRemove(AcceptItemHandle);
llSetTimerEvent(0.0);
llSetTimerEvent(2.0);
}
}
}
timer()
{
llSetTimerEvent(0.0);
llListenRemove(rlv_handle);
llListenRemove(version_handle);
}
}
-
I need someone fluent in English and French to do a few translations for me for a gay BDSM skybox. You will be translating messages for my greeters,sign boards & tip jars. Pay is L$200.
IM me inworld.
Copy/paste this link to the nearby chat window in your viewer, press enter then click on my name in chat to open my profile:
secondlife:///app/agent/a9ba2797-81af-429d-9833-51127ad5593c/about
-
Try originating the particeles from the object leashing to the rigged object. Otherwise wear an unlinked container worn in the same position of the mesh.
-
You can't directly determine who clicked a webpage link on a MOAP prim but there are workarounds:
1. If the page is static and can't be scrolled, stick another media prim over where the link should be and have it display just the link and scripted to detect touches, passing the key to other functions and scripts.
2.If the page is scrollable, on the first instance of using a media prim you have to click the prim twice. First to activate interactivity, second to allow navigation. You can can compare who touched the prim each click and if the same UUID clicks twice then they are probably navigating the webpage. You can then pass their uuid to other functions and even to the wep page with the HTML functions.
3. If the link is navigable. I.e. it causes the page to go to another page, you can get the key of who last touched the prim in a touch event and pass it to functions when the the page changes. You can determine page navigation perhaps on a timer with llGetPrimativeParams and get and compare the [ PRIM_MEDIA_CURRENT_URL ] to the to a web page you've hardcoded in the script as the page the link goes to.
-
Really old post but another solution is to just loop through all inventory items getting the itemName of i, get the inventory type of itemName and if (type == INVENTORY_TEXTURE) then llOwnerSay((string)llGetIventoryKey(itemName));
Textures should be full perm of course.
-
I am a programmer with 3 years experience in scripting with LSL. I enjoy building custom systems ground-up and will provide low lag reasonably priced solutions to my customer's specifications.
I can do simple, minor fixes to existing scripts, tip jars, club systems, dialog menus, detections, HUDs and vendors to more advanced systems such as pose systems, vehicles, pathfinding and weapons.
Script adaptations and library resources if used will be fully cited.
I work closely with my clients providing working demos of their products with full perm models (with user license) on completion and delivery. Note: Models will be mockups to present the functioning script, clients must finalise prim designs and builds themselves.
I charge only for what is in the script on completion and not an hourly rate.
Price for personal use only scripts is a surcharge on events used + L$1 per line/function with 50% retainer. Typically a script will cost L$500 - L$900. Every 5th project free!
Price for commmercial scripts to be sold in creations is the same fee + L$1000 for a reseller license + 10% per sale.
Working hours: 9AM SLT- 5PM SLT. Delivery may be a few hours to days depending on script complexity and work load.
IM me inworld for a price list and consultation. If I'm offline IMs will go to email and will get back to you ASAP. (Forwarning: Adult rated profile)
Copy/paste this link to the nearby chat window in your viewer, press enter then click on my name in chat to open my profile:
secondlife:///app/agent/a9ba2797-81af-429d-9833-51127ad5593c/about
-
I am an experienced programmer with 3 years experience in scripting with LSL. I enjoy building custom systems ground-up and will provide low lag reasonably priced solutions to my cutomer's specifications.
I can do simple, minor fixes to existing scripts, tip jars, club systems, dialog menus, detections, HUDs and vendors to more advanced systems such as pose systems, vehicles, pathfinding and weapons.
Script adaptations and library resources if used will be fully cited.
I work closely with my clients providing working demos of their products with full perm models (with user license) on completion and delivery.
I charge only for what is in the script on completion and not an hourly rate. Price is surcharge on events used + L$1 per line/function with 50% retainer. Typically a script will cost L$500 - L$900. Every 5th project free!
Working hours: 9AM SLT- 5PM SLT. Delivery may be a few hours to days depending on script complexity and work load.
IM me inworld for a price list and consultation. If I'm offline IMs will go to email and will get back to you ASAP. (Forwarning: Adult rated profile)
-
Doh! Thanks so much Aspire!
-
I'm trying to create an RLV zone that when in range of the sensor restricts teleportation to landmarks but can't manage to make it work.:matte-motes-confused:
integer chanRLV = -1812221819; default { state_entry() { llSensor("", NULL_KEY, AGENT, 20.0, PI); } sensor( integer detected ) { while(detected--) { llSay(chanRLV,"NoTP," + llDetectedName(detected) + ",@tplm=n"); } } }
-
I need a photographer availble on Saturday 21st June to take a set of 20 photographs for 2 events at the Second Pride festival. The first event is the float parade between 10 - 11:30 AM Slt, the photogrpher will ride on our float with us. The second is a 2 hour dance event from 4-6PM SLT. Payment is L$3000 plus upload fees.
Contact me inworld: secondlife:///app/agent/a9ba2797-81af-429d-9833-51127ad5593c/about
Gayngel
-
Yes I want the object to scan for active relays and force sit a target on a rezzed poseball with catch and release buttons in the object dialog menu. Capture should prevent standing. Choice of poseballs should be by name, UUID or colour.
The above script actually isn't sufficient enough because once the avatar is caught they can't be released or stand unless the animation sequence is stopped.
-
// ~capture Script V1.01 // drop into a ball // // constants integer DEBUG = FALSE; float TIMER_TIMEOUT = 60.0; float TIMER_LOCKED = 900.0; integer RANGE_CAPTURE = 20; integer RELAY_CHANNEL = -1812221819; // texts string MSG_NO_SENSOR = "No avatars in sensor range."; string MSG_MENU_IN_USE = " is using the menu. Please try again in a while."; string MSG_CHOOSE_AV = "Choose avatar:"; string MSG_TIMEOUT = "Dialog timeout. Please touch again to retry."; // internal use integer dialog_handle; integer dialog_channel; key avatar_victim = NULL_KEY; integer channel; list sensor_keys; list sensor_names; key avatar_menu; // write a log message in DEBUG mode log(string message) { if (DEBUG) llOwnerSay("MENU: " + message); } // out a message to the user out(string message) { llSay(0, message); } capture(key avatar) { relay(avatar, "@sit:" + (string)llGetKey() + "=force"); } lock(key avatar) { relay(avatar, "@unsit=n"); } release(key avatar) { relay(avatar, "@unsit=y"); relay(avatar, "!release"); } // write a message to the RLV Relay relay(key avatar, string message) { if (avatar != NULL_KEY) { llSay(RELAY_CHANNEL, llGetObjectName() + "," + (string) avatar + "," + message); log("RLV: " + llGetObjectName() + "," + (string) avatar + "," + message); } } init() { dialog_channel= -(integer)(llFrand(100000 - 10000) + 10000); dialog_handle = llListen(dialog_channel, "", NULL_KEY, ""); llListenControl(dialog_handle, FALSE); avatar_menu = NULL_KEY; } // default state default { // on state entry: show dialog state_entry() { init(); } on_rez(integer start_param) { channel = start_param; init(); } // av touched me touch_start(integer total_number) { key id = llDetectedKey(0); // check if menu is in use if (avatar_menu != NULL_KEY && id != avatar_menu) { out(llKey2Name(avatar_menu) + MSG_MENU_IN_USE); return; } avatar_menu = id; llSensor("", NULL_KEY, AGENT, RANGE_CAPTURE, PI); } // no av in sensor range no_sensor() { out(MSG_NO_SENSOR); } // some av in sensor range sensor(integer total_number) { sensor_keys = []; sensor_names = []; integer i; for(i=0; i < total_number; i++) { key id = llDetectedKey(i); string name = llKey2Name(id); if (llStringLength(name) > 24) { name = llGetSubString(name, 0, 23); } sensor_keys += [id]; sensor_names += [name]; log("found: " + name); } // show dialog if list contains names if (llGetListLength(sensor_names) > 0) { llListenControl(dialog_handle, TRUE); llSetTimerEvent(TIMER_TIMEOUT); llDialog(avatar_menu, MSG_CHOOSE_AV, sensor_names, dialog_channel); } } // menu selected listen(integer channel, string name, key id, string message) { llListenControl(dialog_handle, FALSE); integer index = llListFindList(sensor_names, [message]); if (index != -1) { key selected = llList2Key(sensor_keys, index); log ("capture " + llKey2Name(selected)); capture(selected); } avatar_menu = NULL_KEY; } // dialog timeout timer() { if (avatar_menu != NULL_KEY) { out(MSG_TIMEOUT); avatar_menu = NULL_KEY; llListenControl(dialog_handle, FALSE); } llSetTimerEvent(0); } changed(integer change) { if(change & CHANGED_LINK) { key id = llAvatarOnSitTarget(); if (id != NULL_KEY) { avatar_victim = id; lock(avatar_victim); log ("sitting: " + llKey2Name(avatar_victim)); state locked; } } } } state locked { state_entry() { llListen(channel, "", NULL_KEY, "DIE"); llSetTimerEvent(TIMER_LOCKED); } listen(integer channel, string name, key id, string message) { if (message == "DIE") { log ("DIE"); release(avatar_victim); } } changed(integer change) { if(change & CHANGED_LINK) { key id = llAvatarOnSitTarget(); if (id == NULL_KEY) { log ("unsitting " + llKey2Name(avatar_victim)); release(avatar_victim); avatar_victim = id; state default; } } } timer() { release(avatar_victim); } }
The MLPV RLV Capture add-on script above requires dropping into the poseballs. I would like to instead amend the script OR have a new capture by sensor script drafted so there is a capture button in the RLV menu of the object. The script needs the touch event omitted, link message added and some re-arranging. Tried converting the touch_event and the if (llGetListLength(sensor_names) > 0) to link_message but neither atempt worked. Please could assist?
Link message needed in script:
link_message(integer sender, integer num, string str, key id) { if (num == 1820 && str == "CATCH") { llDialog(avatar_menu, MSG_CHOOSE_AV, sensor_names, dialog_channel); llListenControl(dialog_handle, TRUE); llSetTimerEvent(TIMER_TIMEOUT); } }
LINKMsg in .MENUITEMS.RLV:
MENU Capture | ALL LINKMSG CATCH | 1,-4,1820,CATCH
-
This script doesn't "force open"the notecard on acceptance. With the setting to open notecards on acceptance as enabled, sometimes during an inventory exchange of multiple items a notecard doesn't automatically open. This script ensures that, it will open. I just don't want it to offer the notecard as a second offer on touch. I have an avatar kit vendor that gives about 30 free items and would like the styling notecard that is included to open automatically.
-
I am trying to create a script that gives a folder of items that contains a notecard. I want the notecard to pop up on screen on accepting the folder. The script I have asks two inventory offers, the folder of items and the notecard. I would like the script to only offer 1 exchange; a folder of items that includes a notecard and the notecard must pop up on aceptance.
string notecard="Notecard Name"; default { state_entry() { llOwnerSay("Touch me to unpack..."); } on_rez(integer start_param) { llResetScript(); } touch_start(integer total_number) { if (llDetectedKey(0)) { integer aaaa = 0; list Files = []; do { if (llGetInventoryType(llGetInventoryName(INVENTORY_ALL,aaaa))!=INVENTORY_SCRIPT && llGetInventoryType(llGetInventoryName(INVENTORY_ALL,aaaa))!=INVENTORY_ANIMATION) Files += llGetInventoryName(INVENTORY_ALL,aaaa); } while(aaaa++<(llGetInventoryNumber(INVENTORY_ALL)-1)); llGiveInventoryList(llDetectedKey(0),llGetObjectName(),Files); } llGiveInventory(llDetectedKey(0),notecard); } }
-
key http_request_id; default{ state_entry() { http_request_id = llHTTPRequest("https://www.googleapis.com/language/translate/v2?key=APIKey", [], ""); }
-
Is it possible to place a Google API key into a script. If so what function should I use?
-
Could someone please explain how this is possible on a full region?
I went to a full region and the have double prim capacity...
-
The region I manage does not have a telhub but does have a landing point. Some of the merchants on the land have requested direct teleport to thier shops and I have considered setting parcel landings but some of the shops are stacked on top of each other so wouldn't be practical. The owner would like to keep the landing but still allow direct teleporting from an Slurl link to the shops, club, etc.
-
Is it possible to request direct teleporting on a mainland full region? If so, where can I request and how much would it cost?
-
Avatar Rendering Complexity
in General Discussion Forum
Posted
I JellyDolled everyone except you baby:heart: