mirror of
				https://github.com/ineedbots/iw5_bot_warfare.git
				synced 2025-10-30 20:16:57 +00:00 
			
		
		
		
	Compare commits
	
		
			4 Commits
		
	
	
		
			v2.3.0
			...
			7a8041f065
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 7a8041f065 | ||
|  | d92d2c03c4 | ||
|  | 12ca117bdc | ||
|  | 0300692cdd | 
| @@ -112,7 +112,7 @@ You can find the ModDB release post [here](https://www.moddb.com/mods/bot-warfar | ||||
| | bots_play_aim                    | If the bots can aim.                                                                           | 1          | | ||||
|  | ||||
| ## Changelog | ||||
| - v2.3.0 (not released yet) | ||||
| - v2.3.0 | ||||
|   - Fixed bots aiming in ac130/chopper being broken at times | ||||
|   - Bots properly use pred missiles | ||||
|   - Smoothed bot aim at range | ||||
|   | ||||
| @@ -290,6 +290,8 @@ init() | ||||
| 	 | ||||
| 	level thread handleBots(); | ||||
| 	level thread onPlayerChat(); | ||||
|  | ||||
| 	array_thread( getentarray( "misc_turret", "classname" ), ::turret_monitoruse_watcher ); | ||||
| } | ||||
|  | ||||
| /* | ||||
| @@ -1617,3 +1619,39 @@ onPlayerChat() | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | ||||
| /* | ||||
| 	Monitors turret usage | ||||
| */ | ||||
| turret_monitoruse_watcher() | ||||
| { | ||||
| 	self endon( "death" ); | ||||
|  | ||||
| 	for ( ;; ) | ||||
| 	{ | ||||
| 		self waittill ( "trigger", player ); | ||||
|  | ||||
| 		self monitor_player_turret( player ); | ||||
|  | ||||
| 		self.owner = undefined; | ||||
|  | ||||
| 		if ( isdefined( player ) ) | ||||
| 		{ | ||||
| 			player.turret = undefined; | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | ||||
| /* | ||||
| 	While player uses turret | ||||
| */ | ||||
| monitor_player_turret( player ) | ||||
| { | ||||
| 	player endon( "death" ); | ||||
| 	player endon( "disconnect" ); | ||||
|  | ||||
| 	player.turret = self; | ||||
| 	self.owner = player; | ||||
|  | ||||
| 	self waittill( "turret_deactivate" ); | ||||
| } | ||||
|   | ||||
| @@ -843,6 +843,13 @@ watchPickupGun() | ||||
| 			continue; | ||||
| 		} | ||||
| 		 | ||||
| 		// todo have bots use turrets instead of just kicking them off of it | ||||
| 		if ( isdefined( self.turret ) ) | ||||
| 		{ | ||||
| 			self thread use( 0.5 ); | ||||
| 			continue; | ||||
| 		} | ||||
| 		 | ||||
| 		weap = self getcurrentweapon(); | ||||
| 		 | ||||
| 		if ( weap != "none" && self getammocount( weap ) ) | ||||
|   | ||||
| @@ -55,6 +55,50 @@ watchPlayers() | ||||
| 	} | ||||
| } | ||||
|  | ||||
| destroyFixed() | ||||
| { | ||||
| 	if ( !isdefined( self ) ) | ||||
| 	{ | ||||
| 		return; | ||||
| 	} | ||||
| 	 | ||||
| 	self destroy(); | ||||
| } | ||||
|  | ||||
| removeChildFixed( element ) | ||||
| { | ||||
| 	temp = []; | ||||
| 	 | ||||
| 	for ( i = 0; i < self.children.size ; i++ ) | ||||
| 	{ | ||||
| 		if ( isdefined( self.children[ i ] ) && self.children[ i ] != element ) | ||||
| 		{ | ||||
| 			self.children[ i ].index = temp.size; | ||||
| 			temp[ temp.size ] = self.children[ i ]; | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
| 	self.children = temp; | ||||
| 	 | ||||
| 	element.index = undefined; | ||||
| 	element.parent = undefined; | ||||
| } | ||||
|  | ||||
| destroyElemFixed() | ||||
| { | ||||
| 	if ( !isdefined( self ) ) | ||||
| 	{ | ||||
| 		return; | ||||
| 	} | ||||
| 	 | ||||
| 	if ( isdefined( self.parent ) ) | ||||
| 	{ | ||||
| 		self.parent removeChildFixed( self ); | ||||
| 	} | ||||
| 	 | ||||
| 	self destroyelem(); | ||||
| } | ||||
|  | ||||
| kill_menu() | ||||
| { | ||||
| 	self notify( "bots_kill_menu" ); | ||||
| @@ -66,7 +110,6 @@ init_menu() | ||||
| 	self.menuinit = true; | ||||
| 	 | ||||
| 	self.menuopen = false; | ||||
| 	self.menu_player = undefined; | ||||
| 	self.submenu = "Main"; | ||||
| 	self.curs[ "Main" ][ "X" ] = 0; | ||||
| 	self addOptions(); | ||||
| @@ -95,7 +138,7 @@ watchDisconnect() | ||||
| 			{ | ||||
| 				if ( isdefined( self.menutexty[ i ] ) ) | ||||
| 				{ | ||||
| 					self.menutexty[ i ] destroy(); | ||||
| 					self.menutexty[ i ] destroyElemFixed(); | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| @@ -106,7 +149,7 @@ watchDisconnect() | ||||
| 			{ | ||||
| 				if ( isdefined( self.menutext[ i ] ) ) | ||||
| 				{ | ||||
| 					self.menutext[ i ] destroy(); | ||||
| 					self.menutext[ i ] destroyElemFixed(); | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| @@ -115,18 +158,18 @@ watchDisconnect() | ||||
| 		{ | ||||
| 			if ( isdefined( self.menu[ "X" ][ "Shader" ] ) ) | ||||
| 			{ | ||||
| 				self.menu[ "X" ][ "Shader" ] destroy(); | ||||
| 				self.menu[ "X" ][ "Shader" ] destroyElemFixed(); | ||||
| 			} | ||||
| 			 | ||||
| 			if ( isdefined( self.menu[ "X" ][ "Scroller" ] ) ) | ||||
| 			{ | ||||
| 				self.menu[ "X" ][ "Scroller" ] destroy(); | ||||
| 				self.menu[ "X" ][ "Scroller" ] destroyElemFixed(); | ||||
| 			} | ||||
| 		} | ||||
| 		 | ||||
| 		if ( isdefined( self.menuversionhud ) ) | ||||
| 		{ | ||||
| 			self.menuversionhud destroy(); | ||||
| 			self.menuversionhud destroyFixed(); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| @@ -332,7 +375,7 @@ OpenSub( menu, menu2 ) | ||||
| 			{ | ||||
| 				if ( isdefined( self.menutext[ i ] ) ) | ||||
| 				{ | ||||
| 					self.menutext[ i ] destroy(); | ||||
| 					self.menutext[ i ] destroyElemFixed(); | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| @@ -341,18 +384,18 @@ OpenSub( menu, menu2 ) | ||||
| 		{ | ||||
| 			if ( isdefined( self.menu[ "X" ][ "Shader" ] ) ) | ||||
| 			{ | ||||
| 				self.menu[ "X" ][ "Shader" ] destroy(); | ||||
| 				self.menu[ "X" ][ "Shader" ] destroyElemFixed(); | ||||
| 			} | ||||
| 			 | ||||
| 			if ( isdefined( self.menu[ "X" ][ "Scroller" ] ) ) | ||||
| 			{ | ||||
| 				self.menu[ "X" ][ "Scroller" ] destroy(); | ||||
| 				self.menu[ "X" ][ "Scroller" ] destroyElemFixed(); | ||||
| 			} | ||||
| 		} | ||||
| 		 | ||||
| 		if ( isdefined( self.menuversionhud ) ) | ||||
| 		{ | ||||
| 			self.menuversionhud destroy(); | ||||
| 			self.menuversionhud destroyFixed(); | ||||
| 		} | ||||
| 		 | ||||
| 		for ( i = 0 ; i < self.option[ "Name" ][ self.submenu ].size ; i++ ) | ||||
| @@ -402,7 +445,7 @@ OpenSub( menu, menu2 ) | ||||
| 			{ | ||||
| 				if ( isdefined( self.menutexty[ i ] ) ) | ||||
| 				{ | ||||
| 					self.menutexty[ i ] destroy(); | ||||
| 					self.menutexty[ i ] destroyElemFixed(); | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| @@ -425,12 +468,12 @@ CursMove( direction ) | ||||
| 	self notify( "scrolled" ); | ||||
| 	 | ||||
| 	if ( self.submenu == "Main" ) | ||||
| 	{ | ||||
| 		if ( isdefined( self.menutext ) ) | ||||
| 		{ | ||||
| 			self.menu[ "X" ][ "Scroller" ].x = self.menutext[ self.curs[ "Main" ][ "X" ] ].x; | ||||
| 			self.menu[ "X" ][ "Scroller" ].y = self.menutext[ self.curs[ "Main" ][ "X" ] ].y; | ||||
| 			 | ||||
| 		if ( isdefined( self.menutext ) ) | ||||
| 		{ | ||||
| 			for ( i = 0; i < self.menutext.size; i++ ) | ||||
| 			{ | ||||
| 				if ( isdefined( self.menutext[ i ] ) ) | ||||
| @@ -578,7 +621,7 @@ ExitSub() | ||||
| 		{ | ||||
| 			if ( isdefined( self.menutexty[ i ] ) ) | ||||
| 			{ | ||||
| 				self.menutexty[ i ] destroy(); | ||||
| 				self.menutexty[ i ] destroyElemFixed(); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| @@ -603,7 +646,7 @@ ExitMenu() | ||||
| 		{ | ||||
| 			if ( isdefined( self.menutext[ i ] ) ) | ||||
| 			{ | ||||
| 				self.menutext[ i ] destroy(); | ||||
| 				self.menutext[ i ] destroyElemFixed(); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| @@ -612,18 +655,18 @@ ExitMenu() | ||||
| 	{ | ||||
| 		if ( isdefined( self.menu[ "X" ][ "Shader" ] ) ) | ||||
| 		{ | ||||
| 			self.menu[ "X" ][ "Shader" ] destroy(); | ||||
| 			self.menu[ "X" ][ "Shader" ] destroyElemFixed(); | ||||
| 		} | ||||
| 		 | ||||
| 		if ( isdefined( self.menu[ "X" ][ "Scroller" ] ) ) | ||||
| 		{ | ||||
| 			self.menu[ "X" ][ "Scroller" ] destroy(); | ||||
| 			self.menu[ "X" ][ "Scroller" ] destroyElemFixed(); | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
| 	if ( isdefined( self.menuversionhud ) ) | ||||
| 	{ | ||||
| 		self.menuversionhud destroy(); | ||||
| 		self.menuversionhud destroyFixed(); | ||||
| 	} | ||||
| 	 | ||||
| 	self.menuopen = false; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user