notsolid with lighting problem

Post your scripting questions / solutions here

Moderator: Moderators

Post Reply
Whisky
Corporal
Posts: 31
Joined: Tue Aug 05, 2003 6:30 pm
Location: Brussels / Belgium
Contact:

notsolid with lighting problem

Post by Whisky »

Hy guys,

I made a christmas tree (server side), with basically a winter pine model spawned, then 36 lights spawned on it, then 36 coronas spawned on the lights origins, then the script made lights and coronas blinking and gives several color effects to the lights, That is working very fine... as long as I dont give a nonsolid or setsize to my tree model, if I do so, the coronas continue to blink, but I dont see light colors anymore, except when I stand inside the tree :? Its like the notsolid func create an invisible barrier that block lighting :shock:

Anyone can help???

here's some screens of the tree when it working fine

Image
Image
Image
Image

I will post the script this evening so everyone can spawn it on maps :)

PLEASE HELP!
Grassy
First Lieutenant
Posts: 221
Joined: Sun Aug 22, 2004 11:36 am

Post by Grassy »

Cool idea, looks nice too! :) Well done.

Strange about the lights not showing when the tree is made notsolid..
What about spawnflags? Have you tried that?
lizardkid
Windows Zealot
Posts: 3672
Joined: Fri Mar 19, 2004 7:16 pm
Location: Helena MT

Post by lizardkid »

i think your problem is that the tree size is adjusted AFTER the fact, after the model is spawned with default sizes listed in the .TIK the engine displaces all of it and it's bounding box to the size you set, therefore the lights are inside the bounding box and supressed, so perhaps either hdiing them via a script like this...

Code: Select all

level waittil spawn

pre_tree

end

pre_tree:

$light1 hide
$light2 hide
$light3 hide
$light4 hide
$light5 hide

$corona1 hide
$corona2 hide
$corona3 hide
$corona4 hide
$corona5 hide

end
as a side note, that's 11 lines of code that MIGHT be able to be condensed into something easier on the size.... it works in C++ and Java, i've never tried it in MOH.

Code: Select all

for(local.i = 1; i < 5; i++)
{
$corona[local.i] hide
} 

for(local.i = 1; i < 5; i++)
{
$light[local.i] hide
} 

i can jsut see Bjarne or JV coming in and correcting my variables on this, i'm not used to MOH variables. safest way is the first method, but if you get bored someday at work or whatever substitute this in and see if it works.
Moderator

۞
Abyssus pro sapientia
Olympus pro Ignarus
۞

AND STUFF™ © 2006
Whisky
Corporal
Posts: 31
Joined: Tue Aug 05, 2003 6:30 pm
Location: Brussels / Belgium
Contact:

Post by Whisky »

Txs for your reply!

I am affraid to not well undesrtand all what u said... the fact that the lights are inside the bounding box and supressed is a possible solution, but what should I do to avoid this?
Actually I spawn the tree, next the lights and finally the coronas. Only the lights dont appear.
When do you want me to hide the corona and lights?? Btw I hide them many times in my script in order to make the tree blinking :?:

Here's the whole script with the notsolid line commented out, feel free to use it on your maps, just a litlle prob, at this state it makes the server laggy :oops:

Just add this line in your level waittil spawn:

Code: Select all

   // Spawn the christmas tree and start his animation :)
   thread anime_sapin
Then modify the 4 variables
level.sapinX
level.sapinY
level.sapinZ
level.height

and that's all

Code: Select all

//**********************************************************//
//**********************************************************//
//******                                              ******//
//******     XMAS TREE System by [NER-HQ]Whisky :P    ******//
//******     -------------------------------------    ******//
//******                                              ******//
//******  Make what ever u  want of this script BUT   ******//
//******  do not forget the original scripter!        ******//
//******                                              ******//
//******    whisky@ner-clan.net - www.ner-clan.net    ******//
//******                                              ******//
//**********************************************************//
//**********************************************************//
//
// THE MOST IMPORTANT:
// XYZ Coordinates of the Xmas tree: (note that "sapin" means "pine" in french :p)
// Theses coords are spawning the tree in the midlle of the bridge
// ---------------------------------
  level.sapinX = 8      // X coord
  level.sapinY = -60    // Y coord
  level.sapinZ = 180    // Z coord
//----------------------------------
// THE SECOND MOST IMPORTANT:
// This the height from where the first levels of lighting balls will be spawned 
// You will probably have to modify this number in order to fit the lighting balls
// exactly in the tree.
// ---------------------------------
  level.height = 140
//----------------------------------

/////////////////////////////////////////////////////////////
//  Color codes (just for reminder)
//   White  = 0 0 1
//   Blue   = 0 0 1 
//   Red    = 1 0 0
//   Green  = 0 1 0
//   Violet = 1 0 1
//   Orange = 1.000000 0.501961 0.250980
//   Yellow = 1 1 0


