Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

Editing Pose Ball script, Revision 4.3

Ethan Habsburg
Shop Keeper
Join date: 2 Jan 2006
Posts: 98
07-08-2007 16:07
I'm trying to edit CrystalShard Foo's Pose Ball Script with no luck. I am putting the script and my animation into a chair cushion. I configured my sit position using the script and have removed the note card. All is fine, except for the vanishing cushion when i sit on the cushion.
The script thinks the cushion is the pose ball and it vanishes when someone sits. How can keep the cushion from vanishing? I want to use this script. I've tried a few others and this one works best for me except for the one issue.
Thanks
Ethan





//Pose Ball script, Revision 4.3
//Notecard configuration enabled, switchable link_message/touch_start/llListen support, sit_text, floating text, alpha.
//Version 4.3 fixs link_set hide/show and permission sensing issues.

//By CrystalShard Foo.
//Work started - October 10th.
//Last compile - November 7th.

//This script will let you choose if you want to turn the ball visible on CLICK, or by using a SHOW/HIDE voice command.
//You can also set the offset and the title of the ball, as well as the sit button text - all with a notecard.

//This script is free and comes without support. Dont contact me. Ask a local geek for help if it gets messy.

// ** This script is NOT FOR SALE **
//You can use it in commercial products as long as you give this script to anyone who asks for it.
//You can use this source, distribute it and modify it freely, but leave the credits intact!
//(You can add your own name to the list, ofcourse. Like, "Modified by John Doe";)



string TITLE="Sit Relax"; //This text will appear in the floating title above the ball
string ANIMATION="SetRelax"; //Put the name of the pose/animation here!
vector offset=<0,0,0.5>; //You can play with these numbers to adjust how far the person sits from the ball. ( <X,Y,Z> )
integer use_voice = FALSE;

string gNotecard = "Pose ball - CONFIGURATION";
integer gLine = 0;

integer listenHandle = -1;
integer masterswitch = TRUE;
integer visible = TRUE;
float base_alpha = 1.0;
key avatar;

key dataserver_key = NULL_KEY;

show()
{
visible = TRUE;
llSetText(TITLE, <1,1,1>,1);
llSetAlpha(base_alpha, ALL_SIDES);
}

hide()
{
visible = FALSE;
llSetText("", <1,1,1>,1);
llSetAlpha(0, ALL_SIDES);
}

next_line()
{
gLine++;
dataserver_key = llGetNotecardLine(gNotecard,gLine);
}

use_defaults()
{
llSetSitText("Sit Here";);
if(visible == FALSE)
llSetText("",<1,1,1>,1);
else
llSetText(TITLE,<1,1,1>,1);
}

init()
{

if(llGetInventoryNumber(INVENTORY_ANIMATION) == 0) //Make sure we actually got something to pose with.
{
llWhisper(0,"Error: No animation found. Cannot pose.";);
ANIMATION = "sit";
}
else
ANIMATION = llGetInventoryName(INVENTORY_ANIMATION,0);

if(llGetInventoryNumber(INVENTORY_NOTECARD) != 0) //If the notecard is present, use it for configuration.
{
integer i;
for(i=0;i<llGetInventoryNumber(INVENTORY_NOTECARD);i++)
if(llGetInventoryName(INVENTORY_NOTECARD,i) == gNotecard)
{
gLine = 0;
dataserver_key = llGetNotecardLine(gNotecard, 0);
return;
}
use_defaults();
}
else //No configuration notecard found... lets use the defaults.
use_defaults();
}

