Difference between revisions of "Zero Lag Poseball"
Jump to navigation
Jump to search
m (<lsl> tag to <source>) |
|||
(One intermediate revision by one other user not shown) | |||
Line 3: | Line 3: | ||
Drop it and an animation in a prim, and you are good to go! | Drop it and an animation in a prim, and you are good to go! | ||
< | <source lang="lsl2"> | ||
// Jippen Faddoul's Poseball script - Low ram/lag posepall thats just drag-and drop simple | // Jippen Faddoul's Poseball script - Low ram/lag posepall thats just drag-and drop simple | ||
// Copyright (C) 2007 Jippen Faddoul | // Copyright (C) 2007 Jippen Faddoul | ||
Line 90: | Line 90: | ||
} | } | ||
} | } | ||
</ | </source> | ||
'''Dae´s Version''' with the new llSetPrimitiveParams and no script ERROR because crashing or logout Avatars by Sit on it. | '''Dae´s Version''' with the new llSetPrimitiveParams and no script ERROR because crashing or logout Avatars by Sit on it. | ||
< | <source lang="lsl2"> | ||
// Poseball & Furniture script | // Poseball & Furniture script | ||
// by Daemonika Nightfire (2009/2010) | // by Daemonika Nightfire (2009/2010) | ||
Line 101: | Line 101: | ||
// why poseball and Furniture?... | // why poseball and Furniture?... | ||
// ...just delete all funktions with show/hide and it works for Furniture too. | // ...just delete all funktions with show/hide and it works for Furniture too. | ||
// llSitTarget(<-0.1,0.1,-0.43>... set the Avatar Position to the prim in meters, | |||
// ...,llEuler2Rot(<00,-90,-90>*DEG_TO_RAD)); set the angle Rotation from the Avatar in 3 axis <x,y,z>. | |||
// why no script error at crashing Avatar?... | // why no script error at crashing Avatar?... | ||
Line 165: | Line 167: | ||
} | } | ||
} | } | ||
</ | </source> | ||
{{LSLC|Library}} | {{LSLC|Library}} |
Latest revision as of 09:37, 25 January 2015
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
This is a script that I made, because I was sick and tired of everyone using the same bloated, laggy poseball scripts that listen on channel 1, to anybody or anything. This is zero lag, no listener, no frills. Drop it and an animation in a prim, and you are good to go!
// Jippen Faddoul's Poseball script - Low ram/lag posepall thats just drag-and drop simple
// Copyright (C) 2007 Jippen Faddoul
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 3, as
// published by the Free Software Foundation.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>
//This text will appear in the floating title above the ball
string TITLE="Sit here";
//You can play with these numbers to adjust how far the person sits from the ball. ( <X,Y,Z> )
vector offset=<0.0,0.0,0.5>;
///////////////////// LEAVE THIS ALONE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
string ANIMATION;
integer visible = TRUE;
key avatar;
vector COLOR = <1.0,1.0,1.0>;
float ALPHA_ON = 1.0;
float ALPHA_OFF = 0.0;
show(){
visible = TRUE;
llSetText(TITLE, COLOR,ALPHA_ON);
llSetAlpha(ALPHA_ON, ALL_SIDES);
}
hide(){
visible = FALSE;
llSetText("", COLOR,ALPHA_ON);
llSetAlpha(ALPHA_OFF, ALL_SIDES);
}
default{
state_entry() {
llSitTarget(offset,ZERO_ROTATION);
if((ANIMATION = llGetInventoryName(INVENTORY_ANIMATION,0)) == ""){
llOwnerSay("Error: No animation");
ANIMATION = "sit";
}
llSetSitText(TITLE);
show();
}
touch_start(integer detected) {
//llOwnerSay("Memory: " + (string)llGetFreeMemory());
if(visible){ hide(); }
else { show(); }
}
changed(integer change) {
if(change & CHANGED_LINK) {
avatar = llAvatarOnSitTarget();
if(avatar != NULL_KEY){
//SOMEONE SAT DOWN
hide();
llRequestPermissions(avatar,PERMISSION_TRIGGER_ANIMATION);
return;
}else{
//SOMEONE STOOD UP
if (llGetPermissionsKey() != NULL_KEY){ llStopAnimation(ANIMATION); }
show();
return;
}
}
if(change & CHANGED_INVENTORY) { llResetScript(); }
if(change & CHANGED_OWNER) { llResetScript(); }
}
run_time_permissions(integer perm) {
if(perm & PERMISSION_TRIGGER_ANIMATION) {
llStopAnimation("sit");
llStartAnimation(ANIMATION);
hide();
}
}
}
Dae´s Version with the new llSetPrimitiveParams and no script ERROR because crashing or logout Avatars by Sit on it.
// Poseball & Furniture script
// by Daemonika Nightfire (2009/2010)
// NO License! that script is free for all.
// why poseball and Furniture?...
// ...just delete all funktions with show/hide and it works for Furniture too.
// llSitTarget(<-0.1,0.1,-0.43>... set the Avatar Position to the prim in meters,
// ...,llEuler2Rot(<00,-90,-90>*DEG_TO_RAD)); set the angle Rotation from the Avatar in 3 axis <x,y,z>.
// why no script error at crashing Avatar?...
// ...llKey2Name ask for sitting Avatarname...
// ...is there no name, so nobody there for stop animation and the script will show the Ball only.
string anim;
integer sitting;
show()
{
llSetPrimitiveParams([PRIM_TEXT,"SIT HERE",<0.9,0.6,0.2>,1.0, PRIM_COLOR, ALL_SIDES,<1,1,1>,1.0]);
}
hide()
{
llSetPrimitiveParams([PRIM_TEXT,"",ZERO_VECTOR,0.0, PRIM_COLOR, ALL_SIDES,ZERO_VECTOR,0.0]);
}
default
{
state_entry()
{
show();
sitting = 0;
anim = llGetInventoryName(INVENTORY_ANIMATION, 0);
llSitTarget(<-0.1,0.1,-0.43>,llEuler2Rot(<00,-90,-90>*DEG_TO_RAD));
}
run_time_permissions(integer perm)
{
if (perm & PERMISSION_TRIGGER_ANIMATION)
{
sitting = 1;
llStopAnimation("sit_generic");
llStopAnimation("sit");
llStartAnimation(anim);
hide();
}
}
changed(integer change)
{
if (change & CHANGED_LINK)
{
key avatar = llAvatarOnSitTarget();
if (llKey2Name(avatar) != "")
{
llRequestPermissions(avatar, PERMISSION_TRIGGER_ANIMATION);
}
else
{
show();
if ((llGetPermissions() & PERMISSION_TRIGGER_ANIMATION) && sitting && llKey2Name(avatar) != "")
{
llStopAnimation(anim);
}
sitting = 0;
}
}
if (change & CHANGED_OWNER + CHANGED_REGION_START + CHANGED_INVENTORY)
{
llResetScript();
}
}
on_rez(integer start_param)
{
llResetScript();
}
}