/////////////////////////////////////////////////////////////
// Modify Here if u want to change the colors effects
////////////////////////////////////////////////////////////
anime_sapin:
	
	// We wait untill the tree, the lights and the coronas are spawned
  waitthread spawning_all_tree_stuff
 
 	// Animating the tree, Woohooooo :P
   while(1)
   {   
   		wait 5
   		//  Blink all lights in white
      waitthread  blink_all_same_time 1 1 1 100 0.5
      waitthread  blink_all_same_time 1 1 1 100 0.5
			//  Blink all lights in yellow      
      waitthread  blink_all_same_time 1 1 0 100 0.5
      waitthread  blink_all_same_time 1 1 0 100 0.5
			//  Blink all lights in Orange
      waitthread  blink_all_same_time 1.000000 0.501961 0.250980 100 0.5
      waitthread  blink_all_same_time 1.000000 0.501961 0.250980 100 0.5
      //  Blink all lights in Red
      waitthread  blink_all_same_time 1 0 0 100 0.5
      waitthread  blink_all_same_time 1 0 0 100 0.5
      //  Blink all lights in Violet
      waitthread  blink_all_same_time 1 0 1 100 0.5
      waitthread  blink_all_same_time 1 0 1 100 0.5
	 		// Blink all lights in Blue  
      waitthread  blink_all_same_time 0 0 1 100 0.5
      waitthread  blink_all_same_time 0 0 1 100 0.5
      // Blink all lights in Green
      waitthread  blink_all_same_time 0 1 0 100 0.5
      waitthread  blink_all_same_time 0 1 0 100 0.5
      // Blink all with all colors
      waitthread  blink_all_same_time_color 100 0.7
      waitthread  blink_all_same_time_color 100 0.7
      waitthread  blink_all_same_time_color 100 0.7
      // Blink all by levels for all colors
      waitthread  blink_by_level_colors 100 0.8
      waitthread  blink_by_level_colors 100 0.8
      waitthread  blink_by_level_colors 100 0.8      
      waitthread  blink_by_level_colors 100 0.8
			// Blink all by levels in White      
      waitthread  blink_by_level 1 1 1 100 0.5
      waitthread  blink_by_level 1 1 1 100 0.5
      // Blink all by levels in Yellow
      waitthread  blink_by_level 1 1 0 100 0.5
      // Blink all by levels in Orange
      waitthread  blink_by_level 1.000000 0.501961 0.250980 100 0.5
      // Blink all by levels in Red
      waitthread  blink_by_level 1 0 0 100 0.5
      // Blink all by levels in Violet
      waitthread  blink_by_level 1 0 1 100 0.5
      // Blink all by levels in Blue
      waitthread  blink_by_level 0 0 1 100 0.5
      // Blink all by levels in Green
      waitthread  blink_by_level 0 1 0 100 0.5
   }
end

///////////////////////////////////////////////////////////////
////////////// Launching spawning threads /////////////////////
///////////////////////////////////////////////////////////////
spawning_all_tree_stuff:
	// spawning the tree:
	waitthread spawn_du_sapin
	// spawning the lights:
	waitthread spawn_des_lights
	// spawning the coronas (balls):
	waitthread spawn_of_coronas
	
	// Now we are ready to anime the tree :)
end 


///////////////////////////////////////////////////////////////
/////////////////  Xmas Tree Spawn    /////////////////////////
///////////////////////////////////////////////////////////////
spawn_du_sapin:
		
// Spawn tree following the coords entered above
   level.sapin = spawn script_model
   level.sapin.origin = (level.sapinX level.sapinY level.sapinZ)
   level.sapin.scale = 1
   level.sapin model static/tree_winter_tallpine.tik   
//   level.sapin solid
//   level.sapin setsize ( -8 -8 -4 ) (8 8 200)

end

///////////////////////////////////////////////////////////////
/////////////////  Tree Lights Spawn  /////////////////////////
///////////////////////////////////////////////////////////////
spawn_des_lights:     

// Following are the Constant values of sinus/cosinus angles
// Used to spawn the lights all around the tree
// Forgot your trigonometry?? DO NOT TOUCH N00BS! :P
   local.sin45 = 0.7071  // same then cos45
   local.sin15 = 0.2588
   local.cos15 = 0.9659
   local.sin30 = 0.5 
   local.cos30 = 0.866  
   local.sin60 = 0.866  
   local.cos60 = 0.5   
   local.sin75 = 0.9659  
   local.cos75 = 0.2588
   
 ///////////////////////////////////////////////////////////////////
 /// The lights are spawned by level following this schema:
 //  ------------------------------------------------------  
   // 	Level              Lights  Start
   //  	7        /\        1      36
   // 	 6       /  \       2      34
   //  	5      /    \      3      31
   //  	4     /      \     4      27
   //  	3    /        \    6      21
   //  	2   /          \   8      13
   //  	1  /____________\  12      1
   //      	     ||
   //    	       || 
   // all lights are stored in the array "lumiere" (means "light" in french n00bs :P)  

