Page 1 of 1

targetname of bomb

Posted: Mon Feb 07, 2005 3:30 pm
by sg.Pepper
HI, I HAVE A QUSTION:
i create an obj MP map with 5 bombs (targetname $bomb1....5).
And i want to know a targetname of bomb, which was just planted or defused, for better orientation of players.
Can somebody help?
thanks

Posted: Mon Feb 07, 2005 6:05 pm
by Green Beret
just add a thread that checks and prints wich bomb was exploded

Code: Select all

bomb1_exploded local.bomb1:

	while (local.bomb1.exploded != 1)

		wait .1

		iprintlnbold "Bomb_1 Exploded"

end

Posted: Tue Feb 08, 2005 5:32 am
by sg.Pepper
thanks, but i dont want to when bomb exploded,
but i want to do when it is planted, or defused

Posted: Tue Feb 08, 2005 6:41 am
by Ric-hard
Hi
I guess u can copy the obj_dm.scr, and customize it for your bomb.

Rename it to bomb1.scr instead of obj_dm.scr and put it in your global folder, start it like this in your mapscript

$bomb1 thread global/bomb1.scr::bomb1_thinker

Here is an example of a customized obj_dm.scr that I use in a map Im working on (its a lil wicked, short ticktime, defusetime and planttime, the bombmodel is also changed in it), I changed the targetname of the bomb so that it fits one of your bombs.

look for the iprintlnbold lines and customize them for your bomb.

Code: Select all

bomb1_thinker:
// Ric-hard says planting time = less then 1 second
// defusing time = less then 1 second
// tick time = 4 seconds
	$bomb1.set = 0
	$bomb1.defuse_time = 2 //tenths of a second
	$bomb1.set_time = 2  //tenths of a second
	$bomb1.tick_time = 4  //seconds (was 60 seconds, then 30 seconds)
	$bomb1.explosion_radius = 1054  //quake units
	$bomb1.use_distance = 128 //quake units
	$bomb1.damage = 200
	$bomb1.usefov = 30

	level.subtitleX = 100
	level.subtitleY = 50

	println "----------------------Z-----------------------"
	println "self = " self
	println "self.target (flak 88 or other) = " self.target
	println "self.target.destroyed_model = " self.target.destroyed_model
	println "self.target.target (collision entity) = " self.target.target
	println "self.trigger_name = " self.trigger_name
	println "self.exploder_set = " self.exploder_set
	println "self.explosion_fx = " self.explosion_fx
	println "self.explosion_sound = " self.explosion_sound
	println "self.killarea = " self.killarea
	println "----------------------Z-----------------------"
	
	self.target.collisionent = self.target.target
	self.target notsolid
	thread bomb_waittill_set
end

//***********************************************
// first thread... controls allies using the trigger
//***********************************************


bomb_waittill_set:

self model items/pulse_explosive2.tik

while ( $(self.trigger_name) )
{
println "waittill trigger " self.trigger_name 
self.trigger_name waittill trigger

	local.player = parm.other
	//"local.player.dmteam", can be 'spectator', 'freeforall', 'allies' or 'axis'
        if (local.player.dmteam != level.planting_team) 
	{
		goto bomb_waittill_set
		println "failed dmteam check" local.player.dmteam	
	}

	
	
	local.counter = 0
	while ( (Isalive local.player) && (local.player cansee self $bomb1.usefov $bomb1.use_distance) && (local.player.useheld == 1) )
	{
		if (local.counter == 0)
			local.player stopwatch ($bomb1.set_time * .1)
			
		local.counter++
	//	if ((local.counter % 5) == 0)
	//		locprint level.subtitleX level.subtitleY("set "+ local.counter)

		wait .1
		if (local.counter >= $bomb1.set_time)
		{
			iprintlnbold "Bomb 1 has been planted!"
			if (level.planting_team == "allies")
				self playsound dfr_objective_o
			else
				self playsound den_objective_o
			thread bomb_waittill_defuse
			thread bomb_waittill_explode
			self.live = 1
			$bomb1.set ++
			end
		}
	}
	if (local.counter > 0)
		local.player stopwatch 0
	println "usetrigger but failed check" 
	if ! (self cansee local.player $bomb1.usefov $bomb1.use_distance) 
		println "failed cansee check"	
	if ! (local.player.useheld == 1)
		println "failed useheld check" local.player.useheld
}
end


