mirror of
				https://github.com/ineedbots/t6_bot_warfare.git
				synced 2025-10-31 00:16:56 +00:00 
			
		
		
		
	Compare commits
	
		
			5 Commits
		
	
	
		
			3c1d16f497
			...
			cafee7d585
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | cafee7d585 | ||
|  | 42ce6638e7 | ||
|  | 3213c9a5ce | ||
|  | fab59a3fe8 | ||
|  | d507ee22bd | 
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -8,3 +8,4 @@ mpStats | |||||||
| mpClassSets | mpClassSets | ||||||
| *.exe | *.exe | ||||||
| compiled/ | compiled/ | ||||||
|  | console_mp.log* | ||||||
|   | |||||||
| @@ -14,7 +14,7 @@ | |||||||
| */ | */ | ||||||
| main() | main() | ||||||
| { | { | ||||||
| 	level.bw_version = "1.1.1"; | 	level.bw_version = "1.2.0"; | ||||||
| 	 | 	 | ||||||
| 	if ( getdvar( "bots_main" ) == "" ) | 	if ( getdvar( "bots_main" ) == "" ) | ||||||
| 	{ | 	{ | ||||||
| @@ -33,6 +33,13 @@ main() | |||||||
| 	 | 	 | ||||||
| 	// fix bot grenade launcher usage | 	// fix bot grenade launcher usage | ||||||
| 	BotBuiltinReplaceFunc( BotBuiltinGetFunction( "maps/mp/bots/_bot_combat", "bot_should_hip_fire" ), ::bot_should_hip_fire_replaced ); | 	BotBuiltinReplaceFunc( BotBuiltinGetFunction( "maps/mp/bots/_bot_combat", "bot_should_hip_fire" ), ::bot_should_hip_fire_replaced ); | ||||||
|  |  | ||||||
|  | 	// FIX LEAKw | ||||||
|  | 	BotBuiltinReplaceFunc( BotBuiltinGetFunction( "common_scripts/utility", "_timeout" ), ::_timeout_fix ); | ||||||
|  | 	BotBuiltinReplaceFunc( BotBuiltinGetFunction( "common_scripts/utility", "waittill_multiple" ), ::waittill_multiple_fix ); | ||||||
|  | 	BotBuiltinReplaceFunc( BotBuiltinGetFunction( "common_scripts/utility", "waittill_multiple_ents" ), ::waittill_multiple_ents_fix ); | ||||||
|  | 	BotBuiltinReplaceFunc( BotBuiltinGetFunction( "common_scripts/utility", "waittill_any_return" ), ::waittill_any_return_fix ); | ||||||
|  | 	BotBuiltinReplaceFunc( BotBuiltinGetFunction( "common_scripts/utility", "waittill_any_array_return" ), ::waittill_any_array_return_fix ); | ||||||
| } | } | ||||||
|  |  | ||||||
| /* | /* | ||||||
| @@ -157,6 +164,246 @@ init() | |||||||
| 	thread handleBots(); | 	thread handleBots(); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | 	 FIX THE UAV LEAK | ||||||
|  | */ | ||||||
|  | waittill_multiple_ents_fix_hack( ent ) | ||||||
|  | { | ||||||
|  | 	self endon( "death" ); | ||||||
|  | 	ent endon( "die" ); | ||||||
|  | 	 | ||||||
|  | 	while ( ent.threads ) | ||||||
|  | 	{ | ||||||
|  | 		ent waittill( "returned" ); | ||||||
|  | 		ent.threads--; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	ent notify( "die" ); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | 	 FIX THE UAV LEAK | ||||||
|  | */ | ||||||
|  | waittill_multiple_ents_fix( ent1, string1, ent2, string2, ent3, string3, ent4, string4 ) | ||||||
|  | { | ||||||
|  | 	self endon( "death" ); | ||||||
|  | 	ent = spawnstruct(); | ||||||
|  | 	ent.threads = 0; | ||||||
|  | 	 | ||||||
|  | 	if ( isdefined( ent1 ) ) | ||||||
|  | 	{ | ||||||
|  | 		assert( isdefined( string1 ) ); | ||||||
|  | 		ent1 thread waittill_string( string1, ent ); | ||||||
|  | 		ent.threads++; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	if ( isdefined( ent2 ) ) | ||||||
|  | 	{ | ||||||
|  | 		assert( isdefined( string2 ) ); | ||||||
|  | 		ent2 thread waittill_string( string2, ent ); | ||||||
|  | 		ent.threads++; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	if ( isdefined( ent3 ) ) | ||||||
|  | 	{ | ||||||
|  | 		assert( isdefined( string3 ) ); | ||||||
|  | 		ent3 thread waittill_string( string3, ent ); | ||||||
|  | 		ent.threads++; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	if ( isdefined( ent4 ) ) | ||||||
|  | 	{ | ||||||
|  | 		assert( isdefined( string4 ) ); | ||||||
|  | 		ent4 thread waittill_string( string4, ent ); | ||||||
|  | 		ent.threads++; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	self thread waittill_multiple_ents_fix_hack( ent ); | ||||||
|  | 	ent waittill( "die" ); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | 	 FIX THE UAV LEAK | ||||||
|  | */ | ||||||
|  | waittill_multiple_fix_hack( ent ) | ||||||
|  | { | ||||||
|  | 	self endon( "death" ); | ||||||
|  | 	ent endon( "die" ); | ||||||
|  | 	 | ||||||
|  | 	while ( ent.threads ) | ||||||
|  | 	{ | ||||||
|  | 		ent waittill( "returned" ); | ||||||
|  | 		ent.threads--; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	ent notify( "die" ); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | 	 FIX THE UAV LEAK | ||||||
|  | */ | ||||||
|  | waittill_multiple_fix( string1, string2, string3, string4, string5 ) | ||||||
|  | { | ||||||
|  | 	self endon( "death" ); | ||||||
|  | 	ent = spawnstruct(); | ||||||
|  | 	ent.threads = 0; | ||||||
|  | 	 | ||||||
|  | 	if ( isdefined( string1 ) ) | ||||||
|  | 	{ | ||||||
|  | 		self thread waittill_string( string1, ent ); | ||||||
|  | 		ent.threads++; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	if ( isdefined( string2 ) ) | ||||||
|  | 	{ | ||||||
|  | 		self thread waittill_string( string2, ent ); | ||||||
|  | 		ent.threads++; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	if ( isdefined( string3 ) ) | ||||||
|  | 	{ | ||||||
|  | 		self thread waittill_string( string3, ent ); | ||||||
|  | 		ent.threads++; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	if ( isdefined( string4 ) ) | ||||||
|  | 	{ | ||||||
|  | 		self thread waittill_string( string4, ent ); | ||||||
|  | 		ent.threads++; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	if ( isdefined( string5 ) ) | ||||||
|  | 	{ | ||||||
|  | 		self thread waittill_string( string5, ent ); | ||||||
|  | 		ent.threads++; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	self thread waittill_multiple_fix_hack( ent ); | ||||||
|  | 	ent waittill( "die" ); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | 	 FIX THE UAV LEAK | ||||||
|  | */ | ||||||
|  | waittill_any_return_fix_hack( ent, string1, string2, string3, string4, string5, string6, string7 ) | ||||||
|  | { | ||||||
|  | 	if ( ( !isdefined( string1 ) || string1 != "death" ) && ( !isdefined( string2 ) || string2 != "death" ) && ( !isdefined( string3 ) || string3 != "death" ) && ( !isdefined( string4 ) || string4 != "death" ) && ( !isdefined( string5 ) || string5 != "death" ) && ( !isdefined( string6 ) || string6 != "death" ) && ( !isdefined( string7 ) || string7 != "death" ) ) | ||||||
|  | 	{ | ||||||
|  | 		self endon( "death" ); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	ent endon( "die" ); | ||||||
|  | 	 | ||||||
|  | 	ent waittill( "returned", msg ); | ||||||
|  | 	ent notify( "die", msg ); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | 	 FIX THE UAV LEAK | ||||||
|  | */ | ||||||
|  | waittill_any_return_fix( string1, string2, string3, string4, string5, string6, string7 ) | ||||||
|  | { | ||||||
|  | 	if ( ( !isdefined( string1 ) || string1 != "death" ) && ( !isdefined( string2 ) || string2 != "death" ) && ( !isdefined( string3 ) || string3 != "death" ) && ( !isdefined( string4 ) || string4 != "death" ) && ( !isdefined( string5 ) || string5 != "death" ) && ( !isdefined( string6 ) || string6 != "death" ) && ( !isdefined( string7 ) || string7 != "death" ) ) | ||||||
|  | 	{ | ||||||
|  | 		self endon( "death" ); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	ent = spawnstruct(); | ||||||
|  | 	 | ||||||
|  | 	if ( isdefined( string1 ) ) | ||||||
|  | 	{ | ||||||
|  | 		self thread waittill_string( string1, ent ); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	if ( isdefined( string2 ) ) | ||||||
|  | 	{ | ||||||
|  | 		self thread waittill_string( string2, ent ); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	if ( isdefined( string3 ) ) | ||||||
|  | 	{ | ||||||
|  | 		self thread waittill_string( string3, ent ); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	if ( isdefined( string4 ) ) | ||||||
|  | 	{ | ||||||
|  | 		self thread waittill_string( string4, ent ); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	if ( isdefined( string5 ) ) | ||||||
|  | 	{ | ||||||
|  | 		self thread waittill_string( string5, ent ); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	if ( isdefined( string6 ) ) | ||||||
|  | 	{ | ||||||
|  | 		self thread waittill_string( string6, ent ); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	if ( isdefined( string7 ) ) | ||||||
|  | 	{ | ||||||
|  | 		self thread waittill_string( string7, ent ); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	self thread waittill_any_return_fix_hack( ent, string1, string2, string3, string4, string5, string6, string7 ); | ||||||
|  | 	 | ||||||
|  | 	ent waittill( "die", msg ); | ||||||
|  | 	return msg; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | 	 FIX THE UAV LEAK | ||||||
|  | */ | ||||||
|  | _timeout_fix( delay ) | ||||||
|  | { | ||||||
|  | 	self endon( "die" ); | ||||||
|  | 	wait( delay ); | ||||||
|  | 	self notify( "returned", "timeout" ); | ||||||
|  | 	self notify( "die" ); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | 	 FIX THE UAV LEAK | ||||||
|  | */ | ||||||
|  | waittill_any_array_return_fix_hack( s_tracker, a_notifies ) | ||||||
|  | { | ||||||
|  | 	if ( isinarray( a_notifies, "death" ) ) | ||||||
|  | 	{ | ||||||
|  | 		self endon( "death" ); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	s_tracker endon( "die" ); | ||||||
|  | 	 | ||||||
|  | 	s_tracker waittill( "returned", msg ); | ||||||
|  | 	s_tracker notify( "die", msg ); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | 	 FIX THE UAV LEAK | ||||||
|  | */ | ||||||
|  | waittill_any_array_return_fix( a_notifies ) | ||||||
|  | { | ||||||
|  | 	if ( isinarray( a_notifies, "death" ) ) | ||||||
|  | 	{ | ||||||
|  | 		self endon( "death" ); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	s_tracker = spawnstruct(); | ||||||
|  | 	 | ||||||
|  | 	foreach ( str_notify in a_notifies ) | ||||||
|  | 	{ | ||||||
|  | 		if ( isdefined( str_notify ) ) | ||||||
|  | 		{ | ||||||
|  | 			self thread waittill_string( str_notify, s_tracker ); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	self thread waittill_any_array_return_fix_hack( s_tracker, a_notifies ); | ||||||
|  | 	s_tracker waittill( "die", msg ); | ||||||
|  | 	 | ||||||
|  | 	return msg; | ||||||
|  | } | ||||||
|  |  | ||||||
| /* | /* | ||||||
| 	Fixes gl usage | 	Fixes gl usage | ||||||
| */ | */ | ||||||
| @@ -824,8 +1071,8 @@ onBotSpawned() | |||||||
| 	for ( ;; ) | 	for ( ;; ) | ||||||
| 	{ | 	{ | ||||||
| 		self waittill( "spawned_player" ); | 		self waittill( "spawned_player" ); | ||||||
| 		self BotBuiltinClearOverrides( true ); | 		self BotBuiltinBotClearOverride( false ); | ||||||
| 		self BotBuiltinWeaponOverride( self getcurrentweapon() ); | 		self BotBuiltinBotWeaponOverride( self getcurrentweapon() ); | ||||||
| 		 | 		 | ||||||
| 		self thread watch_for_override_stuff(); | 		self thread watch_for_override_stuff(); | ||||||
| 		self thread watch_for_melee_override(); | 		self thread watch_for_melee_override(); | ||||||
| @@ -948,9 +1195,9 @@ watch_for_melee_override() | |||||||
| 			 | 			 | ||||||
| 			if ( self isonground() && self getstance() != "prone" && dist < getdvarfloat( "aim_automelee_range" ) && ( getConeDot( threat.origin, self.origin, self getplayerangles() ) > 0.9 || dist < 10 ) ) | 			if ( self isonground() && self getstance() != "prone" && dist < getdvarfloat( "aim_automelee_range" ) && ( getConeDot( threat.origin, self.origin, self getplayerangles() ) > 0.9 || dist < 10 ) ) | ||||||
| 			{ | 			{ | ||||||
| 				self BotBuiltinBotMeleeParams( threat getentitynumber(), dist ); | 				self BotBuiltinBotMeleeParamsOverride( threat getentitynumber(), dist ); | ||||||
| 				self BotBuiltinButtonOverride( "melee", "enable" ); | 				self BotBuiltinBotButtonOverride( "+melee" ); | ||||||
| 				self BotBuiltinAimOverride(); | 				self BotBuiltinBotAimOverride( true ); | ||||||
| 				 | 				 | ||||||
| 				time_left = 1; | 				time_left = 1; | ||||||
| 				once = false; | 				once = false; | ||||||
| @@ -964,17 +1211,17 @@ watch_for_melee_override() | |||||||
| 					if ( !once ) | 					if ( !once ) | ||||||
| 					{ | 					{ | ||||||
| 						once = true; | 						once = true; | ||||||
| 						self BotBuiltinClearButtonOverride( "melee" ); | 						self BotBuiltinBotButtonOverride( "~melee" ); | ||||||
| 					} | 					} | ||||||
| 				} | 				} | ||||||
| 				 | 				 | ||||||
| 				if ( !once ) | 				if ( !once ) | ||||||
| 				{ | 				{ | ||||||
| 					self BotBuiltinClearButtonOverride( "melee" ); | 					self BotBuiltinBotButtonOverride( "~melee" ); | ||||||
| 				} | 				} | ||||||
| 				 | 				 | ||||||
| 				self BotBuiltinClearMeleeParams(); | 				self BotBuiltinBotMeleeParamsOverride( false ); | ||||||
| 				self BotBuiltinClearAimOverride(); | 				self BotBuiltinBotAimOverride( false ); | ||||||
| 				wait 1; | 				wait 1; | ||||||
| 				break; | 				break; | ||||||
| 			} | 			} | ||||||
| @@ -1047,13 +1294,13 @@ watch_for_override_stuff() | |||||||
| 					last_jump_time = time; | 					last_jump_time = time; | ||||||
| 					 | 					 | ||||||
| 					// drop shot | 					// drop shot | ||||||
| 					self BotBuiltinMovementOverride( 0, 0 ); | 					self BotBuiltinBotMovementOverride( 0, 0 ); | ||||||
| 					self BotBuiltinButtonOverride( "prone", "enable" ); | 					self BotBuiltinBotButtonOverride( "+prone" ); | ||||||
| 					 | 					 | ||||||
| 					wait 1.5; | 					wait 1.5; | ||||||
| 					 | 					 | ||||||
| 					self BotBuiltinClearMovementOverride(); | 					self BotBuiltinBotMovementOverride( false ); | ||||||
| 					self BotBuiltinClearButtonOverride( "prone" ); | 					self BotBuiltinBotButtonOverride( "~prone" ); | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 			else | 			else | ||||||
| @@ -1061,9 +1308,9 @@ watch_for_override_stuff() | |||||||
| 				last_jump_time = time; | 				last_jump_time = time; | ||||||
| 				 | 				 | ||||||
| 				// jump shot | 				// jump shot | ||||||
| 				self BotBuiltinButtonOverride( "gostand", "enable" ); | 				self BotBuiltinBotButtonOverride( "+gostand" ); | ||||||
| 				wait 0.1; | 				wait 0.1; | ||||||
| 				self BotBuiltinClearButtonOverride( "gostand" ); | 				self BotBuiltinBotButtonOverride( "~gostand" ); | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 		 | 		 | ||||||
| @@ -1463,7 +1710,7 @@ BotBuiltinPrintConsole( s ) | |||||||
|  |  | ||||||
| /* | /* | ||||||
| */ | */ | ||||||
| BotBuiltinMovementOverride( a, b ) | BotBuiltinBotMovementOverride( a, b ) | ||||||
| { | { | ||||||
| 	if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "botmovementoverride" ] ) ) | 	if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "botmovementoverride" ] ) ) | ||||||
| 	{ | 	{ | ||||||
| @@ -1473,57 +1720,27 @@ BotBuiltinMovementOverride( a, b ) | |||||||
|  |  | ||||||
| /* | /* | ||||||
| */ | */ | ||||||
| BotBuiltinClearMovementOverride() | BotBuiltinBotButtonOverride( a ) | ||||||
| { |  | ||||||
| 	if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "botclearmovementoverride" ] ) ) |  | ||||||
| 	{ |  | ||||||
| 		self [[ level.bot_builtins[ "botclearmovementoverride" ] ]](); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| /* |  | ||||||
| */ |  | ||||||
| BotBuiltinClearButtonOverride( a ) |  | ||||||
| { |  | ||||||
| 	if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "botclearbuttonoverride" ] ) ) |  | ||||||
| 	{ |  | ||||||
| 		self [[ level.bot_builtins[ "botclearbuttonoverride" ] ]]( a ); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| /* |  | ||||||
| */ |  | ||||||
| BotBuiltinButtonOverride( a, b ) |  | ||||||
| { | { | ||||||
| 	if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "botbuttonoverride" ] ) ) | 	if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "botbuttonoverride" ] ) ) | ||||||
| 	{ | 	{ | ||||||
| 		self [[ level.bot_builtins[ "botbuttonoverride" ] ]]( a, b ); | 		self [[ level.bot_builtins[ "botbuttonoverride" ] ]]( a ); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| /* | /* | ||||||
| */ | */ | ||||||
| BotBuiltinClearOverrides( a ) | BotBuiltinBotClearOverride( a ) | ||||||
| { | { | ||||||
| 	if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "botclearoverrides" ] ) ) | 	if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "botclearoverride" ] ) ) | ||||||
| 	{ | 	{ | ||||||
| 		self [[ level.bot_builtins[ "botclearoverrides" ] ]]( a ); | 		self [[ level.bot_builtins[ "botclearoverride" ] ]]( a ); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| /* | /* | ||||||
| */ | */ | ||||||
| BotBuiltinClearWeaponOverride() | BotBuiltinBotWeaponOverride( a ) | ||||||
| { |  | ||||||
| 	if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "botclearweaponoverride" ] ) ) |  | ||||||
| 	{ |  | ||||||
| 		self [[ level.bot_builtins[ "botclearweaponoverride" ] ]](); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| /* |  | ||||||
| */ |  | ||||||
| BotBuiltinWeaponOverride( a ) |  | ||||||
| { | { | ||||||
| 	if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "botweaponoverride" ] ) ) | 	if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "botweaponoverride" ] ) ) | ||||||
| 	{ | 	{ | ||||||
| @@ -1533,52 +1750,22 @@ BotBuiltinWeaponOverride( a ) | |||||||
|  |  | ||||||
| /* | /* | ||||||
| */ | */ | ||||||
| BotBuiltinClearButtonOverrides() | BotBuiltinBotAimOverride( a ) | ||||||
| { |  | ||||||
| 	if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "botclearbuttonoverrides" ] ) ) |  | ||||||
| 	{ |  | ||||||
| 		self [[ level.bot_builtins[ "botclearbuttonoverrides" ] ]](); |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| /* |  | ||||||
| */ |  | ||||||
| BotBuiltinAimOverride() |  | ||||||
| { | { | ||||||
| 	if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "botaimoverride" ] ) ) | 	if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "botaimoverride" ] ) ) | ||||||
| 	{ | 	{ | ||||||
| 		self [[ level.bot_builtins[ "botaimoverride" ] ]](); | 		self [[ level.bot_builtins[ "botaimoverride" ] ]]( a ); | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| /* |  | ||||||
| */ |  | ||||||
| BotBuiltinClearAimOverride() |  | ||||||
| { |  | ||||||
| 	if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "botclearaimoverride" ] ) ) |  | ||||||
| 	{ |  | ||||||
| 		self [[ level.bot_builtins[ "botclearaimoverride" ] ]](); |  | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| /* | /* | ||||||
| 	Sets melee params | 	Sets melee params | ||||||
| */ | */ | ||||||
| BotBuiltinBotMeleeParams( entNum, dist ) | BotBuiltinBotMeleeParamsOverride( entNum, dist ) | ||||||
| { | { | ||||||
| 	if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "botmeleeparams" ] ) ) | 	if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "botmeleeparamsoverride" ] ) ) | ||||||
| 	{ | 	{ | ||||||
| 		self [[ level.bot_builtins[ "botmeleeparams" ] ]]( entNum, dist ); | 		self [[ level.bot_builtins[ "botmeleeparamsoverride" ] ]]( entNum, dist ); | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| /* |  | ||||||
| */ |  | ||||||
| BotBuiltinClearMeleeParams() |  | ||||||
| { |  | ||||||
| 	if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "clearbotmeleeparams" ] ) ) |  | ||||||
| 	{ |  | ||||||
| 		self [[ level.bot_builtins[ "clearbotmeleeparams" ] ]](); |  | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,17 +2,11 @@ main() | |||||||
| { | { | ||||||
| 	level.bot_builtins[ "printconsole" ] = ::do_printconsole; | 	level.bot_builtins[ "printconsole" ] = ::do_printconsole; | ||||||
| 	level.bot_builtins[ "botmovementoverride" ] = ::do_botmovementoverride; | 	level.bot_builtins[ "botmovementoverride" ] = ::do_botmovementoverride; | ||||||
| 	level.bot_builtins[ "botclearmovementoverride" ] = ::do_botclearmovementoverride; |  | ||||||
| 	level.bot_builtins[ "botclearbuttonoverride" ] = ::do_botclearbuttonoverride; |  | ||||||
| 	level.bot_builtins[ "botbuttonoverride" ] = ::do_botbuttonoverride; | 	level.bot_builtins[ "botbuttonoverride" ] = ::do_botbuttonoverride; | ||||||
| 	level.bot_builtins[ "botclearoverrides" ] = ::do_botclearoverrides; | 	level.bot_builtins[ "botclearoverride" ] = ::do_botclearoverride; | ||||||
| 	level.bot_builtins[ "botclearweaponoverride" ] = ::do_botclearweaponoverride; |  | ||||||
| 	level.bot_builtins[ "botweaponoverride" ] = ::do_botweaponoverride; | 	level.bot_builtins[ "botweaponoverride" ] = ::do_botweaponoverride; | ||||||
| 	level.bot_builtins[ "botclearbuttonoverrides" ] = ::do_botclearbuttonoverrides; |  | ||||||
| 	level.bot_builtins[ "botaimoverride" ] = ::do_botaimoverride; | 	level.bot_builtins[ "botaimoverride" ] = ::do_botaimoverride; | ||||||
| 	level.bot_builtins[ "botclearaimoverride" ] = ::do_botclearaimoverride; | 	level.bot_builtins[ "botmeleeparamsoverride" ] = ::do_botmeleeparamsoverride; | ||||||
| 	level.bot_builtins[ "botmeleeparams" ] = ::do_botmeleeparams; |  | ||||||
| 	level.bot_builtins[ "clearbotmeleeparams" ] = ::do_clearbotmeleeparams; |  | ||||||
| 	level.bot_builtins[ "getfunction" ] = ::do_getfunction; | 	level.bot_builtins[ "getfunction" ] = ::do_getfunction; | ||||||
| 	level.bot_builtins[ "replacefunc" ] = ::do_replacefunc; | 	level.bot_builtins[ "replacefunc" ] = ::do_replacefunc; | ||||||
| 	level.bot_builtins[ "disabledetouronce" ] = ::do_disabledetouronce; | 	level.bot_builtins[ "disabledetouronce" ] = ::do_disabledetouronce; | ||||||
| @@ -28,29 +22,14 @@ do_botmovementoverride( a, b ) | |||||||
| 	self botmovementoverride( a, b ); | 	self botmovementoverride( a, b ); | ||||||
| } | } | ||||||
|  |  | ||||||
| do_botclearmovementoverride() | do_botbuttonoverride( a ) | ||||||
| { | { | ||||||
| 	self botclearmovementoverride(); | 	self botbuttonoverride( a ); | ||||||
| } | } | ||||||
|  |  | ||||||
| do_botclearbuttonoverride( a ) | do_botclearoverride( a ) | ||||||
| { | { | ||||||
| 	self botclearbuttonoverride( a ); | 	self botclearoverride( a ); | ||||||
| } |  | ||||||
|  |  | ||||||
| do_botbuttonoverride( a, b ) |  | ||||||
| { |  | ||||||
| 	self botbuttonoverride( a, b ); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| do_botclearoverrides( a ) |  | ||||||
| { |  | ||||||
| 	self botclearoverrides( a ); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| do_botclearweaponoverride() |  | ||||||
| { |  | ||||||
| 	self botclearweaponoverride(); |  | ||||||
| } | } | ||||||
|  |  | ||||||
| do_botweaponoverride( a ) | do_botweaponoverride( a ) | ||||||
| @@ -58,19 +37,14 @@ do_botweaponoverride( a ) | |||||||
| 	self botweaponoverride( a ); | 	self botweaponoverride( a ); | ||||||
| } | } | ||||||
|  |  | ||||||
| do_botclearbuttonoverrides() | do_botaimoverride( a ) | ||||||
| { | { | ||||||
| 	self botclearbuttonoverrides(); | 	self botaimoverride( a ); | ||||||
| } | } | ||||||
|  |  | ||||||
| do_botaimoverride() | do_botmeleeparamsoverride( entNum, dist ) | ||||||
| { | { | ||||||
| 	self botaimoverride(); | 	self botmeleeparamsoverride( entNum, dist ); | ||||||
| } |  | ||||||
|  |  | ||||||
| do_botclearaimoverride() |  | ||||||
| { |  | ||||||
| 	self botclearaimoverride(); |  | ||||||
| } | } | ||||||
|  |  | ||||||
| do_getfunction( a, b ) | do_getfunction( a, b ) | ||||||
| @@ -87,13 +61,3 @@ do_disabledetouronce( a ) | |||||||
| { | { | ||||||
| 	disabledetouronce( a ); | 	disabledetouronce( a ); | ||||||
| } | } | ||||||
|  |  | ||||||
| do_botmeleeparams( entNum, dist ) |  | ||||||
| { |  | ||||||
| 	self botmeleeparams( entNum, dist ); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| do_clearbotmeleeparams() |  | ||||||
| { |  | ||||||
| 	self botclearmeleeparams(); |  | ||||||
| } |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user