// enought explanations, Go go go

/////////////////////////////////////////////////////////////////////
// Xmas Tree Lights spawns - first level - 12 lights - angle = 30

// Range distance between each lights   
   local.rangeX = 140
   local.rangeY = 140
   local.rangeZ = (level.sapinZ + level.height) 

   level.lumiere[1] = spawn script_model
   level.lumiere[1].origin = (level.sapin.origin + (local.rangeX 0 local.rangeZ))
   level.lumiere[1].scale = 0.5
   level.lumiere[1] model fx/dummy.tik
   level.lumiere[1] light 0 0 0 100

   level.lumiere[2] = spawn script_model
   level.lumiere[2].origin = (level.sapin.origin + ( -local.rangeX 0 local.rangeZ))
   level.lumiere[2].scale = 0.5
   level.lumiere[2] model fx/dummy.tik
   level.lumiere[2] light 0 0 0 100

   level.lumiere[3] = spawn script_model
   level.lumiere[3].origin = (level.sapin.origin + (0 local.rangeY local.rangeZ))
   level.lumiere[3].scale = 0.5
   level.lumiere[3] model fx/dummy.tik
   level.lumiere[3] light 0 0 0 100

   level.lumiere[4] = spawn script_model
   level.lumiere[4].origin = (level.sapin.origin + (0 -local.rangeY local.rangeZ))
   level.lumiere[4].scale = 0.5
   level.lumiere[4] model fx/dummy.tik
   level.lumiere[4] light 0 0 0 100

   level.lumiere[5] = spawn script_model
   level.lumiere[5].origin = (level.sapin.origin + ((local.rangeX*local.sin30) (local.rangeY*local.cos30) local.rangeZ))
   level.lumiere[5].scale = 0.5
   level.lumiere[5] model fx/dummy.tik
   level.lumiere[5] light 0 0 0 100

   level.lumiere[6] = spawn script_model
   level.lumiere[6].origin = (level.sapin.origin + (( -local.rangeX*local.sin30) (local.rangeY*local.cos30) local.rangeZ))
   level.lumiere[6].scale = 0.5
   level.lumiere[6] model fx/dummy.tik
   level.lumiere[6] light 0 0 0 100

   level.lumiere[7] = spawn script_model
   level.lumiere[7].origin = (level.sapin.origin + ((local.rangeX*local.sin30) ( -local.rangeY*local.cos30) local.rangeZ))
   level.lumiere[7].scale = 0.5
   level.lumiere[7] model fx/dummy.tik
   level.lumiere[7] light 0 0 0 100

   level.lumiere[8] = spawn script_model
   level.lumiere[8].origin = (level.sapin.origin + (( -local.rangeX*local.sin30) ( -local.rangeY*local.cos30) local.rangeZ))
   level.lumiere[8].scale = 0.5
   level.lumiere[8] model fx/dummy.tik
   level.lumiere[8] light 0 0 0 100

   level.lumiere[9] = spawn script_model
   level.lumiere[9].origin = (level.sapin.origin + ((local.rangeX*local.sin30) (local.rangeY*local.cos30) local.rangeZ))
   level.lumiere[9].scale = 0.5
   level.lumiere[9] model fx/dummy.tik
   level.lumiere[9] light 0 0 0 100

   level.lumiere[10] = spawn script_model
   level.lumiere[10].origin = (level.sapin.origin + (( -local.rangeX*local.sin30) (local.rangeY*local.cos30) local.rangeZ))
   level.lumiere[10].scale = 0.5
   level.lumiere[10] model fx/dummy.tik
   level.lumiere[10] light 0 0 0 100

   level.lumiere[11] = spawn script_model
   level.lumiere[11].origin = (level.sapin.origin + ((local.rangeX*local.sin30) ( -local.rangeY*local.cos30) local.rangeZ))
   level.lumiere[11].scale = 0.5
   level.lumiere[11] model fx/dummy.tik
   level.lumiere[11] light 0 0 0 100

   level.lumiere[12] = spawn script_model
   level.lumiere[12].origin = (level.sapin.origin + (( -local.rangeX*local.sin30) ( -local.rangeY*local.cos30) local.rangeZ))
   level.lumiere[12].scale = 0.5
   level.lumiere[12] model fx/dummy.tik
   level.lumiere[12] light 0 0 0 100

/////////////////////////////////////////////////////////////////////
// Xmas Tree Lights spawns - Second level   - 8 lights - angle = 45

