My first real scripting job...

Made a map or mod? Announce it in this forum!

Moderator: Moderators

Post Reply
blue60007
General
Posts: 1247
Joined: Sun Mar 07, 2004 11:44 pm

My first real scripting job...

Post by blue60007 »

Well I think I have my elevator script for a BCDA level done. I counted about 23 threads in all. You'll notice a lot of commented out lines, once I'm sure those are uneeded I'll delete them and also there is also a lot of debug info be printing, again once I'm sure everything is working, I'll be commenting them for later use...

Well anyways, here it is:

Code: Select all

thread elevator

elevator:

//////////////////////////////////////
//////////INIT ELEVATOR THINGS////////
//////////////////////////////////////
//
//NOTE: All elevator objects and threads are denoted with "elevator_" prefix
//
//thread elevator_lights
//
level.elevator_currentlevel = 1
level.elevator_enroute = 0
level.elevator_level0_doors_status = 0
level.elevator_level1_doors_status = 1
level.elevator_cab_doors_status = 1

thread elevator_level0_triggered
thread elevator_level1_triggered
thread elevator_button_triggered

///BINDING///

$elevator_light bind $elevator_cab
$elevator_button bind $elevator_cab
$elevator_cab_door1 bind $elevator_cab
$elevator_cab_door2 bind $elevator_cab
$elevator_cab_speaker bind $elevator_cab
$elevator_button_speaker bind $elevator_cab
$elevator_cab_doors_speaker bind $elevator_cab
thread elevator_debug1





//////////////////////////////////////
//////////ELEVATOR LIGHTS/////////////
//////////////////////////////////////

elevator_lights:
iprintln "LIGHTS ON"
$elevator_light light 1 1 1 256

end

//2728


////////////////////////////////////
///////////LEVEL 0 TRIGGER//////////
////////////////////////////////////

elevator_level0_triggered:

$elevator_level0_trigger waittill trigger

$elevator_level0_trigger nottriggerable
$elevator_level1_trigger nottriggerable

if (level.elevator_enroute == 0 && level.elevator_currentlevel == 0)
	{
	iprintln "Stopped: Level 0"
	//if elevator is stopped at level 0
	
	$elevator_level0_trigger triggerable
	$elevator_level1_trigger triggerable

	}

else
	{
	
	
	if (level.elevator_enroute == 1)
		{
		iprintln "Moving"
		//moving, either level
		$elevator_level0_trigger triggerable
		$elevator_level1_trigger triggerable
		
		}
		
	else
		{
		
		if (level.elevator_enroute == 0 && level.elevator_currentlevel == 1)

			{
			
			iprintln "Stopped: Level 1"
			//if stopped at level 1
			thread elevator_level0_recall
			
			}
		else

			{

			iprintln "INVALID"
			//if neither

			$elevator_level0_trigger triggerable
			$elevator_level1_trigger triggerable

			}

		}
	
	}
goto elevator_level0_triggered

end


////////////////////////////////////
///////////LEVEL 1 TRIGGER//////////
////////////////////////////////////

elevator_level1_triggered:

$elevator_level1_trigger waittill trigger

$elevator_level0_trigger nottriggerable
$elevator_level1_trigger nottriggerable

if (level.elevator_enroute == 0 && level.elevator_currentlevel == 0)
	{
	iprintln "Stopped: Level 0"
	//if elevator is stopped at level 0
	thread elevator_level1_recall
	}

else
	{
	
	
	if (level.elevator_enroute == 1)
		{
		iprintln "Moving"
		//moving, either level
		$elevator_level0_trigger triggerable
		$elevator_level1_trigger triggerable
		}
		
	else
		{
		
		if (level.elevator_enroute == 0 && level.elevator_currentlevel == 1)

			{
			
			iprintln "Stopped: Level 1"
			//if stopped at level 1
			$elevator_level0_trigger triggerable
			$elevator_level1_trigger triggerable
			
			}
		else

			{

			iprintln "INVALID"
			//if neither
			$elevator_level0_trigger triggerable
			$elevator_level1_trigger triggerable
			}

		}
	
	}

goto elevator_level1_triggered
end

//////////////////////////////
/////LEVEL0 RECALL////////////
//////////////////////////////

elevator_level0_recall:

thread elevator_cab_doors_do
wait .5

thread elevator_level1_doors_do
wait 4.5
iprintln "RECALLING to level 0"
level.elevator_enroute = 1
thread elevator_cab_move_down
wait 45
level.elevator_enroute = 0
level.elevator_currentlevel = 0

wait 2.5

thread elevator_cab_doors_do

wait .5

thread elevator_level0_doors_do

wait 5

$elevator_level0_trigger triggerable
$elevator_level1_trigger triggerable

iprintln "Triggerable again"

///LIGHTS///


end




