mirror of
https://github.com/JezuzLizard/t4sp_bot_warfare.git
synced 2025-04-22 22:45:43 +00:00
Progress 3.
This commit is contained in:
parent
81094096cb
commit
280ec4c318
@ -1766,11 +1766,16 @@ initAStar( goal )
|
||||
{
|
||||
nodes = generatePath( self.origin, goal, self.team, level.bot_allowed_negotiation_links );
|
||||
|
||||
if ( !isDefined( nodes ) )
|
||||
{
|
||||
//Try again to find a path to the origin using best effort algo
|
||||
nodes = generatePath( self.origin, goal, self.team, level.bot_allowed_negotiation_links, 192.0 );
|
||||
if ( !isDefined( nodes ) )
|
||||
{
|
||||
self.bot.astar = [];
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
node_indexes = [];
|
||||
|
||||
|
@ -316,10 +316,17 @@ ClearPriorityObjective()
|
||||
/*
|
||||
Checks whether the path generated by the ASTAR path finding is inaccessible
|
||||
*/
|
||||
GetPathIsInaccessible( to )
|
||||
GetPathIsInaccessible( to, best_effort )
|
||||
{
|
||||
if ( isDefined( best_effort ) )
|
||||
{
|
||||
path = generatePath( self.origin, to, self.team, level.bot_allowed_negotiation_links, best_effort );
|
||||
}
|
||||
else
|
||||
{
|
||||
path = generatePath( self.origin, to, self.team, level.bot_allowed_negotiation_links );
|
||||
return !isDefined( path ) || path.size <= 0;
|
||||
}
|
||||
return !isDefined( path ) || ( path.size <= 0) ;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -25,6 +25,7 @@ bot_post_think_common( state )
|
||||
|
||||
bot_obj_timeout( objective_group, time )
|
||||
{
|
||||
self endon( objective_group + "_end_think" );
|
||||
wait time;
|
||||
self.obj_cancel_reason = "Obj timeout";
|
||||
self notify( objective_group + "_cancel" );
|
||||
@ -434,6 +435,11 @@ bot_should_purchase_magicbox()
|
||||
{
|
||||
obj = magicbox_objs[ magicbox_objs_keys[ i ] ];
|
||||
magicbox = obj.target_ent;
|
||||
if ( isDefined( self.last_magicbox_purchase_time ) && getTime() < ( self.last_magicbox_purchase_time + 60000 ) )
|
||||
{
|
||||
self bot_objective_print( "magicbox", obj.id, "Bot <" + self.playername + "> not purchasing this magicbox box because this action is on cooldown", "bot_should_purchase_magicbox" );
|
||||
continue;
|
||||
}
|
||||
if ( magicbox.hidden )
|
||||
{
|
||||
self bot_objective_print( "magicbox", obj.id, "Bot <" + self.playername + "> not purchasing this magicbox box because it is hidden", "bot_should_purchase_magicbox" );
|
||||
@ -716,7 +722,7 @@ bot_should_purchase_door()
|
||||
self bot_objective_print( "door", obj.id, "Bot <" + self.playername + "> not purchasing <" + door_ent.target + "> because we can't afford it", "bot_should_purchase_door" );
|
||||
continue;
|
||||
}
|
||||
if ( self GetPathIsInaccessible( door_ent.origin ) )
|
||||
if ( self GetPathIsInaccessible( door_ent.origin, 192.0 ) )
|
||||
{
|
||||
self bot_objective_print( "door", obj.id, "Bot <" + self.playername + "> not purchasing <" + door_ent.target + "> because it cannot be pathed to", "bot_should_purchase_door" );
|
||||
continue;
|
||||
@ -809,7 +815,7 @@ bot_should_purchase_debris()
|
||||
self bot_objective_print( "debris", obj.id, "Bot <" + self.playername + "> not purchasing <" + debris_ent.target + "> because we can't afford it", "bot_should_purchase_debris" );
|
||||
continue;
|
||||
}
|
||||
if ( self GetPathIsInaccessible( debris_ent.origin ) )
|
||||
if ( self GetPathIsInaccessible( debris_ent.origin, 192.0 ) )
|
||||
{
|
||||
self bot_objective_print( "debris", obj.id, "Bot <" + self.playername + "> not purchasing <" + debris_ent.target + "> because it cannot be pathed to", "bot_should_purchase_debris" );
|
||||
continue;
|
||||
@ -899,6 +905,11 @@ bot_should_purchase_wallbuy()
|
||||
obj = wallbuy_objs[ wallbuy_objs_keys[ i ] ];
|
||||
wallbuy_ent = obj.target_ent;
|
||||
weapon = wallbuy_ent.zombie_weapon_upgrade;
|
||||
if ( isDefined( self.last_wallbuy_purchase_time ) && getTime() < ( self.last_wallbuy_purchase_time + 60000 ) )
|
||||
{
|
||||
self bot_objective_print( "wallbuy", obj.id, "Bot <" + self.playername + "> not purchasing <" + weapon + "> because this action is on cooldown", "bot_should_purchase_wallbuy" );
|
||||
continue;
|
||||
}
|
||||
if ( self.score < maps\so\zm_common\_zm_weapons::get_weapon_cost( weapon ) )
|
||||
{
|
||||
self bot_objective_print( "wallbuy", obj.id, "Bot <" + self.playername + "> not purchasing <" + weapon + "> because we can't afford it", "bot_should_purchase_wallbuy" );
|
||||
@ -1004,6 +1015,11 @@ bot_should_purchase_wallbuy_ammo()
|
||||
self bot_objective_print( "wallbuyammo", obj.id, "Bot <" + self.playername + "> not purchasing ammo for <" + weapon + "> because we can't afford it", "bot_should_purchase_wallbuy_ammo" );
|
||||
continue;
|
||||
}
|
||||
if ( ( self GetWeaponAmmoStock( weapon ) / WeaponMaxAmmo( weapon ) ) > 0.3 )
|
||||
{
|
||||
self bot_objective_print( "wallbuyammo", obj.id, "Bot <" + self.playername + "> not purchasing ammo for <" + weapon + "> because we don't need ammo", "bot_should_purchase_wallbuy_ammo" );
|
||||
continue;
|
||||
}
|
||||
if ( self GetPathIsInaccessible( wallbuy_ent.bot_use_node ) )
|
||||
{
|
||||
self bot_objective_print( "wallbuyammo", obj.id, "Bot <" + self.playername + "> not purchasing ammo for <" + weapon + "> because it cannot be pathed to", "bot_should_purchase_wallbuy_ammo" );
|
||||
@ -1121,12 +1137,12 @@ bot_should_purchase_packapunch()
|
||||
packapunch_ent = obj.target_ent;
|
||||
if ( self.score < level._custom_packapunch.cost )
|
||||
{
|
||||
self bot_objective_print( "packapunch", obj.id, "Bot <" + self.playername + "> not purchasing packapunch because we can't afford it", "bot_should_purchase_wallbuy_ammo" );
|
||||
self bot_objective_print( "packapunch", obj.id, "Bot <" + self.playername + "> not purchasing packapunch because we can't afford it", "bot_should_purchase_packapunch" );
|
||||
continue;
|
||||
}
|
||||
if ( self GetPathIsInaccessible( wallbuy_ent.bot_use_node ) )
|
||||
if ( self GetPathIsInaccessible( packapunch_ent.bot_use_node ) )
|
||||
{
|
||||
self bot_objective_print( "packapunch", obj.id, "Bot <" + self.playername + "> not purchasing packapunch because it cannot be pathed to", "bot_should_purchase_wallbuy_ammo" );
|
||||
self bot_objective_print( "packapunch", obj.id, "Bot <" + self.playername + "> not purchasing packapunch because it cannot be pathed to", "bot_should_purchase_packapunch" );
|
||||
continue;
|
||||
}
|
||||
self.available_packapunchs[ self.available_packapunchs.size ] = obj;
|
||||
@ -1144,7 +1160,6 @@ bot_packapunch_purchase_should_cancel()
|
||||
obj = self bot_get_objective();
|
||||
|
||||
goal_canceled = false;
|
||||
perk = obj.target_ent.script_noteworthy;
|
||||
if ( isDefined( obj.target_ent.packapunch_weapon_spawn_time )
|
||||
&& isDefined( obj.target_ent.packapunch_user )
|
||||
&& obj.target_ent.packapunch_user == self
|
||||
@ -1160,3 +1175,100 @@ bot_packapunch_purchase_priority()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
bot_power_activate()
|
||||
{
|
||||
if ( !isDefined( self.available_powers ) || self.available_powers.size <= 0 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self endon( "disconnect" );
|
||||
self endon( "power_end_think" );
|
||||
level endon( "end_game" );
|
||||
|
||||
power_obj = self.available_powers[ 0 ];
|
||||
|
||||
power_ent = power_obj.target_ent;
|
||||
self bot_set_objective( "power", power_ent );
|
||||
self bot_objective_print( "power", power_obj.id, "Bot <" + self.playername + "> Attempting to activate power" "bot_power_activate" );
|
||||
|
||||
lookat_org = power_ent.origin;
|
||||
goal_org = power_ent.bot_use_node;
|
||||
|
||||
self ClearScriptAimPos();
|
||||
self SetScriptGoal( goal_org, 24 );
|
||||
|
||||
result = self waittill_any_return( "goal", "bad_path", "new_goal" );
|
||||
|
||||
if ( result != "goal" )
|
||||
{
|
||||
self.obj_cancel_reason = "Bad path/new goal";
|
||||
self notify( "power_cancel" );
|
||||
return;
|
||||
}
|
||||
|
||||
self SetScriptAimPos( lookat_org );
|
||||
self thread bot_obj_timeout( "power", 2 );
|
||||
wait randomFloatRange( 0.5, 1.5 );
|
||||
|
||||
self thread BotPressUse( 0.2 );
|
||||
}
|
||||
|
||||
bot_power_activate_init()
|
||||
{
|
||||
self.successfully_activated_power = false;
|
||||
}
|
||||
|
||||
bot_power_activate_post_think()
|
||||
{
|
||||
self bot_post_think_common( state );
|
||||
self.successfully_activated_power = false;
|
||||
}
|
||||
|
||||
bot_should_activate_power()
|
||||
{
|
||||
power_objs = get_all_objectives_for_group( "power" );
|
||||
if ( power_objs.size <= 0 )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
self.available_powers = [];
|
||||
power_objs_keys = getArrayKeys( power_objs );
|
||||
power_objs_keys = array_randomize( power_objs_keys );
|
||||
for ( i = 0; i < power_objs.size; i++ )
|
||||
{
|
||||
obj = power_objs[ power_objs_keys[ i ] ];
|
||||
power_ent = obj.target_ent;
|
||||
if ( self GetPathIsInaccessible( power_ent.bot_use_node ) )
|
||||
{
|
||||
self bot_objective_print( "power", obj.id, "Bot <" + self.playername + "> not activating power because it cannot be pathed to", "bot_power_activate" );
|
||||
continue;
|
||||
}
|
||||
self.available_powers[ self.available_powers.size ] = obj;
|
||||
}
|
||||
return self.available_powers.size > 0;
|
||||
}
|
||||
|
||||
bot_check_complete_power_activate()
|
||||
{
|
||||
return self.successfully_activated_power;
|
||||
}
|
||||
|
||||
bot_power_activate_should_cancel()
|
||||
{
|
||||
obj = self bot_get_objective();
|
||||
|
||||
goal_canceled = false;
|
||||
if ( isDefined( level.flag[ "power_on" ] ) && level.flag[ "power_on" ] )
|
||||
{
|
||||
self.obj_cancel_reason = "Power is already on";
|
||||
goal_canceled = true;
|
||||
}
|
||||
return goal_canceled;
|
||||
}
|
||||
|
||||
bot_power_activate_priority()
|
||||
{
|
||||
return 0;
|
||||
}
|
@ -408,10 +408,31 @@ bot_pick_action()
|
||||
}
|
||||
}
|
||||
|
||||
if ( !isDefined( possible_actions.data ) || possible_actions.data.size <= 0 )
|
||||
forced_action = getDvar( "bots_debug_forced_action" );
|
||||
|
||||
if ( ( !isDefined( possible_actions.data ) || possible_actions.data.size <= 0 ) && forced_action == "" )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if ( forced_action != "" )
|
||||
{
|
||||
entnum_and_forced_action = strTok( forced_action, " " );
|
||||
if ( entnum_and_forced_action.size != 2 )
|
||||
{
|
||||
setDvar( "bots_debug_forced_action", "" );
|
||||
}
|
||||
else if ( int( entnum_and_forced_action[ 0 ] ) == self getEntityNumber() && isDefined( level.zbots_actions[ entnum_and_forced_action[ 1 ] ] ) )
|
||||
{
|
||||
possible_action = spawnStruct();
|
||||
possible_action.action_name = entnum_and_forced_action[ 1 ];
|
||||
possible_action.priority = 999;
|
||||
self.bot_action = possible_action;
|
||||
setDvar( "bots_debug_forced_action", "" );
|
||||
printConsole( self.playername + " Picking forced action " + self.bot_action.action_name + " Priority " + self.bot_action.priority );
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
self.bot_action = possible_actions.data[ 0 ];
|
||||
printConsole( self.playername + " Picking action " + self.bot_action.action_name + " Priority " + self.bot_action.priority );
|
||||
return true;
|
||||
@ -577,13 +598,25 @@ action_should_be_canceled_global( action_name )
|
||||
return goal_canceled;
|
||||
}
|
||||
|
||||
get_angle_offset_node( ent, angle_offset, forward_size, offset )
|
||||
get_angle_offset_node( forward_size, angle_offset, offset )
|
||||
{
|
||||
angles = ent.angles;
|
||||
if ( !isDefined( forward_size ) )
|
||||
{
|
||||
forward_size = 40;
|
||||
}
|
||||
if ( !isDefined( angle_offset ) )
|
||||
{
|
||||
angle_offset = ( 0, 0, 0 );
|
||||
}
|
||||
if ( !isDefined( offset ) )
|
||||
{
|
||||
offset = ( 0, 0, 0 );
|
||||
}
|
||||
|
||||
angles = ( 0, self.angles[ 1 ], 0 );
|
||||
angles += angle_offset;
|
||||
angles = ( 0, AngleClamp180( angles[ 1 ] ), 0 );
|
||||
node = ent.origin + ( AnglesToForward( angles ) * forward_size );
|
||||
node = clamp_to_ground( node ) + offset;
|
||||
node = self.origin + ( AnglesToForward( angles ) * forward_size ) + offset;
|
||||
node = clamp_to_ground( node );
|
||||
return node;
|
||||
}
|
||||
|
||||
|
@ -7,8 +7,6 @@
|
||||
|
||||
init()
|
||||
{
|
||||
//maps\bots\script_objectives\_obj_common;
|
||||
//maps\bots\script_objectives\_obj_actions;
|
||||
register_bot_action( "powerup",
|
||||
::bot_grab_powerup,
|
||||
::bot_powerup_init,
|
||||
@ -90,6 +88,15 @@ init()
|
||||
::bot_packapunch_purchase_should_cancel,
|
||||
::bot_packapunch_purchase_priority );
|
||||
|
||||
register_bot_action( "power",
|
||||
::bot_power_activate,
|
||||
::bot_power_activate_init,
|
||||
::bot_power_activate_post_think,
|
||||
::bot_should_activate_power,
|
||||
::bot_check_complete_power_activate,
|
||||
::bot_power_activate_should_cancel,
|
||||
::bot_power_activate_priority );
|
||||
|
||||
register_bot_objective( "magicbox" );
|
||||
register_bot_objective( "wallbuy" );
|
||||
register_bot_objective( "wallbuyammo" );
|
||||
@ -98,12 +105,18 @@ init()
|
||||
register_bot_objective( "debris" );
|
||||
register_bot_objective( "trap" );
|
||||
register_bot_objective( "packapunch" );
|
||||
register_bot_objective( "power" );
|
||||
register_bot_objective( "revive" );
|
||||
//register_bot_objective( "grabbuildable" );
|
||||
//register_bot_objective( "buildbuildable" );
|
||||
//register_bot_objective( "part" );
|
||||
register_bot_objective( "powerup" );
|
||||
|
||||
if ( getDvar( "bots_obj_buy_blockers" ) == "" )
|
||||
{
|
||||
setDvar( "bots_obj_buy_blockers", true );
|
||||
}
|
||||
|
||||
create_static_objectives();
|
||||
}
|
||||
|
||||
@ -117,6 +130,8 @@ connected()
|
||||
self.on_perk_purchase_func = ::bot_on_perk_purchase;
|
||||
self.on_door_purchase_func = ::bot_on_door_purchase_func;
|
||||
self.on_debris_purchase_func = ::bot_on_debris_purchase_func;
|
||||
self.on_wallbuy_purchase_func = ::bot_on_wallbuy_purchase_func;
|
||||
self.on_wallbuy_ammo_purchase_func = ::bot_on_wallbuy_ammo_purchase_func;
|
||||
|
||||
self.obj_cancel_reason = "";
|
||||
|
||||
|
@ -13,6 +13,10 @@ create_static_objectives()
|
||||
{
|
||||
setDvar( "magicbox_node_vertical_offset", 10 );
|
||||
}
|
||||
if ( getDvar( "magicbox_node_angle" ) == "" )
|
||||
{
|
||||
setDvar( "magicbox_node_angle", 90 );
|
||||
}
|
||||
if ( getDvar( "perk_node_forward_size" ) == "" )
|
||||
{
|
||||
setDvar( "perk_node_forward_size", 55 );
|
||||
@ -21,6 +25,46 @@ create_static_objectives()
|
||||
{
|
||||
setDvar( "perk_node_vertical_offset", 1 );
|
||||
}
|
||||
if ( getDvar( "perk_node_angle" ) == "" )
|
||||
{
|
||||
setDvar( "perk_node_angle", -90 );
|
||||
}
|
||||
if ( getDvar( "wallbuy_node_forward_size" ) == "" )
|
||||
{
|
||||
setDvar( "wallbuy_node_forward_size", 40 );
|
||||
}
|
||||
if ( getDvar( "wallbuy_node_vertical_offset" ) == "" )
|
||||
{
|
||||
setDvar( "wallbuy_node_vertical_offset", 1 );
|
||||
}
|
||||
if ( getDvar( "wallbuy_node_angle" ) == "" )
|
||||
{
|
||||
setDvar( "wallbuy_node_angle", -90 );
|
||||
}
|
||||
if ( getDvar( "packapunch_node_forward_size" ) == "" )
|
||||
{
|
||||
setDvar( "packapunch_node_forward_size", 55 );
|
||||
}
|
||||
if ( getDvar( "packapunch_node_vertical_offset" ) == "" )
|
||||
{
|
||||
setDvar( "packapunch_node_vertical_offset", 1 );
|
||||
}
|
||||
if ( getDvar( "packapunch_node_angle" ) == "" )
|
||||
{
|
||||
setDvar( "packapunch_node_angle", -90 );
|
||||
}
|
||||
if ( getDvar( "power_node_forward_size" ) == "" )
|
||||
{
|
||||
setDvar( "power_node_forward_size", 55 );
|
||||
}
|
||||
if ( getDvar( "power_node_vertical_offset" ) == "" )
|
||||
{
|
||||
setDvar( "power_node_vertical_offset", 1 );
|
||||
}
|
||||
if ( getDvar( "power_node_angle" ) == "" )
|
||||
{
|
||||
setDvar( "power_node_angle", -90 );
|
||||
}
|
||||
weapon_spawns = GetEntArray( "weapon_upgrade", "targetname" );
|
||||
|
||||
if ( isDefined( weapon_spawns ) && weapon_spawns.size > 0 )
|
||||
@ -30,7 +74,7 @@ create_static_objectives()
|
||||
obj = add_possible_bot_objective( "wallbuy", weapon_spawns[ i ], false );
|
||||
obj = add_possible_bot_objective( "wallbuyammo", weapon_spawns[ i ], false );
|
||||
model = getEnt( weapon_spawns[ i ].target, "targetname" );
|
||||
weapon_spawns[ i ].bot_use_node = get_angle_offset_node( model, ( 0, model.angles[ 1 ] - 90, 0 ), getDvarInt( "perk_node_forward_size" ), ( 0, 0, getDvarInt( "perk_node_vertical_offset" ) ) );
|
||||
weapon_spawns[ i ].bot_use_node = model get_angle_offset_node( getDvarInt( "wallbuy_node_forward_size" ), ( 0, getDvarInt( "wallbuy_node_angle" ), 0 ), ( 0, 0, getDvarInt( "wallbuy_node_vertical_offset" ) ) );
|
||||
model thread wallbuy_debug();
|
||||
}
|
||||
}
|
||||
@ -43,7 +87,7 @@ create_static_objectives()
|
||||
{
|
||||
obj = add_possible_bot_objective( "perk", vending_triggers[ i ], false );
|
||||
model = getEnt( vending_triggers[ i ].target, "targetname" );
|
||||
vending_triggers[ i ].bot_use_node = get_angle_offset_node( model, ( 0, model.angles[ 1 ] - 90, 0 ), getDvarInt( "perk_node_forward_size" ), ( 0, 0, getDvarInt( "perk_node_vertical_offset" ) ) );
|
||||
vending_triggers[ i ].bot_use_node = model get_angle_offset_node( getDvarInt( "perk_node_forward_size" ), ( 0, getDvarInt( "perk_node_angle" ), 0 ), ( 0, 0, getDvarInt( "perk_node_vertical_offset" ) ) );
|
||||
model thread perk_debug();
|
||||
}
|
||||
}
|
||||
@ -82,9 +126,24 @@ create_static_objectives()
|
||||
for ( i = 0; i < vending_upgrade_trigger.size; i++ )
|
||||
{
|
||||
obj = add_possible_bot_objective( "packapunch", vending_upgrade_trigger[ i ], false );
|
||||
model = getEnt( vending_triggers[ i ].target, "targetname" );
|
||||
vending_upgrade_trigger[ i ].bot_use_node = model get_angle_offset_node( getDvarInt( "packapunch_node_forward_size" ), ( 0, getDvarInt( "packapunch_node_angle" ), 0 ), ( 0, 0, getDvarInt( "packapunch_node_vertical_offset" ) ) );
|
||||
model thread packapunch_debug();
|
||||
}
|
||||
}
|
||||
|
||||
master_switch = getent("power_switch","targetname");
|
||||
if ( !isDefined( master_switch ) )
|
||||
{
|
||||
master_switch = getent("master_switch","targetname");
|
||||
}
|
||||
if ( isDefined( master_switch ) )
|
||||
{
|
||||
obj = add_possible_bot_objective( "power", master_switch, false );
|
||||
master_switch.bot_use_node = master_switch get_angle_offset_node( getDvarInt( "power_node_forward_size" ), ( 0, getDvarInt( "power_node_angle" ), 0 ), ( 0, 0, getDvarInt( "power_node_vertical_offset" ) ) );
|
||||
model thread power_debug();
|
||||
}
|
||||
|
||||
if ( isDefined( level.chests ) && level.chests.size > 0 )
|
||||
{
|
||||
level thread watch_magicbox_objectives();
|
||||
@ -95,6 +154,25 @@ create_static_objectives()
|
||||
level thread watch_for_downed_players();
|
||||
}
|
||||
|
||||
watch_power_objective( power_switch )
|
||||
{
|
||||
while ( !isDefined( level.flag ) && !isDefined( level.flag[ "power_on" ] ) )
|
||||
{
|
||||
wait 0.05;
|
||||
}
|
||||
players = getPlayers();
|
||||
for ( i = 0; i < players.size; i++ )
|
||||
{
|
||||
player = players[ i ];
|
||||
if ( player bot_get_objective() == "power" )
|
||||
{
|
||||
player.sucessfully_activated_power = true;
|
||||
}
|
||||
}
|
||||
waittillframeend;
|
||||
free_bot_objective( "power", power_switch );
|
||||
}
|
||||
|
||||
watch_door_objectives( zombie_doors )
|
||||
{
|
||||
level endon( "end_game" );
|
||||
@ -189,7 +267,8 @@ watch_magicbox_objectives()
|
||||
|
||||
cur_magicbox = maps\so\zm_common\_zm_magicbox::get_active_magicbox();
|
||||
add_possible_bot_objective( "magicbox", cur_magicbox, true );
|
||||
cur_magicbox.bot_use_node = get_angle_offset_node( cur_magicbox maps\so\zm_common\_zm_magicbox::get_chest_pieces()[ 1 ], ( 0, 90, 0 ), getDvarInt( "magicbox_node_forward_size" ), ( 0, 0, getDvarInt( "magicbox_node_vertical_offset" ) ) );
|
||||
lid = cur_magicbox maps\so\zm_common\_zm_magicbox::get_chest_pieces()[ 1 ];
|
||||
cur_magicbox.bot_use_node = lid get_angle_offset_node( getDvarInt( "magicbox_node_forward_size" ), ( 0, getDvarInt( "magicbox_node_angle" ), 0 ), ( 0, 0, getDvarInt( "magicbox_node_vertical_offset" ) ) );
|
||||
|
||||
cur_magicbox thread magicbox_debug();
|
||||
|
||||
@ -200,7 +279,8 @@ watch_magicbox_objectives()
|
||||
free_bot_objective( "magicbox", old_magicbox );
|
||||
level waittill( "new_magicbox", new_magicbox );
|
||||
add_possible_bot_objective( "magicbox", new_magicbox, true );
|
||||
new_magicbox.bot_use_node = get_angle_offset_node( new_magicbox maps\so\zm_common\_zm_magicbox::get_chest_pieces()[ 1 ], ( 0, 90, 0 ), getDvarInt( "magicbox_node_forward_size" ), ( 0, 0, getDvarInt( "magicbox_node_vertical_offset" ) ) );
|
||||
lid = new_magicbox maps\so\zm_common\_zm_magicbox::get_chest_pieces()[ 1 ];
|
||||
new_magicbox.bot_use_node = lid get_angle_offset_node( getDvarInt( "magicbox_node_forward_size" ), ( 0, getDvarInt( "magicbox_node_angle" ), 0 ), ( 0, 0, getDvarInt( "magicbox_node_vertical_offset" ) ) );
|
||||
new_magicbox thread magicbox_debug();
|
||||
}
|
||||
}
|
||||
@ -216,7 +296,8 @@ magicbox_debug()
|
||||
}
|
||||
while ( true )
|
||||
{
|
||||
node = get_angle_offset_node( self maps\so\zm_common\_zm_magicbox::get_chest_pieces()[ 1 ], ( 0, 90, 0 ), getDvarInt( "magicbox_node_forward_size" ), ( 0, 0, getDvarInt( "magicbox_node_vertical_offset" ) ) );
|
||||
lid = self maps\so\zm_common\_zm_magicbox::get_chest_pieces()[ 1 ];
|
||||
node = lid get_angle_offset_node( getDvarInt( "magicbox_node_forward_size" ), ( 0, getDvarInt( "magicbox_node_angle" ), 0 ), ( 0, 0, getDvarInt( "magicbox_node_vertical_offset" ) ) );
|
||||
self.bot_use_node = node;
|
||||
line( self.origin, node, ( 1.0, 1.0, 1.0 ) );
|
||||
wait 0.05;
|
||||
@ -225,13 +306,13 @@ magicbox_debug()
|
||||
|
||||
perk_debug()
|
||||
{
|
||||
if ( getDvarInt( "bot_obj_debug_all" ) == 0 && getDvarInt( "bot_obj_debug_magicbox" ) == 0 )
|
||||
if ( getDvarInt( "bot_obj_debug_all" ) == 0 && getDvarInt( "bot_obj_debug_perk" ) == 0 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
while ( true )
|
||||
{
|
||||
node = get_angle_offset_node( self, ( 0, getDvarInt( "perk_node_angle" ), 0 ), getDvarInt( "perk_node_forward_size" ), ( 0, 0, getDvarInt( "perk_node_vertical_offset" ) ) );
|
||||
node = self get_angle_offset_node( getDvarInt( "perk_node_forward_size" ), ( 0, getDvarInt( "perk_node_angle" ), 0 ), ( 0, 0, getDvarInt( "perk_node_vertical_offset" ) ) );
|
||||
self.bot_use_node = node;
|
||||
line( self.origin, node, ( 1.0, 1.0, 1.0 ) );
|
||||
wait 0.05;
|
||||
@ -240,13 +321,28 @@ perk_debug()
|
||||
|
||||
wallbuy_debug()
|
||||
{
|
||||
if ( getDvarInt( "bot_obj_debug_all" ) == 0 && getDvarInt( "bot_obj_debug_magicbox" ) == 0 )
|
||||
if ( getDvarInt( "bot_obj_debug_all" ) == 0 && getDvarInt( "bot_obj_debug_wallbuy" ) == 0 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
while ( true )
|
||||
{
|
||||
node = get_angle_offset_node( self, ( 0, self.angles[ 1 ] - getDvarInt( "wallbuy_node_angle" ), 0 ), getDvarInt( "wallbuy_node_forward_size" ), ( 0, 0, getDvarInt( "wallbuy_node_vertical_offset" ) ) );
|
||||
node = self get_angle_offset_node( getDvarInt( "wallbuy_node_forward_size" ), ( 0, getDvarInt( "wallbuy_node_angle" ), 0 ), ( 0, 0, getDvarInt( "wallbuy_node_vertical_offset" ) ) );
|
||||
self.bot_use_node = node;
|
||||
line( self.origin, node, ( 1.0, 1.0, 1.0 ) );
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
packapunch_debug()
|
||||
{
|
||||
if ( getDvarInt( "bot_obj_debug_all" ) == 0 && getDvarInt( "bot_obj_debug_packapunch" ) == 0 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
while ( true )
|
||||
{
|
||||
node = self get_angle_offset_node( getDvarInt( "packapunch_node_forward_size" ), ( 0, getDvarInt( "packapunch_node_angle" ), 0 ), ( 0, 0, getDvarInt( "packapunch_node_vertical_offset" ) ) );
|
||||
self.bot_use_node = node;
|
||||
line( self.origin, node, ( 1.0, 1.0, 1.0 ) );
|
||||
wait 0.05;
|
||||
@ -269,6 +365,7 @@ bot_on_magicbox_weapon_grab( magicbox, weapon )
|
||||
{
|
||||
self bot_objective_print( "magicbox", magicbox getEntityNumber(), "bot_on_magicbox_weapon_grab", "Bot <" + self.playername + "> grabbed <" + weapon + "> from the box" );
|
||||
self.successfully_grabbed_magicbox_weapon = true;
|
||||
self.last_magicbox_purchase_time = getTime();
|
||||
}
|
||||
|
||||
bot_on_perk_purchase( trigger, perk )
|
||||
@ -283,8 +380,21 @@ bot_on_door_purchase_func( door )
|
||||
self.successfully_bought_door = true;
|
||||
}
|
||||
|
||||
bot_on_debris_purchase_func( debris, entnum )
|
||||
bot_on_debris_purchase_func( debris )
|
||||
{
|
||||
self bot_objective_print( "debris", debris getEntityNumber(), "bot_on_debris_purchase_func", "Bot <" + self.playername + "> purchased debris" );
|
||||
self.successfully_bought_debris = true;
|
||||
}
|
||||
|
||||
bot_on_wallbuy_purchase_func( trigger, weapon )
|
||||
{
|
||||
self bot_objective_print( "wallbuy", trigger getEntityNumber(), "bot_on_wallbuy_purchase_func", "Bot <" + self.playername + "> purchased wallbuy <" + weapon + ">" );
|
||||
self.successfully_bought_wallbuy = true;
|
||||
self.last_wallbuy_purchase_time = getTime();
|
||||
}
|
||||
|
||||
bot_on_wallbuy_ammo_purchase_func( trigger, weapon )
|
||||
{
|
||||
self bot_objective_print( "wallbuyammo", trigger getEntityNumber(), "bot_on_wallbuy_ammo_purchase_func", "Bot <" + self.playername + "> purchased wallbuy ammo <" + weapon + ">" );
|
||||
self.successfully_bought_wallbuy_ammo = true;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user