// Range distance between each lights   
   local.rangeX = 150
   local.rangeY = 150
   local.rangeZ += 100
   
   level.lumiere[13] = spawn script_model
   level.lumiere[13].origin = (level.sapin.origin + (local.rangeX 0 local.rangeZ))
   level.lumiere[13].scale = 0.5
   level.lumiere[13] model fx/dummy.tik
   level.lumiere[13] light 0 0 0 100

   level.lumiere[14] = spawn script_model
   level.lumiere[14].origin = (level.sapin.origin + ( -local.rangeX 0 local.rangeZ))
   level.lumiere[14].scale = 0.5
   level.lumiere[14] model fx/dummy.tik
   level.lumiere[14] light 0 0 0 100

   level.lumiere[15] = spawn script_model
   level.lumiere[15].origin = (level.sapin.origin + (0 local.rangeY local.rangeZ))
   level.lumiere[15].scale = 0.5
   level.lumiere[15] model fx/dummy.tik
   level.lumiere[15] light 0 0 0 100

   level.lumiere[16] = spawn script_model
   level.lumiere[16].origin = (level.sapin.origin + (0 -local.rangeY local.rangeZ))
   level.lumiere[16].scale = 0.5
   level.lumiere[16] model fx/dummy.tik
   level.lumiere[16] light 0 0 0 100

   level.lumiere[17] = spawn script_model
   level.lumiere[17].origin = (level.sapin.origin + ((local.rangeX*local.sin45) (local.rangeY*local.sin45) local.rangeZ))
   level.lumiere[17].scale = 0.5
   level.lumiere[17] model fx/dummy.tik
   level.lumiere[17] light 0 0 0 100

   level.lumiere[18] = spawn script_model
   level.lumiere[18].origin = (level.sapin.origin + (( -local.rangeX*local.sin45) (local.rangeY*local.sin45) local.rangeZ))
   level.lumiere[18].scale = 0.5
   level.lumiere[18] model fx/dummy.tik
   level.lumiere[18] light 0 0 0 100

   level.lumiere[19] = spawn script_model
   level.lumiere[19].origin = (level.sapin.origin + ((local.rangeX*local.sin45) ( -local.rangeY*local.sin45) local.rangeZ))
   level.lumiere[19].scale = 0.5
   level.lumiere[19] model fx/dummy.tik
   level.lumiere[19] light 0 0 0 100

   level.lumiere[20] = spawn script_model
   level.lumiere[20].origin = (level.sapin.origin + (( -local.rangeX*local.sin45) ( -local.rangeY*local.sin45) local.rangeZ))
   level.lumiere[20].scale = 0.5
   level.lumiere[20] model fx/dummy.tik
   level.lumiere[20] light 0 0 0 100

/////////////////////////////////////////////////////////////////////
// Xmas Tree Lights spawns - Thirth level - 6 lights - angle = 60

// Range distance between each lights   
   local.rangeX = 120
   local.rangeY = 120
   local.rangeZ += 100
   
   level.lumiere[21] = spawn script_model
   level.lumiere[21].origin = (level.sapin.origin + (local.rangeX 0 local.rangeZ))
   level.lumiere[21].scale = 0.5
   level.lumiere[21] model fx/dummy.tik
   level.lumiere[21] light 0 0 0 100

   level.lumiere[22] = spawn script_model
   level.lumiere[22].origin = (level.sapin.origin + ( -local.rangeX 0 local.rangeZ))
   level.lumiere[22].scale = 0.5
   level.lumiere[22] model fx/dummy.tik
   level.lumiere[22] light 0 0 0 100

   level.lumiere[23] = spawn script_model
   level.lumiere[23].origin = (level.sapin.origin + ((local.rangeX*local.sin60) (local.rangeY*local.cos60) local.rangeZ))
   level.lumiere[23].scale = 0.5
   level.lumiere[23] model fx/dummy.tik
   level.lumiere[23] light 0 0 0 100

   level.lumiere[24] = spawn script_model
   level.lumiere[24].origin = (level.sapin.origin + ((local.rangeX*local.sin60) ( -local.rangeY*local.cos60) local.rangeZ))
   level.lumiere[24].scale = 0.5
   level.lumiere[24] model fx/dummy.tik
   level.lumiere[24] light 0 0 0 100

   level.lumiere[25] = spawn script_model
   level.lumiere[25].origin = (level.sapin.origin + (( -local.rangeX*local.sin60) (local.rangeY*local.cos60) local.rangeZ))
   level.lumiere[25].scale = 0.5
   level.lumiere[25] model fx/dummy.tik
   level.lumiere[25] light 0 0 0 100

   level.lumiere[26] = spawn script_model
   level.lumiere[26].origin = (level.sapin.origin + (( -local.rangeX*local.sin60) ( -local.rangeY*local.cos60) local.rangeZ))
   level.lumiere[26].scale = 0.5
   level.lumiere[26] model fx/dummy.tik
   level.lumiere[26] light 0 0 0 100

