Fandom

Second Life Wikia

Script Window

2,571pages on
this wiki
Add New Page
Talk0 Share

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

Script-window1

SL 1.10.4 script window

Script-search-window

SL 1.10.4 script search window

The script window is an SL UI element used to edit a script and has 2 panes: the top pane shows the script's code while the bottom pane shows status messages. Under that is the text cursor position (line and column number).

Elements

This script is for a cool Rezise Script

///////////////////REZISE SCRIPT/////////////////
////////////////WORK ONLY WITH LINKED OBJECTS!////////////
/////////LINK 2 OBJECT AND THEN PUT SCRIPT IN THE LAST LINKED SCRIPT///////////

///////////////YOU WILL SEE IT WORK IF YOU CLICK!//////////

////////:D//////////

Let's Start!

Just select all then copy and paste in second life!

Script::


float MIN_DIMENSION=0.01; // the minimum scale of a prim allowed, in any dimension

float MAX_DIMENSION=10.0; // the maximum scale of a prim allowed, in any dimension


float max_scale;

float min_scale;


float cur_scale = 1.0;

integer handle;

integer menuChan;


float min_original_scale=10.0; // minimum x/y/z component of the scales in the linkset

float max_original_scale=0.0; // minimum x/y/z component of the scales in the linkset


list link_scales = [];

list link_positions = [];


makeMenu()

{

llListenRemove(handle);

menuChan = 50000 + (integer)llFrand(50000.00);

handle = llListen(menuChan,"",llGetOwner(),"");


//the button values can be changed i.e. you can set a value like "-1.00" or "+2.00"

//and it will work without changing anything else in the script

llDialog(llGetOwner(),"Max scale: "+(string)max_scale+"\nMin scale: "+(string)min_scale+"\n \nCurrent scale: "+

(string)cur_scale,["-0.05","-0.10","-0.25","+0.05","+0.10","+0.25","MIN SIZE","RESTORE","MAX SIZE","DELETE..."],menuChan);

}


integer scanLinkset()

{

integer link_qty = llGetNumberOfPrims();

integer link_idx;

vector link_pos;

vector link_scale;


//script made specifically for linksets, not for single prims

if (link_qty > 1)

{

//link numbering in linksets starts with 1

for (link_idx=1; link_idx <= link_qty; link_idx++)

{

link_pos=llList2Vector(llGetLinkPrimitiveParams(link_idx,[PRIM_POSITION]),0);

link_scale=llList2Vector(llGetLinkPrimitiveParams(link_idx,[PRIM_SIZE]),0);


// determine the minimum and maximum prim scales in the linkset,

// so that rescaling doesn't fail due to prim scale limitations

if(link_scale.x<min_original_scale) min_original_scale=link_scale.x;

else if(link_scale.x>max_original_scale) max_original_scale=link_scale.x;

if(link_scale.y<min_original_scale) min_original_scale=link_scale.y;

else if(link_scale.y>max_original_scale) max_original_scale=link_scale.y;

if(link_scale.z<min_original_scale) min_original_scale=link_scale.z;

else if(link_scale.z>max_original_scale) max_original_scale=link_scale.z;


link_scales += [link_scale];

link_positions += [(link_pos-llGetRootPosition())/llGetRootRotation()];

}

}

else

{

llOwnerSay("error: this script doesn't work for non-linked objects");

return FALSE;

}


max_scale = MAX_DIMENSION/max_original_scale;

min_scale = MIN_DIMENSION/min_original_scale;


return TRUE;

}


resizeObject(float scale)

{

integer link_qty = llGetNumberOfPrims();

integer link_idx;

vector new_size;

vector new_pos;


if (link_qty > 1)

{

//link numbering in linksets starts with 1

for (link_idx=1; link_idx <= link_qty; link_idx++)

{

new_size = scale * llList2Vector(link_scales, link_idx-1);

new_pos = scale * llList2Vector(link_positions, link_idx-1);


if (link_idx == 1)

{

//because we don't really want to move the root prim as it moves the whole object

llSetLinkPrimitiveParamsFast(link_idx, [PRIM_SIZE, new_size]);

}

else

{

llSetLinkPrimitiveParamsFast(link_idx, [PRIM_SIZE, new_size, PRIM_POSITION, new_pos]);

}

}

}

}


default

{

state_entry()

{

if (scanLinkset())

{

//llOwnerSay("resizer script ready");

}

else

{

llRemoveInventory(llGetScriptName());

}

}


touch_start(integer total)

{

if (llDetectedKey(0) == llGetOwner()) makeMenu();

}


listen(integer channel, string name, key id, string msg)

{

//you can never be too secure

if (id == llGetOwner())

{

if (msg == "RESTORE")

{

cur_scale = 1.0;

}

else if (msg == "MIN SIZE")

{

cur_scale = min_scale;

}

else if (msg == "MAX SIZE")

{

cur_scale = max_scale;

}

else if (msg == "DELETE...")

{

llDialog(llGetOwner(),"Are you sure you want to delete the resizer script?",

["DELETE","CANCEL"],menuChan);

return;

}

else if (msg == "DELETE")

{

llOwnerSay("deleting resizer script...");

llRemoveInventory(llGetScriptName());

}

else

{

cur_scale += (float)msg;

}


//check that the scale doesn't go beyond the bounds

if (cur_scale > max_scale) { cur_scale = max_scale; }

if (cur_scale < min_scale) { cur_scale = min_scale; }


resizeObject(cur_scale);

}

}

}

Buttons

  • Save - Saves and compiles script.
  • Reset - Resets script.

Other


History

Script-window

SL 1.10 script window

These buttons were removed in SL 1.10.4.

  • Undo Changes - undoes changes
  • Help...

Also on Fandom

Random Wiki