Difference between revisions of "Drink script"
Jump to navigation
Jump to search
(Make script handle an owner change gracefully) |
Kireji Haiku (talk | contribs) m (improved readability) |
||
Line 4: | Line 4: | ||
=== Okay, okay, let's get this script, then === | === Okay, okay, let's get this script, then === | ||
<lsl>//Emmas Seetan | <lsl> | ||
//Emmas Seetan | |||
string animationToBePlayed = "drinking animation"; | |||
integer flag; | |||
default | default | ||
{ | { | ||
on_rez(integer start_param) | |||
{ | { | ||
llResetScript(); | |||
} | } | ||
attach(key id) | |||
{ | { | ||
if( | // when being detached | ||
if(id == NULL_KEY) | |||
{ | { | ||
integer currentPerms = llGetPermissions(); | |||
if (currentPerms & PERMISSION_TRIGGER_ANIMATION) | |||
llStopAnimation(animationToBePlayed); | |||
} | } | ||
} | } | ||
changed(integer change) | |||
{ | { | ||
llResetScript(); | if (change & (CHANGED_OWNER | CHANGED_INVENTORY)) | ||
{ | |||
// stop animation for old owner | |||
integer currentPerms = llGetPermissions(); | |||
if (currentPerms & PERMISSION_TRIGGER_ANIMATION) | |||
llStopAnimation(animationToBePlayed); | |||
// reset script to get new owner | |||
llResetScript(); | |||
} | |||
} | } | ||
state_entry() | |||
{ | { | ||
key owner = llGetOwner(); | |||
llRequestPermissions(owner, PERMISSION_TRIGGER_ANIMATION); | |||
} | } | ||
run_time_permissions(integer perm) | |||
{ | { | ||
if ( | if(perm & PERMISSION_TRIGGER_ANIMATION) | ||
{ | { | ||
llStartAnimation(animationToBePlayed); | |||
llSetTimerEvent(15.0); | |||
} | } | ||
} | } | ||
Line 56: | Line 63: | ||
{ | { | ||
if(flag & 1) | if(flag & 1) | ||
llStartAnimation(animationToBePlayed); | |||
llStartAnimation( | |||
flag = (flag + 1) % 4; | flag = (flag + 1) % 4; | ||
} | } | ||
}</lsl> | } | ||
</lsl> |
Revision as of 12:10, 18 October 2012
A what?
A drink script, used in many parts of Second Life. Whether it's for food or drink, or roleplay potions and what-not, a drink script is always included. If it's not, it's rubbish.
Okay, okay, let's get this script, then
<lsl> //Emmas Seetan
string animationToBePlayed = "drinking animation"; integer flag;
default {
on_rez(integer start_param) { llResetScript(); }
attach(key id) { // when being detached if(id == NULL_KEY) { integer currentPerms = llGetPermissions();
if (currentPerms & PERMISSION_TRIGGER_ANIMATION) llStopAnimation(animationToBePlayed); } }
changed(integer change) { if (change & (CHANGED_OWNER | CHANGED_INVENTORY)) { // stop animation for old owner integer currentPerms = llGetPermissions();
if (currentPerms & PERMISSION_TRIGGER_ANIMATION) llStopAnimation(animationToBePlayed);
// reset script to get new owner llResetScript(); } }
state_entry() { key owner = llGetOwner(); llRequestPermissions(owner, PERMISSION_TRIGGER_ANIMATION); }
run_time_permissions(integer perm) { if(perm & PERMISSION_TRIGGER_ANIMATION) { llStartAnimation(animationToBePlayed);
llSetTimerEvent(15.0); } }
timer() { if(flag & 1) llStartAnimation(animationToBePlayed);
flag = (flag + 1) % 4; }
} </lsl>