/////////////////////////////////////////////////////////////////////
// Xmas Tree Lights spawns - Fourth level - 4 lights - angle = 90

// Range distance between each lights   
   local.rangeX = 80
   local.rangeY = 80
   local.rangeZ += 100
   
   level.lumiere[27] = spawn script_model
   level.lumiere[27].origin = (level.sapin.origin + (local.rangeX 0 local.rangeZ))
   level.lumiere[27].scale = 0.5
   level.lumiere[27] model fx/dummy.tik
   level.lumiere[27] light 0 0 0 100

   level.lumiere[28] = spawn script_model
   level.lumiere[28].origin = (level.sapin.origin + ( -local.rangeX 0 local.rangeZ))
   level.lumiere[28].scale = 0.5
   level.lumiere[28] model fx/dummy.tik
   level.lumiere[28] light 0 0 0 100

   level.lumiere[29] = spawn script_model
   level.lumiere[29].origin = (level.sapin.origin + (0 local.rangeY local.rangeZ))
   level.lumiere[29].scale = 0.5
   level.lumiere[29] model fx/dummy.tik
   level.lumiere[29] light 0 0 0 100

   level.lumiere[30] = spawn script_model
   level.lumiere[30].origin = (level.sapin.origin + (0 -local.rangeY local.rangeZ))
   level.lumiere[30].scale = 0.5
   level.lumiere[30] model fx/dummy.tik
   level.lumiere[30] light 0 0 0 100

/////////////////////////////////////////////////////////////////////
// Xmas Tree Lights spawns - Fifth level - 3 lights - angle = 120

// Range distance between each lights   
   local.rangeX = 50
   local.rangeY = 50
   local.rangeZ += 100
   
   level.lumiere[31] = spawn script_model
   level.lumiere[31].origin = (level.sapin.origin + (local.rangeX 0 local.rangeZ))
   level.lumiere[31].scale = 0.5
   level.lumiere[31] model fx/dummy.tik
   level.lumiere[31] light 0 0 0 100
//   println level.lumiere[31].origin

   level.lumiere[32] = spawn script_model
   level.lumiere[32].origin = (level.sapin.origin + (( -local.rangeX*local.sin60) 0 local.rangeZ))
   level.lumiere[32].scale = 0.5
   level.lumiere[32] model fx/dummy.tik
   level.lumiere[32] light 0 0 0 100
//   println level.lumiere[32].origin

   level.lumiere[33] = spawn script_model
   level.lumiere[33].origin = (level.sapin.origin + (( -local.rangeX*local.sin60) ( -local.rangeY*local.cos60) local.rangeZ))
   level.lumiere[33].scale = 0.5
   level.lumiere[33] model fx/dummy.tik
   level.lumiere[33] light 0 0 0 100
//   println level.lumiere[33].origin

/////////////////////////////////////////////////////////////////////
// Xmas Tree Lights spawns - Sixth level - 2 lights - angle = 180

// Range distance between each lights   
   local.rangeX = 20
   local.rangeY = 20
   local.rangeZ += 100
   
   level.lumiere[34] = spawn script_model
   level.lumiere[34].origin = (level.sapin.origin + (0 local.rangeY local.rangeZ))
   level.lumiere[34].scale = 0.5
   level.lumiere[34] model fx/dummy.tik
   level.lumiere[34] light 0 0 0 100
//   println level.lumiere[34].origin

   level.lumiere[35] = spawn script_model
   level.lumiere[35].origin = (level.sapin.origin + (0 -local.rangeY local.rangeZ))
   level.lumiere[35].scale = 0.5
   level.lumiere[35] model fx/dummy.tik
   level.lumiere[35] light 0 0 0 100
//   println level.lumiere[35].origin 

/////////////////////////////////////////////////////////////////////
// Xmas Tree Lights spawns - Seventh level - 1 light on midlle/top

// Range distance between each lights   
   local.rangeX = 0
   local.rangeY = 0
   local.rangeZ += 90
   
   level.lumiere[36] = spawn script_model
   level.lumiere[36].origin = (level.sapin.origin + (0 0 local.rangeZ))
   level.lumiere[36].scale = 0.5
   level.lumiere[36] model fx/dummy.tik
   level.lumiere[36] light 0 0 0 100
// println level.lumiere[36].origin

end

///////////////////////////////////////////////////////////////
/////////////////    Coronas Spawn    /////////////////////////
///////////////////////////////////////////////////////////////
spawn_of_coronas:  
	// all coronas are white and spawned on the lights origins
   for(local.j=1;local.j <= level.lumiere.size;local.j++)
   {   
      level.corona[local.j] = spawn script_model
      level.corona[local.j].origin = level.lumiere[local.j]
      level.corona[local.j].scale = 1
      level.corona[local.j] model static/corona_reg.tik
      level.corona[local.j] notsolid
   }
