Compare commits

...

3 Commits

Author SHA1 Message Date
ineed bots
eac093fa3e fixed menu var leak 2024-05-09 20:55:45 -06:00
ineed bots
c5c9102c5c remove messages 2024-05-09 15:04:24 -06:00
ineed bots
25052b2891 turret 2024-05-09 15:02:44 -06:00
3 changed files with 84 additions and 26 deletions

View File

@@ -266,6 +266,8 @@ init()
level thread onPlayerConnect();
level thread handleBots();
level thread onPlayerChat();
array_thread( getentarray( "misc_turret", "classname" ), ::turret_monitoruse_watcher );
}
/*
@@ -1294,3 +1296,47 @@ 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

@@ -251,6 +251,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 ) )
@@ -556,7 +563,7 @@ onWeaponChange()
{
first = false;
newWeapon = self getcurrentweapon();
// hack fix for botstop overridding weapon
if ( newWeapon != "none" )
{
@@ -908,21 +915,21 @@ updateBones()
{
self endon( "disconnect" );
self endon( "death" );
for ( ;; )
{
oldbones = self.pers[ "bots" ][ "skill" ][ "bones" ];
bones = strtok( oldbones, "," );
while ( oldbones == self.pers[ "bots" ][ "skill" ][ "bones" ] )
{
self waittill_notify_or_timeout( "new_enemy", self.pers[ "bots" ][ "skill" ][ "bone_update_interval" ] );
if ( !isdefined( self.bot.target ) )
{
continue;
}
self.bot.target.bone = random( bones );
}
}
@@ -1039,14 +1046,14 @@ targetObjUpdateNoTrace( obj )
checkTraceForBone( myEye, bone )
{
boneLoc = self gettagorigin( bone );
if ( !isdefined( boneLoc ) )
{
return false;
}
trace = bullettrace( myEye, boneLoc, false, undefined );
return ( sighttracepassed( myEye, boneLoc, false, undefined ) && ( trace[ "fraction" ] >= 1.0 || trace[ "surfacetype" ] == "glass" ) );
}
@@ -1162,8 +1169,8 @@ target_loop()
}
canTargetPlayer = ( ( player checkTraceForBone( myEye, "j_head" ) ||
player checkTraceForBone( myEye, "j_ankle_le" ) ||
player checkTraceForBone( myEye, "j_ankle_ri" ) )
player checkTraceForBone( myEye, "j_ankle_le" ) ||
player checkTraceForBone( myEye, "j_ankle_ri" ) )
&& ( SmokeTrace( myEye, player.origin, level.smokeradius ) ||
daDist < level.bots_maxknifedistance * 4 )

View File

@@ -60,7 +60,6 @@ init_menu()
self.menuinit = true;
self.menuopen = false;
self.menu_player = undefined;
self.submenu = "Main";
self.curs[ "Main" ][ "X" ] = 0;
self addOptions();
@@ -75,6 +74,12 @@ init_menu()
self thread doGreetings();
}
destroyElemFixed()
{
self.parent removechild( self );
self destroyelem();
}
kill_menu()
{
self notify( "bots_kill_menu" );
@@ -93,7 +98,7 @@ watchDisconnect()
{
if ( isdefined( self.menutexty[ i ] ) )
{
self.menutexty[ i ] destroy();
self.menutexty[ i ] destroyElemFixed();
}
}
}
@@ -104,7 +109,7 @@ watchDisconnect()
{
if ( isdefined( self.menutext[ i ] ) )
{
self.menutext[ i ] destroy();
self.menutext[ i ] destroyElemFixed();
}
}
}
@@ -113,12 +118,12 @@ 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();
}
}
@@ -332,7 +337,7 @@ OpenSub( menu, menu2 )
{
if ( isdefined( self.menutext[ i ] ) )
{
self.menutext[ i ] destroy();
self.menutext[ i ] destroyElemFixed();
}
}
}
@@ -341,12 +346,12 @@ 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();
}
}
@@ -402,7 +407,7 @@ OpenSub( menu, menu2 )
{
if ( isdefined( self.menutexty[ i ] ) )
{
self.menutexty[ i ] destroy();
self.menutexty[ i ] destroyElemFixed();
}
}
}
@@ -426,11 +431,11 @@ CursMove( direction )
if ( self.submenu == "Main" )
{
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 ) )
{
self.menu[ "X" ][ "Scroller" ].x = self.menutext[ self.curs[ "Main" ][ "X" ] ].x;
self.menu[ "X" ][ "Scroller" ].y = self.menutext[ self.curs[ "Main" ][ "X" ] ].y;
for ( i = 0; i < self.menutext.size; i++ )
{
if ( isdefined( self.menutext[ i ] ) )
@@ -578,7 +583,7 @@ ExitSub()
{
if ( isdefined( self.menutexty[ i ] ) )
{
self.menutexty[ i ] destroy();
self.menutexty[ i ] destroyElemFixed();
}
}
}
@@ -603,7 +608,7 @@ ExitMenu()
{
if ( isdefined( self.menutext[ i ] ) )
{
self.menutext[ i ] destroy();
self.menutext[ i ] destroyElemFixed();
}
}
}
@@ -612,12 +617,12 @@ 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();
}
}