mirror of
https://github.com/JezuzLizard/t4sp_bot_warfare.git
synced 2025-04-23 06:55:44 +00:00
some debugging
This commit is contained in:
parent
c0b19f00c7
commit
111e81efa1
@ -1,4 +1,58 @@
|
||||
#include common_scripts\utility;
|
||||
#include maps\_utility;
|
||||
#include maps\bots\_bot_utility;
|
||||
|
||||
init()
|
||||
{
|
||||
maps\bots\_bot::init();
|
||||
level thread maps\bots\_bot::init();
|
||||
|
||||
setDvar( "player_debug_bots", 1 );
|
||||
thread test_bot_pathing();
|
||||
}
|
||||
|
||||
test_bot_pathing()
|
||||
{
|
||||
if ( !getDvarInt( "player_debug_bots" ) )
|
||||
return;
|
||||
|
||||
level waittill( "connected", player );
|
||||
|
||||
while ( !player is_bot() )
|
||||
level waittill( "connected", player );
|
||||
|
||||
player endon( "disconnect" );
|
||||
|
||||
while ( true )
|
||||
{
|
||||
wait 0.05;
|
||||
|
||||
if ( !player UseButtonPressed() )
|
||||
continue;
|
||||
|
||||
bots = getBotArray();
|
||||
|
||||
if ( player AttackButtonPressed() )
|
||||
{
|
||||
player iprintln( "Telling bots to go to you" );
|
||||
|
||||
for ( i = 0; i < bots.size; i++ )
|
||||
{
|
||||
bots[i] SetScriptGoal( player.origin );
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( player AdsButtonPressed() )
|
||||
{
|
||||
player iprintln( "Telling bots to ROAM" );
|
||||
|
||||
for ( i = 0; i < bots.size; i++ )
|
||||
{
|
||||
bots[i] ClearScriptGoal();
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
388
scripts/sp/killtest.gsc
Normal file
388
scripts/sp/killtest.gsc
Normal file
@ -0,0 +1,388 @@
|
||||
#include maps\_utility;
|
||||
#include common_scripts\utility;
|
||||
|
||||
main()
|
||||
{
|
||||
replaceFunc( GetFunction( "maps/_utility", "wait_network_frame" ), ::wait_network_frame_func );
|
||||
}
|
||||
|
||||
wait_network_frame_func()
|
||||
{
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
init()
|
||||
{
|
||||
level thread print_new_rounds();
|
||||
level thread onPlayerConnect();
|
||||
level thread spitOutTime();
|
||||
level thread addBot();
|
||||
|
||||
level thread setupcallbacks();
|
||||
}
|
||||
|
||||
setupcallbacks()
|
||||
{
|
||||
wait 1;
|
||||
|
||||
level.killtestoldoverrideplayerdamage = level.callbackPlayerDamage;
|
||||
level.callbackPlayerDamage = ::killtestoverrideplayerdamage;
|
||||
|
||||
level.killtestoldoverrideactordamage = level.callbackActorDamage;
|
||||
level.callbackActorDamage = ::killtestoverrideactordamage;
|
||||
}
|
||||
|
||||
killtestoverrideactordamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, iModelIndex, iTimeOffset )
|
||||
{
|
||||
if ( isDefined( eAttacker ) && isPlayer( eAttacker ) )
|
||||
{
|
||||
if ( sWeapon == "zombie_doublebarrel" )
|
||||
iDamage = 1;
|
||||
}
|
||||
|
||||
setDvar( "aa_player_damage_dealt", 0 );
|
||||
|
||||
if ( sMeansOfDeath == "MOD_MELEE" )
|
||||
iDamage = 100000000;
|
||||
|
||||
self [[level.killtestoldoverrideactordamage]]( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, iModelIndex, iTimeOffset );
|
||||
}
|
||||
|
||||
killtestoverrideplayerdamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, modelIndex, psOffsetTime )
|
||||
{
|
||||
if ( self isBot() )
|
||||
{
|
||||
if ( isDefined( eAttacker ) && eAttacker == self )
|
||||
return;
|
||||
|
||||
iDamage = 5;
|
||||
}
|
||||
|
||||
PrintConsole( self GetPlayerName() + " took " + iDamage );
|
||||
|
||||
self [[level.killtestoldoverrideplayerdamage]]( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, modelIndex, psOffsetTime );
|
||||
}
|
||||
|
||||
print_new_rounds()
|
||||
{
|
||||
while ( 1 )
|
||||
{
|
||||
level waittill( "new_zombie_round", round_num );
|
||||
|
||||
PrintConsole( "New zombie round!: " + round_num );
|
||||
}
|
||||
}
|
||||
|
||||
spitOutTime()
|
||||
{
|
||||
startTime = GetTime();
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
wait 60;
|
||||
PrintConsole( "TIME: " + ( GetTime() - startTime ) );
|
||||
}
|
||||
}
|
||||
|
||||
/* botMoveTo( to )
|
||||
{
|
||||
self.moveTo = to;
|
||||
}
|
||||
|
||||
walk_to_player()
|
||||
{
|
||||
self endon( "disconnect" );
|
||||
self endon( "zombified" );
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
wait 0.05;
|
||||
|
||||
// stop bot moving
|
||||
self botMoveTo( self.origin );
|
||||
|
||||
// get a player
|
||||
non_bot_player = undefined;
|
||||
players = getPlayers();
|
||||
|
||||
for ( i = 0; i < players.size; i++ )
|
||||
{
|
||||
player = players[i];
|
||||
|
||||
if ( player isBot() )
|
||||
continue;
|
||||
|
||||
non_bot_player = player;
|
||||
}
|
||||
|
||||
if ( !isdefined( non_bot_player ) )
|
||||
continue;
|
||||
|
||||
// generate a path to the player
|
||||
goal = non_bot_player.origin;
|
||||
path = generatePath( self.origin, goal, "free", false );
|
||||
|
||||
if ( !isdefined( path ) )
|
||||
continue;
|
||||
|
||||
// traverse each node in the path
|
||||
for ( i = path.size - 1; i >= 0; i-- )
|
||||
{
|
||||
path_num = path[i];
|
||||
|
||||
if ( path_num <= -1 )
|
||||
continue;
|
||||
|
||||
path_node = getNodeByNumber( path_num );
|
||||
|
||||
if ( !isDefined( path_node ) )
|
||||
continue;
|
||||
|
||||
while ( distance2d( self.origin, path_node.origin ) >= 7 )
|
||||
{
|
||||
wait 0.05;
|
||||
|
||||
self botMoveTo( path_node.origin );
|
||||
}
|
||||
}
|
||||
|
||||
// blindly go to player after traversing each path node
|
||||
while ( distance2d( self.origin, goal ) >= 10 )
|
||||
{
|
||||
wait 0.05;
|
||||
|
||||
self botMoveTo( goal );
|
||||
}
|
||||
|
||||
// done
|
||||
}
|
||||
}
|
||||
|
||||
do_move()
|
||||
{
|
||||
self endon( "disconnect" );
|
||||
self endon( "zombified" );
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
wait 0.05;
|
||||
waittillframeend;
|
||||
|
||||
move_To = self.moveTo;
|
||||
angles = self GetPlayerAngles();
|
||||
dir = ( 0, 0, 0 );
|
||||
|
||||
if ( DistanceSquared( self.origin, move_To ) >= 49 )
|
||||
{
|
||||
cosa = cos( 0 - angles[1] );
|
||||
sina = sin( 0 - angles[1] );
|
||||
|
||||
// get the direction
|
||||
dir = move_To - self.origin;
|
||||
|
||||
// rotate our direction according to our angles
|
||||
dir = ( dir[0] * cosa - dir[1] * sina,
|
||||
dir[0] * sina + dir[1] * cosa,
|
||||
0 );
|
||||
|
||||
// make the length 127
|
||||
dir = VectorNormalize( dir ) * 127;
|
||||
|
||||
// invert the second component as the engine requires this
|
||||
dir = ( dir[0], 0 - dir[1], 0 );
|
||||
}
|
||||
|
||||
self botMovement( int( dir[0] ), int( dir[1] ) );
|
||||
}
|
||||
}*/
|
||||
|
||||
addBot()
|
||||
{
|
||||
// level waittill("connected", player);
|
||||
wait 5;
|
||||
|
||||
guy = addTestClient();
|
||||
|
||||
if ( !isDefined( guy ) )
|
||||
return;
|
||||
|
||||
guy endon( "disconnect" );
|
||||
|
||||
guy botStop();
|
||||
|
||||
wait 5;
|
||||
|
||||
if ( !isDefined( guy ) )
|
||||
return;
|
||||
|
||||
guy.killingAll = true;
|
||||
guy giveWeapon( "ptrs41_zombie" ); // ptrs41_zombie zombie_doublebarrel
|
||||
guy switchToWeapon( "ptrs41_zombie" ); // colt_dirty_harry
|
||||
|
||||
//guy thread walk_to_player();
|
||||
//guy thread do_move();
|
||||
|
||||
while ( isDefined( guy ) )
|
||||
{
|
||||
if ( isDefined( level.isPlayerDead ) && [[level.isPlayerDead]]( guy ) )
|
||||
{
|
||||
wait 2.5;
|
||||
guy removeTestClient();
|
||||
break;
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
onPlayerConnect()
|
||||
{
|
||||
for ( ;; )
|
||||
{
|
||||
level waittill( "connected", player );
|
||||
|
||||
player thread onSpawned();
|
||||
}
|
||||
}
|
||||
|
||||
onSpawned()
|
||||
{
|
||||
self endon( "disconnect" );
|
||||
|
||||
self.killingAll = false;
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
self waittill( "spawned_player" );
|
||||
|
||||
self thread killAllZombsWithBullets();
|
||||
self thread watchKillAllButton();
|
||||
|
||||
if ( !self isBot() )
|
||||
self thread moveBot();
|
||||
}
|
||||
}
|
||||
|
||||
EyeTraceForward()
|
||||
{
|
||||
origin = self getTagOrigin( "tag_eye" );
|
||||
angles = self GetPlayerAngles();
|
||||
forward = AnglesToForward( angles );
|
||||
endpoint = origin + forward * 15000;
|
||||
|
||||
res = BulletTrace( origin, endpoint, false, undefined );
|
||||
|
||||
return res["position"];
|
||||
}
|
||||
|
||||
moveBot()
|
||||
{
|
||||
self endon( "disconnect" );
|
||||
self endon( "zombified" );
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
wait 0.05;
|
||||
|
||||
if ( self MeleeButtonPressed() && self AdsButtonPressed() )
|
||||
{
|
||||
players = get_players();
|
||||
|
||||
for ( i = 0; i < players.size; i++ )
|
||||
{
|
||||
player = players[i];
|
||||
|
||||
if ( !player isBot() )
|
||||
continue;
|
||||
|
||||
if ( self AttackButtonPressed() && isDefined( player.bot.moveTo ) )
|
||||
player SetOrigin( player.bot.moveTo );
|
||||
else
|
||||
player SetOrigin( self EyeTraceForward() );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
watchKillAllButton()
|
||||
{
|
||||
self endon( "disconnect" );
|
||||
self endon( "zombified" );
|
||||
|
||||
wait 5;
|
||||
|
||||
self notifyOnPlayerCommand( "+smoke", "toggle_killall" );
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
self waittill( "toggle_killall" );
|
||||
|
||||
self.killingAll = !self.killingAll;
|
||||
self iPrintLn( "Killing all: " + self.killingAll );
|
||||
}
|
||||
}
|
||||
|
||||
do_magic_bullets()
|
||||
{
|
||||
self endon( "disconnect" );
|
||||
self endon( "zombified" );
|
||||
|
||||
myeye = self getTagOrigin( "tag_eye" );
|
||||
|
||||
if ( !isDefined( myeye ) )
|
||||
return;
|
||||
|
||||
zombies = GetAiSpeciesArray( "axis", "all" );
|
||||
weap = self GetCurrentWeapon();
|
||||
|
||||
for ( i = 0; i < zombies.size; i++ )
|
||||
{
|
||||
zombie = zombies[i];
|
||||
|
||||
if ( isDefined( zombie ) )
|
||||
{
|
||||
/*
|
||||
if ( zombie.maxhealth != 2147483647 )
|
||||
{
|
||||
zombie.maxhealth = 2147483647;
|
||||
zombie.health = zombie.maxhealth;
|
||||
}
|
||||
else
|
||||
{
|
||||
zombie DoDamage( zombie.health + 666, zombie.origin, self, 0, "headshot" );
|
||||
}
|
||||
*/
|
||||
|
||||
hit_loc = undefined;
|
||||
|
||||
if ( randomint( 2 ) )
|
||||
hit_loc = zombie getTagOrigin( "j_head" );
|
||||
else
|
||||
hit_loc = zombie getTagOrigin( "j_spine4" );
|
||||
|
||||
if ( isDefined( hit_loc ) )
|
||||
{
|
||||
if ( sighttracepassed( myeye, hit_loc, false, self ) )
|
||||
{
|
||||
magicbullet( weap, myeye, hit_loc, self );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
killAllZombsWithBullets()
|
||||
{
|
||||
self endon( "disconnect" );
|
||||
self endon( "zombified" );
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
wait 0.05;
|
||||
|
||||
if ( !self.killingAll )
|
||||
continue;
|
||||
|
||||
self thread do_magic_bullets();
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user