end

///////////////////////////////////////////////////////////////////   
///////////////////////////////////////////////////////////////////  
//  FOLOWING THREADS ARE ANIMATING THE TREE WITH LIGHT BLINKING  // 
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////


/////////////////////////////////////////////////////////////////////////////////////   
// All lights blink at same time with the same color sent by parameter
/////////////////////////////////////////////////////////////////////////////////////
blink_all_same_time local.Red local.Green local.Blue local.Power local.Delay:

   // Light off all tree
   thread hide_all

   wait local.Delay   
   
   // Light up all tree with sent color
   for(local.I=1;local.I <= level.lumiere.size;local.I++)
   {   
      level.lumiere[local.I] light local.Red local.Green local.Blue local.Power
      level.corona[local.I] show
   }
   wait local.Delay
end

/////////////////////////////////////////////////////////////////////////////////////   
// All lights blink at same time with each time a different color
/////////////////////////////////////////////////////////////////////////////////////
blink_all_same_time_color local.Power local.Delay:

   // Light off all tree
   thread hide_all
   
   wait local.Delay   
   
   // Light up all tree in Blue
   for(local.I=1;local.I <= level.lumiere.size;local.I++)
   {   
      level.lumiere[local.I] light 0 0 1 local.Power
      level.corona[local.I] show

   }
   
   wait local.Delay

   // Light off all tree
   thread hide_all
   
   wait local.Delay   
   
   // Light up all tree in Violet
   for(local.I=1;local.I <= level.lumiere.size;local.I++)
   {   
      level.lumiere[local.I] light 1 0 1 local.Power
      level.corona[local.I] show
   }
   
   wait local.Delay
   
   // Light off all tree
   thread hide_all
   
   wait local.Delay   
   
   // Light up all tree in Red
   for(local.I=1;local.I <= level.lumiere.size;local.I++)
   {   
      level.lumiere[local.I] light 1 0 0 local.Power
      level.corona[local.I] show
   }
   
   wait local.Delay
   
   // Light off all tree
   thread hide_all
   
   wait local.Delay   
   
   // Light up all tree in Orange
   for(local.I=1;local.I <= level.lumiere.size;local.I++)
   {   
      level.lumiere[local.I] light 1.000000 0.501961 0.250980 local.Power
      level.corona[local.I] show
   }
   
   wait local.Delay
   
   // Light off all tree
   thread hide_all
   
   wait local.Delay   
   
   // Light up all tree in Yellow
   for(local.I=1;local.I <= level.lumiere.size;local.I++)
   {   
      level.lumiere[local.I] light 1 1 0 local.Power
      level.corona[local.I] show
   }
   
   wait local.Delay
   
   // Light off all tree
   thread hide_all
   
   wait local.Delay   
   
   // Light up all tree in Green
   for(local.I=1;local.I <= level.lumiere.size;local.I++)
   {   
      level.lumiere[local.I] light 0 1 0 local.Power
      level.corona[local.I] show
   }
   
   wait local.Delay
   
   // Light off all tree
   thread hide_all
   
   wait local.Delay   
   
   // Light up all tree in White
   for(local.I=1;local.I <= level.lumiere.size;local.I++)
   {   
      level.lumiere[local.I] light 1 1 1 local.Power
      level.corona[local.I] show
   }
   
   wait local.Delay
   
end

/////////////////////////////////////////////////////////////////////////////////////
// All lights blink by level with the same color sent by parameters
/////////////////////////////////////////////////////////////////////////////////////
blink_by_level local.Red local.Green local.Blue local.Power local.Delay:
   
   // Light off all tree
   thread hide_all

   // Light on First level (12 lights)
   for(local.I=1;local.I <= 12 ;local.I++)
   {   
      level.lumiere[local.I] light local.Red local.Green local.Blue local.Power
      level.corona[local.I] show
   }
   wait local.Delay   

   // Light Off First level (12 lights)
   for(local.I=1;local.I <= 12 ;local.I++)
   {   
      level.lumiere[local.I] light 0 0 0 local.Power
      level.corona[local.I] hide
   }

   // Light on Second level (8 lights)
   for(local.I=13; local.I <= 20; local.I++)
   {   
      level.lumiere[local.I] light local.Red local.Green local.Blue local.Power
      level.corona[local.I] show

   }
   wait local.Delay   

   // Light off Second level (8 lights)
   for(local.I=13; local.I <= 20; local.I++)
   {   
      level.lumiere[local.I] light 0 0 0 local.Power
      level.corona[local.I] hide
   }   
   
   // Light on Thirth level (6 lights)
   for(local.I=21; local.I <= 26; local.I++)
   {   
      level.lumiere[local.I] light local.Red local.Green local.Blue local.Power
      level.corona[local.I] show
   }
   wait local.Delay   

   // Light off Thirth level (6 lights)
   for(local.I=21; local.I <= 26; local.I++)
   {   
      level.lumiere[local.I] light 0 0 0 local.Power
      level.corona[local.I] hide
   }      

   // Light on Fourth level (4 lights)
   for(local.I=27; local.I <= 30; local.I++)
   {   
      level.lumiere[local.I] light local.Red local.Green local.Blue local.Power
      level.corona[local.I] show
   }
   wait local.Delay   

   // Light Off Fourth level (4 lights)
   for(local.I=27; local.I <= 30; local.I++)
   {   
      level.lumiere[local.I] light 0 0 0 local.Power
      level.corona[local.I] hide
   }

   // Light on Fifth level (3 lights)
   for(local.I=31; local.I <= 33; local.I++)
   {   
      level.lumiere[local.I] light local.Red local.Green local.Blue local.Power
      level.corona[local.I] show
   }
   wait local.Delay   

   // Light Off Fifth level (3 lights)
   for(local.I=31; local.I <= 33; local.I++)
   {   
      level.lumiere[local.I] light 0 0 0 local.Power
      level.corona[local.I] hide
   }
   wait local.Delay   

   // Light on Sixth level (2 lights)
   for(local.I=34; local.I <= 35; local.I++)
   {   
      level.lumiere[local.I] light local.Red local.Green local.Blue local.Power
      level.corona[local.I] show
   }
   wait local.Delay   

   // Light Off Sixth level (2 lights)
   for(local.I=34; local.I <= 35; local.I++)
   {   
      level.lumiere[local.I] light 0 0 0 local.Power
      level.corona[local.I] hide
   }
   wait local.Delay   
   
   // Light on Seventh level (1 lights)
   level.lumiere[36] light local.Red local.Green local.Blue local.Power
   level.corona[36] show
   
   wait local.Delay   
   
end

/////////////////////////////////////////////////////////////////////////////////////
// All lights blink by level with different colors
/////////////////////////////////////////////////////////////////////////////////////
blink_by_level_colors local.Power local.Delay:
   
   // Light off all tree
   thread hide_all

   // Light on First level (12 lights)
   for(local.I=1;local.I <= 12 ;local.I++)
   {   
      level.lumiere[local.I] light 0 0 1 local.Power
      level.corona[local.I] show
   }
   wait local.Delay   

   // Light off all tree
   thread hide_all

   wait local.Delay   

   // Light on Second level (8 lights)
   for(local.I=13; local.I <= 20; local.I++)
   {   
      level.lumiere[local.I] light 1 0 1 local.Power
      level.corona[local.I] show
   }
   wait local.Delay   

   // Light off all tree
   thread hide_all

   wait local.Delay   
   
   // Light on Thirth level (6 lights)
   for(local.I=21; local.I <= 26; local.I++)
   {   
      level.lumiere[local.I] light 1 0 0 local.Power
      level.corona[local.I] show
   }
   wait local.Delay   

   // Light off all tree
   thread hide_all

   // Light on Fourth level (4 lights)
   for(local.I=27; local.I <= 30; local.I++)
   {   
      level.lumiere[local.I] light 1.000000 0.501961 0.250980 local.Power
      level.corona[local.I] show
   }
   wait local.Delay   

   // Light off all tree
   thread hide_all

   wait local.Delay   


   // Light on Fifth level (3 lights)
   for(local.I=31; local.I <= 33; local.I++)
   {   
      level.lumiere[local.I] light 1 1 0 local.Power
      level.corona[local.I] show
   }
   wait local.Delay   

   // Light off all tree
   thread hide_all

   wait local.Delay   

   // Light on Sixth level (2 lights)
   for(local.I=34; local.I <= 35; local.I++)
   {   
      level.lumiere[local.I] light 0 1 0 local.Power
      level.corona[local.I] show
   }
   wait local.Delay   

   // Light off all tree
   thread hide_all

   wait local.Delay   
   
   // Light on Seventh level (1 lights)
   level.lumiere[36] light 1 1 1 local.Power
   level.corona[36] show
   
   wait local.Delay   
   
end