//////////////////////////////
/////LEVEL1 RECALL////////////
//////////////////////////////

elevator_level1_recall:

thread elevator_cab_doors_do
wait .5

thread elevator_level0_doors_do
wait 4.5

iprintln "RECALLING to level 1"
level.elevator_enroute = 1
thread elevator_cab_move_up

wait 45
level.elevator_enroute = 0
level.elevator_currentlevel = 1

wait 2.5

thread elevator_cab_doors_do

wait .5

thread elevator_level1_doors_do

wait 5

$elevator_level0_trigger triggerable
$elevator_level1_trigger triggerable

iprintln "Triggerable again"

///LIGHTS///


end




///////////////////////////////
/////MOVE UP///////////////////
///////////////////////////////

elevator_cab_move_up:



$elevator_cab moveUp 2592
$elevator_cab time 45
$elevator_cab move
$elevator_cab_speaker loopsound sub_idle1
level.elevator_enroute = 1
$elevator_cab waittill movedone
wait 45
$elevator_cab_speaker stoploopsound
$elevator_cab_speaker playsound subclamp_open
level.elevator_enroute = 0
level.elevator_currentlevel = 1
$elevator_button_trigger triggerable
iprintln "Move done"

end	


///////////////////////////////
/////MOVE DOWN/////////////////
///////////////////////////////

elevator_cab_move_down:



$elevator_cab moveDown 2592
$elevator_cab time 45
$elevator_cab move
$elevator_cab_speaker loopsound sub_idle1
level.elevator_enroute = 1
$elevator_cab waittill movedone
wait 45
$elevator_cab_speaker stoploopsound
$elevator_cab_speaker playsound subclamp_open
level.elevator_enroute = 0
level.elevator_currentlevel = 0
$elevator_button_trigger triggerable
iprintln "Move done"

end



///////////////////////////////////
/////////ELEVATOR BUTTON///////////
///////////////////////////////////

elevator_button_triggered:
$elevator_button_trigger triggerable
$elevator_button_trigger waittill trigger

$elevator_button_trigger nottriggerable
$elevator_button_speaker playsound switchbox1
		
if (level.elevator_enroute == 0 && level.elevator_currentlevel == 0)
	{
	iprintln "Stopped: Level 0"
	//if elevator is stopped at level 0
	wait 2.5
	thread elevator_cab_doors_do
	//$elevator_level0_doors_speaker loopsound tank_snd_move
	wait .5
	thread elevator_level0_doors_do
	wait 2
	//$elevator_level0_doors_speaker stoploopsound
	$elevator_cab_speaker playsound subclamp_open
	wait 2
	thread elevator_go_level0
	wait 47.5
	thread elevator_cab_doors_do
	wait .5
	thread elevator_level1_doors_do
	wait 5
	$elevator_button_trigger triggerable

	}

else
	{
	
	
	if (level.elevator_enroute == 1)
		{
		iprintln "Moving"
		//moving, either level
		$elevator_button_trigger triggerable
		}
		
	else
		{
		
		if (level.elevator_enroute == 0 && level.elevator_currentlevel == 1)

			{
			
			iprintln "Stopped: Level 1"
			//if stopped at level 1
			wait 2.5
			thread elevator_cab_doors_do
			//$elevator_level0_doors_speaker loopsound tank_snd_move
			wait .5
			thread elevator_level1_doors_do
			wait 2
			//$elevator_level0_doors_speaker stoploopsound
			$elevator_cab_speaker playsound subclamp_open
			wait 2
			thread elevator_go_level1
			wait 47.5
			thread elevator_cab_doors_do
			wait .5
			thread elevator_level0_doors_do
			wait 5
			$elevator_button_trigger triggerable
			}
		else

			{

			iprintln "INVALID"
			//if neither
			$elevator_button_trigger triggerable
			}

		}
	
	}	
//thread elevator_cab_button_do
$elevator_button_trigger triggerable	
goto elevator_button_triggered
end


/////////////////////////////////////
////////////////GO LEVEL 0///////////
/////////////////////////////////////

elevator_go_level0:

iprintln "GOING to level1"

thread elevator_cab_move_up

wait 45

level.elevator_currentlevel = 1

$elevator_button_trigger triggerable

iprintln "Button triggerable"

end


/////////////////////////////////////
////////////////GO LEVEL 1///////////
/////////////////////////////////////

elevator_go_level1:

iprintln "GOING to level0"

thread elevator_cab_move_down

wait 45

level.elevator_currentlevel = 0

$elevator_button_trigger triggerable

iprintln "Button triggerable"

end


/////DEBUG1////

elevator_debug1:

iprintln "En route: " level.elevator_enroute

wait 5

goto elevator_debug1

end

///


//////////////////////////////////////
//////////CAB DOORS OPEN//////////////
//////////////////////////////////////


