Push All Scripts

This commit is contained in:
Fred Beckhusen
2015-08-07 10:38:47 -05:00
parent 2ad9795428
commit ce47ec2f3e
8079 changed files with 2442776 additions and 0 deletions

View File

@@ -0,0 +1,258 @@
// :CATEGORY:Textures
// :NAME:TextureAllByDescription
// :AUTHOR:Ferd Frederix
// :CREATED:2014-01-01 12:18:56
// :EDITED:2014-01-01 12:18:56
// :ID:1008
// :NUM:1560
// :REV:1
// :WORLD:Second Life
// :DESCRIPTION:
// Texture all prims from an inventory by menu
// :CODE:
integer debug = TRUE;
DEBUG(string msg)
{
if (debug) llSay(0,msg);
}
list textures; // a list of texture names, in Head,Middle,Bottom Strided order
key user; // you
integer listen_id; // a listener that we can cancel to control lag
integer menuChannel;
list menus; // a list of Names of textures read from inventory
// from the menu system http://wiki.secondlife.com/wiki/SimpleDialogMenuSystem
integer N_DIALOG_CHOICES;
integer MAX_DIALOG_CHOICES_PER_PG = 8; // if not offering back button, increase this to 9
string PREV_PG_DIALOG_PREFIX = "< Page ";
string NEXT_PG_DIALOG_PREFIX = "> Page ";
string DIALOG_DONE_BTN = "Done";
string DIALOG_BACK_BTN = "<< Back";
integer pageNum;
list DIALOG_CHOICES;
giveDialog( integer pageNum) {
list buttons;
integer firstChoice;
integer lastChoice;
integer prevPage;
integer nextPage;
string OnePage;
CancelListen();
menuChannel = llCeil(llFrand(1000000) + 11000000);
listen_id = llListen(menuChannel,"","","");
llSetTimerEvent(60);
N_DIALOG_CHOICES = llGetListLength(DIALOG_CHOICES);
if (N_DIALOG_CHOICES <= 10) {
buttons = DIALOG_CHOICES;
OnePage = "Yes";
}
else {
integer nPages = (N_DIALOG_CHOICES+MAX_DIALOG_CHOICES_PER_PG-1)/MAX_DIALOG_CHOICES_PER_PG;
if (pageNum < 1 || pageNum > nPages) {
pageNum = 1;
}
firstChoice = (pageNum-1)*MAX_DIALOG_CHOICES_PER_PG;
lastChoice = firstChoice+MAX_DIALOG_CHOICES_PER_PG-1;
if (lastChoice >= N_DIALOG_CHOICES) {
lastChoice = N_DIALOG_CHOICES;
}
if (pageNum <= 1) {
prevPage = nPages;
nextPage = 2;
}
else if (pageNum >= nPages) {
prevPage = nPages-1;
nextPage = 1;
}
else {
prevPage = pageNum-1;
nextPage = pageNum+1;
}
buttons = llList2List(DIALOG_CHOICES, firstChoice, lastChoice);
}
// FYI, this puts the navigation button row first, so it is always at the bottom of the dialog
list buttons01 = llList2List(buttons, 0, 2);
list buttons02 = llList2List(buttons, 3, 5);
list buttons03 = llList2List(buttons, 6, 8);
list buttons04;
if (OnePage == "Yes") {
buttons04 = llList2List(buttons, 9, 11);
}
buttons = buttons04 + buttons03 + buttons02 + buttons01;
if (OnePage == "Yes") {
buttons = [ DIALOG_DONE_BTN, DIALOG_BACK_BTN ]+ buttons;
//omit DIALOG_BACK_BTN in line above if not offering
}
else {
buttons = [
PREV_PG_DIALOG_PREFIX + (string)prevPage,
DIALOG_BACK_BTN, NEXT_PG_DIALOG_PREFIX+(string)nextPage, DIALOG_DONE_BTN
]+buttons;
//omit DIALOG_BACK_BTN in line above if not offering
}
llDialog(user, "Page "+(string)pageNum+"\nChoose one:", buttons, menuChannel);
}
CancelListen() {
llListenRemove(listen_id);
llSetTimerEvent(0);
}
// change texture of any prims name Head, Body, Legs
TextureIt(integer texNum) {
DEBUG("using texture # " + (string) texNum);
DEBUG(llDumpList2String(textures,","));
DEBUG(llList2String(textures,0));
DEBUG(llList2String(textures,1));
DEBUG(llList2String(textures,2));
DEBUG( llList2String(textures,3));
DEBUG(llList2String(textures,4));
DEBUG(llList2String(textures,5));
// Head, Middle, Bottom pops out of this
// texNum *= 3; // cast this to the size of the actual texture list, which is 3
integer found = 0;
integer nPrims = llGetNumberOfPrims();
integer i;
for (i = 0; i <= nPrims; i++) {
list param = llGetLinkPrimitiveParams(i,[PRIM_DESC]); // DESCRIPTION holds the texture number
string primName = llList2String(param,0);
if (primName == "Body") {
string text = llList2String(textures,texNum);
llSetLinkTexture(i,text,ALL_SIDES); // add this line which sets the texture with no offset or repeat or rotation changes
found++;
}
else if (primName == "Head") {
string text = llList2String(textures,texNum+1);
llSetLinkTexture(i,text,ALL_SIDES); // add this line which sets the texture with no offset or repeat or rotation changes
found++;
}
else if (primName == "Leg") {
string text = llList2String(textures,texNum+2);
llSetLinkTexture(i,text,ALL_SIDES); // add this line which sets the texture with no offset or repeat or rotation changes
found++;
}
}
if (found < 3)
{
llOwnerSay("Something is wrong. There must be at least 3 prims with a description of Head, Body, and Leg");
}
}
GetTextures()
{
integer nItems = llGetInventoryNumber(INVENTORY_TEXTURE);
integer i;
textures = [];
DIALOG_CHOICES = [];
menus = [];
for ( i = 0; i < nItems; i++) {
// this section makes a list with all three texture names in alphabetical order
string name = llGetInventoryName(INVENTORY_TEXTURE,i);
textures += name;
// This break it down into the Name-Head, name-Body and name-Leg parts and saves the name for a menu
list parts = llParseString2List(name,["-"],[""]);
string firstpart = llList2String(parts,0);
menus += firstpart;
}
// we want a menu with just the names, bit the -Head, etc.
DIALOG_CHOICES = ListUnique(menus);
// and all this depends upon them being in alpha order.
DIALOG_CHOICES = llListSort(DIALOG_CHOICES,1,1);
menus = llListSort(menus,3,1);
}
list ListUnique( list lAll ) {
integer i;
list lFiltered = llList2List(lAll, 0, 0);
integer iAll = llGetListLength( lAll );
for (i = 1; i < iAll; ++i) {
if ( llListFindList(lFiltered, llList2List(lAll, i, i) ) == -1 ) {
lFiltered += llList2List(lAll, i, i);
}
}
return lFiltered;
}
default
{
state_entry() {
GetTextures();
}
touch_start(integer total_number) {
GetTextures();
user = llDetectedKey(0);
giveDialog(pageNum);
}
listen(integer channel, string name, key id, string message){
CancelListen();
user = id; // two people may be using it at the same time, so we save the ID here
if ( message == DIALOG_DONE_BTN){
CancelListen();
return;
}
else if (message == DIALOG_BACK_BTN){
pageNum = 1;
giveDialog(pageNum);
}
else if (llSubStringIndex(message, PREV_PG_DIALOG_PREFIX) == 0){
pageNum = (integer)llGetSubString(message, llStringLength(PREV_PG_DIALOG_PREFIX), -1);
giveDialog( pageNum);
}
else if (llSubStringIndex(message, NEXT_PG_DIALOG_PREFIX) == 0){
pageNum = (integer)llGetSubString(message, llStringLength(NEXT_PG_DIALOG_PREFIX), -1);
giveDialog(pageNum);
} else { //this is the section where we do stuff other than menus
integer where = llListFindList(menus, [message]); // find the string he clicked in the master list
if (where >= -1) { // -1 is not found
TextureIt(where); // 0th is Body, 1 = Head, 2 = Legs
}
}
}
timer() {
CancelListen();
llOwnerSay("Sorry. The menu timed out, click me again. ");
}
}

View File

@@ -0,0 +1,18 @@
<Project name="TextureAllByDescription" guid="937b67c4-fd0e-4ac0-8aea-37541a370aca">
<Object name="Object" guid="091fe119-58e7-48e4-a3e7-0170bf4e2722" active="true">
<Script name="Texture_all_by_Description_Script.lsl" guid="976cb8b5-3d24-4ad0-8020-d664e48a15c7">
</Script>
<Texture name="A-Body" guid="add5b5e5-e639-487c-854e-1666c20fb577">
</Texture>
<Texture name="A-Head" guid="037f491a-dfc5-40f4-9698-6f52afa75134">
</Texture>
<Texture name="A-Leg" guid="469f0a4a-737a-4edf-8700-8b1ee83e3bc8">
</Texture>
<Texture name="B-Body" guid="086b0120-0829-427d-bfe2-ab8a42bd0530">
</Texture>
<Texture name="B-Head" guid="3984654a-4b6f-4556-a912-e5c9e8e8113c">
</Texture>
<Texture name="B-Leg" guid="fc57682b-229f-45bf-8576-0e343576fa39">
</Texture>
</Object>
</Project>