User:Becky Pippen/RuthCloudScript
Jump to navigation
Jump to search
The Ruth Cloud
Just for giggles, here are the secret parameter settings used to make a Ruth Cloud. There was already a copy of a Ruth Particle Cloud script on the wiki, but this version corrects one minor error in one parameter, and adds a scaling factor that you can change to make the cloud larger or smaller than normal. Just copy and paste this into a script and drop it into any prim to make a Ruth Cloud. Touch to turn on and off. See the comments in the script for more information.
Are you tired of being a Ruth Cloud? See this article for some suggestions.
<lsl> // This is the default Ruth cloud. The particle parameters were extracted from the viewer source file
// indra/slbrowser/newview/llvoavatar.cpp, in function void LLVOAvatar::idleUpdateLoadingEffect(),
// (near line 2856 in version 1.23.4). The original viewer source code comment is:
//
// // fancy particle cloud designed by Brent
//
// referring to Brent Linden. Thanks Brent, they're cute! Now... just make them go away, ok? :-)
// This script was concocted, formulated, and priminized by ❤ Becky Pippen ❤
// Set the scale of the Ruth cloud here. A scale of 1.0 makes a normal sized
// cloud; 0.5 makes one half as high and wide as normal; 2.0 makes one twice as
// wide and high as normal. The maximum scale is 4.0, because that makes the
// particles the maximum size allowed by the SL particle system.
//
float Scale = 4.0; // must be in the range (0.0..4.0]
integer ItIsCloudy;
list RuthCloudUnscaledParameters;
default
{
on_rez(integer param)
{
if (Scale <= 0.0 || Scale > 4.0) {
llSay(0, "Oops! Please edit this script and change the variable named\n" +
"Scale to a number above 0.0, and no greater than 4.0.");
} else {
if (llGetPos() == llGetLocalPos()) {
// We're in a single prim, or root prim, and not in an attachment,
// so adjust our height a little based on the scale of the Ruth Cloud
// so that the cloud won't be half underground: (Comment out this
// line if you don't want that):
llSetPos(llGetPos() + <0.0, 0.0, Scale / 2.0>);
}
}
}
state_entry()
{
integer flags = PSYS_PART_INTERP_COLOR_MASK |
PSYS_PART_INTERP_SCALE_MASK |
PSYS_PART_EMISSIVE_MASK |
PSYS_PART_FOLLOW_SRC_MASK |
PSYS_PART_TARGET_POS_MASK;
RuthCloudUnscaledParameters = [
PSYS_PART_FLAGS, flags,
PSYS_PART_MAX_AGE, 4.0, // particle age (yes, 4, not 3)
PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_ANGLE_CONE, // major mode
PSYS_PART_START_COLOR, <1.0, 1.0, 1.0>, // starting particle color
PSYS_PART_END_COLOR, <1.0, 1.0, 1.0>, // final color (<1,1,1>=white)
PSYS_PART_START_ALPHA, 0.5, // beginning alpha (1.0=opaque)
PSYS_PART_END_ALPHA, 0.0, // final alpha (0.0=clear)
PSYS_SRC_TEXTURE, "f525c30a-1bde-c858-a907-3d4df5e736a7", // cloud-particle.j2c
PSYS_SRC_BURST_RATE, 0.02, // burst interval
PSYS_SRC_BURST_PART_COUNT, 1, // particle count per burst
PSYS_SRC_BURST_RADIUS, 0.0, // burst radius
PSYS_SRC_MAX_AGE, 0.0, // overall duration
PSYS_SRC_ANGLE_BEGIN, 3.14159, // starting angle 180°
PSYS_SRC_ANGLE_END, 0.0 // ending angle
];
}
touch_start(integer num)
{
ItIsCloudy = !ItIsCloudy;
if (ItIsCloudy) {
llParticleSystem(RuthCloudUnscaledParameters + [
PSYS_SRC_BURST_SPEED_MAX, Scale,
PSYS_SRC_BURST_SPEED_MIN, Scale * 0.1,
PSYS_PART_START_SCALE, Scale * <0.8, 1.0, 0.0>,
PSYS_PART_END_SCALE, Scale * <0.02, 0.02, 0.0> ]);
} else {
llParticleSystem([]);
}
}
}</lsl>