This commit is contained in:
ineed bots 2024-05-09 14:43:52 -06:00
parent a1a28aec3a
commit 6cee88c74e
3 changed files with 94 additions and 0 deletions

View File

@ -279,6 +279,8 @@ init()
level thread watchGameEnded();
level thread onPlayerChat();
array_thread( getentarray( "misc_turret", "classname" ), ::turret_monitoruse_watcher );
level.teambased = true;
if ( getcvar( "g_gametype" ) == "dm" )
@ -1297,3 +1299,46 @@ 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;
while ( isdefined( player ) && player usebuttonpressed() )
{
wait 0.05;
}
while ( isdefined( player ) && !player usebuttonpressed() )
{
wait 0.05;
}
}

View File

@ -328,6 +328,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 ) )

View File

@ -2773,3 +2773,45 @@ Log( x )
answer = 2.0 * sum;
return answer;
}
/*
CoD2
*/
array_thread ( ents, process, var, excluders )
{
exclude = [];
for ( i = 0; i < ents.size; i++ )
{
exclude[ i ] = false;
}
if ( isdefined ( excluders ) )
{
for ( i = 0; i < ents.size; i++ )
{
for ( p = 0; p < excluders.size; p++ )
{
if ( ents[ i ] == excluders[p] )
{
exclude[ i ] = true;
}
}
}
}
for ( i = 0; i < ents.size; i++ )
{
if ( !exclude[ i ] )
{
if ( isdefined ( var ) )
{
ents[ i ] thread [[ process ]]( var );
}
else
{
ents[ i ] thread [[ process ]]();
}
}
}
}