//***********************************************
// second thread... controls axis using the trigger
//***********************************************
bomb_waittill_defuse:
while ( $(self.trigger_name) )
{
self.trigger_name waittill trigger

	local.player = parm.other
	
	//"local.player.dmteam", can be 'spectator', 'freeforall', 'allies' or 'axis'
	if (local.player.dmteam != level.defusing_team)
	{      
		println "failed dmteam check" local.player.dmteam
		goto bomb_waittill_defuse
	}
	
	
	local.counter = 0
	while ( (Isalive local.player) && (local.player cansee self $bomb1.usefov $bomb1.use_distance) && (local.player.useheld == 1) )
	{
		if (local.counter == 0)
			local.player stopwatch ($bomb1.defuse_time * .1)
			
		local.counter++
	//	if ((local.counter % 5) == 0)
	//		locprint level.subtitleX level.subtitleY ("defuse "+local.counter)

		wait .1
		if (local.counter >= $bomb1.defuse_time)
		{
			iprintlnbold "Bomb1 has been defused!"
			if (level.defusing_team == "allies")
				self playsound dfr_diffused_d
			else
				self playsound den_diffused_d
			thread bomb_waittill_set //start first thread again
			self.live = 0
			$bomb1.set --
			end
		}
	}
	if (local.counter > 0)
		local.player stopwatch 0
}
end


//***********************************************
// third thread... times the bomb and makes it explode at the right time
//***********************************************
bomb_waittill_explode:
	self model items/explosive2.tik
	self playsound plantbomb


	self loopsound bombtick
	
	local.start_time = level.time
	while (level.time < (local.start_time + $bomb1.tick_time) )
	{
		wait .1
		if (self.live != 1)
		{
			self stoploopsound
			end
		}
		if (level.time == (local.start_time + $bomb1.tick_time - 2) )
		{
			self stoploopsound
			self loopsound final_countdown
		}
 	}
 	self stoploopsound
	thread bomb_explode
end


//***********************************************
// fourth thread... controls the explosion 
//***********************************************
bomb_explode:
	self.trigger_name remove

	thread jitter_large 0
	
	if (self.exploder_set != NIL)
		exec global/exploder.scr::explode self.exploder_set
	
	if (self.explosion_fx != NIL)
	{
		self thread spawn_fx self.explosion_fx
	}
	
	if (self.explosion_sound != NIL)
		self playsound self.explosion_sound

	if (self.target != NIL)
	{
		if (self.target.destroyed_model != NIL)
		{
			local.damaged = self.target thread spawn_damaged self.target.destroyed_model
		}
		self.target remove
		waitframe
	}
	radiusdamage self.origin $bomb1.damage $bomb1.explosion_radius
	if (self.killarea != NIL)
	{
		self.killarea volumedamage 1000
	}
	self hide
	
	self.exploded = 1

	// we delay the decrementing of	$bomb1.set so that the script has
	// time to determin the winner before the timelimit gets checked and hit
	wait 0.5
	$bomb1.set -- 
end


//----------------------------------
spawn_fx local.fx:
	local.temp = spawn script_model model local.fx
	local.temp.origin = self.origin
	local.temp anim start
	wait 5
	local.temp remove
end

spawn_damaged local.model:
	local.damaged = spawn script_model model local.model
	local.damaged.origin = self.origin
	local.damaged.angles = self.angles
end local.damaged

//******************************
// jitter large effect
// jitter_large [delay]
//******************************
jitter_large local.time:
	if (local.time)
		wait local.time

	waitexec global/earthquake.scr .35 10 0 0
	waitexec global/earthquake.scr .23 6 0 0
	waitexec global/earthquake.scr 1 1 0 0
	waitexec global/earthquake.scr 1.25 .3 0 1
end

Posted: Wed Feb 09, 2005 8:13 am
by bdbodger
Maybe you can tell us why you need to know ?

Posted: Wed Feb 09, 2005 6:13 pm
by sg.Pepper
so, i make obj map with bots (named HRAD or CASTLE in english lamguage). This castle have 2 flours and there are 5 bombs, in every flour at least one bomb.
So it was be god for players, tell him, how bomb (and how flour) was planted or defused, for better orientation.
Take a look:
http://pelec-herba.wz.cz/MOHAA/screens.htm
it is still Beta but finished.

Posted: Wed Feb 09, 2005 10:41 pm
by bdbodger
You could give the triggers a key/floor value/floor# and/or bomb# and then give them a setthread value so that it runs a thread to do what you wanted like print something on the screen. Or even give the triggers a message value so when they are triggered they print something to the screen but that won't tell you if the bomb is being set or defused .

Posted: Thu Feb 10, 2005 5:34 am
by sg.Pepper
thanks, i try set setthread

Posted: Thu Feb 10, 2005 6:06 am
by G3mInI
I am currently making a server side script for southern france which uses the same principle as what you want to do.

Now I know the script is long and has stuff you dont need but I will paste the whole script as is. To make this work to my advantage I use radio bombs and once all bombs are set then a little movie plays. It works so far except for a few glitches which I would be welcome to have anyone comment on. Feel free to copy and try this out for a server side script.

mohdm1.scr

Code: Select all

// SOUTHERN FRANCE
// ARCHITECTURE: SENN
// SCRIPTING: POWZER
// MODIFICATIONS FOR MULTIPLAYER OBJ - G3MINI