elevator_cab_doors_open:

$elevator_cab_door1 moveEast 96
$elevator_cab_door1 time 2
$elevator_cab_door1 move


$elevator_cab_door2 moveWest 96
$elevator_cab_door2 time 2
$elevator_cab_door2 move

wait 2

level.elevator_cab_doors_status = 1

end


//////////////////////////////////////
//////////CAB DOORS CLOSE/////////////
//////////////////////////////////////


elevator_cab_doors_close:

$elevator_cab_door1 moveWest 96
$elevator_cab_door1 time 2
$elevator_cab_door1 move


$elevator_cab_door2 moveEast 96
$elevator_cab_door2 time 2
$elevator_cab_door2 move

level.elevator_cab_doors_status = 0

end


///////////////////////////////////////
/////////LEVEL 0 DOORS OPEN////////////
///////////////////////////////////////

elevator_level0_doors_open:

$elevator_level0_door1 moveWest 96
$elevator_level0_door1 time 2
$elevator_level0_door1 move


$elevator_level0_door2 moveEast 96
$elevator_level0_door2 time 2
$elevator_level0_door2 move

wait 2

level.elevator_level0_doors_status = 1

end


///////////////////////////////////////
/////////LEVEL 0 DOORS CLOSE///////////
///////////////////////////////////////

elevator_level0_doors_close:

$elevator_level0_door1 moveEast 96
$elevator_level0_door1 time 2
$elevator_level0_door1 move


$elevator_level0_door2 moveWest 96
$elevator_level0_door2 time 2
$elevator_level0_door2 move

wait 2

level.elevator_level0_doors_status = 0

end


///////////////////////////////////////
/////////LEVEL 1 DOORS OPEN////////////
///////////////////////////////////////

elevator_level1_doors_open:

$elevator_level1_door1 moveEast 96
$elevator_level1_door1 time 2
$elevator_level1_door1 move


$elevator_level1_door2 moveWest 96
$elevator_level1_door2 time 2
$elevator_level1_door2 move

wait 2

level.elevator_level1_doors_status = 1

end


///////////////////////////////////////
/////////LEVEL 1 DOORS CLOSE///////////
///////////////////////////////////////

elevator_level1_doors_close:

$elevator_level1_door1 moveWest 96
$elevator_level1_door1 time 2
$elevator_level1_door1 move


$elevator_level1_door2 moveEast 96
$elevator_level1_door2 time 2
$elevator_level1_door2 move

wait 2

level.elevator_level1_doors_status = 0

end



////////////////////////////////////////
/////////LEVEL 0 DOORS DO///////////////
////////////////////////////////////////

elevator_level0_doors_do:

if (level.elevator_level0_doors_status == 0)
	{
	//$elevator_generator1_speaker loopsound e1l4_machine_loop
	//$elevator_generator2_speaker loopsound e1l4_machine_loop
	thread elevator_level0_doors_open
	wait 2.5
	$elevator_cab_speaker playsound subclamp_open
	//wait 47.5
	//$elevator_generator1_speaker stoploopsound
	//$elevator_generator2_speaker stoploopsound
	}
else
	{

	if (level.elevator_level0_doors_status == 1)
		{
		//$elevator_generator1_speaker loopsound e1l4_machine_loop
		//$elevator_generator2_speaker loopsound e1l4_machine_loop
		thread elevator_level0_doors_close
		wait 2.5
		$elevator_cab_speaker playsound subclamp_open
		//wait 47.5
		//$elevator_generator1_speaker stoploopsound
		//$elevator_generator2_speaker stoploopsound

		}
	else
		{
		iprintln "INVALID"
		}
	}

end


////////////////////////////////////////
/////////LEVEL 1 DOORS DO///////////////
////////////////////////////////////////

elevator_level1_doors_do:

if (level.elevator_level1_doors_status == 0)
	{
	//$elevator_generator1_speaker loopsound e1l4_machine_loop
	//$elevator_generator2_speaker loopsound e1l4_machine_loop
	thread elevator_level1_doors_open
	wait 2.5
	$elevator_cab_speaker playsound subclamp_open
	//wait 47.5
	//$elevator_generator1_speaker stoploopsound
	//$elevator_generator2_speaker stoploopsound
	}
else
	{

	if (level.elevator_level1_doors_status == 1)
		{
		//$elevator_generator1_speaker loopsound e1l4_machine_loop
		//$elevator_generator2_speaker loopsound e1l4_machine_loop
		thread elevator_level1_doors_close
		wait 2.5
		$elevator_cab_speaker playsound subclamp_open
		//wait 47.5
		//$elevator_generator1_speaker stoploopsound
		//$elevator_generator2_speaker stoploopsound
		}
	else
		{
		iprintln "INVALID"
		}
	}

end



////////////////////////////////////////
/////////CAB DOORS DO///////////////////
////////////////////////////////////////