/////////////////////////////////////////////////////////////////////////////////////   
// Light ON a Light at random, with a randomized color
/////////////////////////////////////////////////////////////////////////////////////
random_light_color local.Power local.Delay:
   // Random light
   local.X = randomint (35) + 1
   // Random Red value
   local.R = randomint (10)
   // Random Green value
   local.G = randomint (10)
   // Random Red value
   local.B = randomint (10)

   // Convert Random Red value
   switch (local.R)
   {
    case 0:
       local.R = 1
      break
    case 1:
       local.R = 0.1
      break
    case 2:
       local.R = 0.2
      break
    case 3:
       local.R = 0.3
      break
    case 4:
       local.R = 0.4
      break
    case 5:
       local.R = 0.5
      break
    case 6:
       local.R = 0.6
      break
    case 7:
       local.R = 0.7
      break
    case 8:
       local.R = 0.8
      break
    case 9:
       local.R = 0.9
      break
    default:
       local.R = 0
      break
   } 
   // Convert Random Green value
   switch (local.G)
   {
    case 0:
       local.G = 1
      break
    case 1:
       local.G = 0.1
      break
    case 2:
       local.G = 0.2
      break
    case 3:
       local.G = 0.3
      break
    case 4:
       local.G = 0.4
      break
    case 5:
       local.G = 0.5
      break
    case 6:
       local.G = 0.6
      break
    case 7:
       local.G = 0.7
      break
    case 8:
       local.G = 0.8
      break
    case 9:
       local.G = 0.9
      break
    default:
       local.G = 0
      break
   } 
   // Convert Random Blue value   
   switch (local.B)
   {
    case 0:
       local.B = 1
      break
    case 1:
       local.B = 0.1
      break
    case 2:
       local.B = 0.2
      break
    case 3:
       local.B = 0.3
      break
    case 4:
       local.B = 0.4
      break
    case 5:
       local.B = 0.5
      break
    case 6:
       local.B = 0.6
      break
    case 7:
       local.B = 0.7
      break
    case 8:
       local.B = 0.8
      break
    case 9:
       local.B = 0.9
      break
    default:
       local.B = 0
      break
   }
   // Light ON the randomized light with the randomized RGB colors
   level.lumiere[local.X] light local.R local.G local.B local.Power
   level.corona[local.X] show
   
   wait local.Delay
   
end

/////////////////////////////////////////////////////////////////////////////////////   
// Light ON a Light at random, with the color specified
/////////////////////////////////////////////////////////////////////////////////////
random_light local.R local.G local.B local.Power local.Delay:
   // Random light
   local.X = randomint (35) + 1

   // Light ON the randomized light with the color passed in parameter
   level.lumiere[local.X] light local.R local.G local.B local.Power
   level.corona[local.X] show
   
   wait local.Delay
   
end

//////////////////////////////////////////////////////////////////////////   
//                  HIDE ALL LIGHTS AND CORONAS
//////////////////////////////////////////////////////////////////////////
hide_all:
   for(local.j=1;local.j <= level.lumiere.size;local.j++)
   {   
      level.corona[local.j] hide
      level.lumiere[local.j] light 0 0 0 100
   }
end

///////////////////////////////////////////////////////////////////////////
// This is the end, my only friend the end :P
// Father, yes son, I want to kill u
// Mother..... I want to......................................
// hehehe
//////////////////////////////////////////////////////////////////////////
Enjoy 8-)
jv_map
Site Admin
Posts: 6521
Joined: Tue Sep 03, 2002 2:53 pm
Location: The Netherlands
Contact:

Post by jv_map »

Not bad :)

The problem might be that you have too many lights... dynamic lights act very weird when you have more than +- 8 in view :(

Also, just a suggestion to reduce the code a little :); maybe replace this

Code: Select all

// Convert Random Red value
   switch (local.R)
   {
    case 0:
       local.R = 1
      break
    case 1:
       local.R = 0.1
      break
    case 2:
       local.R = 0.2
      break
    case 3:
       local.R = 0.3
      break
    case 4:
       local.R = 0.4
      break
    case 5:
       local.R = 0.5
      break
    case 6:
       local.R = 0.6
      break
    case 7:
       local.R = 0.7
      break
    case 8:
       local.R = 0.8
      break
    case 9:
       local.R = 0.9
      break
    default:
       local.R = 0
      break
   } 
With local.R = 0.1 * local.R :idea: (or just do local.R = randomfloat 1.0).
Image
Whisky
Corporal
Posts: 31
Joined: Tue Aug 05, 2003 6:30 pm
Location: Brussels / Belgium
Contact:

Post by Whisky »

Heel bedankt JV :)

Very interresting to know that more then 8 lights in a view may bring problems, I will decrease the number to 6 instead of 36 and increase their light to 300 instead of 100, I'll let the coronas so the result should be the same 8-)

And for your proposal, I agree with your idea but anyway I didnt used this script part so far... I made it at work just to spend the time :lol:


Thank you very much Master!
Rindog
Corporal
Posts: 29
Joined: Wed Sep 24, 2003 6:34 pm

Post by Rindog »

Shouldn't

level.corona[local.j].origin = level.lumiere[local.j]

be:

level.corona[local.j].origin = level.lumiere[local.j].origin
Whisky
Corporal
Posts: 31
Joined: Tue Aug 05, 2003 6:30 pm
Location: Brussels / Belgium
Contact:

Post by Whisky »

yes u'r right I forgot that :? but I swear that it's working on this state so I didnt had any reson to correct it :D
Post Reply