G
Gina Masala
Guest
So mal die Möglichkeit des Löschens eingebaut. Für verantwortungsbewuste User mit copy teilen....
Einmal das root script:
und das script für die Kinderprims
und schon sind der AO und das Misty tool wieder die größten Lagschleudern
Einmal das root script:
Code:
key owner; // var that names the owner
string dialog_message; // the text showed in the dialog
list buttons = ["Inc 1%", "Inc 5%", "Inc 10%", "Dec 1%", "Dec 5%", "Dec 10%", "reset", "close", "delete"]; // the buttons
integer channel; // the channel for comunication with the dialog
integer num = 1111; // this number makes sure, that only this script resizes the children
vector size; // vars for primsize
vector org_size;
float scale;
string inventory;
integer lhandle;
init() // initialization
{
channel = ((integer)llFrand(2147483640) * -1) - 1; // a random channel generation. this is needed if more objects using this script
dialog_message = "Click the Buttons to increase or decrease the Size of the Prim and its Linkset by 1, 5 or 10%. Click reset to revert to original size and close to leave the menu."; // dialog text
integer i;
inventory = llGetInventoryName(INVENTORY_LANDMARK, 0);
size = llGetScale();
org_size = llGetScale();
llSetScale(size); // get original sizes
scale = 1;
llMessageLinked(LINK_SET, 1111, (string)scale, NULL_KEY);
}
reset()
{
llSetScale(org_size); // reset original size
scale = 1;
llMessageLinked(LINK_SET, 1111, (string)scale, NULL_KEY);
llDialog(owner, dialog_message, buttons, channel);
}
bigger() // make bigger
{
size = llGetScale(); // get size
size = size * scale; // add ten percent
llSetScale(size); // resize
llMessageLinked(LINK_SET, 1111, (string)scale, NULL_KEY);
llDialog(owner, dialog_message, buttons, channel);
llSetTimerEvent(30);
}
smaller() // make smaller
{
size = llGetScale(); // get size
size = size * scale; // take 10% from that
llSetScale(size); // resize
llMessageLinked(LINK_SET, 1111, (string)scale, NULL_KEY);
llDialog(owner, dialog_message, buttons, channel);
llSetTimerEvent(30);
}
menudone()
{
llListenRemove(lhandle);
llSetTimerEvent(0);
}
default
{
state_entry()
{
init();
}
changed(integer change)
{
if (change & CHANGED_OWNER)
init();
}
touch_start(integer total_number)
{
// owner = llDetectedKey(0); // make everyone use the script
lhandle = llListen(channel, "", NULL_KEY, "");
llSetTimerEvent(30);
owner = llGetOwner(); // only owner can use it
if (llDetectedKey(0) == owner)
llDialog(owner, dialog_message, buttons, channel);
else
llGiveInventory(llDetectedKey(0), inventory);
}
listen(integer channel, string name, key id, string message)
{
if (llListFindList(buttons, [message]) != -1) // make sure we listen only to us
{
// llSay(0, name + " picked the option '" + message + "'."); // write order to chat
if (message == "reset")
reset();
else if (message == "Inc 1%")
{
scale = 1.01;
bigger();
}
else if (message == "Inc 5%")
{
scale = 1.05;
bigger();
}
else if (message == "Inc 10%")
{
scale = 1.1;
bigger();
}
else if (message == "Dec 1%")
{
scale = 0.99;
smaller();
}
else if (message == "Dec 5%")
{
scale = 0.95;
smaller();
}
else if (message == "Dec 10%")
{
scale = 0.9;
smaller();
}
else if (message == "close") {
menudone();
}else if (message == "delete"){
llMessageLinked(LINK_SET, 0, message, NULL_KEY);
//braucht man eigentlich auch nicht mehr:
llRemoveInventory(llGetScriptName());
}
}
}
timer()
{
menudone();
}
}
und das script für die Kinderprims
Code:
vector org_size;
vector org_pos;
default
{
state_entry()
{
org_size = llGetScale();
org_pos = llGetLocalPos();
}
link_message(integer sender_num, integer num, string str, key id)
{
float scale; // size factor
list primparams;
if(num==1111){
scale = (float)str;
if (scale == 1)
{
primparams = [];
primparams += [PRIM_SIZE, org_size];
if (llGetLinkNumber() > 1)
{ // only move if we're not the root object
primparams += [PRIM_POSITION, org_pos]; // reposition
}
}
else
{
primparams = [];
primparams += [PRIM_SIZE, llGetScale() * scale]; // resize
if (llGetLinkNumber() > 1)
{ // only move if we're not the root object
primparams += [PRIM_POSITION, llGetLocalPos() * scale]; // reposition
}
}
llSetPrimitiveParams(primparams);
}
if(str=="delete"){
llRemoveInventory(llGetScriptName());
}
}
}
und schon sind der AO und das Misty tool wieder die größten Lagschleudern