default
{
state_entry()
{
llSetText("Starting up", <1,1,1>,1);
llSitTarget(offset,ZERO_ROTATION);
init();
}

link_message(integer sender_num, integer num, string str, key id)
{
if(num == 99)
{
if(str == "show";)
{
masterswitch = FALSE;
hide();
return;
}

if(str == "hide";);
{
masterswitch = TRUE;
show();
}
}
}

touch_start(integer detected)
{
if(use_voice == FALSE)
{
if(visible == TRUE)
hide();
else
show();
}
else
llSay(0,llDetectedName(0)+", say '/1 Hide' to hide me, or '/1 Show' to make me show. Or just right-click and sit on me to use me.";);
}

changed(integer change)
{
if(change == CHANGED_LINK)
{
avatar = llAvatarOnSitTarget();
if(avatar != NULL_KEY)
{
hide();
llRequestPermissions(avatar,PERMISSION_TRIGGER_ANIMATION);
}
else
{
if (llGetPermissionsKey() != NULL_KEY)
llStopAnimation(ANIMATION);
if(masterswitch == TRUE)
{
llSetAlpha(base_alpha,ALL_SIDES);
llSetText(TITLE,<1,1,1>,1);
}
}
}

if(change == CHANGED_INVENTORY)
{
llSetText("Reloading configuration...",<1,1,1>,1);
init();
}
}

run_time_permissions(integer perm)
{
if(perm == PERMISSION_TRIGGER_ANIMATION)
{
llStopAnimation("sit";);
llStartAnimation(ANIMATION);
if(visible == TRUE)
base_alpha = llGetAlpha(ALL_SIDES);
else
base_alpha = 1.0;
llSetAlpha(0.0,ALL_SIDES);
llSetText("",<1,1,1>,1);
}
}


listen(integer channel, string name, key id, string message)
{
if(llStringLength(message)!=4)
return;

message = llToLower(message);

if(message == "show";)
{
show();
return;
}
if(message == "hide";)
hide();
}

dataserver(key queryid, string data)
{
if(queryid != dataserver_key)
return;

if(data != EOF)
{
if(llGetSubString(data,0,0) != ";";)
{
if(llGetSubString(data,0,5) == "title:";)
{
TITLE = llGetSubString(data,7,-1);
next_line();
return;
}
if(llGetSubString(data,0,6) == "offset:";)
{
integer length = llStringLength(data);
if(llGetSubString(data,8,8) != "<" || llGetSubString(data,length - 1,length) != ">";)
{
llSay(0,"Error: The numbers in the offset value lack the '<' and '>' signs. (Should be something like <3,1,6> )";);
offset = <0,0,0.5>;
}
else
offset = (vector)llGetSubString(data,8,-1);

if(offset == <0,0,0>;)
offset = <0,0,0.01>;
llSitTarget(offset,ZERO_ROTATION);
next_line();
return;
}
if(llGetSubString(data,0,5) == "voice:";)
{
string value = llGetSubString(data,7,-1);
value = llToLower(value);

if(listenHandle != -1)
{
llListenRemove(listenHandle);
listenHandle = -1;
}

if(value !="no" && value != "yes" && value != "true" && value != "false";)
use_voice = FALSE;
else
if(value == "no" || value == "false";)
use_voice = FALSE;
else
{
use_voice = TRUE;
listenHandle = llListen(1,"","","";);
}
next_line();
return;
}
if(llGetSubString(data,0,10) == "sit_button:";)
{
llSetSitText(llGetSubString(data,12,-1));
next_line();
return;
}
next_line();
}
}
else
{
if(visible == FALSE)
llSetText("",<1,1,1>,1);
else
llSetText(TITLE,<1,1,1>,1);
}
}
}
Ravanne Sullivan
Pole Dancer Extraordinair
Join date: 10 Dec 2005
Posts: 674
07-08-2007 17:33
hide();

Comment out all the lines that say hide(); and it will not disappear on you. Do not comment out the line that has hide() without the semicolon, that is the name of the hide function.

// hide();
_____________________
Ravanne's Dance Poles and Animations

Available at my Superstore and Showroom on Insula de Somni
http://slurl.com/secondlife/Insula de Somni/94/194/27/
Ethan Habsburg
Shop Keeper
Join date: 2 Jan 2006
Posts: 98
07-09-2007 05:43
thanks for the reply, however I couldn't make what you said work for me. I don't know enough about scripting. However an inworld friend told me to do the following, and I was able to fix the script:

Where it currently says: llSetAlpha(0, ALL_SIDES);
Change it to: llSetAlpha(1, ALL_SIDES);
Do this to each of the 2 "0" statements about setting Alpha.
It's setting the alpha (transparency) level to zero, which is invisible, setting it to 1 will make it opaque