Zero Lag Poseball
Revision as of 05:17, 11 December 2007 by Huney Jewell (talk | contribs) (0-Lag Poseball moved to Zero Lag Poseball: To comply with usual technical term)
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 0 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(); } } }