https://wiki.secondlife.com/w/api.php?action=feedcontributions&user=Falados+Kapuskas&feedformat=atomSecond Life Wiki - User contributions [en]2024-03-28T14:49:07ZUser contributionsMediaWiki 1.36.1https://wiki.secondlife.com/w/index.php?title=User:Falados_Kapuskas&diff=418903User:Falados Kapuskas2009-07-01T04:44:21Z<p>Falados Kapuskas: /* Profile */</p>
<hr />
<div>{{SL-hCard/2.0<br />
|color1=fff<br />
|color2=000<br />
|color3=000<br />
|color4=fff<br />
|color5=fff<br />
|name=Falados Kapuskas<br />
|image=FaladosKapuskas.jpg<br />
|rezday=Wed 19th Jul 2006<br />
|about=Little Cartoon Demon<br />
}}<br />
<br />
==Profile==<br />
<br />
Thanks for taking interest in me. I do some open source projects here and there. I'm a moderately experienced scripter and would like to share my knowledge and learn from the rest of Second Life. I'm hoping to meet people with the same objective. If you need to contact me, Send me an IM. If you find me in world, I'm probably idle. IM's are the best way to reach me.<br />
<br />
You can find my stuff on [http://www.xstreetsl.com/modules.php?name=Marketplace&MerchantID=100354 XStreet SL]<br />
<br />
==Open Source Projects==<br />
<br />
===Linked Prim Animator Lite===<br />
[http://www.slexchange.com/modules.php?name=Marketplace&file=item&ItemID=468371 Linked Prim Animator Lite] (LPAL) is set of open source scripts which enable you animate linked objects and attachments easily like a slide-show.<br />
<br />
Licence '''GPLv3'''<br />
<br />
===Open Babel Fish===<br />
[http://www.slexchange.com/modules.php?name=Marketplace&file=item&ItemID=491939 Open Babel Fish] is my effort to make the source code of babbler devices free and open so as to enhance communication between different parts of the world. The scripts run on Google Translate and a PHP script that must be placed on your own web host (I don't have enough bandwidth for all of SL) so please read the README carefully.<br />
<br />
Licence '''GPLv3'''<br />
<br />
===Particle Magic===<br />
[http://www.slexchange.com/modules.php?name=Marketplace&file=item&ItemID=638767 Particle Magic] is a HUD that enables you to worry less about compiling and recompiling scripts for particle effects and gives you more time to tweak the particle system so that it looks ''just right''. It is simple, easy to use, and powerful. <br />
<br />
Licence '''GPLv3'''<br />
<br />
===Open Loft===<br />
[http://www.xstreetsl.com/modules.php?name=Marketplace&file=item&ItemID=897530 Open Loft] is a set of scripts and objects that enable you to create sculpted prims in world. It utilizes a web server and php to create the actual images which you can then upload and apply to your primitives. The documentation is rather rough at this point, but there is a ReadMe included that will hopefully get your started and explain the main functions of the tool. It is also Open Source so feel free to modify and distribute it under the terms of the GPLv3. Be sure to send me your modifications, as they might be nice to add to the official tool.<br />
<br />
Licence '''GPLv3'''<br />
<br />
===Open Round Table===<br />
[http://www.xstreetsl.com/modules.php?name=Marketplace&file=item&ItemID=943377 Open Round Table] is a set of scripts that enables your furniture to rez a new chair whenever anyone sits in an open chair. Your furniture will always have one seat open for new people! It is also Open Source so feel free to modify and distribute it under the terms of the GPLv3. Be sure to send me your modifications, as they might be nice to add to the official tool.<br />
<br />
Licence '''GPLv3'''<br />
<br />
==Donations==<br />
<br />
If you'd like to support my open source work, you can either donate L$ directly, or you can purchase one of my for-profit items. Revenue from these I use to pay for uploads / bandwidth costs / advertising. Here are a few of the for-pay items I've listed on XStreet.<br />
<br />
===Rez Day Reminder Server===<br />
[http://www.xstreetsl.com/modules.php?name=Marketplace&file=item&ItemID=980104 Rez Day Reminder Server] (RDR) is a server item that will monitor the birthdays (rez-days) of your friends that you put into the note card. It will notify you when someone in your list has a birthday coming up or if today is their birthday. Additionally, you may have the server automatically congratulate them and give them a present from the server's inventory. The server is fully configurable via the Config Note Card<br />
<br />
* '''Price:''' 1500L<br />
* '''Prims:''' 1<br />
* '''Permissions:''' Copy<br />
<br />
===World Clock Board===<br />
[http://www.xstreetsl.com/modules.php?name=Marketplace&file=item&ItemID=1232543 World Clock Board] is a board that can be rezed in world to show the time around the world. There are 4 digital clocks each with their own sundial which can be used to estimate the time of day at a glance. The board is modifiable so it can be customized, but be sure to set the scripts to not running and reset/re-enable them once your modification are complete.<br />
<br />
* '''Price:''' 99L<br />
* '''Prims:''' 29<br />
* '''Permissions:''' Prims: Copy/Mod, Scripts: Copy Only<br />
<br />
==Public Sandbox Group==<br />
I'm an Officer of the Public Sandbox Group. If you see any trouble in the sandboxes, feel free to IM me in world when I'm online and I'll try to straighten everything out.<br />
<br />
* [secondlife://Mauve/76/68/33/ Mauve]<br />
* [secondlife://Columbia/142/146/34/ Columbia]<br />
* [secondlife://Hyboria/160/97/34/ Hyboria]<br />
* [secondlife://Kings%20Bishop/130/236/42 Kings Bishop]</div>Falados Kapuskashttps://wiki.secondlife.com/w/index.php?title=User:Falados_Kapuskas&diff=418883User:Falados Kapuskas2009-07-01T04:39:14Z<p>Falados Kapuskas: </p>
<hr />
<div>{{SL-hCard/2.0<br />
|color1=fff<br />
|color2=000<br />
|color3=000<br />
|color4=fff<br />
|color5=fff<br />
|name=Falados Kapuskas<br />
|image=FaladosKapuskas.jpg<br />
|rezday=Wed 19th Jul 2006<br />
|about=Little Cartoon Demon<br />
}}<br />
<br />
==Profile==<br />
<br />
Thanks for taking interest in me. I do some open source projects here and there. I'm a moderately experienced scripter and would like to share my knowledge and learn from the rest of Second Life. I'm hoping to meet people with the same objective. If you need to contact me, Send me an IM. If you find me in world, I'm probably idle. IM's are the best way to reach me.<br />
<br />
I teach classes at the PSG Academy in [secondlife://Kings%20Bishop/130/236/42 Kings Bishop] when I have time.<br />
<br />
You can find my stuff on [http://www.xstreetsl.com/modules.php?name=Marketplace&MerchantID=100354 XStreet SL]<br />
<br />
==Open Source Projects==<br />
<br />
===Linked Prim Animator Lite===<br />
[http://www.slexchange.com/modules.php?name=Marketplace&file=item&ItemID=468371 Linked Prim Animator Lite] (LPAL) is set of open source scripts which enable you animate linked objects and attachments easily like a slide-show.<br />
<br />
Licence '''GPLv3'''<br />
<br />
===Open Babel Fish===<br />
[http://www.slexchange.com/modules.php?name=Marketplace&file=item&ItemID=491939 Open Babel Fish] is my effort to make the source code of babbler devices free and open so as to enhance communication between different parts of the world. The scripts run on Google Translate and a PHP script that must be placed on your own web host (I don't have enough bandwidth for all of SL) so please read the README carefully.<br />
<br />
Licence '''GPLv3'''<br />
<br />
===Particle Magic===<br />
[http://www.slexchange.com/modules.php?name=Marketplace&file=item&ItemID=638767 Particle Magic] is a HUD that enables you to worry less about compiling and recompiling scripts for particle effects and gives you more time to tweak the particle system so that it looks ''just right''. It is simple, easy to use, and powerful. <br />
<br />
Licence '''GPLv3'''<br />
<br />
===Open Loft===<br />
[http://www.xstreetsl.com/modules.php?name=Marketplace&file=item&ItemID=897530 Open Loft] is a set of scripts and objects that enable you to create sculpted prims in world. It utilizes a web server and php to create the actual images which you can then upload and apply to your primitives. The documentation is rather rough at this point, but there is a ReadMe included that will hopefully get your started and explain the main functions of the tool. It is also Open Source so feel free to modify and distribute it under the terms of the GPLv3. Be sure to send me your modifications, as they might be nice to add to the official tool.<br />
<br />
Licence '''GPLv3'''<br />
<br />
===Open Round Table===<br />
[http://www.xstreetsl.com/modules.php?name=Marketplace&file=item&ItemID=943377 Open Round Table] is a set of scripts that enables your furniture to rez a new chair whenever anyone sits in an open chair. Your furniture will always have one seat open for new people! It is also Open Source so feel free to modify and distribute it under the terms of the GPLv3. Be sure to send me your modifications, as they might be nice to add to the official tool.<br />
<br />
Licence '''GPLv3'''<br />
<br />
==Donations==<br />
<br />
If you'd like to support my open source work, you can either donate L$ directly, or you can purchase one of my for-profit items. Revenue from these I use to pay for uploads / bandwidth costs / advertising. Here are a few of the for-pay items I've listed on XStreet.<br />
<br />
===Rez Day Reminder Server===<br />
[http://www.xstreetsl.com/modules.php?name=Marketplace&file=item&ItemID=980104 Rez Day Reminder Server] (RDR) is a server item that will monitor the birthdays (rez-days) of your friends that you put into the note card. It will notify you when someone in your list has a birthday coming up or if today is their birthday. Additionally, you may have the server automatically congratulate them and give them a present from the server's inventory. The server is fully configurable via the Config Note Card<br />
<br />
* '''Price:''' 1500L<br />
* '''Prims:''' 1<br />
* '''Permissions:''' Copy<br />
<br />
===World Clock Board===<br />
[http://www.xstreetsl.com/modules.php?name=Marketplace&file=item&ItemID=1232543 World Clock Board] is a board that can be rezed in world to show the time around the world. There are 4 digital clocks each with their own sundial which can be used to estimate the time of day at a glance. The board is modifiable so it can be customized, but be sure to set the scripts to not running and reset/re-enable them once your modification are complete.<br />
<br />
* '''Price:''' 99L<br />
* '''Prims:''' 29<br />
* '''Permissions:''' Prims: Copy/Mod, Scripts: Copy Only<br />
<br />
==Public Sandbox Group==<br />
I'm an Officer of the Public Sandbox Group. If you see any trouble in the sandboxes, feel free to IM me in world when I'm online and I'll try to straighten everything out.<br />
<br />
* [secondlife://Mauve/76/68/33/ Mauve]<br />
* [secondlife://Columbia/142/146/34/ Columbia]<br />
* [secondlife://Hyboria/160/97/34/ Hyboria]<br />
* [secondlife://Kings%20Bishop/130/236/42 Kings Bishop]</div>Falados Kapuskashttps://wiki.secondlife.com/w/index.php?title=LlGetParcelPrimOwners&diff=417943LlGetParcelPrimOwners2009-06-30T09:39:41Z<p>Falados Kapuskas: </p>
<hr />
<div>{{LSL_Function<br />
|func_id=324|func_sleep=2.0|func_energy=10.0<br />
|func=llGetParcelPrimOwners|return_type=list|p1_type=vector|p1_name=pos<br />
|func_desc<br />
|return_text=of all residents who own objects on the parcel at '''pos''' and with individual prim counts. <br/>The list is formatted as [ key agentKey1, integer agentCount1, key agentKey2, integer agentCount2, ... ], and sorted by agent [[UUID|key]] with a maximum of 100 strides.<br />
|func_footnote=Requires owner-like permissions for the parcel.<br />
|spec<br />
|caveats=<br />
* If the object owner is the same as the parcel owner (including if the object and parcel are both group owned) it will get all object owners.<br />
* If not and the parcel is group owned:<br />
** If the resident has the 'return group owned objects' power, return a list of just the group if there are any group owned objects on the parcel.<br />
** If the resident has the 'return group set objects' power return a list of all owners who have objects set to the group on the parcel<br />
** If the resident has the 'return non-group objects' power return a list of all owners of objects that don't fall into the above<br />
*If none of the above cases match, an empty list will be returned<br />
|constants<br />
|examples=<br />
<lsl><br />
// Script by Falados Kapuskas<br />
<br />
// The object has the same permisions to view prim parcel owners<br />
// as its owner (In About Land >> Objects >> Object Owners )<br />
<br />
// Example: If you can't return group object, you won't see group objects<br />
// If you can't return any objects, an empty list will be returned.<br />
// If the prim is deeded to the right group, it should always get a full list<br />
<br />
// Note: Only works when the when the owner is in the Sim<br />
// Deeded objects always work (group is always online?)<br />
<br />
// -- SETTINGS (Edit These!) -- //<br />
<br />
integer REFRESH_TIMER = 600; // Refresh Time (in seconds)<br />
vector PARCEL_POS = <128,128,0>; // A Region coordinate of a point in the parcel<br />
integer PAGE_SIZE = 8; // Number of owners to display per page on the prim<br />
integer DATA_TIMEOUT = 10; // Number of seconds to wait before giving up on dataserver events<br />
<br />
// -- END SETTINGS -- //<br />
<br />
list gQueryKeys;<br />
list gQueryIndex;<br />
list gNames;<br />
list gPrims;<br />
<br />
key gDataserver_Name;<br />
<br />
integer gPageNumber;<br />
integer gPageMax;<br />
<br />
//Updates the internal list of prim owners<br />
//Returns TRUE if there were prim owners<br />
//Returns FALSE if the prim owner list was empty<br />
integer UpdateOwnerList()<br />
{<br />
list owner_prim = llGetParcelPrimOwners(PARCEL_POS);<br />
//Empty List either means no prims in the parcel<br />
//Or we couldn't get the list. The latter is more likely<br />
if( owner_prim == [] ) <br />
{<br />
llSetText("[ERROR]\n Couldn't get Parcel Prim Owners",<1,0,0>,1.0);<br />
return FALSE;<br />
}<br />
integer i;<br />
integer n = llGetListLength(owner_prim) / 2;<br />
<br />
//Reset the lists<br />
gPrims = [];<br />
gNames = [];<br />
gQueryKeys = [];<br />
gQueryIndex = [];<br />
<br />
<br />
for( i = 0; i < n; ++i)<br />
{<br />
key owner = llList2Key(owner_prim,i*2);<br />
string name = llKey2Name(owner);<br />
if( name == "" ) { //Not in the sim<br />
<br />
//Add to the query list<br />
gNames += ["[Unknown]"];<br />
gQueryIndex += [llGetListLength(gNames) - 1];<br />
gQueryKeys += [owner];<br />
} else {<br />
gNames += [name];<br />
}<br />
gPrims += llList2Integer(owner_prim,i*2+1);<br />
}<br />
gPageNumber = 0;<br />
gPageMax = llCeil( (float)llGetListLength(gNames) / PAGE_SIZE );<br />
return TRUE;<br />
}<br />
<br />
<br />
// Shows the prim owners starting at index 9*page<br />
// Returns TRUE if there are more pages<br />
// Returns FALSE otherwise<br />
integer ShowPrimOwners(integer page)<br />
{<br />
integer len = llGetListLength(gNames);<br />
integer offset = len-page*PAGE_SIZE;<br />
if( offset < 0 )<br />
{<br />
return FALSE;<br />
}<br />
integer i;<br />
<br />
<br />
integer end = (integer)( llListStatistics(LIST_STAT_MIN,[len,(page+1)*PAGE_SIZE]) );<br />
string text;<br />
for( i = PAGE_SIZE*page; i < end; ++i)<br />
{<br />
text += llList2String(gNames,i) + " - " + (string)llList2Integer(gPrims,i) + "\n";<br />
}<br />
llSetText(text,<1,1,1>,1.0);<br />
return TRUE;<br />
} <br />
<br />
// Set-up phase <br />
default<br />
{<br />
state_entry()<br />
{<br />
llSetText("",<1,1,1>,1.0);<br />
if(UpdateOwnerList())<br />
{<br />
if( gQueryKeys == [] )<br />
{<br />
state display;<br />
} else {<br />
state lookup;<br />
}<br />
}<br />
}<br />
// If there is an error, touch to reset<br />
touch_start(integer i){llResetScript();}<br />
}<br />
<br />
// Display the list<br />
// Allow page flipping via touch<br />
state display <br />
{<br />
state_entry()<br />
{<br />
ShowPrimOwners(gPageNumber);<br />
llSetTimerEvent(REFRESH_TIMER);<br />
}<br />
touch_start(integer i)<br />
{<br />
if( !ShowPrimOwners(++gPageNumber) )<br />
{<br />
gPageNumber = 0;<br />
ShowPrimOwners(0);<br />
}<br />
}<br />
timer()<br />
{<br />
state default;<br />
}<br />
}<br />
<br />
// Look up all names for people that are not in the sim<br />
// Go to the display state when finished<br />
state lookup<br />
{<br />
state_entry()<br />
{<br />
if( gQueryKeys == [] ) state display;<br />
llSetTimerEvent(DATA_TIMEOUT);<br />
gDataserver_Name = llRequestAgentData( llList2Key(gQueryKeys,0) , DATA_NAME );<br />
}<br />
dataserver( key request_id, string data)<br />
{<br />
if( request_id == gDataserver_Name )<br />
{<br />
llSetText("Loading Names .. " + (string)llGetListLength(gQueryKeys),<1,.5,0>,1.0);<br />
if( llStringTrim(data,STRING_TRIM) != "" )<br />
{<br />
integer i = llList2Integer(gQueryIndex,0);<br />
gNames = llListReplaceList(gNames,[data],i,i);<br />
}<br />
gQueryKeys = llDeleteSubList(gQueryKeys,0,0);<br />
gQueryIndex = llDeleteSubList(gQueryIndex,0,0);<br />
<br />
if( gQueryKeys != [] )<br />
{<br />
llSetTimerEvent(DATA_TIMEOUT);<br />
gDataserver_Name = llRequestAgentData( llList2Key(gQueryKeys,0) , DATA_NAME );<br />
} else {<br />
state display;<br />
}<br />
}<br />
}<br />
timer()<br />
{<br />
//Skip it, move on<br />
gQueryKeys = llDeleteSubList(gQueryKeys,0,0);<br />
gQueryIndex = llDeleteSubList(gQueryIndex,0,0);<br />
gDataserver_Name = llRequestAgentData( llList2Key(gQueryKeys,0) , DATA_NAME ); <br />
}<br />
}</lsl><br />
|helpers<br />
|also_functions<br />
|also_events<br />
|also_tests<br />
|also_articles<br />
|notes<br />
|permission<br />
|cat1=Parcel<br />
|cat2=Owner<br />
|cat3<br />
|cat4<br />
}}</div>Falados Kapuskashttps://wiki.secondlife.com/w/index.php?title=LlGetParcelPrimOwners&diff=417933LlGetParcelPrimOwners2009-06-30T09:34:52Z<p>Falados Kapuskas: </p>
<hr />
<div>{{LSL_Function<br />
|func_id=324|func_sleep=2.0|func_energy=10.0<br />
|func=llGetParcelPrimOwners|return_type=list|p1_type=vector|p1_name=pos<br />
|func_desc<br />
|return_text=of all residents who own objects on the parcel at '''pos''' and with individual prim counts. <br/>The list is formatted as [ key agentKey1, integer agentCount1, key agentKey2, integer agentCount2, ... ], and sorted by agent [[UUID|key]] with a maximum of 100 strides.<br />
|func_footnote=Requires owner-like permissions for the parcel.<br />
|spec<br />
|caveats=<br />
* The object has the same permisions to view prim parcel owners as its owner (In About Land >> Objects >> Object Owners ).<br />
* Only works when the when the owner is in the sim<br />
** If the object is deeded, it will always work regardless of the previous owner's status<br />
|constants<br />
|examples=<br />
<lsl><br />
// Script by Falados Kapuskas<br />
<br />
// The object has the same permisions to view prim parcel owners<br />
// as its owner (In About Land >> Objects >> Object Owners )<br />
<br />
// Example: If you can't return group object, you won't see group objects<br />
// If you can't return any objects, an empty list will be returned.<br />
// If the prim is deeded to the right group, it should always get a full list<br />
<br />
// Note: Only works when the when the owner is in the Sim<br />
// Deeded objects always work (group is always online?)<br />
<br />
// -- SETTINGS (Edit These!) -- //<br />
<br />
integer REFRESH_TIMER = 600; // Refresh Time (in seconds)<br />
vector PARCEL_POS = <128,128,0>; // A Region coordinate of a point in the parcel<br />
integer PAGE_SIZE = 8; // Number of owners to display per page on the prim<br />
integer DATA_TIMEOUT = 10; // Number of seconds to wait before giving up on dataserver events<br />
<br />
// -- END SETTINGS -- //<br />
<br />
list gQueryKeys;<br />
list gQueryIndex;<br />
list gNames;<br />
list gPrims;<br />
<br />
key gDataserver_Name;<br />
<br />
integer gPageNumber;<br />
integer gPageMax;<br />
<br />
//Updates the internal list of prim owners<br />
//Returns TRUE if there were prim owners<br />
//Returns FALSE if the prim owner list was empty<br />
integer UpdateOwnerList()<br />
{<br />
list owner_prim = llGetParcelPrimOwners(PARCEL_POS);<br />
//Empty List either means no prims in the parcel<br />
//Or we couldn't get the list. The latter is more likely<br />
if( owner_prim == [] ) <br />
{<br />
llSetText("[ERROR]\n Couldn't get Parcel Prim Owners",<1,0,0>,1.0);<br />
return FALSE;<br />
}<br />
integer i;<br />
integer n = llGetListLength(owner_prim) / 2;<br />
<br />
//Reset the lists<br />
gPrims = [];<br />
gNames = [];<br />
gQueryKeys = [];<br />
gQueryIndex = [];<br />
<br />
<br />
for( i = 0; i < n; ++i)<br />
{<br />
key owner = llList2Key(owner_prim,i*2);<br />
string name = llKey2Name(owner);<br />
if( name == "" ) { //Not in the sim<br />
<br />
//Add to the query list<br />
gNames += ["[Unknown]"];<br />
gQueryIndex += [llGetListLength(gNames) - 1];<br />
gQueryKeys += [owner];<br />
} else {<br />
gNames += [name];<br />
}<br />
gPrims += llList2Integer(owner_prim,i*2+1);<br />
}<br />
gPageNumber = 0;<br />
gPageMax = llCeil( (float)llGetListLength(gNames) / PAGE_SIZE );<br />
return TRUE;<br />
}<br />
<br />
<br />
// Shows the prim owners starting at index 9*page<br />
// Returns TRUE if there are more pages<br />
// Returns FALSE otherwise<br />
integer ShowPrimOwners(integer page)<br />
{<br />
integer len = llGetListLength(gNames);<br />
integer offset = len-page*PAGE_SIZE;<br />
if( offset < 0 )<br />
{<br />
return FALSE;<br />
}<br />
integer i;<br />
<br />
<br />
integer end = (integer)( llListStatistics(LIST_STAT_MIN,[len,(page+1)*PAGE_SIZE]) );<br />
string text;<br />
for( i = PAGE_SIZE*page; i < end; ++i)<br />
{<br />
text += llList2String(gNames,i) + " - " + (string)llList2Integer(gPrims,i) + "\n";<br />
}<br />
llSetText(text,<1,1,1>,1.0);<br />
return TRUE;<br />
} <br />
<br />
// Set-up phase <br />
default<br />
{<br />
state_entry()<br />
{<br />
llSetText("",<1,1,1>,1.0);<br />
if(UpdateOwnerList())<br />
{<br />
if( gQueryKeys == [] )<br />
{<br />
state display;<br />
} else {<br />
state lookup;<br />
}<br />
}<br />
}<br />
// If there is an error, touch to reset<br />
touch_start(integer i){llResetScript();}<br />
}<br />
<br />
// Display the list<br />
// Allow page flipping via touch<br />
state display <br />
{<br />
state_entry()<br />
{<br />
ShowPrimOwners(gPageNumber);<br />
llSetTimerEvent(REFRESH_TIMER);<br />
}<br />
touch_start(integer i)<br />
{<br />
if( !ShowPrimOwners(++gPageNumber) )<br />
{<br />
gPageNumber = 0;<br />
ShowPrimOwners(0);<br />
}<br />
}<br />
timer()<br />
{<br />
state default;<br />
}<br />
}<br />
<br />
// Look up all names for people that are not in the sim<br />
// Go to the display state when finished<br />
state lookup<br />
{<br />
state_entry()<br />
{<br />
if( gQueryKeys == [] ) state display;<br />
llSetTimerEvent(DATA_TIMEOUT);<br />
gDataserver_Name = llRequestAgentData( llList2Key(gQueryKeys,0) , DATA_NAME );<br />
}<br />
dataserver( key request_id, string data)<br />
{<br />
if( request_id == gDataserver_Name )<br />
{<br />
llSetText("Loading Names .. " + (string)llGetListLength(gQueryKeys),<1,.5,0>,1.0);<br />
if( llStringTrim(data,STRING_TRIM) != "" )<br />
{<br />
integer i = llList2Integer(gQueryIndex,0);<br />
gNames = llListReplaceList(gNames,[data],i,i);<br />
}<br />
gQueryKeys = llDeleteSubList(gQueryKeys,0,0);<br />
gQueryIndex = llDeleteSubList(gQueryIndex,0,0);<br />
<br />
if( gQueryKeys != [] )<br />
{<br />
llSetTimerEvent(DATA_TIMEOUT);<br />
gDataserver_Name = llRequestAgentData( llList2Key(gQueryKeys,0) , DATA_NAME );<br />
} else {<br />
state display;<br />
}<br />
}<br />
}<br />
timer()<br />
{<br />
//Skip it, move on<br />
gQueryKeys = llDeleteSubList(gQueryKeys,0,0);<br />
gQueryIndex = llDeleteSubList(gQueryIndex,0,0);<br />
gDataserver_Name = llRequestAgentData( llList2Key(gQueryKeys,0) , DATA_NAME ); <br />
}<br />
}</lsl><br />
|helpers<br />
|also_functions<br />
|also_events<br />
|also_tests<br />
|also_articles<br />
|notes<br />
|permission<br />
|cat1=Parcel<br />
|cat2=Owner<br />
|cat3<br />
|cat4<br />
}}</div>Falados Kapuskashttps://wiki.secondlife.com/w/index.php?title=LlGetParcelPrimOwners&diff=417923LlGetParcelPrimOwners2009-06-30T09:33:46Z<p>Falados Kapuskas: </p>
<hr />
<div>{{LSL_Function<br />
|func_id=324|func_sleep=2.0|func_energy=10.0<br />
|func=llGetParcelPrimOwners|return_type=list|p1_type=vector|p1_name=pos<br />
|func_desc<br />
|return_text=of all residents who own objects on the parcel at '''pos''' and with individual prim counts. <br/>The list is formatted as [ key agentKey1, integer agentCount1, key agentKey2, integer agentCount2, ... ], and sorted by agent [[UUID|key]] with a maximum of 100 strides.<br />
|func_footnote=Requires owner-like permissions for the parcel.<br />
|spec<br />
|caveats=<br />
* The object has the same permisions to view prim parcel owners as its owner. <br />
* Only works when the when the owner is in the sim<br />
** If the object is deeded, it will always work regardless of the previous owner's status<br />
|constants<br />
|examples=<br />
<lsl><br />
// Script by Falados Kapuskas<br />
<br />
// The object has the same permisions to view prim parcel owners<br />
// as its owner (In About Land >> Objects >> Object Owners )<br />
<br />
// Example: If you can't return group object, you won't see group objects<br />
// If you can't return any objects, an empty list will be returned.<br />
// If the prim is deeded to the right group, it should always get a full list<br />
<br />
// Note: Only works when the when the owner is in the Sim<br />
// Deeded objects always work (group is always online?)<br />
<br />
// -- SETTINGS (Edit These!) -- //<br />
<br />
integer REFRESH_TIMER = 600; // Refresh Time (in seconds)<br />
vector PARCEL_POS = <128,128,0>; // A Region coordinate of a point in the parcel<br />
integer PAGE_SIZE = 8; // Number of owners to display per page on the prim<br />
integer DATA_TIMEOUT = 10; // Number of seconds to wait before giving up on dataserver events<br />
<br />
// -- END SETTINGS -- //<br />
<br />
list gQueryKeys;<br />
list gQueryIndex;<br />
list gNames;<br />
list gPrims;<br />
<br />
key gDataserver_Name;<br />
<br />
integer gPageNumber;<br />
integer gPageMax;<br />
<br />
//Updates the internal list of prim owners<br />
//Returns TRUE if there were prim owners<br />
//Returns FALSE if the prim owner list was empty<br />
integer UpdateOwnerList()<br />
{<br />
list owner_prim = llGetParcelPrimOwners(PARCEL_POS);<br />
//Empty List either means no prims in the parcel<br />
//Or we couldn't get the list. The latter is more likely<br />
if( owner_prim == [] ) <br />
{<br />
llSetText("[ERROR]\n Couldn't get Parcel Prim Owners",<1,0,0>,1.0);<br />
return FALSE;<br />
}<br />
integer i;<br />
integer n = llGetListLength(owner_prim) / 2;<br />
<br />
//Reset the lists<br />
gPrims = [];<br />
gNames = [];<br />
gQueryKeys = [];<br />
gQueryIndex = [];<br />
<br />
<br />
for( i = 0; i < n; ++i)<br />
{<br />
key owner = llList2Key(owner_prim,i*2);<br />
string name = llKey2Name(owner);<br />
if( name == "" ) { //Not in the sim<br />
<br />
//Add to the query list<br />
gNames += ["[Unknown]"];<br />
gQueryIndex += [llGetListLength(gNames) - 1];<br />
gQueryKeys += [owner];<br />
} else {<br />
gNames += [name];<br />
}<br />
gPrims += llList2Integer(owner_prim,i*2+1);<br />
}<br />
gPageNumber = 0;<br />
gPageMax = llCeil( (float)llGetListLength(gNames) / PAGE_SIZE );<br />
return TRUE;<br />
}<br />
<br />
<br />
// Shows the prim owners starting at index 9*page<br />
// Returns TRUE if there are more pages<br />
// Returns FALSE otherwise<br />
integer ShowPrimOwners(integer page)<br />
{<br />
integer len = llGetListLength(gNames);<br />
integer offset = len-page*PAGE_SIZE;<br />
if( offset < 0 )<br />
{<br />
return FALSE;<br />
}<br />
integer i;<br />
<br />
<br />
integer end = (integer)( llListStatistics(LIST_STAT_MIN,[len,(page+1)*PAGE_SIZE]) );<br />
string text;<br />
for( i = PAGE_SIZE*page; i < end; ++i)<br />
{<br />
text += llList2String(gNames,i) + " - " + (string)llList2Integer(gPrims,i) + "\n";<br />
}<br />
llSetText(text,<1,1,1>,1.0);<br />
return TRUE;<br />
} <br />
<br />
// Set-up phase <br />
default<br />
{<br />
state_entry()<br />
{<br />
llSetText("",<1,1,1>,1.0);<br />
if(UpdateOwnerList())<br />
{<br />
if( gQueryKeys == [] )<br />
{<br />
state display;<br />
} else {<br />
state lookup;<br />
}<br />
}<br />
}<br />
// If there is an error, touch to reset<br />
touch_start(integer i){llResetScript();}<br />
}<br />
<br />
// Display the list<br />
// Allow page flipping via touch<br />
state display <br />
{<br />
state_entry()<br />
{<br />
ShowPrimOwners(gPageNumber);<br />
llSetTimerEvent(REFRESH_TIMER);<br />
}<br />
touch_start(integer i)<br />
{<br />
if( !ShowPrimOwners(++gPageNumber) )<br />
{<br />
gPageNumber = 0;<br />
ShowPrimOwners(0);<br />
}<br />
}<br />
timer()<br />
{<br />
state default;<br />
}<br />
}<br />
<br />
// Look up all names for people that are not in the sim<br />
// Go to the display state when finished<br />
state lookup<br />
{<br />
state_entry()<br />
{<br />
if( gQueryKeys == [] ) state display;<br />
llSetTimerEvent(DATA_TIMEOUT);<br />
gDataserver_Name = llRequestAgentData( llList2Key(gQueryKeys,0) , DATA_NAME );<br />
}<br />
dataserver( key request_id, string data)<br />
{<br />
if( request_id == gDataserver_Name )<br />
{<br />
llSetText("Loading Names .. " + (string)llGetListLength(gQueryKeys),<1,.5,0>,1.0);<br />
if( llStringTrim(data,STRING_TRIM) != "" )<br />
{<br />
integer i = llList2Integer(gQueryIndex,0);<br />
gNames = llListReplaceList(gNames,[data],i,i);<br />
}<br />
gQueryKeys = llDeleteSubList(gQueryKeys,0,0);<br />
gQueryIndex = llDeleteSubList(gQueryIndex,0,0);<br />
<br />
if( gQueryKeys != [] )<br />
{<br />
llSetTimerEvent(DATA_TIMEOUT);<br />
gDataserver_Name = llRequestAgentData( llList2Key(gQueryKeys,0) , DATA_NAME );<br />
} else {<br />
state display;<br />
}<br />
}<br />
}<br />
timer()<br />
{<br />
//Skip it, move on<br />
gQueryKeys = llDeleteSubList(gQueryKeys,0,0);<br />
gQueryIndex = llDeleteSubList(gQueryIndex,0,0);<br />
gDataserver_Name = llRequestAgentData( llList2Key(gQueryKeys,0) , DATA_NAME ); <br />
}<br />
}</lsl><br />
|helpers<br />
|also_functions<br />
|also_events<br />
|also_tests<br />
|also_articles<br />
|notes<br />
|permission<br />
|cat1=Parcel<br />
|cat2=Owner<br />
|cat3<br />
|cat4<br />
}}</div>Falados Kapuskashttps://wiki.secondlife.com/w/index.php?title=File:FaladosKapuskas.jpg&diff=245182File:FaladosKapuskas.jpg2009-02-18T04:58:22Z<p>Falados Kapuskas: uploaded a new version of "Image:FaladosKapuskas.jpg"</p>
<hr />
<div>Demon-Cartoon Avatar</div>Falados Kapuskashttps://wiki.secondlife.com/w/index.php?title=User:Falados_Kapuskas&diff=245143User:Falados Kapuskas2009-02-18T04:47:15Z<p>Falados Kapuskas: </p>
<hr />
<div>{{SL-hCard/2.0<br />
|color1=fff<br />
|color2=000<br />
|color3=000<br />
|color4=fff<br />
|color5=fff<br />
|name=Falados Kapuskas<br />
|image=FaladosKapuskas.jpg<br />
|rezday=Wed 19th Jul 2006<br />
|about=Little Cartoon Demon<br />
}}<br />
<br />
==Profile==<br />
<br />
Thanks for taking interest in me. I do some open source projects here and there. I'm a moderately experienced scripter and would like to share my knowledge and learn from the rest of Second Life. I'm hoping to meet people with the same objective. If you need to contact me, Send me an IM. If you find me in world, I'm probably idle. IM's are the best way to reach me.<br />
<br />
I teach classes at the PSG Academy in [secondlife://Kings%20Bishop/130/236/42 Kings Bishop] when I have time.<br />
<br />
You can find my stuff on [http://www.xstreetsl.com/modules.php?name=Marketplace&MerchantID=100354 XStreet SL]<br />
<br />
==Open Source Projects==<br />
<br />
===Linked Prim Animator Lite===<br />
[http://www.slexchange.com/modules.php?name=Marketplace&file=item&ItemID=468371 Linked Prim Animator Lite] (LPAL) is set of open source scripts which enable you animate linked objects and attachments easily like a slide-show.<br />
<br />
Licence '''GPLv3'''<br />
<br />
===Open Babel Fish===<br />
[http://www.slexchange.com/modules.php?name=Marketplace&file=item&ItemID=491939 Open Babel Fish] is my effort to make the source code of babbler devices free and open so as to enhance communication between different parts of the world. The scripts run on Google Translate and a PHP script that must be placed on your own web host (I don't have enough bandwidth for all of SL) so please read the README carefully.<br />
<br />
Licence '''GPLv3'''<br />
<br />
===Particle Magic===<br />
[http://www.slexchange.com/modules.php?name=Marketplace&file=item&ItemID=638767 Particle Magic] is a HUD that enables you to worry less about compiling and recompiling scripts for particle effects and gives you more time to tweak the particle system so that it looks ''just right''. It is simple, easy to use, and powerful. <br />
<br />
Licence '''GPLv3'''<br />
<br />
===Open TV===<br />
[http://www.xstreetsl.com/modules.php?name=Marketplace&file=item&ItemID=1086753 OpenTV] is a TV that enables you to play videos from YouTube on parcels that you own. It is simple, easy to use, and powerful. <br />
<br />
Licence '''GPLv3'''<br />
<br />
===Open Loft===<br />
[http://www.xstreetsl.com/modules.php?name=Marketplace&file=item&ItemID=897530 Open Loft] is a set of scripts and objects that enable you to create sculpted prims in world. It utilizes a web server and php to create the actual images which you can then upload and apply to your primitives. The documentation is rather rough at this point, but there is a ReadMe included that will hopefully get your started and explain the main functions of the tool. It is also Open Source so feel free to modify and distribute it under the terms of the GPLv3. Be sure to send me your modifications, as they might be nice to add to the official tool.<br />
<br />
Licence '''GPLv3'''<br />
<br />
===Open Round Table===<br />
[http://www.xstreetsl.com/modules.php?name=Marketplace&file=item&ItemID=943377 Open Round Table] is a set of scripts that enables your furniture to rez a new chair whenever anyone sits in an open chair. Your furniture will always have one seat open for new people! It is also Open Source so feel free to modify and distribute it under the terms of the GPLv3. Be sure to send me your modifications, as they might be nice to add to the official tool.<br />
<br />
Licence '''GPLv3'''<br />
<br />
==Donations==<br />
<br />
If you'd like to support my open source work, you can either donate L$ directly, or you can purchase one of my for-profit items. Revenue from these I use to pay for uploads / bandwidth costs / advertising. Here are a few of the for-pay items I've listed on XStreet.<br />
<br />
===Rez Day Reminder Server===<br />
[http://www.xstreetsl.com/modules.php?name=Marketplace&file=item&ItemID=980104 Rez Day Reminder Server] (RDR) is a server item that will monitor the birthdays (rez-days) of your friends that you put into the note card. It will notify you when someone in your list has a birthday coming up or if today is their birthday. Additionally, you may have the server automatically congratulate them and give them a present from the server's inventory. The server is fully configurable via the Config Note Card<br />
<br />
* '''Price:''' 1500L<br />
* '''Prims:''' 1<br />
* '''Permissions:''' Copy<br />
<br />
===World Clock Board===<br />
[http://www.xstreetsl.com/modules.php?name=Marketplace&file=item&ItemID=1232543 World Clock Board] is a board that can be rezed in world to show the time around the world. There are 4 digital clocks each with their own sundial which can be used to estimate the time of day at a glance. The board is modifiable so it can be customized, but be sure to set the scripts to not running and reset/re-enable them once your modification are complete.<br />
<br />
* '''Price:''' 99L<br />
* '''Prims:''' 29<br />
* '''Permissions:''' Prims: Copy/Mod, Scripts: Copy Only<br />
<br />
==Public Sandbox Group==<br />
I'm an Officer of the Public Sandbox Group. If you see any trouble in the sandboxes, feel free to IM me in world when I'm online and I'll try to straighten everything out.<br />
<br />
* [secondlife://Mauve/76/68/33/ Mauve]<br />
* [secondlife://Columbia/142/146/34/ Columbia]<br />
* [secondlife://Hyboria/160/97/34/ Hyboria]<br />
* [secondlife://Kings%20Bishop/130/236/42 Kings Bishop]</div>Falados Kapuskashttps://wiki.secondlife.com/w/index.php?title=User:Falados_Kapuskas&diff=245133User:Falados Kapuskas2009-02-18T04:44:29Z<p>Falados Kapuskas: </p>
<hr />
<div>{{SL-hCard/2.0<br />
|color1=fff<br />
|color2=000<br />
|color3=000<br />
|color4=fff<br />
|color5=fff<br />
|name=Falados Kapuskas<br />
|image=FaladosKapuskas.jpg<br />
|rezday=Wed 19th Jul 2006<br />
|about=Little Cartoon Demon<br />
}}<br />
<br />
==Profile==<br />
<br />
Thanks for taking interest in me. I do some open source projects here and there. I'm a moderately experienced scripter and would like to share my knowledge and learn from the rest of Second Life. I'm hoping to meet people with the same objective. If you need to contact me, Send me an IM. If you find me in world, I'm probably idle. IM's are the best way to reach me.<br />
<br />
I teach classes at the PSG Academy in [secondlife://Kings%20Bishop/130/236/42 Kings Bishop] when I have time.<br />
<br />
You can find my stuff on [http://www.xstreetsl.com/modules.php?name=Marketplace&MerchantID=100354 XStreet SL]<br />
<br />
==Open Source Projects==<br />
<br />
===Linked Prim Animator Lite===<br />
[http://www.slexchange.com/modules.php?name=Marketplace&file=item&ItemID=468371 Linked Prim Animator Lite] (LPAL) is set of open source scripts which enable you animate linked objects and attachments easily like a slide-show.<br />
<br />
Licence '''GPLv3'''<br />
<br />
===Open Babel Fish===<br />
[http://www.slexchange.com/modules.php?name=Marketplace&file=item&ItemID=491939 Open Babel Fish] is my effort to make the source code of babbler devices free and open so as to enhance communication between different parts of the world. The scripts run on Google Translate and a PHP script that must be placed on your own web host (I don't have enough bandwidth for all of SL) so please read the README carefully.<br />
<br />
Licence '''GPLv3'''<br />
<br />
===Particle Magic===<br />
[http://www.slexchange.com/modules.php?name=Marketplace&file=item&ItemID=638767 Particle Magic] is a HUD that enables you to worry less about compiling and recompiling scripts for particle effects and gives you more time to tweak the particle system so that it looks ''just right''. It is simple, easy to use, and powerful. <br />
<br />
Licence '''GPLv3'''<br />
<br />
===Open TV===<br />
[http://www.xstreetsl.com/modules.php?name=Marketplace&file=item&ItemID=1086753 OpenTV] is a TV that enables you to play videos from YouTube on parcels that you own. It is simple, easy to use, and powerful. <br />
<br />
Licence '''GPLv3'''<br />
<br />
===Open Loft===<br />
[http://www.xstreetsl.com/modules.php?name=Marketplace&file=item&ItemID=897530 Open Loft] is a set of scripts and objects that enable you to create sculpted prims in world. It utilizes a web server and php to create the actual images which you can then upload and apply to your primitives. The documentation is rather rough at this point, but there is a ReadMe included that will hopefully get your started and explain the main functions of the tool. It is also Open Source so feel free to modify and distribute it under the terms of the GPLv3. Be sure to send me your modifications, as they might be nice to add to the official tool.<br />
<br />
Licence '''GPLv3'''<br />
<br />
===Open Round Table===<br />
[http://www.xstreetsl.com/modules.php?name=Marketplace&file=item&ItemID=943377 Open Round Table] is a set of scripts that enables your furniture to rez a new chair whenever anyone sits in an open chair. Your furniture will always have one seat open for new people! It is also Open Source so feel free to modify and distribute it under the terms of the GPLv3. Be sure to send me your modifications, as they might be nice to add to the official tool.<br />
<br />
Licence '''GPLv3'''<br />
<br />
==Donations==<br />
<br />
If you'd like to support my open source work, you can either donate L$ directly, or you can purchase one of my for-profit items. Revenue from these I use to pay for uploads / bandwidth costs / advertising. Here are a few of the for-pay items I've listed on XStreet.<br />
<br />
===Rez Day Reminder Server===<br />
[http://www.xstreetsl.com/modules.php?name=Marketplace&file=item&ItemID=980104 Rez Day Reminder Server] (RDR) is a server item that will monitor the birthdays (rez-days) of your friends that you put into the note card. It will notify you when someone in your list has a birthday coming up or if today is their birthday. Additionally, you may have the server automatically congratulate them and give them a present from the server's inventory. The server is fully configurable via the Config Note Card<br />
<br />
'''Price:''' 1500L<br />
'''Prims:''' 1<br />
'''Permissions:''' Copy<br />
<br />
===World Clock Board===<br />
[http://www.xstreetsl.com/modules.php?name=Marketplace&file=item&ItemID=1232543 World Clock Board] is a board that can be rezed in world to show the time around the world. There are 4 digital clocks each with their own sundial which can be used to estimate the time of day at a glance. The board is modifiable so it can be customized, but be sure to set the scripts to not running and reset/re-enable them once your modification are complete.<br />
<br />
'''Price:''' 99L<br />
'''Prims:''' 29<br />
'''Permissions:''' Prims: Copy/Mod, Scripts: Copy Only<br />
<br />
==Public Sandbox Group==<br />
I'm an Officer of the Public Sandbox Group. If you see any trouble in the sandboxes, feel free to IM me in world when I'm online and I'll try to straighten everything out.<br />
<br />
* [secondlife://Mauve/76/68/33/ Mauve]<br />
* [secondlife://Columbia/142/146/34/ Columbia]<br />
* [secondlife://Hyboria/160/97/34/ Hyboria]<br />
* [secondlife://Kings%20Bishop/130/236/42 Kings Bishop]</div>Falados Kapuskashttps://wiki.secondlife.com/w/index.php?title=User:Falados_Kapuskas&diff=245123User:Falados Kapuskas2009-02-18T04:35:09Z<p>Falados Kapuskas: /* Open Source Projects */</p>
<hr />
<div>{{SL-hCard/2.0<br />
|color1=fff<br />
|color2=000<br />
|color3=000<br />
|color4=fff<br />
|color5=fff<br />
|name=Falados Kapuskas<br />
|image=FaladosKapuskas.jpg<br />
|rezday=Wed 19th Jul 2006<br />
|about=Little Cartoon Demon<br />
}}<br />
<br />
==Profile==<br />
<br />
Thanks for taking interest in me. I do some open source projects here and there. I'm a moderately experienced scripter and would like to share my knowledge and learn from the rest of Second Life. I'm hoping to meet people with the same objective.<br />
<br />
I teach classes at the PSG Academy in [secondlife://Kings%20Bishop/130/236/42 Kings Bishop] when I have time.<br />
<br />
You can find my stuff on [http://www.xstreetsl.com/modules.php?name=Marketplace&MerchantID=100354 XStreet SL]<br />
<br />
==Open Source Projects==<br />
<br />
===Linked Prim Animator Lite===<br />
[http://www.slexchange.com/modules.php?name=Marketplace&file=item&ItemID=468371 Linked Prim Animator Lite] (LPAL) is set of open source scripts which enable you animate linked objects and attachments easily like a slide-show.<br />
<br />
Licence '''GPLv3'''<br />
<br />
===Open Babel Fish===<br />
[http://www.slexchange.com/modules.php?name=Marketplace&file=item&ItemID=491939 Open Babel Fish] is my effort to make the source code of babbler devices free and open so as to enhance communication between different parts of the world. The scripts run on Google Translate and a PHP script that must be placed on your own web host (I don't have enough bandwidth for all of SL) so please read the README carefully.<br />
<br />
Licence '''GPLv3'''<br />
<br />
===Particle Magic===<br />
[http://www.slexchange.com/modules.php?name=Marketplace&file=item&ItemID=638767 Particle Magic] is a HUD that enables you to worry less about compiling and recompiling scripts for particle effects and gives you more time to tweak the particle system so that it looks ''just right''. It is simple, easy to use, and powerful. <br />
<br />
Licence '''GPLv3'''<br />
<br />
===Open TV===<br />
[http://www.xstreetsl.com/modules.php?name=Marketplace&file=item&ItemID=1086753 OpenTV] is a TV that enables you to play videos from YouTube on parcels that you own. It is simple, easy to use, and powerful. <br />
<br />
Licence '''GPLv3'''<br />
<br />
===Open Loft===<br />
[http://www.xstreetsl.com/modules.php?name=Marketplace&file=item&ItemID=897530 Open Loft] is a set of scripts and objects that enable you to create sculpted prims in world. It utilizes a web server and php to create the actual images which you can then upload and apply to your primitives. The documentation is rather rough at this point, but there is a ReadMe included that will hopefully get your started and explain the main functions of the tool. It is also Open Source so feel free to modify and distribute it under the terms of the GPLv3. Be sure to send me your modifications, as they might be nice to add to the official tool.<br />
<br />
Licence '''GPLv3'''<br />
<br />
===Open Round Table===<br />
[http://www.xstreetsl.com/modules.php?name=Marketplace&file=item&ItemID=943377 Open Round Table] is a set of scripts that enables your furniture to rez a new chair whenever anyone sits in an open chair. Your furniture will always have one seat open for new people! It is also Open Source so feel free to modify and distribute it under the terms of the GPLv3. Be sure to send me your modifications, as they might be nice to add to the official tool.<br />
<br />
Licence '''GPLv3'''<br />
<br />
==Public Sandbox Group==<br />
I'm a Resident of the Public Sandbox Group. If you see any trouble in the sandboxes, feel free to IM me in world when I'm online and I'll try to straighten everything out.<br />
<br />
* [secondlife://Mauve/76/68/33/ Mauve]<br />
* [secondlife://Columbia/142/146/34/ Columbia]<br />
* [secondlife://Hyboria/160/97/34/ Hyboria]<br />
* [secondlife://Kings%20Bishop/130/236/42 Kings Bishop]</div>Falados Kapuskashttps://wiki.secondlife.com/w/index.php?title=User:Falados_Kapuskas&diff=245113User:Falados Kapuskas2009-02-18T04:30:27Z<p>Falados Kapuskas: /* Profile */</p>
<hr />
<div>{{SL-hCard/2.0<br />
|color1=fff<br />
|color2=000<br />
|color3=000<br />
|color4=fff<br />
|color5=fff<br />
|name=Falados Kapuskas<br />
|image=FaladosKapuskas.jpg<br />
|rezday=Wed 19th Jul 2006<br />
|about=Little Cartoon Demon<br />
}}<br />
<br />
==Profile==<br />
<br />
Thanks for taking interest in me. I do some open source projects here and there. I'm a moderately experienced scripter and would like to share my knowledge and learn from the rest of Second Life. I'm hoping to meet people with the same objective.<br />
<br />
I teach classes at the PSG Academy in [secondlife://Kings%20Bishop/130/236/42 Kings Bishop] when I have time.<br />
<br />
You can find my stuff on [http://www.xstreetsl.com/modules.php?name=Marketplace&MerchantID=100354 XStreet SL]<br />
<br />
==Open Source Projects==<br />
<br />
===Linked Prim Animator Lite===<br />
[http://www.slexchange.com/modules.php?name=Marketplace&file=item&ItemID=468371 Linked Prim Animator Lite] (LPAL) is set of open source scripts which enable you animate linked objects and attachments easily like a slide-show. Licensed under the GPLv3.<br />
<br />
===Open Babel Fish===<br />
[http://www.slexchange.com/modules.php?name=Marketplace&file=item&ItemID=491939 Open Babel Fish] is my effort to make the source code of babbler devices free and open so as to enhance communication between different parts of the world. The scripts run on Google Translate and a PHP script that must be placed on your own web host (I don't have enough bandwidth for all of SL) so please read the README carefully. Licensed under the GPLv3.<br />
<br />
===Particle Magic===<br />
[http://www.slexchange.com/modules.php?name=Marketplace&file=item&ItemID=638767 Particle Magic] is a HUD that enables you to worry less about compiling and recompiling scripts for particle effects and gives you more time to tweak the particle system so that it looks ''just right''. It is simple, easy to use, and powerful. Licensed under the GPLv3.<br />
<br />
==Public Sandbox Group==<br />
I'm a Resident of the Public Sandbox Group. If you see any trouble in the sandboxes, feel free to IM me in world when I'm online and I'll try to straighten everything out.<br />
<br />
* [secondlife://Mauve/76/68/33/ Mauve]<br />
* [secondlife://Columbia/142/146/34/ Columbia]<br />
* [secondlife://Hyboria/160/97/34/ Hyboria]<br />
* [secondlife://Kings%20Bishop/130/236/42 Kings Bishop]</div>Falados Kapuskashttps://wiki.secondlife.com/w/index.php?title=User:Falados_Kapuskas&diff=69514User:Falados Kapuskas2008-05-31T03:37:40Z<p>Falados Kapuskas: Recolored the profile</p>
<hr />
<div>{{SL-hCard/2.0<br />
|color1=fff<br />
|color2=000<br />
|color3=000<br />
|color4=fff<br />
|color5=fff<br />
|name=Falados Kapuskas<br />
|image=FaladosKapuskas.jpg<br />
|rezday=Wed 19th Jul 2006<br />
|about=Little Cartoon Demon<br />
}}<br />
<br />
==Profile==<br />
<br />
Thanks for taking interest in me. I do some open source projects here and there. I'm a moderately experienced scripter and would like to share my knowledge and learn from the rest of Second Life. I'm hoping to meet people with the same objective.<br />
<br />
I teach classes at the PSG Academy in [secondlife://Kings%20Bishop/130/236/42 Kings Bishop] when I have time.<br />
<br />
You can find my stuff on [http://www.slexchange.com/modules.php?name=Marketplace&MerchantID=100354 SL Exchange]<br />
<br />
==Open Source Projects==<br />
<br />
===Linked Prim Animator Lite===<br />
[http://www.slexchange.com/modules.php?name=Marketplace&file=item&ItemID=468371 Linked Prim Animator Lite] (LPAL) is set of open source scripts which enable you animate linked objects and attachments easily like a slide-show. Licensed under the GPLv3.<br />
<br />
===Open Babel Fish===<br />
[http://www.slexchange.com/modules.php?name=Marketplace&file=item&ItemID=491939 Open Babel Fish] is my effort to make the source code of babbler devices free and open so as to enhance communication between different parts of the world. The scripts run on Google Translate and a PHP script that must be placed on your own web host (I don't have enough bandwidth for all of SL) so please read the README carefully. Licensed under the GPLv3.<br />
<br />
===Particle Magic===<br />
[http://www.slexchange.com/modules.php?name=Marketplace&file=item&ItemID=638767 Particle Magic] is a HUD that enables you to worry less about compiling and recompiling scripts for particle effects and gives you more time to tweak the particle system so that it looks ''just right''. It is simple, easy to use, and powerful. Licensed under the GPLv3.<br />
<br />
==Public Sandbox Group==<br />
I'm a Resident of the Public Sandbox Group. If you see any trouble in the sandboxes, feel free to IM me in world when I'm online and I'll try to straighten everything out.<br />
<br />
* [secondlife://Mauve/76/68/33/ Mauve]<br />
* [secondlife://Columbia/142/146/34/ Columbia]<br />
* [secondlife://Hyboria/160/97/34/ Hyboria]<br />
* [secondlife://Kings%20Bishop/130/236/42 Kings Bishop]</div>Falados Kapuskashttps://wiki.secondlife.com/w/index.php?title=User:Falados_Kapuskas&diff=69513User:Falados Kapuskas2008-05-31T03:32:56Z<p>Falados Kapuskas: </p>
<hr />
<div>{{SL-hCard/2.0<br />
|name=Falados Kapuskas<br />
|image=FaladosKapuskas.jpg<br />
|rezday=Wed 19th Jul 2006<br />
|about=Little Cartoon Demon<br />
}}<br />
<br />
==Profile==<br />
<br />
Thanks for taking interest in me. I do some open source projects here and there. I'm a moderately experienced scripter and would like to share my knowledge and learn from the rest of Second Life. I'm hoping to meet people with the same objective.<br />
<br />
I teach classes at the PSG Academy in [secondlife://Kings%20Bishop/130/236/42 Kings Bishop] when I have time.<br />
<br />
You can find my stuff on [http://www.slexchange.com/modules.php?name=Marketplace&MerchantID=100354 SL Exchange]<br />
<br />
==Open Source Projects==<br />
<br />
===Linked Prim Animator Lite===<br />
[http://www.slexchange.com/modules.php?name=Marketplace&file=item&ItemID=468371 Linked Prim Animator Lite](LPAL) is set of open source scripts which enable you animate linked objects and attachments easily like a slide-show. Licensed under the GPLv3.<br />
<br />
===Open Babel Fish===<br />
[http://www.slexchange.com/modules.php?name=Marketplace&file=item&ItemID=491939 Open Babel Fish] is my effort to make the source code of babbler devices free and open so as to enhance communication between different parts of the world. The scripts run on Google Translate and a PHP script that must be placed on your own web host (I don't have enough bandwidth for all of SL) so please read the README carefully. Licensed under the GPLv3.<br />
<br />
===Particle Magic===<br />
[http://www.slexchange.com/modules.php?name=Marketplace&file=item&ItemID=638767 Particle Magic] is a HUD that enables you to worry less about compiling and recompiling scripts for particle effects and gives you more time to tweak the particle system so that it looks ''just right''. It is simple, easy to use, and powerful. Licensed under the GPLv3.<br />
<br />
==Public Sandbox Group==<br />
I'm a Resident of the Public Sandbox Group. If you see any trouble in the sandboxes, feel free to IM me in world when I'm online and I'll try to straighten everything out.<br />
<br />
* [secondlife://Mauve/76/68/33/ Mauve]<br />
* [secondlife://Columbia/142/146/34/ Columbia]<br />
* [secondlife://Hyboria/160/97/34/ Hyboria]<br />
* [secondlife://Kings%20Bishop/130/236/42 Kings Bishop]</div>Falados Kapuskashttps://wiki.secondlife.com/w/index.php?title=File:FaladosKapuskas.jpg&diff=69512File:FaladosKapuskas.jpg2008-05-31T03:32:35Z<p>Falados Kapuskas: Demon-Cartoon Avatar</p>
<hr />
<div>Demon-Cartoon Avatar</div>Falados Kapuskashttps://wiki.secondlife.com/w/index.php?title=User:Falados_Kapuskas&diff=69511User:Falados Kapuskas2008-05-31T03:18:45Z<p>Falados Kapuskas: Initial Creation</p>
<hr />
<div>{{SL-hCard/2.0<br />
|name=Falados Kapuskas<br />
|image=<br />
|rezday=Wed 19th Jul 2006<br />
|about=Little Cartoon Demon<br />
}}<br />
<br />
==Profile==<br />
<br />
Thanks for taking interest in me. I do some open source projects here and there. I'm a moderately experienced scripter and would like to share my knowledge and learn from the rest of Second Life. I'm hoping to meet people with the same objective.<br />
<br />
I teach classes at the PSG Academy in [secondlife://Kings%20Bishop/130/236/42 Kings Bishop] when I have time.<br />
<br />
You can find my stuff on [http://www.slexchange.com/modules.php?name=Marketplace&MerchantID=100354 SL Exchange]<br />
<br />
==Open Source Projects==<br />
<br />
===Linked Prim Animator Lite===<br />
[http://www.slexchange.com/modules.php?name=Marketplace&file=item&ItemID=468371 Linked Prim Animator Lite](LPAL) is set of open source scripts which enable you animate linked objects and attachments easily like a slide-show. Licensed under the GPLv3.<br />
<br />
===Open Babel Fish===<br />
[http://www.slexchange.com/modules.php?name=Marketplace&file=item&ItemID=491939 Open Babel Fish] is my effort to make the source code of babbler devices free and open so as to enhance communication between different parts of the world. The scripts run on Google Translate and a PHP script that must be placed on your own web host (I don't have enough bandwidth for all of SL) so please read the README carefully. Licensed under the GPLv3.<br />
<br />
===Particle Magic===<br />
[http://www.slexchange.com/modules.php?name=Marketplace&file=item&ItemID=638767 Particle Magic] is a HUD that enables you to worry less about compiling and recompiling scripts for particle effects and gives you more time to tweak the particle system so that it looks ''just right''. It is simple, easy to use, and powerful. Licensed under the GPLv3.<br />
<br />
==Public Sandbox Group==<br />
I'm a Resident of the Public Sandbox Group. If you see any trouble in the sandboxes, feel free to IM me in world when I'm online and I'll try to straighten everything out.<br />
<br />
* [secondlife://Mauve/76/68/33/ Mauve]<br />
* [secondlife://Columbia/142/146/34/ Columbia]<br />
* [secondlife://Hyboria/160/97/34/ Hyboria]<br />
* [secondlife://Kings%20Bishop/130/236/42 Kings Bishop]</div>Falados Kapuskashttps://wiki.secondlife.com/w/index.php?title=Deed_Tools&diff=69503Deed Tools2008-05-31T00:28:17Z<p>Falados Kapuskas: Added rotation example</p>
<hr />
<div>{{LSL Header}}<br />
==Description==<br />
This script allows you some limited control over objects onces they have been deeded to group. This is helpful if you do not wish to re-create the object, or you do not have permissions to return deeded objects.<br />
<br />
==Directions==<br />
Put the following script in the root prim of the item you are about to Deed to Group.<br/><br />
'''Note:''' Make sure you are the Creator of the object you are deeding.<br />
<br />
==Syntax==<br />
<br />
/1'''<Name>''' '''<Command>''' '''<Parameters...>'''<br />
<br />
==Commands==<br />
<br />
===Help===<br />
Command: '''help'''<br/><br />
Lists the commands via Instant Message.<br />
<br />
===Move/Rotation===<br />
Command: '''move''' ''<Position>''<br/><br />
Command: '''rmove''' ''<Relative Position>''<br/><br />
Command: '''rot''' ''<Rotation>''<br/><br />
Command: '''rrot''' ''<Relative Rotation>''<br/><br />
<br />
These commands move and rotate the Deeded object. Positions are given in region coordinates, rotation is in Degrees.<br />
The '''rmove''' and '''rrot''' commands move and rotate the prim relative to its current position and rotation.<br />
<br />
===Kill===<br />
Command: '''kill'''<br/><br />
Instantly Kills the Deeded Object<br />
<br />
===Ghost===<br />
Command: '''ghost''' ''<Name/UUID>''<br/><br />
The deeded object will follow the object specified either by Name or UUID. Useful for repositioning the Deeded Object.<br />
<br />
Command: '''unghost'<br/><br />
Stops the Deeded object from following the other object.<br/><br />
'''Note:''' If the other object is deleted this command is auto-ran.<br />
<br />
===Pin===<br />
Command: '''pin''' ''<Number>''<br/><br />
Sets the Remote Load Script Pin to <Number>. Allows other scripts to load running scripts into the deeded object.<br />
<br />
Command: '''unpin'''<br/><br />
Disables remotely loaded scripts.<br />
<br />
===Drop===<br />
Command: '''drop'''<br/><br />
Allows items to be dropped into the Deeded object's inventory.<br />
<br />
Command: '''undrop'''<br/><br />
Disables items from being dropped into the Deeded object's inventory<br />
<br />
===Reset===<br />
Command: '''reset''' ''<Script>''<br/><br />
Resets the <Script> inside the Deeded object.<br />
<br />
===Run===<br />
Command: '''run''' ''<Script>''<br/><br />
Set the <Script> inside the Deeded object to Running.<br />
<br />
===Stop===<br />
Command: '''stop''' ''<Script>''<br/><br />
Stops the <Script> inside the Deeded object.<br />
<br />
===Remove===<br />
Command: '''remove''' ''<Inventory>''<br/><br />
Deletes <Inventory> inside the Deeded object.<br />
<br />
==Example Commands==<br />
<pre><br />
/1MyObject kill<br />
/1MyObject ghost AnotherObject<br />
/1MyObject reset SomeScript<br />
/1MyObject rot <45,90,270><br />
</pre><br />
<br />
==DeedTools Script==<br />
<br />
<lsl>integer CHANNEL = 1;<br />
key gGhostPrim;<br />
default <br />
{<br />
state_entry() <br />
{<br />
llListen(CHANNEL,"",llGetCreator(),"");<br />
llInstantMessage(llGetCreator(),"For help, type: /" + (string)CHANNEL + llGetObjectName() + " help\n");<br />
}<br />
listen(integer channel, string name, key id, string msg) <br />
{<br />
string name = llToLower(llGetObjectName());<br />
<br />
if( llSubStringIndex(llToLower(msg),name) != 0) return;<br />
msg = llStringTrim(llGetSubString(msg,llStringLength(name),-1),STRING_TRIM);<br />
<br />
list params = llParseString2List(msg,[" "],[]);<br />
string command = llToLower(llList2String(params,0));<br />
string param = llDumpList2String(llDeleteSubList(params,0,0)," ");<br />
<br />
params = [];<br />
<br />
if( command == "help" )<br />
{<br />
llInstantMessage(id,"\nSyntax: /"+ (string)CHANNEL + llGetObjectName() + " <command> <params>\n\n" +<br />
"kill: Kills the object\n" +<br />
"ghost <name/UUID>: Follow the object and rotate along with in\n" +<br />
"unghost: Stop following an object\n" +<br />
"pin #: Sets script loading pin to <#>\n" +<br />
"unpin: Removes loading script pin"<br />
);<br />
llInstantMessage(id,"\n"+<br />
"drop: Allows objects to be dropped into the prim\n" +<br />
"undrop: Prevents objects from being dropped into the prim\n" +<br />
"reset <script>: Resets the script named <script>\n" +<br />
"run <script>: Starts the script named <script>\n" +<br />
"stop <script>: Stopts the script named <script>"<br />
); <br />
}<br />
<br />
else if( command == "kill" )<br />
{<br />
llInstantMessage(id,"Killing " + llGetObjectName() );<br />
llDie();<br />
}<br />
<br />
else if( command == "move" || command == "rmove") <br />
{<br />
vector p = (vector)param;<br />
if( command == "rmove" ) p += llGetPos();<br />
if( llVecMag( p - llGetPos() ) > 100 ) <br />
{<br />
llInstantMessage(id,"Unable to move: Distance is too great");<br />
return;<br />
}<br />
while( llGetPos() != p ) {llSetPos(p);}<br />
}<br />
<br />
else if( command == "rot" || command == "rrot" )<br />
{<br />
rotation r = llEuler2Rot((vector)param*DEG_TO_RAD);<br />
if( command == "rrot" ) r = llGetRot() * r;<br />
<br />
llSetRot(r);<br />
}<br />
else if( command == "pin" )<br />
{<br />
llSetRemoteScriptAccessPin((integer)param);<br />
}<br />
else if( command == "unpin" )<br />
{<br />
llSetRemoteScriptAccessPin(0);<br />
}<br />
else if( command == "drop" ) llAllowInventoryDrop(TRUE);<br />
else if( command == "undrop") llAllowInventoryDrop(FALSE);<br />
<br />
else if( command == "reset" ) llResetOtherScript(param);<br />
else if( command == "run" ) llSetScriptState(param,TRUE);<br />
else if( command == "stop") llSetScriptState(param,FALSE);<br />
<br />
else if(command == "remove") {<br />
if( llGetInventoryType(param) != INVENTORY_NONE) {<br />
llRemoveInventory(param);<br />
}<br />
}<br />
<br />
else if( command == "ghost" )<br />
{<br />
gGhostPrim = param;<br />
if( llGetOwnerKey(param) == NULL_KEY ) <br />
{<br />
llSensor(gGhostPrim,"",ACTIVE|PASSIVE,20.0,PI);<br />
} else {<br />
llSetTimerEvent(1.0);<br />
}<br />
}<br />
else if( command == "unghost" )<br />
{<br />
llSetTimerEvent(0.0);<br />
}<br />
}<br />
sensor(integer i)<br />
{<br />
gGhostPrim = llDetectedKey(0);<br />
llSetTimerEvent(1.0); <br />
}<br />
no_sensor()<br />
{<br />
llInstantMessage(llGetCreator(),(string)gGhostPrim + " not found");<br />
}<br />
<br />
timer() <br />
{<br />
list p = llGetObjectDetails(gGhostPrim,[OBJECT_POS,OBJECT_ROT]);<br />
if( llGetListLength(p) == 0 ) <br />
{<br />
llSetTimerEvent(0.0);<br />
llInstantMessage(llGetCreator(),"Object Lost..");<br />
} else {<br />
llSetPos(llList2Vector(p,0));<br />
llSetRot(llList2Rot(p,1));<br />
}<br />
}<br />
}</lsl></div>Falados Kapuskashttps://wiki.secondlife.com/w/index.php?title=Deed_Tools&diff=69502Deed Tools2008-05-31T00:27:19Z<p>Falados Kapuskas: /* Commands */</p>
<hr />
<div>{{LSL Header}}<br />
==Description==<br />
This script allows you some limited control over objects onces they have been deeded to group. This is helpful if you do not wish to re-create the object, or you do not have permissions to return deeded objects.<br />
<br />
==Directions==<br />
Put the following script in the root prim of the item you are about to Deed to Group.<br/><br />
'''Note:''' Make sure you are the Creator of the object you are deeding.<br />
<br />
==Syntax==<br />
<br />
/1'''<Name>''' '''<Command>''' '''<Parameters...>'''<br />
<br />
==Commands==<br />
<br />
===Help===<br />
Command: '''help'''<br/><br />
Lists the commands via Instant Message.<br />
<br />
===Move/Rotation===<br />
Command: '''move''' ''<Position>''<br/><br />
Command: '''rmove''' ''<Relative Position>''<br/><br />
Command: '''rot''' ''<Rotation>''<br/><br />
Command: '''rrot''' ''<Relative Rotation>''<br/><br />
<br />
These commands move and rotate the Deeded object. Positions are given in region coordinates, rotation is in Degrees.<br />
The '''rmove''' and '''rrot''' commands move and rotate the prim relative to its current position and rotation.<br />
<br />
===Kill===<br />
Command: '''kill'''<br/><br />
Instantly Kills the Deeded Object<br />
<br />
===Ghost===<br />
Command: '''ghost''' ''<Name/UUID>''<br/><br />
The deeded object will follow the object specified either by Name or UUID. Useful for repositioning the Deeded Object.<br />
<br />
Command: '''unghost'<br/><br />
Stops the Deeded object from following the other object.<br/><br />
'''Note:''' If the other object is deleted this command is auto-ran.<br />
<br />
===Pin===<br />
Command: '''pin''' ''<Number>''<br/><br />
Sets the Remote Load Script Pin to <Number>. Allows other scripts to load running scripts into the deeded object.<br />
<br />
Command: '''unpin'''<br/><br />
Disables remotely loaded scripts.<br />
<br />
===Drop===<br />
Command: '''drop'''<br/><br />
Allows items to be dropped into the Deeded object's inventory.<br />
<br />
Command: '''undrop'''<br/><br />
Disables items from being dropped into the Deeded object's inventory<br />
<br />
===Reset===<br />
Command: '''reset''' ''<Script>''<br/><br />
Resets the <Script> inside the Deeded object.<br />
<br />
===Run===<br />
Command: '''run''' ''<Script>''<br/><br />
Set the <Script> inside the Deeded object to Running.<br />
<br />
===Stop===<br />
Command: '''stop''' ''<Script>''<br/><br />
Stops the <Script> inside the Deeded object.<br />
<br />
===Remove===<br />
Command: '''remove''' ''<Inventory>''<br/><br />
Deletes <Inventory> inside the Deeded object.<br />
<br />
==Example Commands==<br />
<pre><br />
/1MyObject kill<br />
/1MyObject ghost AnotherObject<br />
/1MyObject reset SomeScript<br />
</pre><br />
<br />
==DeedTools Script==<br />
<br />
<lsl>integer CHANNEL = 1;<br />
key gGhostPrim;<br />
default <br />
{<br />
state_entry() <br />
{<br />
llListen(CHANNEL,"",llGetCreator(),"");<br />
llInstantMessage(llGetCreator(),"For help, type: /" + (string)CHANNEL + llGetObjectName() + " help\n");<br />
}<br />
listen(integer channel, string name, key id, string msg) <br />
{<br />
string name = llToLower(llGetObjectName());<br />
<br />
if( llSubStringIndex(llToLower(msg),name) != 0) return;<br />
msg = llStringTrim(llGetSubString(msg,llStringLength(name),-1),STRING_TRIM);<br />
<br />
list params = llParseString2List(msg,[" "],[]);<br />
string command = llToLower(llList2String(params,0));<br />
string param = llDumpList2String(llDeleteSubList(params,0,0)," ");<br />
<br />
params = [];<br />
<br />
if( command == "help" )<br />
{<br />
llInstantMessage(id,"\nSyntax: /"+ (string)CHANNEL + llGetObjectName() + " <command> <params>\n\n" +<br />
"kill: Kills the object\n" +<br />
"ghost <name/UUID>: Follow the object and rotate along with in\n" +<br />
"unghost: Stop following an object\n" +<br />
"pin #: Sets script loading pin to <#>\n" +<br />
"unpin: Removes loading script pin"<br />
);<br />
llInstantMessage(id,"\n"+<br />
"drop: Allows objects to be dropped into the prim\n" +<br />
"undrop: Prevents objects from being dropped into the prim\n" +<br />
"reset <script>: Resets the script named <script>\n" +<br />
"run <script>: Starts the script named <script>\n" +<br />
"stop <script>: Stopts the script named <script>"<br />
); <br />
}<br />
<br />
else if( command == "kill" )<br />
{<br />
llInstantMessage(id,"Killing " + llGetObjectName() );<br />
llDie();<br />
}<br />
<br />
else if( command == "move" || command == "rmove") <br />
{<br />
vector p = (vector)param;<br />
if( command == "rmove" ) p += llGetPos();<br />
if( llVecMag( p - llGetPos() ) > 100 ) <br />
{<br />
llInstantMessage(id,"Unable to move: Distance is too great");<br />
return;<br />
}<br />
while( llGetPos() != p ) {llSetPos(p);}<br />
}<br />
<br />
else if( command == "rot" || command == "rrot" )<br />
{<br />
rotation r = llEuler2Rot((vector)param*DEG_TO_RAD);<br />
if( command == "rrot" ) r = llGetRot() * r;<br />
<br />
llSetRot(r);<br />
}<br />
else if( command == "pin" )<br />
{<br />
llSetRemoteScriptAccessPin((integer)param);<br />
}<br />
else if( command == "unpin" )<br />
{<br />
llSetRemoteScriptAccessPin(0);<br />
}<br />
else if( command == "drop" ) llAllowInventoryDrop(TRUE);<br />
else if( command == "undrop") llAllowInventoryDrop(FALSE);<br />
<br />
else if( command == "reset" ) llResetOtherScript(param);<br />
else if( command == "run" ) llSetScriptState(param,TRUE);<br />
else if( command == "stop") llSetScriptState(param,FALSE);<br />
<br />
else if(command == "remove") {<br />
if( llGetInventoryType(param) != INVENTORY_NONE) {<br />
llRemoveInventory(param);<br />
}<br />
}<br />
<br />
else if( command == "ghost" )<br />
{<br />
gGhostPrim = param;<br />
if( llGetOwnerKey(param) == NULL_KEY ) <br />
{<br />
llSensor(gGhostPrim,"",ACTIVE|PASSIVE,20.0,PI);<br />
} else {<br />
llSetTimerEvent(1.0);<br />
}<br />
}<br />
else if( command == "unghost" )<br />
{<br />
llSetTimerEvent(0.0);<br />
}<br />
}<br />
sensor(integer i)<br />
{<br />
gGhostPrim = llDetectedKey(0);<br />
llSetTimerEvent(1.0); <br />
}<br />
no_sensor()<br />
{<br />
llInstantMessage(llGetCreator(),(string)gGhostPrim + " not found");<br />
}<br />
<br />
timer() <br />
{<br />
list p = llGetObjectDetails(gGhostPrim,[OBJECT_POS,OBJECT_ROT]);<br />
if( llGetListLength(p) == 0 ) <br />
{<br />
llSetTimerEvent(0.0);<br />
llInstantMessage(llGetCreator(),"Object Lost..");<br />
} else {<br />
llSetPos(llList2Vector(p,0));<br />
llSetRot(llList2Rot(p,1));<br />
}<br />
}<br />
}</lsl></div>Falados Kapuskashttps://wiki.secondlife.com/w/index.php?title=Deed_Tools&diff=69333Deed Tools2008-05-30T05:55:59Z<p>Falados Kapuskas: </p>
<hr />
<div>{{LSL Header}}<br />
==Description==<br />
This script allows you some limited control over objects onces they have been deeded to group. This is helpful if you do not wish to re-create the object, or you do not have permissions to return deeded objects.<br />
<br />
==Directions==<br />
Put the following script in the root prim of the item you are about to Deed to Group.<br/><br />
'''Note:''' Make sure you are the Creator of the object you are deeding.<br />
<br />
==Syntax==<br />
<br />
/1'''<Name>''' '''<Command>''' '''<Parameters...>'''<br />
<br />
==Commands==<br />
<br />
===Help===<br />
Command: '''help'''<br/><br />
Lists the commands via Instant Message.<br />
<br />
===Kill===<br />
Command: '''kill'''<br/><br />
Instantly Kills the Deeded Object<br />
<br />
===Ghost===<br />
Command: '''ghost''' ''<Name/UUID>''<br/><br />
The deeded object will follow the object specified either by Name or UUID. Useful for repositioning the Deeded Object.<br />
<br />
Command: '''unghost'<br/><br />
Stops the Deeded object from following the other object.<br/><br />
'''Note:''' If the other object is deleted this command is auto-ran.<br />
<br />
===Pin===<br />
Command: '''pin''' ''<Number>''<br/><br />
Sets the Remote Load Script Pin to <Number>. Allows other scripts to load running scripts into the deeded object.<br />
<br />
Command: '''unpin'''<br/><br />
Disables remotely loaded scripts.<br />
<br />
===Drop===<br />
Command: '''drop'''<br/><br />
Allows items to be dropped into the Deeded object's inventory.<br />
<br />
Command: '''undrop'''<br/><br />
Disables items from being dropped into the Deeded object's inventory<br />
<br />
===Reset===<br />
Command: '''reset''' ''<Script>''<br/><br />
Resets the <Script> inside the Deeded object.<br />
<br />
===Run===<br />
Command: '''run''' ''<Script>''<br/><br />
Set the <Script> inside the Deeded object to Running.<br />
<br />
===Stop===<br />
Command: '''stop''' ''<Script>''<br/><br />
Stops the <Script> inside the Deeded object.<br />
<br />
===Remove===<br />
Command: '''remove''' ''<Inventory>''<br/><br />
Deletes <Inventory> inside the Deeded object.<br />
<br />
==Example Commands==<br />
<pre><br />
/1MyObject kill<br />
/1MyObject ghost AnotherObject<br />
/1MyObject reset SomeScript<br />
</pre><br />
<br />
==DeedTools Script==<br />
<br />
<lsl><br />
integer CHANNEL = 1;<br />
key gGhostPrim;<br />
default <br />
{<br />
state_entry() <br />
{<br />
llListen(CHANNEL,"",llGetCreator(),"");<br />
llInstantMessage(llGetCreator(),"For help, type: /" + (string)CHANNEL + llGetObjectName() + " help\n");<br />
}<br />
listen(integer channel, string name, key id, string msg) <br />
{<br />
string name = llToLower(llGetObjectName());<br />
msg = msg;<br />
<br />
if( llSubStringIndex(llToLower(msg),name) != 0) return;<br />
msg = llStringTrim(llGetSubString(msg,llStringLength(name),-1),STRING_TRIM);<br />
<br />
list params = llParseString2List(msg,[" "],[]);<br />
string command = llToLower(llList2String(params,0));<br />
string param = llDumpList2String(llDeleteSubList(params,0,0)," ");<br />
<br />
params = [];<br />
<br />
if( command == "help" )<br />
{<br />
llInstantMessage(id,"\nSyntax: /"+ (string)CHANNEL + llGetObjectName() + " <command> <params>\n\n" +<br />
"kill: Kills the object\n" +<br />
"ghost <name/UUID>: Follow the object and rotate along with in\n" +<br />
"unghost: Stop following an object\n" +<br />
"pin #: Sets script loading pin to <#>\n" +<br />
"unpin: Removes loading script pin"<br />
);<br />
llInstantMessage(id,"\n"+<br />
"drop: Allows objects to be dropped into the prim\n" +<br />
"undrop: Prevents objects from being dropped into the prim\n" +<br />
"reset <script>: Resets the script named <script>\n" +<br />
"run <script>: Starts the script named <script>\n" +<br />
"stop <script>: Stopts the script named <script>"<br />
); <br />
}<br />
<br />
if( command == "kill" )<br />
{<br />
llInstantMessage(id,"Killing " + llGetObjectName() );<br />
llDie();<br />
}<br />
<br />
if( command == "move" || command == "rmove") <br />
{<br />
vector p = (vector)param;<br />
if( command == "rmove" ) p += llGetPos();<br />
if( llVecMag( p - llGetPos() ) > 100 ) <br />
{<br />
llInstantMessage(id,"Unable to move: Distance is too great");<br />
return;<br />
}<br />
while( llGetPos() != p ) {llSetPos(p);}<br />
}<br />
<br />
if( command == "rot" || command == "rrot" )<br />
{<br />
rotation r = llEuler2Rot((vector)param*DEG_TO_RAD);<br />
if( command == "rrot" ) r = llGetRot() * r;<br />
<br />
llSetRot(r);<br />
}<br />
if( command == "pin" )<br />
{<br />
llSetRemoteScriptAccessPin((integer)param);<br />
}<br />
if( command == "unpin" )<br />
{<br />
llSetRemoteScriptAccessPin(0);<br />
}<br />
if( command == "drop" ) llAllowInventoryDrop(TRUE);<br />
if( command == "undrop") llAllowInventoryDrop(FALSE);<br />
<br />
if( command == "reset" ) llResetOtherScript(param);<br />
if( command == "run" ) llSetScriptState(param,TRUE);<br />
if( command == "stop") llSetScriptState(param,FALSE);<br />
<br />
if(command == "remove") {<br />
if( llGetInventoryType(param) != INVENTORY_NONE) {<br />
llRemoveInventory(param);<br />
}<br />
}<br />
<br />
if( command == "ghost" )<br />
{<br />
gGhostPrim = param;<br />
if( llGetOwnerKey(param) == NULL_KEY ) <br />
{<br />
llSensor(gGhostPrim,"",ACTIVE|PASSIVE,20.0,PI);<br />
} else {<br />
llSetTimerEvent(1.0);<br />
}<br />
}<br />
if( command == "unghost" )<br />
{<br />
llSetTimerEvent(0.0);<br />
}<br />
}<br />
sensor(integer i)<br />
{<br />
gGhostPrim = llDetectedKey(0);<br />
llSetTimerEvent(1.0); <br />
}<br />
no_sensor()<br />
{<br />
llInstantMessage(llGetCreator(),(string)gGhostPrim + " not found");<br />
}<br />
<br />
timer() <br />
{<br />
list p = llGetObjectDetails(gGhostPrim,[OBJECT_POS,OBJECT_ROT]);<br />
if( llGetListLength(p) == 0 ) <br />
{<br />
llSetTimerEvent(0.0);<br />
llInstantMessage(llGetCreator(),"Object Lost..");<br />
} else {<br />
llSetPos(llList2Vector(p,0));<br />
llSetRot(llList2Rot(p,1));<br />
}<br />
}<br />
}<br />
</lsl></div>Falados Kapuskashttps://wiki.secondlife.com/w/index.php?title=Deed_Tools&diff=69332Deed Tools2008-05-30T05:53:46Z<p>Falados Kapuskas: /* Example Commands */</p>
<hr />
<div>{{LSL Header}}<br />
==Directions==<br />
Put the following script in the root prim of the item you are about to Deed to Group.<br/><br />
'''Note:''' Make sure you are the Creator of the object you are deeding.<br />
<br />
==Syntax==<br />
<br />
/1'''<Name>''' '''<Command>''' '''<Parameters...>'''<br />
<br />
==Commands==<br />
<br />
===Help===<br />
Command: '''help'''<br/><br />
Lists the commands via Instant Message.<br />
<br />
===Kill===<br />
Command: '''kill'''<br/><br />
Instantly Kills the Deeded Object<br />
<br />
===Ghost===<br />
Command: '''ghost''' ''<Name/UUID>''<br/><br />
The deeded object will follow the object specified either by Name or UUID. Useful for repositioning the Deeded Object.<br />
<br />
Command: '''unghost'<br/><br />
Stops the Deeded object from following the other object.<br/><br />
'''Note:''' If the other object is deleted this command is auto-ran.<br />
<br />
===Pin===<br />
Command: '''pin''' ''<Number>''<br/><br />
Sets the Remote Load Script Pin to <Number>. Allows other scripts to load running scripts into the deeded object.<br />
<br />
Command: '''unpin'''<br/><br />
Disables remotely loaded scripts.<br />
<br />
===Drop===<br />
Command: '''drop'''<br/><br />
Allows items to be dropped into the Deeded object's inventory.<br />
<br />
Command: '''undrop'''<br/><br />
Disables items from being dropped into the Deeded object's inventory<br />
<br />
===Reset===<br />
Command: '''reset''' ''<Script>''<br/><br />
Resets the <Script> inside the Deeded object.<br />
<br />
===Run===<br />
Command: '''run''' ''<Script>''<br/><br />
Set the <Script> inside the Deeded object to Running.<br />
<br />
===Stop===<br />
Command: '''stop''' ''<Script>''<br/><br />
Stops the <Script> inside the Deeded object.<br />
<br />
===Remove===<br />
Command: '''remove''' ''<Inventory>''<br/><br />
Deletes <Inventory> inside the Deeded object.<br />
<br />
==Example Commands==<br />
<pre><br />
/1MyObject kill<br />
/1MyObject ghost AnotherObject<br />
/1MyObject reset SomeScript<br />
</pre><br />
<br />
==DeedTools Script==<br />
<br />
<lsl><br />
integer CHANNEL = 1;<br />
key gGhostPrim;<br />
default <br />
{<br />
state_entry() <br />
{<br />
llListen(CHANNEL,"",llGetCreator(),"");<br />
llInstantMessage(llGetCreator(),"For help, type: /" + (string)CHANNEL + llGetObjectName() + " help\n");<br />
}<br />
listen(integer channel, string name, key id, string msg) <br />
{<br />
string name = llToLower(llGetObjectName());<br />
msg = msg;<br />
<br />
if( llSubStringIndex(llToLower(msg),name) != 0) return;<br />
msg = llStringTrim(llGetSubString(msg,llStringLength(name),-1),STRING_TRIM);<br />
<br />
list params = llParseString2List(msg,[" "],[]);<br />
string command = llToLower(llList2String(params,0));<br />
string param = llDumpList2String(llDeleteSubList(params,0,0)," ");<br />
<br />
params = [];<br />
<br />
if( command == "help" )<br />
{<br />
llInstantMessage(id,"\nSyntax: /"+ (string)CHANNEL + llGetObjectName() + " <command> <params>\n\n" +<br />
"kill: Kills the object\n" +<br />
"ghost <name/UUID>: Follow the object and rotate along with in\n" +<br />
"unghost: Stop following an object\n" +<br />
"pin #: Sets script loading pin to <#>\n" +<br />
"unpin: Removes loading script pin"<br />
);<br />
llInstantMessage(id,"\n"+<br />
"drop: Allows objects to be dropped into the prim\n" +<br />
"undrop: Prevents objects from being dropped into the prim\n" +<br />
"reset <script>: Resets the script named <script>\n" +<br />
"run <script>: Starts the script named <script>\n" +<br />
"stop <script>: Stopts the script named <script>"<br />
); <br />
}<br />
<br />
if( command == "kill" )<br />
{<br />
llInstantMessage(id,"Killing " + llGetObjectName() );<br />
llDie();<br />
}<br />
<br />
if( command == "move" || command == "rmove") <br />
{<br />
vector p = (vector)param;<br />
if( command == "rmove" ) p += llGetPos();<br />
if( llVecMag( p - llGetPos() ) > 100 ) <br />
{<br />
llInstantMessage(id,"Unable to move: Distance is too great");<br />
return;<br />
}<br />
while( llGetPos() != p ) {llSetPos(p);}<br />
}<br />
<br />
if( command == "rot" || command == "rrot" )<br />
{<br />
rotation r = llEuler2Rot((vector)param*DEG_TO_RAD);<br />
if( command == "rrot" ) r = llGetRot() * r;<br />
<br />
llSetRot(r);<br />
}<br />
if( command == "pin" )<br />
{<br />
llSetRemoteScriptAccessPin((integer)param);<br />
}<br />
if( command == "unpin" )<br />
{<br />
llSetRemoteScriptAccessPin(0);<br />
}<br />
if( command == "drop" ) llAllowInventoryDrop(TRUE);<br />
if( command == "undrop") llAllowInventoryDrop(FALSE);<br />
<br />
if( command == "reset" ) llResetOtherScript(param);<br />
if( command == "run" ) llSetScriptState(param,TRUE);<br />
if( command == "stop") llSetScriptState(param,FALSE);<br />
<br />
if(command == "remove") {<br />
if( llGetInventoryType(param) != INVENTORY_NONE) {<br />
llRemoveInventory(param);<br />
}<br />
}<br />
<br />
if( command == "ghost" )<br />
{<br />
gGhostPrim = param;<br />
if( llGetOwnerKey(param) == NULL_KEY ) <br />
{<br />
llSensor(gGhostPrim,"",ACTIVE|PASSIVE,20.0,PI);<br />
} else {<br />
llSetTimerEvent(1.0);<br />
}<br />
}<br />
if( command == "unghost" )<br />
{<br />
llSetTimerEvent(0.0);<br />
}<br />
}<br />
sensor(integer i)<br />
{<br />
gGhostPrim = llDetectedKey(0);<br />
llSetTimerEvent(1.0); <br />
}<br />
no_sensor()<br />
{<br />
llInstantMessage(llGetCreator(),(string)gGhostPrim + " not found");<br />
}<br />
<br />
timer() <br />
{<br />
list p = llGetObjectDetails(gGhostPrim,[OBJECT_POS,OBJECT_ROT]);<br />
if( llGetListLength(p) == 0 ) <br />
{<br />
llSetTimerEvent(0.0);<br />
llInstantMessage(llGetCreator(),"Object Lost..");<br />
} else {<br />
llSetPos(llList2Vector(p,0));<br />
llSetRot(llList2Rot(p,1));<br />
}<br />
}<br />
}<br />
</lsl></div>Falados Kapuskashttps://wiki.secondlife.com/w/index.php?title=Deed_Tools&diff=69331Deed Tools2008-05-30T05:53:35Z<p>Falados Kapuskas: /* Commands */</p>
<hr />
<div>{{LSL Header}}<br />
==Directions==<br />
Put the following script in the root prim of the item you are about to Deed to Group.<br/><br />
'''Note:''' Make sure you are the Creator of the object you are deeding.<br />
<br />
==Syntax==<br />
<br />
/1'''<Name>''' '''<Command>''' '''<Parameters...>'''<br />
<br />
==Commands==<br />
<br />
===Help===<br />
Command: '''help'''<br/><br />
Lists the commands via Instant Message.<br />
<br />
===Kill===<br />
Command: '''kill'''<br/><br />
Instantly Kills the Deeded Object<br />
<br />
===Ghost===<br />
Command: '''ghost''' ''<Name/UUID>''<br/><br />
The deeded object will follow the object specified either by Name or UUID. Useful for repositioning the Deeded Object.<br />
<br />
Command: '''unghost'<br/><br />
Stops the Deeded object from following the other object.<br/><br />
'''Note:''' If the other object is deleted this command is auto-ran.<br />
<br />
===Pin===<br />
Command: '''pin''' ''<Number>''<br/><br />
Sets the Remote Load Script Pin to <Number>. Allows other scripts to load running scripts into the deeded object.<br />
<br />
Command: '''unpin'''<br/><br />
Disables remotely loaded scripts.<br />
<br />
===Drop===<br />
Command: '''drop'''<br/><br />
Allows items to be dropped into the Deeded object's inventory.<br />
<br />
Command: '''undrop'''<br/><br />
Disables items from being dropped into the Deeded object's inventory<br />
<br />
===Reset===<br />
Command: '''reset''' ''<Script>''<br/><br />
Resets the <Script> inside the Deeded object.<br />
<br />
===Run===<br />
Command: '''run''' ''<Script>''<br/><br />
Set the <Script> inside the Deeded object to Running.<br />
<br />
===Stop===<br />
Command: '''stop''' ''<Script>''<br/><br />
Stops the <Script> inside the Deeded object.<br />
<br />
===Remove===<br />
Command: '''remove''' ''<Inventory>''<br/><br />
Deletes <Inventory> inside the Deeded object.<br />
<br />
==Example Commands==<br />
<pre><br />
/1MyObject kill<br />
/1MyObject ghost AnotherObject<br />
/1MyObject reset SomeScript<br />
/1<br />
</pre><br />
==DeedTools Script==<br />
<br />
<lsl><br />
integer CHANNEL = 1;<br />
key gGhostPrim;<br />
default <br />
{<br />
state_entry() <br />
{<br />
llListen(CHANNEL,"",llGetCreator(),"");<br />
llInstantMessage(llGetCreator(),"For help, type: /" + (string)CHANNEL + llGetObjectName() + " help\n");<br />
}<br />
listen(integer channel, string name, key id, string msg) <br />
{<br />
string name = llToLower(llGetObjectName());<br />
msg = msg;<br />
<br />
if( llSubStringIndex(llToLower(msg),name) != 0) return;<br />
msg = llStringTrim(llGetSubString(msg,llStringLength(name),-1),STRING_TRIM);<br />
<br />
list params = llParseString2List(msg,[" "],[]);<br />
string command = llToLower(llList2String(params,0));<br />
string param = llDumpList2String(llDeleteSubList(params,0,0)," ");<br />
<br />
params = [];<br />
<br />
if( command == "help" )<br />
{<br />
llInstantMessage(id,"\nSyntax: /"+ (string)CHANNEL + llGetObjectName() + " <command> <params>\n\n" +<br />
"kill: Kills the object\n" +<br />
"ghost <name/UUID>: Follow the object and rotate along with in\n" +<br />
"unghost: Stop following an object\n" +<br />
"pin #: Sets script loading pin to <#>\n" +<br />
"unpin: Removes loading script pin"<br />
);<br />
llInstantMessage(id,"\n"+<br />
"drop: Allows objects to be dropped into the prim\n" +<br />
"undrop: Prevents objects from being dropped into the prim\n" +<br />
"reset <script>: Resets the script named <script>\n" +<br />
"run <script>: Starts the script named <script>\n" +<br />
"stop <script>: Stopts the script named <script>"<br />
); <br />
}<br />
<br />
if( command == "kill" )<br />
{<br />
llInstantMessage(id,"Killing " + llGetObjectName() );<br />
llDie();<br />
}<br />
<br />
if( command == "move" || command == "rmove") <br />
{<br />
vector p = (vector)param;<br />
if( command == "rmove" ) p += llGetPos();<br />
if( llVecMag( p - llGetPos() ) > 100 ) <br />
{<br />
llInstantMessage(id,"Unable to move: Distance is too great");<br />
return;<br />
}<br />
while( llGetPos() != p ) {llSetPos(p);}<br />
}<br />
<br />
if( command == "rot" || command == "rrot" )<br />
{<br />
rotation r = llEuler2Rot((vector)param*DEG_TO_RAD);<br />
if( command == "rrot" ) r = llGetRot() * r;<br />
<br />
llSetRot(r);<br />
}<br />
if( command == "pin" )<br />
{<br />
llSetRemoteScriptAccessPin((integer)param);<br />
}<br />
if( command == "unpin" )<br />
{<br />
llSetRemoteScriptAccessPin(0);<br />
}<br />
if( command == "drop" ) llAllowInventoryDrop(TRUE);<br />
if( command == "undrop") llAllowInventoryDrop(FALSE);<br />
<br />
if( command == "reset" ) llResetOtherScript(param);<br />
if( command == "run" ) llSetScriptState(param,TRUE);<br />
if( command == "stop") llSetScriptState(param,FALSE);<br />
<br />
if(command == "remove") {<br />
if( llGetInventoryType(param) != INVENTORY_NONE) {<br />
llRemoveInventory(param);<br />
}<br />
}<br />
<br />
if( command == "ghost" )<br />
{<br />
gGhostPrim = param;<br />
if( llGetOwnerKey(param) == NULL_KEY ) <br />
{<br />
llSensor(gGhostPrim,"",ACTIVE|PASSIVE,20.0,PI);<br />
} else {<br />
llSetTimerEvent(1.0);<br />
}<br />
}<br />
if( command == "unghost" )<br />
{<br />
llSetTimerEvent(0.0);<br />
}<br />
}<br />
sensor(integer i)<br />
{<br />
gGhostPrim = llDetectedKey(0);<br />
llSetTimerEvent(1.0); <br />
}<br />
no_sensor()<br />
{<br />
llInstantMessage(llGetCreator(),(string)gGhostPrim + " not found");<br />
}<br />
<br />
timer() <br />
{<br />
list p = llGetObjectDetails(gGhostPrim,[OBJECT_POS,OBJECT_ROT]);<br />
if( llGetListLength(p) == 0 ) <br />
{<br />
llSetTimerEvent(0.0);<br />
llInstantMessage(llGetCreator(),"Object Lost..");<br />
} else {<br />
llSetPos(llList2Vector(p,0));<br />
llSetRot(llList2Rot(p,1));<br />
}<br />
}<br />
}<br />
</lsl></div>Falados Kapuskashttps://wiki.secondlife.com/w/index.php?title=Deed_Tools&diff=69330Deed Tools2008-05-30T05:52:51Z<p>Falados Kapuskas: /* DeedTools Script */</p>
<hr />
<div>{{LSL Header}}<br />
==Directions==<br />
Put the following script in the root prim of the item you are about to Deed to Group.<br/><br />
'''Note:''' Make sure you are the Creator of the object you are deeding.<br />
<br />
==Syntax==<br />
<br />
/1'''<Name>''' '''<Command>''' '''<Parameters...>'''<br />
<br />
==Commands==<br />
<br />
===Help===<br />
Command: '''help'''<br/><br />
Lists the commands via Instant Message.<br />
<br />
===Kill===<br />
Command: '''kill'''<br/><br />
Instantly Kills the Deeded Object<br />
<br />
===Ghost===<br />
Command: '''ghost''' ''<Name/UUID>''<br/><br />
The deeded object will follow the object specified either by Name or UUID. Useful for repositioning the Deeded Object.<br />
<br />
Command: '''unghost'<br/><br />
Stops the Deeded object from following the other object.<br/><br />
'''Note:''' If the other object is deleted this command is auto-ran.<br />
<br />
===Pin===<br />
Command: '''pin''' ''<Number>''<br/><br />
Sets the Remote Load Script Pin to <Number>. Allows other scripts to load running scripts into the deeded object.<br />
<br />
Command: '''unpin'''<br/><br />
Disables remotely loaded scripts.<br />
<br />
===Drop===<br />
Command: '''drop'''<br/><br />
Allows items to be dropped into the Deeded object's inventory.<br />
<br />
Command: '''undrop'''<br/><br />
Disables items from being dropped into the Deeded object's inventory<br />
<br />
===Reset===<br />
Command: '''reset''' ''<Script>''<br/><br />
Resets the <Script> inside the Deeded object.<br />
<br />
===Run===<br />
Command: '''run''' ''<Script>''<br/><br />
Set the <Script> inside the Deeded object to Running.<br />
<br />
===Stop===<br />
Command: '''stop''' ''<Script>''<br/><br />
Stops the <Script> inside the Deeded object.<br />
<br />
==Example Commands==<br />
<pre><br />
/1MyObject kill<br />
/1MyObject ghost AnotherObject<br />
/1MyObject reset SomeScript<br />
/1<br />
</pre><br />
==DeedTools Script==<br />
<br />
<lsl><br />
integer CHANNEL = 1;<br />
key gGhostPrim;<br />
default <br />
{<br />
state_entry() <br />
{<br />
llListen(CHANNEL,"",llGetCreator(),"");<br />
llInstantMessage(llGetCreator(),"For help, type: /" + (string)CHANNEL + llGetObjectName() + " help\n");<br />
}<br />
listen(integer channel, string name, key id, string msg) <br />
{<br />
string name = llToLower(llGetObjectName());<br />
msg = msg;<br />
<br />
if( llSubStringIndex(llToLower(msg),name) != 0) return;<br />
msg = llStringTrim(llGetSubString(msg,llStringLength(name),-1),STRING_TRIM);<br />
<br />
list params = llParseString2List(msg,[" "],[]);<br />
string command = llToLower(llList2String(params,0));<br />
string param = llDumpList2String(llDeleteSubList(params,0,0)," ");<br />
<br />
params = [];<br />
<br />
if( command == "help" )<br />
{<br />
llInstantMessage(id,"\nSyntax: /"+ (string)CHANNEL + llGetObjectName() + " <command> <params>\n\n" +<br />
"kill: Kills the object\n" +<br />
"ghost <name/UUID>: Follow the object and rotate along with in\n" +<br />
"unghost: Stop following an object\n" +<br />
"pin #: Sets script loading pin to <#>\n" +<br />
"unpin: Removes loading script pin"<br />
);<br />
llInstantMessage(id,"\n"+<br />
"drop: Allows objects to be dropped into the prim\n" +<br />
"undrop: Prevents objects from being dropped into the prim\n" +<br />
"reset <script>: Resets the script named <script>\n" +<br />
"run <script>: Starts the script named <script>\n" +<br />
"stop <script>: Stopts the script named <script>"<br />
); <br />
}<br />
<br />
if( command == "kill" )<br />
{<br />
llInstantMessage(id,"Killing " + llGetObjectName() );<br />
llDie();<br />
}<br />
<br />
if( command == "move" || command == "rmove") <br />
{<br />
vector p = (vector)param;<br />
if( command == "rmove" ) p += llGetPos();<br />
if( llVecMag( p - llGetPos() ) > 100 ) <br />
{<br />
llInstantMessage(id,"Unable to move: Distance is too great");<br />
return;<br />
}<br />
while( llGetPos() != p ) {llSetPos(p);}<br />
}<br />
<br />
if( command == "rot" || command == "rrot" )<br />
{<br />
rotation r = llEuler2Rot((vector)param*DEG_TO_RAD);<br />
if( command == "rrot" ) r = llGetRot() * r;<br />
<br />
llSetRot(r);<br />
}<br />
if( command == "pin" )<br />
{<br />
llSetRemoteScriptAccessPin((integer)param);<br />
}<br />
if( command == "unpin" )<br />
{<br />
llSetRemoteScriptAccessPin(0);<br />
}<br />
if( command == "drop" ) llAllowInventoryDrop(TRUE);<br />
if( command == "undrop") llAllowInventoryDrop(FALSE);<br />
<br />
if( command == "reset" ) llResetOtherScript(param);<br />
if( command == "run" ) llSetScriptState(param,TRUE);<br />
if( command == "stop") llSetScriptState(param,FALSE);<br />
<br />
if(command == "remove") {<br />
if( llGetInventoryType(param) != INVENTORY_NONE) {<br />
llRemoveInventory(param);<br />
}<br />
}<br />
<br />
if( command == "ghost" )<br />
{<br />
gGhostPrim = param;<br />
if( llGetOwnerKey(param) == NULL_KEY ) <br />
{<br />
llSensor(gGhostPrim,"",ACTIVE|PASSIVE,20.0,PI);<br />
} else {<br />
llSetTimerEvent(1.0);<br />
}<br />
}<br />
if( command == "unghost" )<br />
{<br />
llSetTimerEvent(0.0);<br />
}<br />
}<br />
sensor(integer i)<br />
{<br />
gGhostPrim = llDetectedKey(0);<br />
llSetTimerEvent(1.0); <br />
}<br />
no_sensor()<br />
{<br />
llInstantMessage(llGetCreator(),(string)gGhostPrim + " not found");<br />
}<br />
<br />
timer() <br />
{<br />
list p = llGetObjectDetails(gGhostPrim,[OBJECT_POS,OBJECT_ROT]);<br />
if( llGetListLength(p) == 0 ) <br />
{<br />
llSetTimerEvent(0.0);<br />
llInstantMessage(llGetCreator(),"Object Lost..");<br />
} else {<br />
llSetPos(llList2Vector(p,0));<br />
llSetRot(llList2Rot(p,1));<br />
}<br />
}<br />
}<br />
</lsl></div>Falados Kapuskashttps://wiki.secondlife.com/w/index.php?title=Deed_Tools&diff=69329Deed Tools2008-05-30T05:49:22Z<p>Falados Kapuskas: /* Commands */</p>
<hr />
<div>{{LSL Header}}<br />
==Directions==<br />
Put the following script in the root prim of the item you are about to Deed to Group.<br/><br />
'''Note:''' Make sure you are the Creator of the object you are deeding.<br />
<br />
==Syntax==<br />
<br />
/1'''<Name>''' '''<Command>''' '''<Parameters...>'''<br />
<br />
==Commands==<br />
<br />
===Help===<br />
Command: '''help'''<br/><br />
Lists the commands via Instant Message.<br />
<br />
===Kill===<br />
Command: '''kill'''<br/><br />
Instantly Kills the Deeded Object<br />
<br />
===Ghost===<br />
Command: '''ghost''' ''<Name/UUID>''<br/><br />
The deeded object will follow the object specified either by Name or UUID. Useful for repositioning the Deeded Object.<br />
<br />
Command: '''unghost'<br/><br />
Stops the Deeded object from following the other object.<br/><br />
'''Note:''' If the other object is deleted this command is auto-ran.<br />
<br />
===Pin===<br />
Command: '''pin''' ''<Number>''<br/><br />
Sets the Remote Load Script Pin to <Number>. Allows other scripts to load running scripts into the deeded object.<br />
<br />
Command: '''unpin'''<br/><br />
Disables remotely loaded scripts.<br />
<br />
===Drop===<br />
Command: '''drop'''<br/><br />
Allows items to be dropped into the Deeded object's inventory.<br />
<br />
Command: '''undrop'''<br/><br />
Disables items from being dropped into the Deeded object's inventory<br />
<br />
===Reset===<br />
Command: '''reset''' ''<Script>''<br/><br />
Resets the <Script> inside the Deeded object.<br />
<br />
===Run===<br />
Command: '''run''' ''<Script>''<br/><br />
Set the <Script> inside the Deeded object to Running.<br />
<br />
===Stop===<br />
Command: '''stop''' ''<Script>''<br/><br />
Stops the <Script> inside the Deeded object.<br />
<br />
==Example Commands==<br />
<pre><br />
/1MyObject kill<br />
/1MyObject ghost AnotherObject<br />
/1MyObject reset SomeScript<br />
/1<br />
</pre><br />
==DeedTools Script==<br />
<br />
<lsl><br />
integer CHANNEL = 1;<br />
key gGhostPrim;<br />
default <br />
{<br />
state_entry() <br />
{<br />
llListen(CHANNEL,"",llGetCreator(),"");<br />
llInstantMessage(llGetCreator(),"For help, type: /" + (string)CHANNEL + llGetObjectName() + " help\n");<br />
}<br />
listen(integer channel, string name, key id, string msg) <br />
{<br />
string name = llToLower(llGetObjectName());<br />
msg = msg;<br />
<br />
if( llSubStringIndex(llToLower(msg),name) != 0) return;<br />
msg = llStringTrim(llGetSubString(msg,llStringLength(name),-1),STRING_TRIM);<br />
<br />
list params = llParseString2List(msg,[" "],[]);<br />
string command = llToLower(llList2String(params,0));<br />
string param = llDumpList2String(llDeleteSubList(params,0,0)," ");<br />
<br />
params = [];<br />
<br />
if( command == "help" )<br />
{<br />
llInstantMessage(id,"\nSyntax: /"+ (string)CHANNEL + llGetObjectName() + " <command> <params>\n\n" +<br />
"kill: Kills the object\n" +<br />
"ghost <name/UUID>: Follow the object and rotate along with in\n" +<br />
"unghost: Stop following an object\n" +<br />
"pin #: Sets script loading pin to <#>\n" +<br />
"unpin: Removes loading script pin"<br />
);<br />
llInstantMessage(id,"\n"+<br />
"drop: Allows objects to be dropped into the prim\n" +<br />
"undrop: Prevents objects from being dropped into the prim\n" +<br />
"reset <script>: Resets the script named <script>\n" +<br />
"run <script>: Starts the script named <script>\n" +<br />
"stop <script>: Stopts the script named <script>"<br />
); <br />
}<br />
<br />
if( command == "kill" )<br />
{<br />
llInstantMessage(id,"Killing " + llGetObjectName() );<br />
llDie();<br />
}<br />
<br />
if( command == "move" || command == "rmove") <br />
{<br />
vector p = (vector)param;<br />
if( command == "rmove" ) p += llGetPos();<br />
if( llVecMag( p - llGetPos() ) > 100 ) <br />
{<br />
llInstantMessage(id,"Unable to move: Distance is too great");<br />
return;<br />
}<br />
while( llGetPos() != p ) {llSetPos(p);}<br />
}<br />
<br />
if( command == "rot" || command == "rrot" )<br />
{<br />
rotation r = llEuler2Rot((vector)param*DEG_TO_RAD);<br />
if( command == "rrot" ) r = llGetRot() * r;<br />
<br />
llSetRot(r);<br />
}<br />
if( command == "pin" )<br />
{<br />
llSetRemoteScriptAccessPin((integer)param);<br />
}<br />
if( command == "unpin" )<br />
{<br />
llSetRemoteScriptAccessPin(0);<br />
}<br />
if( command == "drop" ) llAllowInventoryDrop(TRUE);<br />
if( command == "undrop") llAllowInventoryDrop(FALSE);<br />
<br />
if( command == "reset" ) llResetOtherScript(param);<br />
if( command == "run" ) llSetScriptState(param,TRUE);<br />
if( command == "stop") llSetScriptState(param,FALSE);<br />
<br />
if( command == "ghost" )<br />
{<br />
gGhostPrim = param;<br />
if( llGetOwnerKey(param) == NULL_KEY ) <br />
{<br />
llSensor(gGhostPrim,"",ACTIVE|PASSIVE,20.0,PI);<br />
} else {<br />
llSetTimerEvent(1.0);<br />
}<br />
}<br />
if( command == "unghost" )<br />
{<br />
llSetTimerEvent(0.0);<br />
}<br />
}<br />
sensor(integer i)<br />
{<br />
gGhostPrim = llDetectedKey(0);<br />
llSetTimerEvent(1.0); <br />
}<br />
no_sensor()<br />
{<br />
llInstantMessage(llGetCreator(),(string)gGhostPrim + " not found");<br />
}<br />
<br />
timer() <br />
{<br />
list p = llGetObjectDetails(gGhostPrim,[OBJECT_POS,OBJECT_ROT]);<br />
if( llGetListLength(p) == 0 ) <br />
{<br />
llSetTimerEvent(0.0);<br />
llInstantMessage(llGetCreator(),"Object Lost..");<br />
} else {<br />
llSetPos(llList2Vector(p,0));<br />
llSetRot(llList2Rot(p,1));<br />
}<br />
}<br />
}<br />
</lsl></div>Falados Kapuskashttps://wiki.secondlife.com/w/index.php?title=Deed_Tools&diff=69328Deed Tools2008-05-30T05:48:44Z<p>Falados Kapuskas: /* Run */</p>
<hr />
<div>{{LSL Header}}<br />
==Directions==<br />
Put the following script in the root prim of the item you are about to Deed to Group.<br/><br />
'''Note:''' Make sure you are the Creator of the object you are deeding.<br />
<br />
==Syntax==<br />
<br />
/1'''<Name>''' '''<Command>''' '''<Parameters...>'''<br />
<br />
==Commands==<br />
<br />
===Help===<br />
Command: '''help'''<br />
Lists the commands via Instant Message.<br />
<br />
===Kill===<br />
Command: '''kill'''<br />
Instantly Kills the Deeded Object<br />
<br />
===Ghost===<br />
Command: '''ghost''' ''<Name/UUID>''<br />
The deeded object will follow the object specified either by Name or UUID. Useful for repositioning the Deeded Object.<br />
<br />
Command: '''unghost'<br />
Stops the Deeded object from following the other object.<br />
'''Note:''' If the other object is deleted this command is auto-ran.<br />
<br />
===Pin===<br />
Command: '''pin''' ''<Number>''<br />
Sets the Remote Load Script Pin to <Number>. Allows other scripts to load running scripts into the deeded object.<br />
<br />
Command: '''unpin'''<br />
Disables remotely loaded scripts.<br />
<br />
===Drop===<br />
Command: '''drop'''<br />
Allows items to be dropped into the Deeded object's inventory.<br />
<br />
Command: '''undrop'''<br />
Disables items from being dropped into the Deeded object's inventory<br />
<br />
===Reset===<br />
Command: '''reset''' ''<Script>''<br />
Resets the <Script> inside the Deeded object.<br />
<br />
===Run===<br />
Command: '''run''' ''<Script>''<br />
Set the <Script> inside the Deeded object to Running.<br />
<br />
===Stop===<br />
Command: '''stop''' ''<Script>''<br />
Stops the <Script> inside the Deeded object.<br />
<br />
==Example Commands==<br />
<pre><br />
/1MyObject kill<br />
/1MyObject ghost AnotherObject<br />
/1MyObject reset SomeScript<br />
/1<br />
</pre><br />
==DeedTools Script==<br />
<br />
<lsl><br />
integer CHANNEL = 1;<br />
key gGhostPrim;<br />
default <br />
{<br />
state_entry() <br />
{<br />
llListen(CHANNEL,"",llGetCreator(),"");<br />
llInstantMessage(llGetCreator(),"For help, type: /" + (string)CHANNEL + llGetObjectName() + " help\n");<br />
}<br />
listen(integer channel, string name, key id, string msg) <br />
{<br />
string name = llToLower(llGetObjectName());<br />
msg = msg;<br />
<br />
if( llSubStringIndex(llToLower(msg),name) != 0) return;<br />
msg = llStringTrim(llGetSubString(msg,llStringLength(name),-1),STRING_TRIM);<br />
<br />
list params = llParseString2List(msg,[" "],[]);<br />
string command = llToLower(llList2String(params,0));<br />
string param = llDumpList2String(llDeleteSubList(params,0,0)," ");<br />
<br />
params = [];<br />
<br />
if( command == "help" )<br />
{<br />
llInstantMessage(id,"\nSyntax: /"+ (string)CHANNEL + llGetObjectName() + " <command> <params>\n\n" +<br />
"kill: Kills the object\n" +<br />
"ghost <name/UUID>: Follow the object and rotate along with in\n" +<br />
"unghost: Stop following an object\n" +<br />
"pin #: Sets script loading pin to <#>\n" +<br />
"unpin: Removes loading script pin"<br />
);<br />
llInstantMessage(id,"\n"+<br />
"drop: Allows objects to be dropped into the prim\n" +<br />
"undrop: Prevents objects from being dropped into the prim\n" +<br />
"reset <script>: Resets the script named <script>\n" +<br />
"run <script>: Starts the script named <script>\n" +<br />
"stop <script>: Stopts the script named <script>"<br />
); <br />
}<br />
<br />
if( command == "kill" )<br />
{<br />
llInstantMessage(id,"Killing " + llGetObjectName() );<br />
llDie();<br />
}<br />
<br />
if( command == "move" || command == "rmove") <br />
{<br />
vector p = (vector)param;<br />
if( command == "rmove" ) p += llGetPos();<br />
if( llVecMag( p - llGetPos() ) > 100 ) <br />
{<br />
llInstantMessage(id,"Unable to move: Distance is too great");<br />
return;<br />
}<br />
while( llGetPos() != p ) {llSetPos(p);}<br />
}<br />
<br />
if( command == "rot" || command == "rrot" )<br />
{<br />
rotation r = llEuler2Rot((vector)param*DEG_TO_RAD);<br />
if( command == "rrot" ) r = llGetRot() * r;<br />
<br />
llSetRot(r);<br />
}<br />
if( command == "pin" )<br />
{<br />
llSetRemoteScriptAccessPin((integer)param);<br />
}<br />
if( command == "unpin" )<br />
{<br />
llSetRemoteScriptAccessPin(0);<br />
}<br />
if( command == "drop" ) llAllowInventoryDrop(TRUE);<br />
if( command == "undrop") llAllowInventoryDrop(FALSE);<br />
<br />
if( command == "reset" ) llResetOtherScript(param);<br />
if( command == "run" ) llSetScriptState(param,TRUE);<br />
if( command == "stop") llSetScriptState(param,FALSE);<br />
<br />
if( command == "ghost" )<br />
{<br />
gGhostPrim = param;<br />
if( llGetOwnerKey(param) == NULL_KEY ) <br />
{<br />
llSensor(gGhostPrim,"",ACTIVE|PASSIVE,20.0,PI);<br />
} else {<br />
llSetTimerEvent(1.0);<br />
}<br />
}<br />
if( command == "unghost" )<br />
{<br />
llSetTimerEvent(0.0);<br />
}<br />
}<br />
sensor(integer i)<br />
{<br />
gGhostPrim = llDetectedKey(0);<br />
llSetTimerEvent(1.0); <br />
}<br />
no_sensor()<br />
{<br />
llInstantMessage(llGetCreator(),(string)gGhostPrim + " not found");<br />
}<br />
<br />
timer() <br />
{<br />
list p = llGetObjectDetails(gGhostPrim,[OBJECT_POS,OBJECT_ROT]);<br />
if( llGetListLength(p) == 0 ) <br />
{<br />
llSetTimerEvent(0.0);<br />
llInstantMessage(llGetCreator(),"Object Lost..");<br />
} else {<br />
llSetPos(llList2Vector(p,0));<br />
llSetRot(llList2Rot(p,1));<br />
}<br />
}<br />
}<br />
</lsl></div>Falados Kapuskashttps://wiki.secondlife.com/w/index.php?title=Deed_Tools&diff=69327Deed Tools2008-05-30T05:44:01Z<p>Falados Kapuskas: /* Pin */</p>
<hr />
<div>{{LSL Header}}<br />
==Directions==<br />
Put the following script in the root prim of the item you are about to Deed to Group.<br/><br />
'''Note:''' Make sure you are the Creator of the object you are deeding.<br />
<br />
==Syntax==<br />
<br />
/1'''<Name>''' '''<Command>''' '''<Parameters...>'''<br />
<br />
==Commands==<br />
<br />
===Help===<br />
Command: '''help'''<br />
Lists the commands via Instant Message.<br />
<br />
===Kill===<br />
Command: '''kill'''<br />
Instantly Kills the Deeded Object<br />
<br />
===Ghost===<br />
Command: '''ghost''' ''<Name/UUID>''<br />
The deeded object will follow the object specified either by Name or UUID. Useful for repositioning the Deeded Object.<br />
<br />
Command: '''unghost'<br />
Stops the Deeded object from following the other object.<br />
'''Note:''' If the other object is deleted this command is auto-ran.<br />
<br />
===Pin===<br />
Command: '''pin''' ''<Number>''<br />
Sets the Remote Load Script Pin to <Number>. Allows other scripts to load running scripts into the deeded object.<br />
<br />
Command: '''unpin'''<br />
Disables remotely loaded scripts.<br />
<br />
===Drop===<br />
Command: '''drop'''<br />
Allows items to be dropped into the Deeded object's inventory.<br />
<br />
Command: '''undrop'''<br />
Disables items from being dropped into the Deeded object's inventory<br />
<br />
===Reset===<br />
Command: '''reset''' ''<Script>''<br />
Resets the <Script> inside the Deeded object.<br />
<br />
===Run===<br />
Command: '''run''' ''<Script>''<br />
Set the <Script> inside the Deeded object to Running.<br />
<br />
===Run===<br />
Command: '''stop''' ''<Script>''<br />
Stops the <Script> inside the Deeded object.<br />
<br />
==Example Commands==<br />
<pre><br />
/1MyObject kill<br />
/1MyObject ghost AnotherObject<br />
/1MyObject reset SomeScript<br />
/1<br />
</pre><br />
==DeedTools Script==<br />
<br />
<lsl><br />
integer CHANNEL = 1;<br />
key gGhostPrim;<br />
default <br />
{<br />
state_entry() <br />
{<br />
llListen(CHANNEL,"",llGetCreator(),"");<br />
llInstantMessage(llGetCreator(),"For help, type: /" + (string)CHANNEL + llGetObjectName() + " help\n");<br />
}<br />
listen(integer channel, string name, key id, string msg) <br />
{<br />
string name = llToLower(llGetObjectName());<br />
msg = msg;<br />
<br />
if( llSubStringIndex(llToLower(msg),name) != 0) return;<br />
msg = llStringTrim(llGetSubString(msg,llStringLength(name),-1),STRING_TRIM);<br />
<br />
list params = llParseString2List(msg,[" "],[]);<br />
string command = llToLower(llList2String(params,0));<br />
string param = llDumpList2String(llDeleteSubList(params,0,0)," ");<br />
<br />
params = [];<br />
<br />
if( command == "help" )<br />
{<br />
llInstantMessage(id,"\nSyntax: /"+ (string)CHANNEL + llGetObjectName() + " <command> <params>\n\n" +<br />
"kill: Kills the object\n" +<br />
"ghost <name/UUID>: Follow the object and rotate along with in\n" +<br />
"unghost: Stop following an object\n" +<br />
"pin #: Sets script loading pin to <#>\n" +<br />
"unpin: Removes loading script pin"<br />
);<br />
llInstantMessage(id,"\n"+<br />
"drop: Allows objects to be dropped into the prim\n" +<br />
"undrop: Prevents objects from being dropped into the prim\n" +<br />
"reset <script>: Resets the script named <script>\n" +<br />
"run <script>: Starts the script named <script>\n" +<br />
"stop <script>: Stopts the script named <script>"<br />
); <br />
}<br />
<br />
if( command == "kill" )<br />
{<br />
llInstantMessage(id,"Killing " + llGetObjectName() );<br />
llDie();<br />
}<br />
<br />
if( command == "move" || command == "rmove") <br />
{<br />
vector p = (vector)param;<br />
if( command == "rmove" ) p += llGetPos();<br />
if( llVecMag( p - llGetPos() ) > 100 ) <br />
{<br />
llInstantMessage(id,"Unable to move: Distance is too great");<br />
return;<br />
}<br />
while( llGetPos() != p ) {llSetPos(p);}<br />
}<br />
<br />
if( command == "rot" || command == "rrot" )<br />
{<br />
rotation r = llEuler2Rot((vector)param*DEG_TO_RAD);<br />
if( command == "rrot" ) r = llGetRot() * r;<br />
<br />
llSetRot(r);<br />
}<br />
if( command == "pin" )<br />
{<br />
llSetRemoteScriptAccessPin((integer)param);<br />
}<br />
if( command == "unpin" )<br />
{<br />
llSetRemoteScriptAccessPin(0);<br />
}<br />
if( command == "drop" ) llAllowInventoryDrop(TRUE);<br />
if( command == "undrop") llAllowInventoryDrop(FALSE);<br />
<br />
if( command == "reset" ) llResetOtherScript(param);<br />
if( command == "run" ) llSetScriptState(param,TRUE);<br />
if( command == "stop") llSetScriptState(param,FALSE);<br />
<br />
if( command == "ghost" )<br />
{<br />
gGhostPrim = param;<br />
if( llGetOwnerKey(param) == NULL_KEY ) <br />
{<br />
llSensor(gGhostPrim,"",ACTIVE|PASSIVE,20.0,PI);<br />
} else {<br />
llSetTimerEvent(1.0);<br />
}<br />
}<br />
if( command == "unghost" )<br />
{<br />
llSetTimerEvent(0.0);<br />
}<br />
}<br />
sensor(integer i)<br />
{<br />
gGhostPrim = llDetectedKey(0);<br />
llSetTimerEvent(1.0); <br />
}<br />
no_sensor()<br />
{<br />
llInstantMessage(llGetCreator(),(string)gGhostPrim + " not found");<br />
}<br />
<br />
timer() <br />
{<br />
list p = llGetObjectDetails(gGhostPrim,[OBJECT_POS,OBJECT_ROT]);<br />
if( llGetListLength(p) == 0 ) <br />
{<br />
llSetTimerEvent(0.0);<br />
llInstantMessage(llGetCreator(),"Object Lost..");<br />
} else {<br />
llSetPos(llList2Vector(p,0));<br />
llSetRot(llList2Rot(p,1));<br />
}<br />
}<br />
}<br />
</lsl></div>Falados Kapuskashttps://wiki.secondlife.com/w/index.php?title=Deed_Tools&diff=69326Deed Tools2008-05-30T05:43:49Z<p>Falados Kapuskas: /* Commands */</p>
<hr />
<div>{{LSL Header}}<br />
==Directions==<br />
Put the following script in the root prim of the item you are about to Deed to Group.<br/><br />
'''Note:''' Make sure you are the Creator of the object you are deeding.<br />
<br />
==Syntax==<br />
<br />
/1'''<Name>''' '''<Command>''' '''<Parameters...>'''<br />
<br />
==Commands==<br />
<br />
===Help===<br />
Command: '''help'''<br />
Lists the commands via Instant Message.<br />
<br />
===Kill===<br />
Command: '''kill'''<br />
Instantly Kills the Deeded Object<br />
<br />
===Ghost===<br />
Command: '''ghost''' ''<Name/UUID>''<br />
The deeded object will follow the object specified either by Name or UUID. Useful for repositioning the Deeded Object.<br />
<br />
Command: '''unghost'<br />
Stops the Deeded object from following the other object.<br />
'''Note:''' If the other object is deleted this command is auto-ran.<br />
<br />
===Pin===<br />
Command: '''pin''' ''<Number>''<br />
Sets the Remote Load Script Pin to <Number>. Allows other scripts to load running scripts into the deeded object.<br />
<br />
Command: '''unpin'''<br />
Disables remotely loaded scripts.<br />
<br />
<br />
===Drop===<br />
Command: '''drop'''<br />
Allows items to be dropped into the Deeded object's inventory.<br />
<br />
Command: '''undrop'''<br />
Disables items from being dropped into the Deeded object's inventory<br />
<br />
===Reset===<br />
Command: '''reset''' ''<Script>''<br />
Resets the <Script> inside the Deeded object.<br />
<br />
===Run===<br />
Command: '''run''' ''<Script>''<br />
Set the <Script> inside the Deeded object to Running.<br />
<br />
===Run===<br />
Command: '''stop''' ''<Script>''<br />
Stops the <Script> inside the Deeded object.<br />
<br />
==Example Commands==<br />
<pre><br />
/1MyObject kill<br />
/1MyObject ghost AnotherObject<br />
/1MyObject reset SomeScript<br />
/1<br />
</pre><br />
==DeedTools Script==<br />
<br />
<lsl><br />
integer CHANNEL = 1;<br />
key gGhostPrim;<br />
default <br />
{<br />
state_entry() <br />
{<br />
llListen(CHANNEL,"",llGetCreator(),"");<br />
llInstantMessage(llGetCreator(),"For help, type: /" + (string)CHANNEL + llGetObjectName() + " help\n");<br />
}<br />
listen(integer channel, string name, key id, string msg) <br />
{<br />
string name = llToLower(llGetObjectName());<br />
msg = msg;<br />
<br />
if( llSubStringIndex(llToLower(msg),name) != 0) return;<br />
msg = llStringTrim(llGetSubString(msg,llStringLength(name),-1),STRING_TRIM);<br />
<br />
list params = llParseString2List(msg,[" "],[]);<br />
string command = llToLower(llList2String(params,0));<br />
string param = llDumpList2String(llDeleteSubList(params,0,0)," ");<br />
<br />
params = [];<br />
<br />
if( command == "help" )<br />
{<br />
llInstantMessage(id,"\nSyntax: /"+ (string)CHANNEL + llGetObjectName() + " <command> <params>\n\n" +<br />
"kill: Kills the object\n" +<br />
"ghost <name/UUID>: Follow the object and rotate along with in\n" +<br />
"unghost: Stop following an object\n" +<br />
"pin #: Sets script loading pin to <#>\n" +<br />
"unpin: Removes loading script pin"<br />
);<br />
llInstantMessage(id,"\n"+<br />
"drop: Allows objects to be dropped into the prim\n" +<br />
"undrop: Prevents objects from being dropped into the prim\n" +<br />
"reset <script>: Resets the script named <script>\n" +<br />
"run <script>: Starts the script named <script>\n" +<br />
"stop <script>: Stopts the script named <script>"<br />
); <br />
}<br />
<br />
if( command == "kill" )<br />
{<br />
llInstantMessage(id,"Killing " + llGetObjectName() );<br />
llDie();<br />
}<br />
<br />
if( command == "move" || command == "rmove") <br />
{<br />
vector p = (vector)param;<br />
if( command == "rmove" ) p += llGetPos();<br />
if( llVecMag( p - llGetPos() ) > 100 ) <br />
{<br />
llInstantMessage(id,"Unable to move: Distance is too great");<br />
return;<br />
}<br />
while( llGetPos() != p ) {llSetPos(p);}<br />
}<br />
<br />
if( command == "rot" || command == "rrot" )<br />
{<br />
rotation r = llEuler2Rot((vector)param*DEG_TO_RAD);<br />
if( command == "rrot" ) r = llGetRot() * r;<br />
<br />
llSetRot(r);<br />
}<br />
if( command == "pin" )<br />
{<br />
llSetRemoteScriptAccessPin((integer)param);<br />
}<br />
if( command == "unpin" )<br />
{<br />
llSetRemoteScriptAccessPin(0);<br />
}<br />
if( command == "drop" ) llAllowInventoryDrop(TRUE);<br />
if( command == "undrop") llAllowInventoryDrop(FALSE);<br />
<br />
if( command == "reset" ) llResetOtherScript(param);<br />
if( command == "run" ) llSetScriptState(param,TRUE);<br />
if( command == "stop") llSetScriptState(param,FALSE);<br />
<br />
if( command == "ghost" )<br />
{<br />
gGhostPrim = param;<br />
if( llGetOwnerKey(param) == NULL_KEY ) <br />
{<br />
llSensor(gGhostPrim,"",ACTIVE|PASSIVE,20.0,PI);<br />
} else {<br />
llSetTimerEvent(1.0);<br />
}<br />
}<br />
if( command == "unghost" )<br />
{<br />
llSetTimerEvent(0.0);<br />
}<br />
}<br />
sensor(integer i)<br />
{<br />
gGhostPrim = llDetectedKey(0);<br />
llSetTimerEvent(1.0); <br />
}<br />
no_sensor()<br />
{<br />
llInstantMessage(llGetCreator(),(string)gGhostPrim + " not found");<br />
}<br />
<br />
timer() <br />
{<br />
list p = llGetObjectDetails(gGhostPrim,[OBJECT_POS,OBJECT_ROT]);<br />
if( llGetListLength(p) == 0 ) <br />
{<br />
llSetTimerEvent(0.0);<br />
llInstantMessage(llGetCreator(),"Object Lost..");<br />
} else {<br />
llSetPos(llList2Vector(p,0));<br />
llSetRot(llList2Rot(p,1));<br />
}<br />
}<br />
}<br />
</lsl></div>Falados Kapuskashttps://wiki.secondlife.com/w/index.php?title=Deed_Tools&diff=69325Deed Tools2008-05-30T05:40:35Z<p>Falados Kapuskas: /* Directions */</p>
<hr />
<div>{{LSL Header}}<br />
==Directions==<br />
Put the following script in the root prim of the item you are about to Deed to Group.<br/><br />
'''Note:''' Make sure you are the Creator of the object you are deeding.<br />
<br />
==Syntax==<br />
<br />
/1'''<Name>''' '''<Command>''' '''<Parameters...>'''<br />
<br />
==Commands==<br />
===Kill===<br />
Command: '''kill'''<br />
<br />
Instantly Kills the Deeded Object<br />
<br />
===Ghost===<br />
Command: '''ghost''' ''<Name/UUID>''<br />
The deeded object will follow the object specified either by Name or UUID. Useful for repositioning the Deeded Object.<br />
<br />
Command: '''unghost'<br />
Stops the Deeded object from following the other object.<br />
'''Note:''' If the other object is deleted this command is auto-ran.<br />
<br />
===Pin===<br />
Command: '''pin''' ''<Number>''<br />
Sets the Remote Load Script Pin to <Number>. Allows other scripts to load running scripts into the deeded object.<br />
<br />
Command: '''unpin'''<br />
Disables remotely loaded scripts.<br />
<br />
<br />
===Drop===<br />
Command: '''drop'''<br />
Allows items to be dropped into the Deeded object's inventory.<br />
<br />
Command: '''undrop'''<br />
Disables items from being dropped into the Deeded object's inventory<br />
<br />
===Reset===<br />
Command: '''reset''' ''<Script>''<br />
Resets the <Script> inside the Deeded object.<br />
<br />
===Run===<br />
Command: '''run''' ''<Script>''<br />
Set the <Script> inside the Deeded object to Running.<br />
<br />
===Run===<br />
Command: '''stop''' ''<Script>''<br />
Stops the <Script> inside the Deeded object.<br />
<br />
==Example Commands==<br />
<pre><br />
/1MyObject kill<br />
/1MyObject ghost AnotherObject<br />
/1MyObject reset SomeScript<br />
/1<br />
</pre><br />
==DeedTools Script==<br />
<br />
<lsl><br />
integer CHANNEL = 1;<br />
key gGhostPrim;<br />
default <br />
{<br />
state_entry() <br />
{<br />
llListen(CHANNEL,"",llGetCreator(),"");<br />
llInstantMessage(llGetCreator(),"For help, type: /" + (string)CHANNEL + llGetObjectName() + " help\n");<br />
}<br />
listen(integer channel, string name, key id, string msg) <br />
{<br />
string name = llToLower(llGetObjectName());<br />
msg = msg;<br />
<br />
if( llSubStringIndex(llToLower(msg),name) != 0) return;<br />
msg = llStringTrim(llGetSubString(msg,llStringLength(name),-1),STRING_TRIM);<br />
<br />
list params = llParseString2List(msg,[" "],[]);<br />
string command = llToLower(llList2String(params,0));<br />
string param = llDumpList2String(llDeleteSubList(params,0,0)," ");<br />
<br />
params = [];<br />
<br />
if( command == "help" )<br />
{<br />
llInstantMessage(id,"\nSyntax: /"+ (string)CHANNEL + llGetObjectName() + " <command> <params>\n\n" +<br />
"kill: Kills the object\n" +<br />
"ghost <name/UUID>: Follow the object and rotate along with in\n" +<br />
"unghost: Stop following an object\n" +<br />
"pin #: Sets script loading pin to <#>\n" +<br />
"unpin: Removes loading script pin"<br />
);<br />
llInstantMessage(id,"\n"+<br />
"drop: Allows objects to be dropped into the prim\n" +<br />
"undrop: Prevents objects from being dropped into the prim\n" +<br />
"reset <script>: Resets the script named <script>\n" +<br />
"run <script>: Starts the script named <script>\n" +<br />
"stop <script>: Stopts the script named <script>"<br />
); <br />
}<br />
<br />
if( command == "kill" )<br />
{<br />
llInstantMessage(id,"Killing " + llGetObjectName() );<br />
llDie();<br />
}<br />
<br />
if( command == "move" || command == "rmove") <br />
{<br />
vector p = (vector)param;<br />
if( command == "rmove" ) p += llGetPos();<br />
if( llVecMag( p - llGetPos() ) > 100 ) <br />
{<br />
llInstantMessage(id,"Unable to move: Distance is too great");<br />
return;<br />
}<br />
while( llGetPos() != p ) {llSetPos(p);}<br />
}<br />
<br />
if( command == "rot" || command == "rrot" )<br />
{<br />
rotation r = llEuler2Rot((vector)param*DEG_TO_RAD);<br />
if( command == "rrot" ) r = llGetRot() * r;<br />
<br />
llSetRot(r);<br />
}<br />
if( command == "pin" )<br />
{<br />
llSetRemoteScriptAccessPin((integer)param);<br />
}<br />
if( command == "unpin" )<br />
{<br />
llSetRemoteScriptAccessPin(0);<br />
}<br />
if( command == "drop" ) llAllowInventoryDrop(TRUE);<br />
if( command == "undrop") llAllowInventoryDrop(FALSE);<br />
<br />
if( command == "reset" ) llResetOtherScript(param);<br />
if( command == "run" ) llSetScriptState(param,TRUE);<br />
if( command == "stop") llSetScriptState(param,FALSE);<br />
<br />
if( command == "ghost" )<br />
{<br />
gGhostPrim = param;<br />
if( llGetOwnerKey(param) == NULL_KEY ) <br />
{<br />
llSensor(gGhostPrim,"",ACTIVE|PASSIVE,20.0,PI);<br />
} else {<br />
llSetTimerEvent(1.0);<br />
}<br />
}<br />
if( command == "unghost" )<br />
{<br />
llSetTimerEvent(0.0);<br />
}<br />
}<br />
sensor(integer i)<br />
{<br />
gGhostPrim = llDetectedKey(0);<br />
llSetTimerEvent(1.0); <br />
}<br />
no_sensor()<br />
{<br />
llInstantMessage(llGetCreator(),(string)gGhostPrim + " not found");<br />
}<br />
<br />
timer() <br />
{<br />
list p = llGetObjectDetails(gGhostPrim,[OBJECT_POS,OBJECT_ROT]);<br />
if( llGetListLength(p) == 0 ) <br />
{<br />
llSetTimerEvent(0.0);<br />
llInstantMessage(llGetCreator(),"Object Lost..");<br />
} else {<br />
llSetPos(llList2Vector(p,0));<br />
llSetRot(llList2Rot(p,1));<br />
}<br />
}<br />
}<br />
</lsl></div>Falados Kapuskashttps://wiki.secondlife.com/w/index.php?title=Deed_Tools&diff=69324Deed Tools2008-05-30T05:39:54Z<p>Falados Kapuskas: </p>
<hr />
<div>{{LSL Header}}<br />
==Directions==<br />
Put the following script in the root prim of the item you are about to Deed to Group.<br />
'''Note:''' Make sure you are the Creator of the object you are deeding.<br />
<br />
==Syntax==<br />
<br />
/1'''<Name>''' '''<Command>''' '''<Parameters...>'''<br />
<br />
==Commands==<br />
===Kill===<br />
Command: '''kill'''<br />
<br />
Instantly Kills the Deeded Object<br />
<br />
===Ghost===<br />
Command: '''ghost''' ''<Name/UUID>''<br />
The deeded object will follow the object specified either by Name or UUID. Useful for repositioning the Deeded Object.<br />
<br />
Command: '''unghost'<br />
Stops the Deeded object from following the other object.<br />
'''Note:''' If the other object is deleted this command is auto-ran.<br />
<br />
===Pin===<br />
Command: '''pin''' ''<Number>''<br />
Sets the Remote Load Script Pin to <Number>. Allows other scripts to load running scripts into the deeded object.<br />
<br />
Command: '''unpin'''<br />
Disables remotely loaded scripts.<br />
<br />
<br />
===Drop===<br />
Command: '''drop'''<br />
Allows items to be dropped into the Deeded object's inventory.<br />
<br />
Command: '''undrop'''<br />
Disables items from being dropped into the Deeded object's inventory<br />
<br />
===Reset===<br />
Command: '''reset''' ''<Script>''<br />
Resets the <Script> inside the Deeded object.<br />
<br />
===Run===<br />
Command: '''run''' ''<Script>''<br />
Set the <Script> inside the Deeded object to Running.<br />
<br />
===Run===<br />
Command: '''stop''' ''<Script>''<br />
Stops the <Script> inside the Deeded object.<br />
<br />
==Example Commands==<br />
<pre><br />
/1MyObject kill<br />
/1MyObject ghost AnotherObject<br />
/1MyObject reset SomeScript<br />
/1<br />
</pre><br />
==DeedTools Script==<br />
<br />
<lsl><br />
integer CHANNEL = 1;<br />
key gGhostPrim;<br />
default <br />
{<br />
state_entry() <br />
{<br />
llListen(CHANNEL,"",llGetCreator(),"");<br />
llInstantMessage(llGetCreator(),"For help, type: /" + (string)CHANNEL + llGetObjectName() + " help\n");<br />
}<br />
listen(integer channel, string name, key id, string msg) <br />
{<br />
string name = llToLower(llGetObjectName());<br />
msg = msg;<br />
<br />
if( llSubStringIndex(llToLower(msg),name) != 0) return;<br />
msg = llStringTrim(llGetSubString(msg,llStringLength(name),-1),STRING_TRIM);<br />
<br />
list params = llParseString2List(msg,[" "],[]);<br />
string command = llToLower(llList2String(params,0));<br />
string param = llDumpList2String(llDeleteSubList(params,0,0)," ");<br />
<br />
params = [];<br />
<br />
if( command == "help" )<br />
{<br />
llInstantMessage(id,"\nSyntax: /"+ (string)CHANNEL + llGetObjectName() + " <command> <params>\n\n" +<br />
"kill: Kills the object\n" +<br />
"ghost <name/UUID>: Follow the object and rotate along with in\n" +<br />
"unghost: Stop following an object\n" +<br />
"pin #: Sets script loading pin to <#>\n" +<br />
"unpin: Removes loading script pin"<br />
);<br />
llInstantMessage(id,"\n"+<br />
"drop: Allows objects to be dropped into the prim\n" +<br />
"undrop: Prevents objects from being dropped into the prim\n" +<br />
"reset <script>: Resets the script named <script>\n" +<br />
"run <script>: Starts the script named <script>\n" +<br />
"stop <script>: Stopts the script named <script>"<br />
); <br />
}<br />
<br />
if( command == "kill" )<br />
{<br />
llInstantMessage(id,"Killing " + llGetObjectName() );<br />
llDie();<br />
}<br />
<br />
if( command == "move" || command == "rmove") <br />
{<br />
vector p = (vector)param;<br />
if( command == "rmove" ) p += llGetPos();<br />
if( llVecMag( p - llGetPos() ) > 100 ) <br />
{<br />
llInstantMessage(id,"Unable to move: Distance is too great");<br />
return;<br />
}<br />
while( llGetPos() != p ) {llSetPos(p);}<br />
}<br />
<br />
if( command == "rot" || command == "rrot" )<br />
{<br />
rotation r = llEuler2Rot((vector)param*DEG_TO_RAD);<br />
if( command == "rrot" ) r = llGetRot() * r;<br />
<br />
llSetRot(r);<br />
}<br />
if( command == "pin" )<br />
{<br />
llSetRemoteScriptAccessPin((integer)param);<br />
}<br />
if( command == "unpin" )<br />
{<br />
llSetRemoteScriptAccessPin(0);<br />
}<br />
if( command == "drop" ) llAllowInventoryDrop(TRUE);<br />
if( command == "undrop") llAllowInventoryDrop(FALSE);<br />
<br />
if( command == "reset" ) llResetOtherScript(param);<br />
if( command == "run" ) llSetScriptState(param,TRUE);<br />
if( command == "stop") llSetScriptState(param,FALSE);<br />
<br />
if( command == "ghost" )<br />
{<br />
gGhostPrim = param;<br />
if( llGetOwnerKey(param) == NULL_KEY ) <br />
{<br />
llSensor(gGhostPrim,"",ACTIVE|PASSIVE,20.0,PI);<br />
} else {<br />
llSetTimerEvent(1.0);<br />
}<br />
}<br />
if( command == "unghost" )<br />
{<br />
llSetTimerEvent(0.0);<br />
}<br />
}<br />
sensor(integer i)<br />
{<br />
gGhostPrim = llDetectedKey(0);<br />
llSetTimerEvent(1.0); <br />
}<br />
no_sensor()<br />
{<br />
llInstantMessage(llGetCreator(),(string)gGhostPrim + " not found");<br />
}<br />
<br />
timer() <br />
{<br />
list p = llGetObjectDetails(gGhostPrim,[OBJECT_POS,OBJECT_ROT]);<br />
if( llGetListLength(p) == 0 ) <br />
{<br />
llSetTimerEvent(0.0);<br />
llInstantMessage(llGetCreator(),"Object Lost..");<br />
} else {<br />
llSetPos(llList2Vector(p,0));<br />
llSetRot(llList2Rot(p,1));<br />
}<br />
}<br />
}<br />
</lsl></div>Falados Kapuskashttps://wiki.secondlife.com/w/index.php?title=Deed_Tools&diff=69323Deed Tools2008-05-30T05:07:30Z<p>Falados Kapuskas: New page: <lsl> integer CHANNEL = 1; key gGhostPrim; default { state_entry() { llListen(CHANNEL,"",llGetCreator(),""); llInstantMessage(llGetCreator(),"For help, type: /" +...</p>
<hr />
<div><lsl><br />
integer CHANNEL = 1;<br />
key gGhostPrim;<br />
default <br />
{<br />
state_entry() <br />
{<br />
llListen(CHANNEL,"",llGetCreator(),"");<br />
llInstantMessage(llGetCreator(),"For help, type: /" + (string)CHANNEL + llGetObjectName() + " help\n");<br />
}<br />
listen(integer channel, string name, key id, string msg) <br />
{<br />
string name = llToLower(llGetObjectName());<br />
msg = msg;<br />
<br />
if( llSubStringIndex(llToLower(msg),name) != 0) return;<br />
msg = llStringTrim(llGetSubString(msg,llStringLength(name),-1),STRING_TRIM);<br />
<br />
list params = llParseString2List(msg,[" "],[]);<br />
string command = llToLower(llList2String(params,0));<br />
string param = llDumpList2String(llDeleteSubList(params,0,0)," ");<br />
<br />
params = [];<br />
<br />
if( command == "help" )<br />
{<br />
llInstantMessage(id,"\nSyntax: /"+ (string)CHANNEL + llGetObjectName() + " <command> <params>\n\n" +<br />
"kill: Kills the object\n" +<br />
"ghost <name/UUID>: Follow the object and rotate along with in\n" +<br />
"unghost: Stop following an object\n" +<br />
"pin #: Sets script loading pin to <#>\n" +<br />
"unpin: Removes loading script pin"<br />
);<br />
llInstantMessage(id,"\n"+<br />
"drop: Allows objects to be dropped into the prim\n" +<br />
"undrop: Prevents objects from being dropped into the prim\n" +<br />
"reset <script>: Resets the script named <script>\n" +<br />
"run <script>: Starts the script named <script>\n" +<br />
"stop <script>: Stopts the script named <script>"<br />
); <br />
}<br />
<br />
if( command == "kill" )<br />
{<br />
llInstantMessage(id,"Killing " + llGetObjectName() );<br />
llDie();<br />
}<br />
<br />
if( command == "move" || command == "rmove") <br />
{<br />
vector p = (vector)param;<br />
if( command == "rmove" ) p += llGetPos();<br />
if( llVecMag( p - llGetPos() ) > 100 ) <br />
{<br />
llInstantMessage(id,"Unable to move: Distance is too great");<br />
return;<br />
}<br />
while( llGetPos() != p ) {llSetPos(p);}<br />
}<br />
<br />
if( command == "rot" || command == "rrot" )<br />
{<br />
rotation r = llEuler2Rot((vector)param*DEG_TO_RAD);<br />
if( command == "rrot" ) r = llGetRot() * r;<br />
<br />
llSetRot(r);<br />
}<br />
if( command == "pin" )<br />
{<br />
llSetRemoteScriptAccessPin((integer)param);<br />
}<br />
if( command == "unpin" )<br />
{<br />
llSetRemoteScriptAccessPin(0);<br />
}<br />
if( command == "drop" ) llAllowInventoryDrop(TRUE);<br />
if( command == "undrop") llAllowInventoryDrop(FALSE);<br />
<br />
if( command == "reset" ) llResetOtherScript(param);<br />
if( command == "run" ) llSetScriptState(param,TRUE);<br />
if( command == "stop") llSetScriptState(param,FALSE);<br />
<br />
if( command == "ghost" )<br />
{<br />
gGhostPrim = param;<br />
if( llGetOwnerKey(param) == NULL_KEY ) <br />
{<br />
llSensor(gGhostPrim,"",ACTIVE|PASSIVE,20.0,PI);<br />
} else {<br />
llSetTimerEvent(1.0);<br />
}<br />
}<br />
if( command == "unghost" )<br />
{<br />
llSetTimerEvent(0.0);<br />
}<br />
}<br />
sensor(integer i)<br />
{<br />
gGhostPrim = llDetectedKey(0);<br />
llSetTimerEvent(1.0); <br />
}<br />
no_sensor()<br />
{<br />
llInstantMessage(llGetCreator(),(string)gGhostPrim + " not found");<br />
}<br />
<br />
timer() <br />
{<br />
list p = llGetObjectDetails(gGhostPrim,[OBJECT_POS,OBJECT_ROT]);<br />
if( llGetListLength(p) == 0 ) <br />
{<br />
llSetTimerEvent(0.0);<br />
llInstantMessage(llGetCreator(),"Object Lost..");<br />
} else {<br />
llSetPos(llList2Vector(p,0));<br />
llSetRot(llList2Rot(p,1));<br />
}<br />
}<br />
}<br />
</lsl></div>Falados Kapuskashttps://wiki.secondlife.com/w/index.php?title=Category:LSL_Library&diff=69322Category:LSL Library2008-05-30T05:04:30Z<p>Falados Kapuskas: /* LSL Script Library */</p>
<hr />
<div>{{Multi-lang}}{{LSL Header}}{{RightToc}}<br />
==Script Library==<br />
<br />
<div id="box"><br />
<div style="padding: 0.5em 0.5em 1.5em"><br />
Come to this page to see complex examples that show how to combine parts of LSL.<br />
<br />
Go to the [[:Category:LSL Examples|LSL Examples]] page to see brief examples of how to use parts of LSL <br />
<br />
Why collect complex examples here? Well, ...<br />
<br />
There are many [[script|scripts]] that have become buried in the [http://forums.secondlife.com/forumdisplay.php?f=15 Scripting Library forum], were lost with the death of the scripting forums, or sit idle in [[inventory|inventories]] that could be useful and should be more accessible.<br />
<br />
Other scripters may be in the same situation. This wiki is a well-suited medium for a script library. Feel free to add your scripts to the script library by creating new pages for them and linking to those pages here.<br />
<br />
Note that there are many more scripts in the LSL Library here, but you can't get to them if you don't know they exist, because they are subpages now, instead of an automatically updated category. Good luck searching.<br />
</div><br />
</div><br />
<br />
<div id="box"><br />
<br />
== Rules for posting: ==<br />
<div style="padding: 0.5em"><br />
#Your script must be tested and working. If it's not, stick it in your user-space until it is. This is a list of working, usable scripts.<br />
#Add a link to your script's page here. Link back to this page from your script's page. Start your page with <nowiki>{{LSL Header}}</nowiki>.<br />
#Do not add scripts that duplicate the same functionality as an existing script or built in {{LSLGC|Functions|function}}. If yours does, explain why.<br />
#Do not list simple scripts here. Include those among the [[:Category:LSL Examples|LSL Examples]] instead.<br />
</div></div><br />
<br />
<div id="box"><br />
==LSL Script Library==<br />
<br />
{| {{Prettytable}}<br />
|-<br />
|{{Hl2}}| '''Name'''<br />
|{{Hl2}}| '''Creator'''<br />
|{{Hl2}}| '''Description'''<br />
|-<br />
||[[3D Radar]]<br />
||[[User:Jesse Barnett|Jesse Barnett]]<br />
||Rezzes a ball for each avatar in range. Each ball tracks it's own AV and displays distance.<br />
|-<br />
||[[AntiDelay Node]]<br />
||[[User:Xaviar Czervik|Xaviar Czervik]]<br />
||Uses llMessageLinked to stop those pesky delays.<br />
|-<br />
||[[AO Overriding Pose Ball]]<br />
||[[User:Jesse Barnett|Jesse Barnett]]<br />
||No more turning your AO off and on when you sit down<br />
|-<br />
||[[Basic Encryption Modules]]<br />
||[[User:Beverly Larkin|Beverly Larkin]]<br />
||Basic encryption scripts, allows you to encrypt a float and shout it to another prim on a randomly chosen channel.<br />
|-<br />
||[[Binary Clock v1.1|Binary Clock]]<br />
||[[User:Fox Diller|Fox Diller]]<br />
||A Binary Clock.<br />
<br />
|-<br />
||[[Builders Buddy|Builder's Buddy Tool]]<br />
||[[User:Newfie Pendragon|Newfie Pendragon]]<br />
||Script to easily move/rotate large builds that exceed the linkable size limit (30 meters).<br />
|-<br />
||[[Camera Sync]]<br />
||[[User:Meyermagic Salome|Meyermagic Salome]] and [[User:Nomad Padar|Nomad Padar]]<br />
||A system to synchronize the cameras of two avatars.<br />
|-<br />
||[[Chatbot]]<br />
||Anonymous<br />
||Compile and run the LSL you type on a channel, faster than you can thru the 2007-08 SL GUI.<br />
|-<br />
||[[Chat Logger (GPL)]]<br />
||[[User:Nobody Fugazi|Nobody Fugazi]]<br />
||Chat logger which requests permission from participants before recording them.<br />
|-<br />
||[[Chat_Relay|Chat Relay]]<br />
||[[User:grumble Loudon|grumble Loudon]]<br />
||A Chat relay which can be routed using a path header and won't echo.<br />
|-<br />
||[[Code Racer]]<br />
||Anonymous<br />
||Race two versions of code forever, to see which runs faster.<br />
|-<br />
||[[Code Sizer]]<br />
||Anonymous<br />
||Count the bytes compiled from source code, to measure how to write small code.<br />
|-<br />
||[[Color conversion scripts|Color Conversion]]<br />
||[[User:Sally LaSalle|Sally LaSalle]]<br />
||Convert between Red Green Blue (RGB) and Hue Saturation Value (HSV).<br />
|-<br />
||[[Library Combined Library|Combined Library]]<br />
||[[User:Strife Onizuka|Strife Onizuka]]<br />
||Library of mostly encoding and decoding functions, some more useful then others.<br />
* String functions: Replace / Trim right / Trim left / Trim both<br />
* Unicode conversion: UTF8 to Unicode / Unicode to UTF8<br />
* List functions: Replace / Compare<br />
|-<br />
||[[Computer:jaycoonlanguage]]<br />
||[[User:jayco121 Bing|jayco121 Bing]]<br />
|| A language written in LSL that is meant for my computer (available at the shop).<br />
|-<br />
||[[Library_Chat_Relay|Conversation Relay]]<br />
||[[User:Jippen Faddoul|Jippen Faddoul]]<br />
||Chat relay which requests permission from participants before relaying their messages. Also includes their attachments. (ToS compliant).<br />
|-<br />
||[[Curtain script]]<br />
||[[User:Zilla Larsson|Zilla Larsson]]<br />
||A simple script to retract/stretch curtains, blinds, bedcovers and more<br />
|-<br />
||[[Dataserver API]]<br />
||[[User:Revolution Perenti|Revolution Perenti]]<br />
||Dataserver Framework for Notecards.<br />
|-<br />
||[[Date Library]]<br />
||[[User:Corto Maltese|Corto Maltese]]<br />
|| Date library, based on number of day since march 3rd 1600, can be used to calculate weekday, date differences, and date offset, and date formating.<br />
|-<br />
||[[Day of the Week]]<br />
||[[User:DoteDote Edison|DoteDote Edison]]<br />
||Function to get day of the week from [[llGetUnixTime]].<br />
|-<br />
||[[Deed Tools]]<br />
||[[User:Falados Kapuskas|Falados Kapuskas]]<br />
||Tools that allow the creator to modify Group-Owned (Deeded) Objects via chat.<br />
|-<br />
||[[Describe Chatter]]<br />
||Anonymous<br />
||Chat to see yourself as others do.<br />
|-<br />
||[[Dialog Control]]<br />
||[[User:Nargus Asturias|Nargus Asturias]]<br />
|| A (not-so) simple dialog control script. Call dialog and receive selected value via link_message(), with built-in timer and link_message() notification on time out. Supports multi-pages dialog and numeric property dialog. Button text and dialog's returned value can differ.<br />
|-<br />
||[[Dialog Menus Control]]<br />
||[[User:Nargus Asturias|Nargus Asturias]]<br />
|| An extension to Nargus Dialog Control. This menus control allow multi-level menus through SL dialog system. It can also recall last used menus. Menus are saved and pre-formatted for faster access. Though it is not the fastest, nor most memory efficient, but it should make it easier to use.<br />
|-<br />
||[[Dialog NumberPad|Dialog Number Pad]]<br />
||[[User:DoteDote Edison|DoteDote Edison]]<br />
||Use a dialog to accept positive integer input from users.<br />
|-<br />
||[[Efficiency Tester]]<br />
||[[User:Xaviar Czervik|Xaviar Czervik]]<br />
||Tests the speed of a function.<br />
|-<br />
||[[Email-to-IM|Email2IM]]<br />
||[[User:DoteDote Edison|DoteDote Edison]]<br />
||Send IMs to SL friends via email (translate emails from friends into IMs).<br />
|-<br />
||[[Fix Small Prims|Fix_Small_Prims]]<br />
||[[User:Emma Nowhere|Emma Nowhere]]<br />
||Finds and adjusts the smallest prims in a linkset so that it can be scaled down further.<br />
|-<br />
||[[Float2Hex]]<br />
||[[User:Strife Onizuka|Strife Onizuka]]<br />
||Very useful for transporting [[float|floats]].<br />
|-<br />
||[[Follower (script)|Follower]]<br />
||Unknown, uploaded by [[User:Slik Swindlehurst|Slik Swindlehurst]]<br />
||Makes an object follow the nearest person. Do not use for [[grief|griefing]].<br />
|-<br />
||[[Geometric|Geometric Library]]<br />
||[[User:Nexii_Malthus|Nexii Malthus]]<br />
||A substantial amount of various geometric functions for intersection and other purposes of 3D maths.<br />
|-<br />
||[[GetTimestampOffset]]<br />
||[[User:Siann_Beck|Siann Beck]]<br />
||Returns llGetTimestamp() with an hour offset.<br />
|-<br />
||[[Give InvItem every n hours]]<br />
||[[User:Criz Collins|Criz Collins]]<br />
||Will give an inventory item on touch only every n hours, even if somebody touches the object more than once. <br />
|-<br />
||[[Google Charts]]<br />
||[[User:Dedric Mauriac|Dedric Mauriac]]<br />
||Create links to display raw data as a chart image.<br />
|-<br />
||[[Group Privacy]]<br />
||[[User:Chance Unknown|Chance Unknown]]<br />
||Security device to insure members of a group can have a private area. Deactivates when nobody present.<br />
|-<br />
||[[Hello Avatar]]<br />
||Linden Lab<br />
||SL's default script.<br />
|-<br />
||[[High Altitude Rezzer|High Altitude Rezzer]]<br />
||[[User:Jesse Barnett|Jesse Barnett]]<br />
||Vehicle that goes straight up and then rezzes objects up to 4,096 meters.<br />
|-<br />
||[[Holodeck]]<br />
||[[User:Revolution Perenti|Revolution Perenti]]<br />
||Home Rezzing System (Open Source).<br />
|-<br />
||[[Intra-Region Update Server]]<br />
||[[User:Emma_Nowhere|Emma Nowhere]]<br />
||Centrally update objects such as Freeview screens or teleport pads within a region that are configured by notecards or contain modifiable objects or media assets.<br />
|-<br />
||[[Interpolation|Interpolation Library]]<br />
||[[User:Nexii_Malthus|Nexii Malthus]]<br />
||A small set of interpolation functions.<br />
|-<br />
||[[Inventory Menu]]<br />
||[[User:Revolution Perenti|Revolution Perenti]]<br />
||Inventory Based Menu System.<br />
|-<br />
||[[iTunes RPC Email|iTunes RPC]]<br />
||[[User:Fox Diller|Fox Diller]]<br />
||iTunes RPC via LSL [[llEmail]] and [[llRemoteDataReply]].<br />
|-<br />
||[[Key Pad Door|Keypad Door]]<br />
||[[User:Tdub Dowler|Tdub Dowler]]<br />
|| Door and keypad with changeable code. Follow instructions carefully!<br />
|-<br />
||[[LSL_languageAPI]]<br />
||[[User:Gypsy paz|Gypsy Paz]]<br />
||Multi-lingual API from notecard based language files<br />
|-<br />
||[[Last Sound System]]<br />
||[[User:Babbage Linden|Babbage Linden]]<br />
||An LSL Last.fm client.<br />
|-<br />
||[[Merge Sort]]<br />
||[[User:Xaviar Czervik|Xaviar Czervik]]<br />
||Implements a Merge Sort in LSL, however this code is 300(ish) times slower than [[llListSort]]. Don't use this in a script!<br />
|-<br />
||[[Minesweeper]]<br />
||[[User:Xaviar Czervik|Xaviar Czervik]]<br />
||A simple minesweeper game.<br />
|-<br />
||[[Multirezzer|Multirezzer (on collision)]]<br />
||[[User:Beet Streeter|Beet Streeter]]<br />
||Spawns up to 10 objects when the object containing the script collides with a user.<br />
|-<br />
||[[Object to Data v1.2|Object to Data]]<br />
||[[User:Xaviar Czervik|Xaviar Czervik]]<br />
||Turns an object into text (and back). Allows people to transfer objects through notecards.<br />
|-<br />
||[[ParseString2List]]<br />
||[[User:Strife Onizuka|Strife Onizuka]]<br />
||Same as [[llParseString2List]] and [[llParseStringKeepNulls]], but not limited to 8 spacers or separators. Thus substitute a call to the [[llParseString2List]] and [[llParseStringKeepNulls]] functions by a call to [[Parse_String_To_List|ParseString2List]] whenever you have more than 8 separators or more than 8 spacers.<br />
|-<br />
||[[Pathfinder]]<br />
||[[User:Babbage Linden|Babbage Linden]]<br />
||A potential field based pathfinding library.<br />
|-<br />
||[[Prefix Calculator]]<br />
||[[User:Xaviar Czervik|Xaviar Czervik]]<br />
|| A calculator that evaluates expressions in prefix notation. <br />
<code>+ 3 4 = 5. * + 1 2 + 3 4 = 14.</code><br />
|-<br />
||[[Pseudo-random Number Generator]]<br />
||[[User:Xaviar Czervik|Xaviar Czervik]]<br />
||Generates a Pseudo-random number between -0x7FFFFFFF and 0x7FFFFFFF<br />
|-<br />
||[[Random AV Profile Projector]]<br />
||[[User:Debbie Trilling|Debbie Trilling]]<br />
||Randomly selects an AV from a crowd & then projects their profile picture as a 'holographic' image <br />
|-<br />
||[[Say Region Frames Per Second|Region Frames Per Second]]<br />
||[[User:Heymeriou Mystakidou|Heymariou Mystakidou]]<br />
|| Says the region name and frames per second out loud on command.<br />
|-<br />
||[[Script Override Functions]]<br />
||[[User:Revolution Perenti|Revolution Perenti]]<br />
||bypass default strings, integer etc in chat channel.<br />
|-<br />
||[[Self Upgrading Script Enhanced]]<br />
||[[User:Cron Stardust|Cron Stardust]]<br />
||Keeps only latest version of the script on prim (even with multiple adds of the same script!)<br />
|-<br />
||[[SHA1|SHA1 Hash]]<br />
||[[User:Xaviar Czervik|Xaviar Czervik]]<br />
||Preforms a SHA1 Hash on an input text. Similar to MD5 only (slightly) more secure.<br />
|-<br />
||[[SLateIt]]<br />
||[[User:Babbage Linden|Babbage Linden]]<br />
||An augmented virtual reality HUD.<br />
|-<br />
||[[SLetanque]]<br />
||[[User:Babbage Linden|Babbage Linden]]<br />
||An LSL petanque game.<br />
|-<br />
||[[SL Mail V1.2]]<br />
||[[User:Flennan Roffo|Flennan Roffo]]<br />
||Second Life mail client V1.2 (released sept'07). Send and receive mail from within Second Life from and to any address. With Address Book function and many chat commands. V1.3 is upcoming soon! <br />
|-<br />
||[[SL_NTPoHTTP_v1.1_client|SL NTPoHTTP client]]<br />
|[[User:SignpostMarv Martin|SignpostMarv Martin]]<br />
||Second Life Needs Time Parsing over Hyper Text Transfer Protocol<br />
Emulates the function of [[llGetWallclock]] for any timezone by using SLOpenID's SLNTPoHTTP service. Also supports ISO 8601 and RFC 2822 timestamps. Script is dependent upon an external service operated by the author!<br />
|-<br />
||[[Spiral Staircase Generator]]<br />
|[[User:Meyermagic Salome|Meyermagic Salome]]<br />
||Generates nice looking spiral staircases without much hassle.<br />
|-<br />
||[[String Compare]]<br />
||[[User:Xaviar Czervik|Xaviar Czervik]]<br />
||Compares two strings and reliably returns either 1, -1, or 0 if they are the same.<br />
|-<br />
||[[Teleport HUD]]<br />
||[[User:Jesse Barnett|Jesse Barnett]]<br />
||WORKS TO 4096 METERS!! Very user friendly teleport HUD. Add destinations by touching "Add" & naming destination in chat. Automatically gets sim name and coordinates. Will only display the destinations in the sim you are currently in. Demonstrates more advanced list manipulation and stride functions.<br />
|-<br />
||[[Texture Menu Management|Texture Management]]<br />
||[[User:Revolution Perenti|Revolution Perenti]]<br />
||Dialog Menu based Texture Selection.<br />
|-<br />
||[[Tic Tac Toe]]<br />
||[[User:CG Linden|CG Linden]]<br />
||Step by step demo on how to implement a larger scripting project<br />
|-<br />
||[[TightList]]<br />
||[[User:Strife Onizuka|Revolution Perenti]]<br />
||Tight List is a family of functions for encoding lists as strings and then decoding them back into lists. <br />
<br />
There are two flavors: TightList and TightListType. TightListType preserves types and uses a 6 char header, while TightList uses a 1 char header that doesn't preserve type. <br />
|-<br />
||[[Timer Module]]<br />
||[[User:Isabelle Aquitaine|Isabelle Aquitaine]]<br />
||Manage multiple timers via linked messages.<br />
|-<br />
||[[Unix2DateTime]]<br />
|[[User:Flennan Roffo|Flennan Roffo]]<br />
||Conversion from Unix time (llGetUnixTime()) to date and time string and vice versa.<br />
|-<br />
||[[Under Age Boot]]<br />
|[[User:Chance Unknown|Chance Unknown]]<br />
||Security device example to teleport home accounts below a minimum age limit; can be useful in combating free griefer accounts.<br />
|-<br />
||[[Visitor Logger (Web/Basic) ]]<br />
|[[User:Buddy Sprocket|Buddy Sprocket]]<br />
||A very basic visitor logger - log visitors in SL to a text file on your web-site.<br />
|-<br />
||[[Vote Simple]]<br />
|[[User:JB_Kraft|JB Kraft]]<br />
||Simple vote collector. One avi, one vote.<br />
|-<br />
||[[WarpPos]]<br />
|[[User:Keknehv Psaltery|Keknehv Psaltery]]<br />
||Non-physical movement without the 10m limit.<br />
|-<br />
||[[XTEA Strong Encryption Implementation]]<br />
||[[User:Morse Dillon|Morse Dillon]]<br />
||An LSL implementation of XTEA (eXtended Tiny Encryption Algorithm). This is the first known public release of a 'real' strong encryption implementation in LSL and is released under the GNU General Public License (GPL).<br />
|-<br />
||[[XyText 1.5|XyText]]<br />
||[[User:Xylor Baysklef|Xylor Baysklef]]<br />
|| Display text (up to 10 characters) on a prim. Use as many prims as desired.<br />
|-<br />
||[[XyyyyzText|XyyyyzText]]<br />
||[[User:Criz Collins|Criz Collins]]<br />
|| Display text (up to 10 characters) on a prim. Displays different text for each line instead of one single text, that will be broken into the next lines. Watch here for what that means: http://screencast.com/t/1wMLujLcEO<br />
|-<br />
||[[XyzzyText|XyzzyText]]<br />
||[[User:Thraxis Epsilon|Thraxis Epsilon]] and [[User:Gigs Taggart|Gigs Taggart]]<br />
|| Display text (up to 10 characters) on a prim. Way more efficient than XyText.<br />
|-<br />
||[[Zero Lag Poseball]]<br />
||[[User:Jippen Faddoul|Jippen Faddoul]]<br />
||A simple poseball with no lag<br />
|}<br />
<br />
</div><br />
<div id="box"><br />
<br />
==Support Script Library==<br />
These are scripts in other languages, intended to be run on other systems that support scripts written in LSL<br />
<br />
{| {{Prettytable}}<br />
|-<br />
|{{Hl2}}| '''Name'''<br />
|{{Hl2}}| '''Creator'''<br />
|{{Hl2}}| '''Description'''<br />
|-<br />
||[[Secure HTTP Post]]<br />
||[[User:Corto Maltese|Corto Maltese]]<br />
|| This small library allows you to send Secure requests to your website with a security mechanism aimed to stop hacking. Comprises of LSL client script and PHP server script.<br />
|-<br />
|| Silo<br />
|| [[User:Zero_Linden|Zero Linden]]<br />
|| General purpose data store in PHP. Use this to persist arbitrary data from LSL via [[llHTTPRequest]]. See:<br />
* [http://www.notabene-sl.com/misc/silo-README.txt README] file<br />
* [http://www.notabene-sl.com/misc/silo.tgz silo.tgz] tarball<br />
* forum post [http://forums.secondlife.com/showthread.php?t=119570 Announcement].<br />
|-<br />
|| [[User:SignpostMarv Martin/PHP/llXorBase64StringsCorrect|llXorBase64StringsCorrect]]<br />
|| [[User:SignpostMarv Martin|SignpostMarv Martin]]<br />
|| An implementation of [[llXorBase64StringsCorrect]] in PHP- should be useful if you're using llXorBase64StringsCorrect to do cryptography work in LSL2 and posting it out to the web via [[llHTTPRequest]].<br />
|-<br />
|| [[User:SignpostMarv Martin/PHP/lsl fu.php|lsl_fu.php]]<br />
|| [[User:SignpostMarv Martin|SignpostMarv Martin]]<br />
|| A basic OOP'd PHP Class containing VeloxSeverine's $_POST fixer and Marv's own eccentric ideas for "fixing" things.<br />
|}<br />
</div><br />
<br />
<br />
<div id="box"><br />
== See Also ==<br />
<div style="padding: 0.5em"><br />
'''Articles'''<br />
*[[:Category:LSL Examples| Examples]]<br />
<br />
</div></div></div>Falados Kapuskas