Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Kerzenflamme an/aus
#3
Kerzen- oder Oellampenlicht zum an und aus machen:

// Candle Flame version 3

string szFlameOn = "pfft";

integer OnChannel = 5395;
integer OffChannel = 5396;
integer controlChannel = 5397;

//float reSpawnTime = 0.5; // How often to re-rez candle flames
float reSpawnTime = 0.1; // this is kind of an evil number. 1 more evil number in this script

float randomRange = 16234;
integer lastRandom = 65535; // Unpossible for this to be set initially

string messageHeader = "FC Candle Message: ";
string messageStatus = "Status Request";
string messageFlameRate = "Set Flamerate ";

integer messageHeaderLength;
integer fireOn = 0;

integer fireTextureSet = 0;
integer lastFlameRezzed = 0;


doFlame() {
if ( !fireOn ) {
llSetTouchText("Light");
llParticleSystem([]);
}
else {
llSetTouchText("Blow Out");
llParticleSystem([
PSYS_PART_MAX_AGE, 3.0,
PSYS_PART_FLAGS, PSYS_PART_EMISSIVE_MASK|PSYS_PART_INTERP_SCALE_MASK|
PSYS_PART_INTERP_COLOR_MASK|PSYS_PART_FOLLOW_SRC_MASK,
PSYS_PART_START_COLOR, <1,1,1>,
PSYS_PART_END_COLOR, <1,1,1>,
PSYS_PART_START_SCALE,<0.062,0.062,0.062>,
PSYS_PART_END_SCALE,<0.062,0.100,0.062>,
PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_DROP,
PSYS_SRC_BURST_RATE,reSpawnTime,
PSYS_SRC_ACCEL, <0,0,0.008>,
// PSYS_SRC_BURST_PART_COUNT,1,
PSYS_SRC_BURST_PART_COUNT,3, // evil number.
PSYS_SRC_MAX_AGE, 0.0,
PSYS_SRC_TEXTURE, "candleflame4",
PSYS_PART_START_ALPHA, 0.3,
PSYS_PART_END_ALPHA, 0.25
]);
}
}

toggleFlame() {
fireOn = !fireOn;
doFlame();
llSetColor( <1,1,1>, ALL_SIDES );
llSetTexture( "a56ec37f-5674-aaa3-36b8-be8891d1e271", ALL_SIDES );
}

default {
state_entry() {
messageStatus = messageHeader + messageStatus;
messageFlameRate = messageHeader + messageFlameRate;
messageHeaderLength = llStringLength(messageHeader);
lastRandom = llFloor(llFrand(randomRange));
llListen(0, "", "", "");
llListen(controlChannel, "", "", "");
toggleFlame();
}
on_rez(integer start_param) {
lastRandom = llFloor(llFrand(randomRange));
fireOn = TRUE;
doFlame();
}
touch_start(integer total_number) {
//llWhisper( 0, (string) llGetOwner() );
toggleFlame();
lastRandom = llFloor(llFrand(randomRange));
}
listen(integer channel, string name, key id, string message) {
if ( channel == 0 ) {
if ( message == szFlameOn ){
llParticleSystem([]);
llParticleSystem([ PSYS_PART_MAX_AGE, 2.0,
PSYS_PART_FLAGS, PSYS_PART_EMISSIVE_MASK|
PSYS_PART_INTERP_COLOR_MASK|PSYS_PART_INTERP_SCALE_MASK,
PSYS_PART_START_COLOR, <1,1,0>,
PSYS_PART_END_COLOR, <1,0,0>,
PSYS_SRC_BURST_RATE, 0.001,
PSYS_SRC_BURST_PART_COUNT, 2,
PSYS_SRC_INNERANGLE,3.14,
PSYS_SRC_OUTERANGLE,3.13,
PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_ANGLE,
PSYS_PART_START_ALPHA, 1.0,
PSYS_PART_END_ALPHA, 0.0,
PSYS_SRC_MAX_AGE, 5.0,
PSYS_PART_START_SCALE, <0.01, 0.01, 0.01>,
PSYS_PART_END_SCALE, <0.5, 0.5, 0.5>,
PSYS_SRC_BURST_SPEED_MIN,0.4,
PSYS_SRC_BURST_SPEED_MAX,0.7
] );
llSleep(6);
doFlame();
}
}
else {
if ( llSubStringIndex(message, messageStatus) == 0 ) {
if ( fireOn )
llSay( OnChannel, messageHeader + (string)lastRandom );
else
llSay( OffChannel, messageHeader + (string)lastRandom );
}
if ( llSubStringIndex(message, messageFlameRate) == 0 ) {
integer lastChar = llStringLength(message);
lastChar--;
reSpawnTime = (float)llGetSubString(message, llStringLength(messageFlameRate), lastChar);
//llSay( 0, "Flame rez time set to: " + (string)reSpawnTime );
}
else if ( message == messageHeader + (string)lastRandom ) {
toggleFlame();
}
}
}
}


Du brauchst aber noch eine Flammentextur, wie die z.B.: UUUID 5fb33268-a068-4814-bf60-1a88eb6ef810
Zitieren


Nachrichten in diesem Thema
Kerzenflamme an/aus - von Raul Gonzales - 11.12.2020, 17:24
RE: Kerzenflamme an/aus - von Bink Draconia - 11.12.2020, 18:37
RE: Kerzenflamme an/aus - von Cayoun Daydreamer - 12.12.2020, 09:28
RE: Kerzenflamme an/aus - von Raul Gonzales - 12.12.2020, 15:59

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste