Files
LSL-Scripts/Beer Drinking/Drinking Beer/Root Prim/Beer Drink Script.lsl
2015-08-09 16:54:31 -05:00

79 lines
2.3 KiB
Plaintext

// :SHOW:
// :CATEGORY:Drink
// :NAME:Beer Drinking
// :AUTHOR:Ferd Frederix
// :KEYWORDS:
// :CREATED:2015-05-29 12:25:47
// :EDITED:2015-05-29 11:25:47
// :ID:87
// :NUM:116
// :REV:1.1
// :WORLD:Second Life, Opensim
// :DESCRIPTION:
// Drink Script - makes it seem like beer is being drunk
// :CODE:
//: LICENSE: CC-0 (Open Source)
//: DESCRIPTION:
// 1) Make a cylinder and a glass, lets say, of beer. Texture the cylinder to look like the beer liquid - mostly brown, with white foam at one end, and put white on the top of the cylinder. Put this cylinder inside the beer glass. Or make a tapered cylinder and and fit it into another glass.
// 2) Link the glass and any other prims to the beer cylinder. The cylinder need to be the last thing clicked to make it the root prim.
// This script currently requires there be AT LEAST 2 prims. Otherwise LINKNUM must be a 0 for a single prim, or the number of the prim that is the beer prim.
// 3) Add the script below to the root prim. When reset, the beer should dissappear, and appear to fill back up.
// 4) type this in chat:
// /942 Drink
// The beer will decrease by 10% rthwn empty, it shudl announce with a whsiper that "XX, your glass is empty."
// globals
float drink_left;
integer LINKNUM = 1; // Assumes that the cylinder that is being drunk is the root prim.
string DECREASE_FOOD = "Drink";
float X = 1.0;
float Y = 1.0;
float Z = 1.0; // the length of the cylinder
fill()
{
float i = 0 ;
//loop around cutting the length to fuill
while (i < Z)
{
llSetLinkPrimitiveParamsFast(LINKNUM,[PRIM_SLICE, <0, i,0>]);
llSleep(.1);
i += .020 ; // ad 1/10 of a Z each loop
}
drink_left = 1; // 100%
}
drink()
{
drink_left = drink_left - 0.1;
llSetLinkPrimitiveParamsFast(LINKNUM,[PRIM_SLICE, <0, drink_left,0>]);
if (drink_left <= 0)
{
drink_left = 0;
llWhisper(0,llKey2Name(llGetOwner()) + " your glass is empty.");
return;
}
}
default
{
state_entry()
{
// set to empty, then fill it
llSetLinkPrimitiveParamsFast(LINKNUM,[PRIM_SLICE, <0, 0,0>]);
fill();
llListen(942,"","","");
}
listen(integer channel, string name, key id, string message)
{
if (message == DECREASE_FOOD)
{
drink();
}
}
}