here is the code. I added * on the lines that I added.
//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 here"; //This text will appear in the floating title above the ball
string ANIMATION=""; //Put the name of the pose/animation here!
vector offset=<0,0,-1>;
//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;
/////////////////////////////////// variables added by myself to make it move
//Positive = move north, negative = move south *
float NorthSouth = 0;*
//Positive = move east, negative = move west*
float EastWest = 0.0;*
//Positive = move up, negative = move down*
float UpDown = 0.0;*
float penality = 0;*
vector Pos = <0,0,0>;*
vector Offset;*
////////////////////////////////////
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()
{
llSitTarget(offset,ZERO_ROTATION);
init();
llListen(0,"","",""
;*Pos = llGetLocalPos();*
llSetPos(Pos + Offset);*
llSetText("",<0,0,0>,1);
}
touch_start(integer nr)
{
*
}
on_rez(integer start_param)
{
llResetScript();*
}
link_message(integer source, integer num, string str, key id)
{
if ( num == 3 )*
{*
if (str == "Penality +5"
*{ *
penality = penality + 0.05;*
if (penality > 1) {penality = 1;}*
Offset = <EastWest, NorthSouth, UpDown + penality>;*
llSetPos(Pos + Offset);*
}*
if (str == "Penality +10"
*{*
penality = penality + 0.05;*
if (penality > 1) {penality = 1;}*
Offset = <EastWest, NorthSouth, UpDown + penality>;*
llSetPos(Pos + Offset);*
}*
if (str == "Penality +30"
*{*
penality = penality + 0.30;*
if (penality > 1) {penality = 1;}*
Offset = <EastWest, NorthSouth, UpDown + penality>;*
llSetPos(Pos + Offset);*
}*
if (str == "Penality -10"
*{*
penality = penality - 0.10;*
if (penality < 0) {penality = 0;}*
Offset = <EastWest, NorthSouth, UpDown + penality>;*
llSetPos(Pos + Offset);*
}*
if (str == "Penality -20"
*{*
penality = penality - 0.20;*
if (penality < 0) {penality = 0;}*
Offset = <EastWest, NorthSouth, UpDown + penality>;*
llSetPos(Pos + Offset);*
}*
if (str == "Penality -50"
*{*
penality = penality - 0.50;*
if (penality < 0) {penality = 0;}*
Offset = <EastWest, NorthSouth, UpDown + penality>;*
llSetPos(Pos + Offset);*
}*
if (str == "Penality reset"
*{*
llSetPos(Pos);*
penality = 0;*
}*
} *
}*
changed(integer change)
{
if(change == CHANGED_LINK)
{
avatar = llAvatarOnSitTarget();
llMessageLinked(LINK_THIS, 3, "sub", avatar);*
llMessageLinked(LINK_ALL_CHILDREN, 3, "sub", avatar);*
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);
}
}
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,
!= "<" || 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);
}
}
}
So, is it possible to make the avatar move with the poseball?
Annie
.