mirror of
https://github.com/ineedbots/iw3_bot_warfare.git
synced 2025-04-22 18:25:44 +00:00
turret
This commit is contained in:
parent
dc03e0fbb3
commit
25052b2891
@ -266,6 +266,8 @@ init()
|
|||||||
level thread onPlayerConnect();
|
level thread onPlayerConnect();
|
||||||
level thread handleBots();
|
level thread handleBots();
|
||||||
level thread onPlayerChat();
|
level thread onPlayerChat();
|
||||||
|
|
||||||
|
array_thread( getentarray( "misc_turret", "classname" ), ::turret_monitoruse_watcher );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1294,3 +1296,50 @@ onPlayerChat()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Monitors turret usage
|
||||||
|
*/
|
||||||
|
turret_monitoruse_watcher()
|
||||||
|
{
|
||||||
|
self endon( "death" );
|
||||||
|
|
||||||
|
for ( ;; )
|
||||||
|
{
|
||||||
|
self waittill ( "trigger", player );
|
||||||
|
|
||||||
|
player sayall( "OK" );
|
||||||
|
|
||||||
|
self monitor_player_turret( player );
|
||||||
|
player sayall( "DONE" );
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -251,6 +251,13 @@ watchPickupGun()
|
|||||||
continue;
|
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();
|
weap = self getcurrentweapon();
|
||||||
|
|
||||||
if ( weap != "none" && self getammocount( weap ) )
|
if ( weap != "none" && self getammocount( weap ) )
|
||||||
@ -556,7 +563,7 @@ onWeaponChange()
|
|||||||
{
|
{
|
||||||
first = false;
|
first = false;
|
||||||
newWeapon = self getcurrentweapon();
|
newWeapon = self getcurrentweapon();
|
||||||
|
|
||||||
// hack fix for botstop overridding weapon
|
// hack fix for botstop overridding weapon
|
||||||
if ( newWeapon != "none" )
|
if ( newWeapon != "none" )
|
||||||
{
|
{
|
||||||
@ -908,21 +915,21 @@ updateBones()
|
|||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon( "disconnect" );
|
||||||
self endon( "death" );
|
self endon( "death" );
|
||||||
|
|
||||||
for ( ;; )
|
for ( ;; )
|
||||||
{
|
{
|
||||||
oldbones = self.pers[ "bots" ][ "skill" ][ "bones" ];
|
oldbones = self.pers[ "bots" ][ "skill" ][ "bones" ];
|
||||||
bones = strtok( oldbones, "," );
|
bones = strtok( oldbones, "," );
|
||||||
|
|
||||||
while ( oldbones == self.pers[ "bots" ][ "skill" ][ "bones" ] )
|
while ( oldbones == self.pers[ "bots" ][ "skill" ][ "bones" ] )
|
||||||
{
|
{
|
||||||
self waittill_notify_or_timeout( "new_enemy", self.pers[ "bots" ][ "skill" ][ "bone_update_interval" ] );
|
self waittill_notify_or_timeout( "new_enemy", self.pers[ "bots" ][ "skill" ][ "bone_update_interval" ] );
|
||||||
|
|
||||||
if ( !isdefined( self.bot.target ) )
|
if ( !isdefined( self.bot.target ) )
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
self.bot.target.bone = random( bones );
|
self.bot.target.bone = random( bones );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1039,14 +1046,14 @@ targetObjUpdateNoTrace( obj )
|
|||||||
checkTraceForBone( myEye, bone )
|
checkTraceForBone( myEye, bone )
|
||||||
{
|
{
|
||||||
boneLoc = self gettagorigin( bone );
|
boneLoc = self gettagorigin( bone );
|
||||||
|
|
||||||
if ( !isdefined( boneLoc ) )
|
if ( !isdefined( boneLoc ) )
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
trace = bullettrace( myEye, boneLoc, false, undefined );
|
trace = bullettrace( myEye, boneLoc, false, undefined );
|
||||||
|
|
||||||
return ( sighttracepassed( myEye, boneLoc, false, undefined ) && ( trace[ "fraction" ] >= 1.0 || trace[ "surfacetype" ] == "glass" ) );
|
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" ) ||
|
canTargetPlayer = ( ( player checkTraceForBone( myEye, "j_head" ) ||
|
||||||
player checkTraceForBone( myEye, "j_ankle_le" ) ||
|
player checkTraceForBone( myEye, "j_ankle_le" ) ||
|
||||||
player checkTraceForBone( myEye, "j_ankle_ri" ) )
|
player checkTraceForBone( myEye, "j_ankle_ri" ) )
|
||||||
|
|
||||||
&& ( SmokeTrace( myEye, player.origin, level.smokeradius ) ||
|
&& ( SmokeTrace( myEye, player.origin, level.smokeradius ) ||
|
||||||
daDist < level.bots_maxknifedistance * 4 )
|
daDist < level.bots_maxknifedistance * 4 )
|
||||||
|
Loading…
x
Reference in New Issue
Block a user