elevator_cab_doors_do:


if (level.elevator_cab_doors_status == 0)
	{
	$elevator_generator1_speaker loopsound e1l4_machine_loop
	$elevator_generator2_speaker loopsound e1l4_machine_loop
	thread elevator_cab_doors_open
	$elevator_cab_doors_speaker loopsound tank_snd_move
	wait 2.5
	//$elevator_cab_speaker playsound subclamp_open
	$elevator_cab_doors_speaker stoploopsound
	wait 47.5
	$elevator_generator1_speaker stoploopsound
	$elevator_generator2_speaker stoploopsound
	}
else
	{

	if (level.elevator_cab_doors_status == 1)
		{
		$elevator_generator1_speaker loopsound e1l4_machine_loop
		$elevator_generator2_speaker loopsound e1l4_machine_loop
		thread elevator_cab_doors_close
		$elevator_cab_doors_speaker loopsound tank_snd_move
		wait 2.5
		//$elevator_cab_speaker playsound subclamp_open
		$elevator_cab_doors_speaker stoploopsound
		wait 47.5
		$elevator_generator1_speaker stoploopsound
		$elevator_generator2_speaker stoploopsound
		}
	else
		{
		iprintln "INVALID"
		}
	}

end


/*
////////////////////////////////////////////
////////////CAB BUTTON DOORS DO/////////////
////////////////////////////////////////////


elevator_cab_button_do:

if (level.elevator_enroute == 0 && level.elevator_currentlevel == 0)
	{
	
	//if elevator is stopped at level 0
	wait 2.5
	thread elevator_cab_doors_do
	wait .5
	thread elevator_level0_doors_do
	
	}

else
	{
	
	
	if (level.elevator_enroute == 1)
		{
		
		//moving, either level
		
		}
		
	else
		{
		
		if (level.elevator_enroute == 0 && level.elevator_currentlevel == 1)

			{
			
			
			//if stopped at level 1
			thread elevator_cab_doors_do
			thread elevator_level1_doors_do
			}
		else

			{

			iprintln "INVALID"
			//if neither
			$elevator_button_trigger triggerable
			}

		}
	
	}	
		

end

*/

end


I think I have moved up a notch on my scripting ability....
Image
jv_map
Site Admin
Posts: 6521
Joined: Tue Sep 03, 2002 2:53 pm
Location: The Netherlands
Contact:

Post by jv_map »

Cool :D

I think it's also significantly shorter than the elevator script I wrote for MoH:OM (which was 743 lines) so that's probably a good thing :)
Image
MadMapper
Second Lieutenant
Posts: 170
Joined: Fri Apr 16, 2004 5:47 pm

Post by MadMapper »

MoH: OM?
Bjarne BZR
Site Admin
Posts: 3298
Joined: Wed Feb 05, 2003 2:04 pm
Location: Sweden
Contact:

Post by Bjarne BZR »

Oh Mygod :?:
Admin .MAP Forums
Image
Head above heels.
blue60007
General
Posts: 1247
Joined: Sun Mar 07, 2004 11:44 pm

Post by blue60007 »

jv_map wrote:Cool :D

I think it's also significantly shorter than the elevator script I wrote for MoH:OM (which was 743 lines) so that's probably a good thing :)
The entire script is about 800 lines, including comments and blank lines. I don't know how many lines of actuall code there are but...

Whats MoH:OM, did Bjarne get it right?

THat very last section can be deleted, since it is uneeded.

This script shows reusing blocks of code to the max. Some sections are reused 6 or more times...
Image
jv_map
Site Admin
Posts: 6521
Joined: Tue Sep 03, 2002 2:53 pm
Location: The Netherlands
Contact:

Post by jv_map »

Operation Market Garden... ask Bjarne why it wasn't abbrev. OMG ;)

Used to be an interesting moh mod but I think they went to Call of Duty or so, anyway I haven't heard from them for a while :?
Image
blue60007
General
Posts: 1247
Joined: Sun Mar 07, 2004 11:44 pm

Post by blue60007 »

So, Bjarne, why wasn't it abbreviated OMG?

I'm open to any suggestions about my script...
Image
Bjarne BZR
Site Admin
Posts: 3298
Joined: Wed Feb 05, 2003 2:04 pm
Location: Sweden
Contact:

Post by Bjarne BZR »

I suspect jv is referring to the currently running poll on the new version of The Rjukan project: http://dynamic6.gamespy.com/~rjukanproject/tiki/

ROFL, 1337
Admin .MAP Forums
Image
Head above heels.
blue60007
General
Posts: 1247
Joined: Sun Mar 07, 2004 11:44 pm

Post by blue60007 »

Ahh yes, I cast my vote to the last one.

I guess you could have said: MoH:OpMG :wink:
Image
Post Reply