main:

//====================================
// Change gametype from DM to OBJ
//====================================

	setcvar "g_gametype" "4"
	setcvar "g_gamestring" "objective match"
	setcvar "g_obj_alliedtext1" "Place a radio bomb"
	setcvar "g_obj_alliedtext2" "on all 5 of the"
	setcvar "g_obj_alliedtext3" "german BMW bikes"
	setcvar "g_obj_axistext1" "Prevent Allies from"
	setcvar "g_obj_axistext2" "completing their mission"
	setcvar "g_obj_axistext3" " mod by -G3mInI-"
	setcvar "g_scoreboardpic" "mohdm1"

	
	thread sounds
	
	
	thread block_original_spawns
	thread new_spawns
	

	level waitTill prespawn
	
	thread spawn_the_gas_triggers
	thread spawn_gas_door_block
	thread spawn_roof_triggers
	thread spawn_the_bmw_bikes
	
	thread global/exploder.scr::main
	thread global/gas_chambers.scr::gas_chamber_setup
	thread global/gas_chamber_roof.scr::gas_chamber_roof_setup

	level.script = maps/dm/mohdm1.scr
	exec global/ambient.scr mohdm1

	level.dmrespawning = 0
	level.dmroundlimit = 5
	level.clockside = axis

	
	thread spawn_the_gas_effects
	
	

	//$world farplane 5000
	//$world farplane_color (.333 .333 .329)

	level waittill spawn
	
	thread print_status
	thread update_status
	level.bombsleft = 5
	level.bomb1set = 0
	level.bomb2set = 0
	level.bomb3set = 0
	level.bomb4set = 0
	level.bomb5set = 0
	level.bomb_set_time = 50 // tenths of a second

	//level waittill roundstart
	
	
	
	thread nextbike
	thread axis_win

end

print_status:

while(1)
	{
	local.counter = 0
	local.amount = 200
	
	
	local.counter++
	
	
	huddraw_alpha 1 .8 // alpha
	huddraw_alpha 2 .8
	huddraw_alpha 3 .8
	huddraw_alpha 4 .8
	huddraw_alpha 5 .8
	
	huddraw_font 1 "verdana-12" //type of letter <index> <font>
	huddraw_font 2 "verdana-12"
	huddraw_font 3 "verdana-12"
	huddraw_font 4 "verdana-12"
	huddraw_font 5 "verdana-12"
	
	huddraw_color 1 0 1 0 // color..this one is green <index> <red> <green> <blue>
	huddraw_color 2 0 1 0
	huddraw_color 3 0 1 0
	huddraw_color 4 0 1 0
	huddraw_color 5 0 1 0
	
	huddraw_align 1 center bottom // alignment <index> <horiz> <vert> 
	huddraw_align 2 center bottom
	huddraw_align 3 center bottom
	huddraw_align 4 center bottom
	huddraw_align 5 center bottom
	
	huddraw_string 1 "Radiobomb_1 not set"
	huddraw_string 2 "Radiobomb_2 not set"
	huddraw_string 3 "Radiobomb_3 not set"
	huddraw_string 4 "Radiobomb_4 not set"
	huddraw_string 5 "Radiobomb_5 not set"
	
	huddraw_rect 1 0 -70 200 12 // origin <index> <string> <vert pos> <horiz pos> <size>
	huddraw_rect 2 0 -60 200 12
	huddraw_rect 3 0 -50 200 12
	huddraw_rect 4 0 -40 200 12
	huddraw_rect 5 0 -30 200 12
	
	if(local.counter => local.amount
		break
	println "broke out of huddraw loop"
	wait 1
	}
	
end

update_status:
		
while(1)
	{
	if(level.bomb1set == 1)
		{
		huddraw_alpha 1 0
		huddraw_alpha 1 .8
		huddraw_color 1 1 .5 0
		huddraw_string 1 "Radio_bomb1 activated!"
		}
	if(level.bomb2set == 1)
		{
		huddraw_alpha 2 0
		huddraw_alpha 2 .8
		huddraw_color 2 1 .5 0
		huddraw_string 2 "Radio_bomb2 activated!"
		}
	if(level.bomb3set == 1)
		{
		huddraw_alpha 3 0
		huddraw_alpha 3 .8
		huddraw_color 3 1 .5 0
		huddraw_string 3 "Radio_bomb3 activated!"
		}
	if(level.bomb4set == 1)
		{
		huddraw_alpha 4 0
		huddraw_alpha 4 .8
		huddraw_color 4 1 .5 0
		huddraw_string 4 "Radio_bomb4 activated!"
		}
	if(level.bomb5set == 1)
		{
		huddraw_alpha 5 0
		huddraw_alpha 5 .8
		huddraw_color 5 1 .5 0
		huddraw_string 5 "Radio_bomb5 activated!"
		}
	if((level.bomb1set == 1)&&(level.bomb2set == 1)&&(level.bomb3set == 1)&&(level.bomb4set == 1)&&(level.bomb5set == 1))
		{
		huddraw_alpha 1 0
		huddraw_alpha 2 0
		huddraw_alpha 3 0
		huddraw_alpha 4 0
		huddraw_alpha 5 0
		break
		}
	wait 1
	}

end

//the following threads are called by the bsp using setthread when a player hits the use key

//*********************************************
// Bomb BMW Bike 1
//*********************************************

bmw_bike1_bombed:
	local.sucker = parm.other
	
	if (local.sucker.dmteam != "allies")
		end
			
	local.counter = 0
	
	while ( (Isalive local.sucker) && (local.sucker.useheld == 1) )
	{
	if (local.counter == 0)
		local.sucker stopwatch (level.bomb_set_time * .1)
			
	local.counter++

	wait .1
	if (local.counter >= level.bomb_set_time)
		{
		iprintlnbold "A Bomb has been planted!"
		$bmw_bike1_explosive playsound dfr_objective_o
		thread setbike_one
		end
		}
	}
	
	if (local.counter >= 0)
		{
		local.sucker stopwatch 0
		end
		}
end

setbike_one:
	$bmw_bike1_explosive model "animate//radiobomb.tik"
	$bmw_bike1_explosive playsound radiobomb
	$bmw_bike1_trigger nottriggerable
	level.bomb1set = 1
	level.bombsleft = (level.bombsleft - 1)

end

//*********************************************
// Bomb BMW Bike 2
//*********************************************
bmw_bike2_bombed:
	local.sucker = parm.other
	if (local.sucker.dmteam != "allies")
		end
	
	local.counter = 0
	
	while ( (Isalive local.sucker) && (local.sucker.useheld == 1) )
	{
	if (local.counter == 0)
		local.sucker stopwatch (level.bomb_set_time * .1)
			
	local.counter++

	wait .1
	if (local.counter >= level.bomb_set_time)
		{
		iprintlnbold "A Bomb has been planted!"
		$bmw_bike2_explosive playsound dfr_objective_o
		thread setbike_two
		end
		}
	}
	
	if (local.counter >= 0)
		{
		local.sucker stopwatch 0
		end
		}
end

setbike_two:		
	$bmw_bike2_explosive model "animate//radiobomb.tik"
	$bmw_bike2_explosive playsound radiobomb
	$bmw_bike2_trigger nottriggerable
	level.bomb2set = 1
	level.bombsleft = (level.bombsleft - 1)

end

//*********************************************
// Bomb BMW Bike 3
//*********************************************
bmw_bike3_bombed:
	local.sucker = parm.other
	if (local.sucker.dmteam != "allies")
		end
	local.counter = 0
	
	while ( (Isalive local.sucker) && (local.sucker.useheld == 1) )
	{
	if (local.counter == 0)
		local.sucker stopwatch (level.bomb_set_time * .1)
			
	local.counter++

	wait .1
	if (local.counter >= level.bomb_set_time)
		{
		iprintlnbold "A Bomb has been planted!"
		$bmw_bike3_explosive playsound dfr_objective_o
		thread setbike_three
		end
		}
	}
	
	if (local.counter >= 0)
		{
		local.sucker stopwatch 0
		end
		}
end

setbike_three:		
	$bmw_bike3_explosive model "animate//radiobomb.tik"
	$bmw_bike3_explosive playsound radiobomb
	$bmw_bike3_trigger nottriggerable
	level.bomb3set = 1
	level.bombsleft = (level.bombsleft - 1)

end

//*********************************************
// Bomb BMW Bike 4
//*********************************************
bmw_bike4_bombed:
	local.sucker = parm.other
	if (local.sucker.dmteam != "allies")
		end
	local.counter = 0
	
	while ( (Isalive local.sucker) && (local.sucker.useheld == 1) )
	{
	if (local.counter == 0)
		local.sucker stopwatch (level.bomb_set_time * .1)
			
	local.counter++

	wait .1
	if (local.counter >= level.bomb_set_time)
		{
		iprintlnbold "A Bomb has been planted!"
		$bmw_bike4_explosive playsound dfr_objective_o
		thread setbike_four
		end
		}
	}
	
	if (local.counter >= 0)
		{
		local.sucker stopwatch 0
		end
		}
end

setbike_four:	
	$bmw_bike4_explosive model "animate//radiobomb.tik"
	$bmw_bike4_explosive playsound radiobomb
	$bmw_bike4_trigger nottriggerable
	level.bomb4set = 1
	level.bombsleft = (level.bombsleft - 1)
	
end

//*********************************************
// Bomb BMW Bike 5
//*********************************************
bmw_bike5_bombed:
	local.sucker = parm.other
	if (local.sucker.dmteam != "allies")
		end
	local.counter = 0
	
	while ( (Isalive local.sucker) && (local.sucker.useheld == 1) )
	{
	if (local.counter == 0)
		local.sucker stopwatch (level.bomb_set_time * .1)
			
	local.counter++

	wait .1
	if (local.counter >= level.bomb_set_time)
		{
		iprintlnbold "A Bomb has been planted!"
		$bmw_bike5_explosive playsound dfr_objective_o
		thread setbike_five
		end
		}
	}
	
	if (local.counter >= 0)
		{
		local.sucker stopwatch 0
		end
		}
end

setbike_five:		
	$bmw_bike5_explosive model "animate//radiobomb.tik"
	$bmw_bike5_explosive playsound radiobomb
	$bmw_bike5_trigger nottriggerable
	level.bomb5set = 1
	level.bombsleft = (level.bombsleft - 1)
	
end

//*********************************************
// Determine how many bombs planted and which team wins
//*********************************************
nextbike:
	
	while(level.bombsleft != 0)
		waitframe
		
	thread explode			// Trigger bomb explosion sequence
	
end

axis_win:

	level waittill axiswin

end

//*********************************************
// Bomb explosion sequence
//*********************************************
explode:
	
	forcemusic aux2 aux2
	//letterbox .5
	drawhud 0
	level ignoreclock 1
	
	local.camorig2 = spawn script_origin
  local.camorig2.origin = ( 646.11 212.03 338.61 )
  local.camorig2.angles = ( 39.98 164.44 0.00 )
  local.camera2 = spawn func_camera origin local.camorig2.origin angles local.camorig2.angles
  local.camera2 fov 90 1
  local.camera2 watch $bmw_bike2
  local.camera2 cut
  cuecamera local.camera2
  
  wait 2
  
	$bmw_bike2_explosive playsound explode_tank
	$bmw_bike2_explosive remove
	$bmw_bike2 thread bike_killed
	
	wait .5
	
	exec global/earthquake.scr .23 4 0 0
	
	wait 1
	
	local.camorig1 = spawn script_origin
  local.camorig1.origin = ( -49.05 -291.86 138.26 )
  local.camorig1.angles = ( 26.03 -49.20 0.00 )
  local.camera1 = spawn func_camera origin local.camorig1.origin angles local.camorig1.angles
  local.camera1 fov 90 1
  local.camera1 watch $bmw_bike1
  local.camera1 cut
  cuecamera local.camera1
  
  wait 2
  
	$bmw_bike1_explosive playsound explode_tank
	$bmw_bike1_explosive remove
	$bmw_bike1 thread bike_killed
	
	wait .5
	
	exec global/earthquake.scr .23 4 0 0
	
	wait 1
	
	local.camorig5 = spawn script_origin
  local.camorig5.origin = ( 867.01 -209.54 188.57 )
  local.camorig5.angles = ( 33.98 -86.11 0.00 )
  local.camera5 = spawn func_camera origin local.camorig5.origin angles local.camorig5.angles
  local.camera5 fov 90 1
  local.camera5 watch $bmw_bike5
  local.camera5 cut
  cuecamera local.camera5
  
  wait 2
  
	$bmw_bike5_explosive playsound explode_tank
	$bmw_bike5_explosive remove
	$bmw_bike5 thread bike_killed
	
	wait .5
	
	exec global/earthquake.scr .23 4 0 0
	
	wait 1
	
	local.camorig3 = spawn script_origin
  local.camorig3.origin = ( 79.48 822.22 193.23 )
  local.camorig3.angles = ( 25.54 -117.33 0.00 )
  local.camera3 = spawn func_camera origin local.camorig3.origin angles local.camorig3.angles
  local.camera3 fov 90 1
  local.camera3 watch $bmw_bike3
  local.camera3 cut
  cuecamera local.camera3
  
  wait 2
  
	$bmw_bike3_explosive playsound explode_tank
	$bmw_bike3_explosive remove
	$bmw_bike3 thread bike_killed
	
	wait .5
	
	exec global/earthquake.scr .23 4 0 0
	
	wait 1
	
	local.camorig4 = spawn script_origin
  local.camorig4.origin = ( -554.41 614.66 46.01 )
  local.camorig4.angles = ( 28.11 -127.72 0.00 )
  local.camera4 = spawn func_camera origin local.camorig4.origin angles local.camorig4.angles
  local.camera4 fov 90 1
  local.camera4 watch $bmw_bike4
  local.camera4 cut
  cuecamera local.camera4
  
  wait 2
  
	$bmw_bike4_explosive playsound explode_tank
	$bmw_bike4_explosive remove
	$bmw_bike4 thread bike_killed
	
	wait .5
	
	exec global/earthquake.scr .23 4 0 0
	
	wait 1
	
	teamwin allies

end

bike_killed:
	
	self thread spawn_fx models/fx/fx_tank_explosion.tik
	radiusdamage self.origin 200 200
	local.damaged = thread spawn_damaged models/vehicles/bmwbike_d.tik
	self remove
end

spawn_damaged local.model:
	local.damaged = spawn script_model model local.model
	local.damaged.origin = self.origin
	local.damaged.angles = self.angles
	local.damaged notsolid
end local.damaged

spawn_fx local.fx:
	local.temp = spawn script_model model local.fx
	local.temp notsolid
	local.temp.origin = self.origin
	local.temp anim start
	local.temp notsolid
	wait 5
	local.temp remove
end

spawn_gas_door_block:

	local.wall = spawn script_object 
	local.wall.origin = ( 1336.00 2072.00 574.00 )
	local.wall setsize ( -8.00 -36.00 -62.00 ) ( 8.00 36.00 62.00 )
	local.wall solid
	local.wall nodamage
	
end

spawn_roof_triggers:

	local.rooftrig1 = spawn trigger_multipleall origin ( -442.00 48.00 450.00 )
	local.rooftrig1 setsize ( -60.00 -80.00 -0.00 ) ( 60.00 80.00 200.00 )
	local.rooftrig1.targetname = gas_chamber_roof
	local.rooftrig1.wait = .1
	local.rooftrig1 triggerable

end

sounds:

local.master = spawn ScriptMaster
local.master aliascache steamloop sound/mechanics/Mec_SteamLoop_01.wav soundparms 1.0 0.3 1.0 0.0 320 2200 item loaded maps "dm obj"
end

spawn_the_bmw_bikes:

//==========================
// Spawn five bmw's
//==========================
	
	//bike 1
	level.bmw1 = spawn vehicles/bmwbike.tik origin ( 212.00 -616.00  0.00 ) angles ( 0.00 90.00 0.00 )
	level.bmw1.targetname = bmw_bike1
	level.bmw1 solid
	
	//bike2
	level.bmw2 = spawn vehicles/bmwbike.tik origin ( 224.00 332.00 48.00 ) angles ( 0.00 0.00 0.00 )
	level.bmw2.targetname = bmw_bike2
	level.bmw2 solid
	
	//bike3
	level.bmw3 = spawn vehicles/bmwbike.tik origin ( -92.00 488.00 48.00 ) angles ( 0.00 90.00 0.00 )
	level.bmw3.targetname = bmw_bike3
	level.bmw3 solid
	
	//bike4
	level.bmw4 = spawn vehicles/bmwbike.tik origin ( -732.00 392.00 -16.00 ) angles ( 0.00 90.00 0.00 )
	level.bmw4.targetname = bmw_bike4
	level.bmw4 solid
	
	//bike5
	level.bmw5 = spawn vehicles/bmwbike.tik origin ( 868.00 -568.00  0.00 ) angles ( 0.00 90.00 0.00 )
	level.bmw5.targetname = bmw_bike5
	level.bmw5 solid
	
//============================
// Spawn the five bike bombs
//============================
	
	//bomb1
	level.device1 = spawn animate/pulse_radiobomb.tik
  level.device1.targetname = bmw_bike1_explosive
  level.device1.exploder_set = 1
  level.device1.origin = ( 264.64 -637.22 32.00 )
  level.device1.angles = ( 0.00 0.00 0.00 )
  level.device1.scale = 1.0
	
	//bomb2
	level.device2 = spawn animate/pulse_radiobomb.tik
  level.device2.targetname = bmw_bike2_explosive
  level.device2.exploder_set = 2
  level.device2.origin = ( 200.78 279.92 84.00 )
  level.device2.angles = ( 0.00 270.00 0.00 )
  level.device2.scale = 1.0	
  
  //bomb3
  level.device3 = spawn animate/pulse_radiobomb.tik
  level.device3.targetname = bmw_bike3_explosive
  level.device3.exploder_set = 3
  level.device3.origin = ( -39.36 466.78 84.00 )
  level.device3.angles = ( 0.00 0.00 0.00 )
  level.device3.scale = 1.0	
  
  //bomb4
  level.device4 = spawn animate/pulse_radiobomb.tik
  level.device4.targetname = bmw_bike4_explosive
  level.device4.exploder_set = 4
  level.device4.origin = ( -679.36 370.78 20.00 )
  level.device4.angles = ( 0.00 0.00 0.00 )
  level.device4.scale = 1.0
  
  //bomb5
  level.device5 = spawn animate/pulse_radiobomb.tik
  level.device5.targetname = bmw_bike5_explosive
  level.device5.exploder_set = 5
  level.device5.origin = ( 920.64 -593.22 32.00 )
  level.device5.angles = ( 0.00 0.00 0.00 )
  level.device5.scale = 1.0
  
//===============================
// Spawn the five bike triggers
//===============================
	
	//trigger1
	level.trigger1 = spawn trigger_use
  level.trigger1.targetname = bmw_bike1_trigger
  level.trigger1.origin = ( 262.00 -638.00 40.00 )
  level.trigger1 setsize ( -20.00 -20.00 -0.00 ) (  20.00 20.00 20.00 )
  level.trigger1 setthread bmw_bike1_bombed
  level.trigger1 triggerable
	
	//trigger2
  level.trigger2 = spawn trigger_use
  level.trigger2.targetname = bmw_bike2_trigger
  level.trigger2.origin = ( 200.00 280.00 88.00 )
  level.trigger2 setsize ( -20.00 -20.00 -0.00 ) (  20.00 20.00 20.00 )
  level.trigger2 setthread bmw_bike2_bombed
  level.trigger2 triggerable
  
  //trigger3
  level.trigger3 = spawn trigger_use
  level.trigger3.targetname = bmw_bike3_trigger
  level.trigger3.origin = ( -40.00 464.00 88.00 )
  level.trigger3 setsize ( -20.00 -20.00 -0.00 ) (  20.00 20.00 20.00 )
  level.trigger3 setthread bmw_bike3_bombed
  level.trigger3 triggerable
  
  //trigger4
  level.trigger4 = spawn trigger_use
  level.trigger4.targetname = bmw_bike4_trigger
  level.trigger4.origin = ( -680.00 368.00 24.00 )
  level.trigger4 setsize ( -20.00 -20.00 -0.00 ) (  20.00 20.00 20.00 )
  level.trigger4 setthread bmw_bike4_bombed
  level.trigger4 triggerable
  
  //trigger5
  level.trigger5 = spawn trigger_use
  level.trigger5.targetname = bmw_bike5_trigger
  level.trigger5.origin = ( 920.00 -592.00 40.00 )
  level.trigger5 setsize ( -20.00 -20.00 -0.00 ) (  20.00 20.00 20.00 )
  level.trigger5 setthread bmw_bike5_bombed
  level.trigger5 triggerable
	
end
	


//======================
// Spawn the gas thread
//======================

spawn_the_gas_effects:
	
	local.gaseffect1 = spawn animate/adam-mustard-gas.tik origin ( 1184.00 2080.00 512.00 )  angle ( -1 )
	local.gaseffect1 anim start
	
	local.gaseffect2 = spawn animate/adam-mustard-gas.tik origin ( 1288.00 2184.00 520.00 )  angle ( -1 )
	local.gaseffect2 anim start
	
	local.gaseffect3 = spawn animate/adam-mustard-gas.tik origin ( 1080.00 2184.00 520.00 )  angle ( -1 )
	local.gaseffect3 anim start
	
	local.gaseffect4 = spawn animate/adam-mustard-gas.tik origin ( 1080.00 1976.00 520.00 )  angle ( -1 )
	local.gaseffect4 anim start
	
	local.gaseffect5 = spawn animate/adam-mustard-gas.tik origin ( 1288.00 1976.00 520.00 )  angle ( -1 )
	local.gaseffect5 anim start

end

spawn_the_gas_triggers:
	
	//roof1
	local.gastrigger1 = spawn trigger_multiple origin ( 1184.00 2080.00 512.00 )
	local.gastrigger1 setsize ( -144.00 -144.00 -0.00 ) ( 144.00 144.00 176.00 )
	local.gastrigger1.targetname = gas_chamber
	local.gastrigger1 triggerable
	
	//roof2
	
end

//===================
// Axis win thread
//===================

axis_win_timer:

	level waittill axiswin

end

block_original_spawns:

	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 976 -528 0 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 976 -592 0 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 896 -584 0 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 912 -96 0 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 912 -56 0 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 992 -48 0 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 992 -104 0 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1064 -552 256 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1104 -544 256 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1144 -552 256 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 976 184 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 784 792 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 816 792 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 848 792 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1104 672 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1128 640 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1176 672 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1672 912 222 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1234 1566 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1194 1566 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1178 1334 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 914 1334 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1450 2174 512 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1450 2214 512 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1506 2606 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1514 2678 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1514 2742 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1378 2710 672 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 1354 2526 672 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 50 2958 256 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -262 1414 48 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -214 1430 48 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -286 1238 48 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -1262 1862 104 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -1206 1110 12 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -1174 1062 12 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -702 350 -16 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -670 350 -16 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -646 310 328 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -806 374 328 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -774 374 328 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -214 1230 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -262 1230 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -326 1238 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 578 1574 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( 610 1526 384 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -814 -394 48 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -846 -346 48 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -926 -290 48 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -926 94 96 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -966 102 96 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -1262 -18 128 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -1270 30 128 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -1294 86 128 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -1502 302 168 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -1502 478 168 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -1054 662 168 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -1022 662 168 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -830 350 -16 )
	local.blockspawn = spawn script_model model static/woodbucket.tik origin ( -862 350 -16 )
	
end

new_spawns:

	local.newspawnallied = spawn info_player_allied origin ( 848 2640 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 784 2640 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 880 2544 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 816 2544 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 752 2544 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 880 2448 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 816 2448 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 752 2448 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 848 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 784 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 720 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 656 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 592 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 528 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 464 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 400 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 336 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 272 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 208 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 144 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 80 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( 16 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( -48 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( -112 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( -176 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( -240 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( -304 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( -368 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( -432 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( -496 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( -560 2352 400 ) angle 270
	local.newspawnallied = spawn info_player_allied origin ( -624 2352 400 ) angle 270
	
	local.newspawnaxis = spawn info_player_axis origin ( 368 -416 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 304 -416 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 240 -416 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 176 -416 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 112 -416 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 976 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 912 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 848 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 784 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 720 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 656 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 592 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 528 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 464 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 400 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 336 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 272 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 208 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 144 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 80 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( 16 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( -48 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( -112 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( -176 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( -240 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( -304 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( -368 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( -432 -336 32 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( -496 -336 56 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( -560 -336 56 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( -624 -336 56 ) angle 90
	local.newspawnaxis = spawn info_player_axis origin ( -688 -336 56 ) angle 90

end

global/gas_chambers.scr

Code: Select all

//*********************************************************************************************************************************************
//*** gas chamber script
//*** The player enters the gas chamber, and within a short random amount of time
//*** if he's still in the gas chamber he'll begin losing health rapidly.
//*** This main thread is called by this script and should not be called by the
//*** level script itsself.  The level script should call gas_chamber_setup
//*** syntax ------------------------------------
//*** gas_chamber <this is the index number for the array of gas_chamber triggers>
//*********************************************************************************************************************************************
gas_chamber local.index:

gas_chamber_loop:
$gas_chamber[local.index] waittill trigger

local.sucker = parm.other


wait (randomfloat .5 + .5)

if (local.sucker istouching $gas_chamber[local.index] == 1)
{
	local.spawn_gas = (local.sucker.targetname + "_gas")
		spawn fx/dummy.tik targetname local.spawn_gas

        	local.spawn_gas = $(local.sucker.targetname + "_gas")
        	local.spawn_gas.origin = local.sucker.origin
        	
        	//local.spawn_gas anim start
        	radiusdamage local.spawn_gas.origin 10 5
	}
	
	//*** remove the effect
	wait 2
	local.spawn_gas remove


goto gas_chamber_loop

end

//*************************************************
//*** setup the gas_chambers
//*** the level scripts should call this thread
//*************************************************
gas_chamber_setup:
if ($gas_chamber == NULL)
{
	println "^~^~^ There are no gas_chambers in the map!!!"
	goto gas_chamber_setup_end
}

/*
if ($gas_chamber.size == 1)
{
	thread gas_chamber_single
	goto gas_chamber_setup_end
}
*/

for (local.i = 1 ; local.i <= $gas_chamber.size ; local.i ++)
{
	thread gas_chamber local.i
}

gas_chamber_setup_end:
end

global/gas_chamber_roof.scr

Code: Select all

	//*** setup the gas chamber roof triggers
	// this is to prevent people from getting on the roofs in southern france. currently only 1 roof trigger is scripted.

gas_chamber_roof_setup:
	if ($gas_chamber_roof == NULL)
	{
		println "^~^~^ There are no gas_chamber_roof triggers in the map!!!"
		goto gas_chamber_roof_end
	}

	for (local.i = 1 ; local.i <= $gas_chamber_roof.size ; local.i ++)
	{
		thread gas_chamber_teleport local.i
	}

gas_chamber_roof_end:

end

gas_chamber_teleport local.index:

gas_chamber_teleport_loop:

	$gas_chamber_roof[local.index] waittill trigger

	local.sucker = parm.other
	local.sucker tele ( 1194 2102 534 )
	iprintln "A player is being sent to the gas chamber!"
	wait .1
	local.sucker stufftext "say I JUST TRIED TO GET ON THE ROOF. WATCH ME DIE IN THE GAS CHAMBER!"
	
	goto gas_chamber_teleport_loop

end

Well that is what I have so far. It seems to work when I test locally but when I tested on dedicated server with 5 people, only myself (slot 0) would actually freeze and see the movie. Everyone else just froze where they stood until the next round started.


Hope this can help you figure out how to update status on your bombs though. That part at least seems to work. A small glitch seems to be I have to restart the round right away in order for the hud messages to show on bottom of screen. Else they appear in the center near my crosshair. Dont know why this is happening either.

G3mInI

Posted: Thu Feb 10, 2005 6:37 pm
by sg.Pepper
great, thanks, man