mirror of
https://github.com/JezuzLizard/t4sp_bot_warfare.git
synced 2025-04-19 13:22:52 +00:00
cleanup
This commit is contained in:
parent
12c74cc6f4
commit
977dc41f18
21
.astylerc
Normal file
21
.astylerc
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# try to mimic the original gsc provided
|
||||||
|
mode=c
|
||||||
|
style=allman
|
||||||
|
|
||||||
|
indent=tab
|
||||||
|
lineend=windows
|
||||||
|
|
||||||
|
pad-oper
|
||||||
|
pad-paren-in
|
||||||
|
pad-header
|
||||||
|
|
||||||
|
# delete-empty-lines
|
||||||
|
|
||||||
|
break-blocks
|
||||||
|
# remove-braces
|
||||||
|
|
||||||
|
indent-switches
|
||||||
|
indent-cases
|
||||||
|
indent-after-parens
|
||||||
|
|
||||||
|
remove-comment-prefix
|
11
.editorconfig
Normal file
11
.editorconfig
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
indent_style = tab
|
||||||
|
indent_size = 2
|
||||||
|
charset = latin1
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
insert_final_newline = true
|
||||||
|
|
||||||
|
[*.md]
|
||||||
|
trim_trailing_whitespace = false
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,2 +1,3 @@
|
|||||||
*.log
|
*.log
|
||||||
missingasset.csv
|
missingasset.csv
|
||||||
|
console.log*
|
||||||
|
15
.vscode/settings.json
vendored
Normal file
15
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"astyle.astylerc": "${workspaceRoot}/.astylerc",
|
||||||
|
"astyle.additional_languages": [
|
||||||
|
"gsc"
|
||||||
|
],
|
||||||
|
"[gsc]": {
|
||||||
|
"editor.defaultFormatter": "chiehyu.vscode-astyle",
|
||||||
|
},
|
||||||
|
"editor.quickSuggestions": {
|
||||||
|
"other": true,
|
||||||
|
"comments": true,
|
||||||
|
"strings": true
|
||||||
|
},
|
||||||
|
"vscode-codscript.use_builtin_completionItems": false
|
||||||
|
}
|
@ -2,24 +2,6 @@
|
|||||||
#include maps\_utility;
|
#include maps\_utility;
|
||||||
#include maps\bots\_bot_utility;
|
#include maps\bots\_bot_utility;
|
||||||
|
|
||||||
/*
|
|
||||||
main
|
|
||||||
*/
|
|
||||||
main()
|
|
||||||
{
|
|
||||||
// stop the meme
|
|
||||||
func = GetFunction( "maps/_utility", "wait_network_frame" );
|
|
||||||
replaceFunc( func, ::wait_network_frame_func );
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
oof
|
|
||||||
*/
|
|
||||||
wait_network_frame_func()
|
|
||||||
{
|
|
||||||
wait 0.05;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Initiates the whole bot scripts.
|
Initiates the whole bot scripts.
|
||||||
*/
|
*/
|
||||||
@ -33,6 +15,9 @@ init()
|
|||||||
if ( !getDvarInt( "bots_main" ) )
|
if ( !getDvarInt( "bots_main" ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if ( !wait_for_builtins() )
|
||||||
|
PrintLn( "FATAL: NO BUILT-INS FOR BOTS" );
|
||||||
|
|
||||||
thread load_waypoints();
|
thread load_waypoints();
|
||||||
thread hook_callbacks();
|
thread hook_callbacks();
|
||||||
|
|
||||||
@ -159,7 +144,7 @@ handleBots()
|
|||||||
|
|
||||||
for ( i = 0; i < bots.size; i++ )
|
for ( i = 0; i < bots.size; i++ )
|
||||||
{
|
{
|
||||||
bots[i] RemoveTestClient();
|
BotBuiltinCmdExec( "clientkick " + bots[i] getEntityNumber() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -168,7 +153,7 @@ handleBots()
|
|||||||
*/
|
*/
|
||||||
onPlayerDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, modelIndex, psOffsetTime )
|
onPlayerDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, modelIndex, psOffsetTime )
|
||||||
{
|
{
|
||||||
if ( self isBot() && getDvarInt( "bots_t8_mode" ) )
|
if ( self is_bot() && getDvarInt( "bots_t8_mode" ) )
|
||||||
{
|
{
|
||||||
if ( ( level.script == "nazi_zombie_asylum" || level.script == "nazi_zombie_sumpf" ) && self hasPerk( "specialty_armorvest" ) )
|
if ( ( level.script == "nazi_zombie_asylum" || level.script == "nazi_zombie_sumpf" ) && self hasPerk( "specialty_armorvest" ) )
|
||||||
{
|
{
|
||||||
@ -191,7 +176,7 @@ onPlayerDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon,
|
|||||||
|
|
||||||
onActorDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, iModelIndex, iTimeOffset )
|
onActorDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, iModelIndex, iTimeOffset )
|
||||||
{
|
{
|
||||||
if ( isDefined( eAttacker ) && isPlayer( eAttacker ) && eAttacker isBot() && getDvarInt( "bots_t8_mode" ) && ( !isDefined( self.magic_bullet_shield ) || !self.magic_bullet_shield ) )
|
if ( isDefined( eAttacker ) && isPlayer( eAttacker ) && eAttacker is_bot() && getDvarInt( "bots_t8_mode" ) && ( !isDefined( self.magic_bullet_shield ) || !self.magic_bullet_shield ) )
|
||||||
{
|
{
|
||||||
iDamage += int( self.maxhealth * randomFloatRange( 0.25, 1.25 ) );
|
iDamage += int( self.maxhealth * randomFloatRange( 0.25, 1.25 ) );
|
||||||
}
|
}
|
||||||
@ -319,7 +304,7 @@ watchBotDebugEvent()
|
|||||||
|
|
||||||
if ( GetDvarInt( "bots_main_debug" ) >= 2 )
|
if ( GetDvarInt( "bots_main_debug" ) >= 2 )
|
||||||
{
|
{
|
||||||
big_str = "Bot Warfare debug: " + self getPlayerName() + ": " + msg;
|
big_str = "Bot Warfare debug: " + self.playername + ": " + msg;
|
||||||
|
|
||||||
if ( isDefined( str ) && isString( str ) )
|
if ( isDefined( str ) && isString( str ) )
|
||||||
big_str += ", " + str;
|
big_str += ", " + str;
|
||||||
@ -342,11 +327,11 @@ watchBotDebugEvent()
|
|||||||
if ( isDefined( g ) && isString( g ) )
|
if ( isDefined( g ) && isString( g ) )
|
||||||
big_str += ", " + g;
|
big_str += ", " + g;
|
||||||
|
|
||||||
PrintConsole( big_str );
|
BotBuiltinPrintConsole( big_str );
|
||||||
}
|
}
|
||||||
else if ( msg == "debug" && GetDvarInt( "bots_main_debug" ) )
|
else if ( msg == "debug" && GetDvarInt( "bots_main_debug" ) )
|
||||||
{
|
{
|
||||||
PrintConsole( "Bot Warfare debug: " + self getPlayerName() + ": " + str );
|
BotBuiltinPrintConsole( "Bot Warfare debug: " + self.playername + ": " + str );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -367,7 +352,7 @@ added()
|
|||||||
*/
|
*/
|
||||||
add_bot()
|
add_bot()
|
||||||
{
|
{
|
||||||
bot = addtestclient();
|
bot = BotBuiltinAddTestClient();
|
||||||
|
|
||||||
if ( isdefined( bot ) )
|
if ( isdefined( bot ) )
|
||||||
{
|
{
|
||||||
@ -501,7 +486,7 @@ addBots_loop()
|
|||||||
tempBot = PickRandom( getBotArray() );
|
tempBot = PickRandom( getBotArray() );
|
||||||
|
|
||||||
if ( isDefined( tempBot ) )
|
if ( isDefined( tempBot ) )
|
||||||
tempBot RemoveTestClient();
|
BotBuiltinCmdExec( "clientkick " + tempBot getEntityNumber() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ watch_for_unlink()
|
|||||||
self endon( "disconnect" );
|
self endon( "disconnect" );
|
||||||
self endon( "zombified" );
|
self endon( "zombified" );
|
||||||
|
|
||||||
self notifyOnPlayerCommand( "+smoke", "toggle_unlink" );
|
self BotBuiltinNotifyOnPlayerCommand( "+smoke", "toggle_unlink" );
|
||||||
|
|
||||||
for ( ;; )
|
for ( ;; )
|
||||||
{
|
{
|
||||||
@ -94,7 +94,7 @@ watch_for_unlink()
|
|||||||
|
|
||||||
firstwp = level.waypoints[self.closest];
|
firstwp = level.waypoints[self.closest];
|
||||||
|
|
||||||
self iprintln( "wp selected for unlink: " + firstwp getNodeNumber() );
|
self iprintln( "wp selected for unlink: " + firstwp BotBuiltinGetNodeNumber() );
|
||||||
|
|
||||||
self waittill( "toggle_unlink" );
|
self waittill( "toggle_unlink" );
|
||||||
|
|
||||||
@ -122,15 +122,15 @@ array_contains( arr, it )
|
|||||||
toggle_link( firstwp, secondwp )
|
toggle_link( firstwp, secondwp )
|
||||||
{
|
{
|
||||||
// check if it exists
|
// check if it exists
|
||||||
key = firstwp getNodeNumber() + "";
|
key = firstwp BotBuiltinGetNodeNumber() + "";
|
||||||
secnum = secondwp getNodeNumber();
|
secnum = secondwp BotBuiltinGetNodeNumber();
|
||||||
|
|
||||||
links = firstwp getLinkedNodes();
|
links = firstwp BotBuiltinGetLinkedNodes();
|
||||||
linked = false;
|
linked = false;
|
||||||
|
|
||||||
for ( i = 0; i < links.size; i++ )
|
for ( i = 0; i < links.size; i++ )
|
||||||
{
|
{
|
||||||
if ( links[i] getNodeNumber() == secnum )
|
if ( links[i] BotBuiltinGetNodeNumber() == secnum )
|
||||||
{
|
{
|
||||||
linked = true;
|
linked = true;
|
||||||
break;
|
break;
|
||||||
@ -165,7 +165,7 @@ toggle_link( firstwp, secondwp )
|
|||||||
}
|
}
|
||||||
|
|
||||||
self iprintln( "removed unlink: " + key + " " + secnum );
|
self iprintln( "removed unlink: " + key + " " + secnum );
|
||||||
PrintConsole( "toggle_link: add: " + key + " " + secnum );
|
BotBuiltinPrintConsole( "toggle_link: add: " + key + " " + secnum );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -180,7 +180,7 @@ toggle_link( firstwp, secondwp )
|
|||||||
level.bot_ignore_links[key] = a;
|
level.bot_ignore_links[key] = a;
|
||||||
|
|
||||||
self iprintln( "added unlink: " + key + " " + secnum );
|
self iprintln( "added unlink: " + key + " " + secnum );
|
||||||
PrintConsole( "toggle_link: del: " + key + " " + secnum );
|
BotBuiltinPrintConsole( "toggle_link: del: " + key + " " + secnum );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -208,15 +208,15 @@ debug()
|
|||||||
|
|
||||||
if ( distance( level.waypoints[i].origin, self.origin ) < getDvarFloat( "bots_main_debug_distance" ) && ( sightTracePassed( myEye, wpOrg, false, self ) || getDVarint( "bots_main_debug_drawThrough" ) ) && getConeDot( wpOrg, myEye, myAngles ) > getDvarFloat( "bots_main_debug_cone" ) )
|
if ( distance( level.waypoints[i].origin, self.origin ) < getDvarFloat( "bots_main_debug_distance" ) && ( sightTracePassed( myEye, wpOrg, false, self ) || getDVarint( "bots_main_debug_drawThrough" ) ) && getConeDot( wpOrg, myEye, myAngles ) > getDvarFloat( "bots_main_debug_cone" ) )
|
||||||
{
|
{
|
||||||
linked = level.waypoints[i] getLinkedNodes();
|
linked = level.waypoints[i] BotBuiltinGetLinkedNodes();
|
||||||
node_num_str = level.waypoints[i] getNodeNumber() + "";
|
node_num_str = level.waypoints[i] BotBuiltinGetNodeNumber() + "";
|
||||||
|
|
||||||
for ( h = linked.size - 1; h >= 0; h-- )
|
for ( h = linked.size - 1; h >= 0; h-- )
|
||||||
{
|
{
|
||||||
if ( isDefined( level.bot_ignore_links[node_num_str] ) )
|
if ( isDefined( level.bot_ignore_links[node_num_str] ) )
|
||||||
{
|
{
|
||||||
found = false;
|
found = false;
|
||||||
this_node_num = linked[h] getNodeNumber();
|
this_node_num = linked[h] BotBuiltinGetNodeNumber();
|
||||||
|
|
||||||
for ( j = 0; j < level.bot_ignore_links[node_num_str].size; j++ )
|
for ( j = 0; j < level.bot_ignore_links[node_num_str].size; j++ )
|
||||||
{
|
{
|
||||||
|
@ -97,11 +97,10 @@ resetBotVars()
|
|||||||
self.bot.is_cur_sniper = false;
|
self.bot.is_cur_sniper = false;
|
||||||
|
|
||||||
self.bot.prio_objective = false;
|
self.bot.prio_objective = false;
|
||||||
self.bot.path_inaccessible = false;
|
|
||||||
|
|
||||||
self.bot.rand = randomInt( 100 );
|
self.bot.rand = randomInt( 100 );
|
||||||
|
|
||||||
self botStop();
|
self BotBuiltinBotStop();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -664,7 +663,7 @@ doBotMovement_loop( data )
|
|||||||
if ( self.bot.wantsprint && self.bot.issprinting )
|
if ( self.bot.wantsprint && self.bot.issprinting )
|
||||||
dir = ( 127, dir[1], 0 );
|
dir = ( 127, dir[1], 0 );
|
||||||
|
|
||||||
self botMovement( int( dir[0] ), int( dir[1] ) );
|
self BotBuiltinBotMovement( int( dir[0] ), int( dir[1] ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1456,7 +1455,7 @@ walk()
|
|||||||
{
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
|
||||||
self botMoveTo( self.origin );
|
self botSetMoveTo( self.origin );
|
||||||
|
|
||||||
if ( !getDvarInt( "bots_play_move" ) )
|
if ( !getDvarInt( "bots_play_move" ) )
|
||||||
continue;
|
continue;
|
||||||
@ -1544,12 +1543,8 @@ doWalk( goal, dist, isScriptGoal )
|
|||||||
|
|
||||||
path_was_truncated = ( current + 1 ) >= 32;
|
path_was_truncated = ( current + 1 ) >= 32;
|
||||||
|
|
||||||
//Couldn't generate path to goal
|
|
||||||
self.bot.path_inaccessible = false;
|
|
||||||
|
|
||||||
if ( current <= -1 )
|
if ( current <= -1 )
|
||||||
{
|
{
|
||||||
self.bot.path_inaccessible = true;
|
|
||||||
self notify( "bad_path_internal" );
|
self notify( "bad_path_internal" );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1629,7 +1624,7 @@ movetowards( goal )
|
|||||||
|
|
||||||
while ( distanceSquared( self.origin, goal ) > tempGoalDist )
|
while ( distanceSquared( self.origin, goal ) > tempGoalDist )
|
||||||
{
|
{
|
||||||
self botMoveTo( goal );
|
self botSetMoveTo( goal );
|
||||||
|
|
||||||
if ( time > 3000 )
|
if ( time > 3000 )
|
||||||
{
|
{
|
||||||
@ -1646,7 +1641,7 @@ movetowards( goal )
|
|||||||
|
|
||||||
self BotNotifyBotEvent( "stuck" );
|
self BotNotifyBotEvent( "stuck" );
|
||||||
|
|
||||||
self botMoveTo( randomDir );
|
self botSetMoveTo( randomDir );
|
||||||
wait stucks;
|
wait stucks;
|
||||||
self stand();
|
self stand();
|
||||||
|
|
||||||
@ -1724,7 +1719,7 @@ strafe( target )
|
|||||||
|
|
||||||
self.bot.last_next_wp = -1;
|
self.bot.last_next_wp = -1;
|
||||||
self.bot.last_second_next_wp = -1;
|
self.bot.last_second_next_wp = -1;
|
||||||
self botMoveTo( strafe );
|
self botSetMoveTo( strafe );
|
||||||
wait 2;
|
wait 2;
|
||||||
self notify( "kill_goal" );
|
self notify( "kill_goal" );
|
||||||
}
|
}
|
||||||
@ -1767,12 +1762,12 @@ getRandomLargestStafe( dist )
|
|||||||
*/
|
*/
|
||||||
initAStar( goal )
|
initAStar( goal )
|
||||||
{
|
{
|
||||||
nodes = GenerateThePath( self.origin, goal, self.team );
|
nodes = BotBuiltinGeneratePath( self.origin, goal, self.team );
|
||||||
|
|
||||||
if ( !isDefined( nodes ) || nodes.size <= 0 )
|
if ( !isDefined( nodes ) || nodes.size <= 0 )
|
||||||
{
|
{
|
||||||
//Try again to find a path to the origin using best effort algo
|
//Try again to find a path to the origin using best effort algo
|
||||||
nodes = GenerateThePath( self.origin, goal, self.team, 192.0 );
|
nodes = BotBuiltinGeneratePath( self.origin, goal, self.team, 192.0 );
|
||||||
|
|
||||||
if ( !isDefined( nodes ) || nodes.size <= 0 )
|
if ( !isDefined( nodes ) || nodes.size <= 0 )
|
||||||
{
|
{
|
||||||
@ -1785,7 +1780,7 @@ initAStar( goal )
|
|||||||
|
|
||||||
for ( i = nodes.size - 1; i >= 0; i-- )
|
for ( i = nodes.size - 1; i >= 0; i-- )
|
||||||
{
|
{
|
||||||
node_indexes[ node_indexes.size ] = nodes[ i ] getNodeNumber();
|
node_indexes[ node_indexes.size ] = nodes[ i ] BotBuiltinGetNodeNumber();
|
||||||
}
|
}
|
||||||
|
|
||||||
self.bot.astar = node_indexes;
|
self.bot.astar = node_indexes;
|
||||||
@ -1854,7 +1849,7 @@ watchOnGoal( goal, dis )
|
|||||||
/*
|
/*
|
||||||
Bot will move towards here
|
Bot will move towards here
|
||||||
*/
|
*/
|
||||||
botMoveTo( where )
|
botSetMoveTo( where )
|
||||||
{
|
{
|
||||||
self.bot.moveTo = where;
|
self.bot.moveTo = where;
|
||||||
}
|
}
|
||||||
@ -1872,12 +1867,12 @@ pressADS( time )
|
|||||||
if ( !isDefined( time ) )
|
if ( !isDefined( time ) )
|
||||||
time = 0.05;
|
time = 0.05;
|
||||||
|
|
||||||
self botAction( "+ads" );
|
self BotBuiltinBotAction( "+ads" );
|
||||||
|
|
||||||
if ( time )
|
if ( time )
|
||||||
wait time;
|
wait time;
|
||||||
|
|
||||||
self botAction( "-ads" );
|
self BotBuiltinBotAction( "-ads" );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1893,14 +1888,14 @@ frag( time )
|
|||||||
if ( !isDefined( time ) )
|
if ( !isDefined( time ) )
|
||||||
time = 0.05;
|
time = 0.05;
|
||||||
|
|
||||||
self botAction( "+frag" );
|
self BotBuiltinBotAction( "+frag" );
|
||||||
self.bot.isfragging = true;
|
self.bot.isfragging = true;
|
||||||
self.bot.isfraggingafter = true;
|
self.bot.isfraggingafter = true;
|
||||||
|
|
||||||
if ( time )
|
if ( time )
|
||||||
wait time;
|
wait time;
|
||||||
|
|
||||||
self botAction( "-frag" );
|
self BotBuiltinBotAction( "-frag" );
|
||||||
self.bot.isfragging = false;
|
self.bot.isfragging = false;
|
||||||
|
|
||||||
wait 1.25;
|
wait 1.25;
|
||||||
@ -1913,9 +1908,9 @@ frag( time )
|
|||||||
holdbreath( what )
|
holdbreath( what )
|
||||||
{
|
{
|
||||||
if ( what )
|
if ( what )
|
||||||
self botAction( "+holdbreath" );
|
self BotBuiltinBotAction( "+holdbreath" );
|
||||||
else
|
else
|
||||||
self botAction( "-holdbreath" );
|
self BotBuiltinBotAction( "-holdbreath" );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1931,14 +1926,14 @@ smoke( time )
|
|||||||
if ( !isDefined( time ) )
|
if ( !isDefined( time ) )
|
||||||
time = 0.05;
|
time = 0.05;
|
||||||
|
|
||||||
self botAction( "+smoke" );
|
self BotBuiltinBotAction( "+smoke" );
|
||||||
self.bot.issmoking = true;
|
self.bot.issmoking = true;
|
||||||
self.bot.issmokingafter = true;
|
self.bot.issmokingafter = true;
|
||||||
|
|
||||||
if ( time )
|
if ( time )
|
||||||
wait time;
|
wait time;
|
||||||
|
|
||||||
self botAction( "-smoke" );
|
self BotBuiltinBotAction( "-smoke" );
|
||||||
self.bot.issmoking = false;
|
self.bot.issmoking = false;
|
||||||
|
|
||||||
wait 1.25;
|
wait 1.25;
|
||||||
@ -2009,12 +2004,12 @@ pressFire( time )
|
|||||||
if ( !isDefined( time ) )
|
if ( !isDefined( time ) )
|
||||||
time = 0.05;
|
time = 0.05;
|
||||||
|
|
||||||
self botAction( "+fire" );
|
self BotBuiltinBotAction( "+fire" );
|
||||||
|
|
||||||
if ( time )
|
if ( time )
|
||||||
wait time;
|
wait time;
|
||||||
|
|
||||||
self botAction( "-fire" );
|
self BotBuiltinBotAction( "-fire" );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -2027,9 +2022,9 @@ reload()
|
|||||||
self notify( "bot_reload" );
|
self notify( "bot_reload" );
|
||||||
self endon( "bot_reload" );
|
self endon( "bot_reload" );
|
||||||
|
|
||||||
self botAction( "+reload" );
|
self BotBuiltinBotAction( "+reload" );
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
self botAction( "-reload" );
|
self BotBuiltinBotAction( "-reload" );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -2045,9 +2040,9 @@ knife()
|
|||||||
self.bot.isknifing = true;
|
self.bot.isknifing = true;
|
||||||
self.bot.isknifingafter = true;
|
self.bot.isknifingafter = true;
|
||||||
|
|
||||||
self botAction( "+melee" );
|
self BotBuiltinBotAction( "+melee" );
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
self botAction( "-melee" );
|
self BotBuiltinBotAction( "-melee" );
|
||||||
|
|
||||||
self.bot.isknifing = false;
|
self.bot.isknifing = false;
|
||||||
|
|
||||||
@ -2069,12 +2064,12 @@ use( time )
|
|||||||
if ( !isDefined( time ) )
|
if ( !isDefined( time ) )
|
||||||
time = 0.05;
|
time = 0.05;
|
||||||
|
|
||||||
self botAction( "+activate" );
|
self BotBuiltinBotAction( "+activate" );
|
||||||
|
|
||||||
if ( time )
|
if ( time )
|
||||||
wait time;
|
wait time;
|
||||||
|
|
||||||
self botAction( "-activate" );
|
self BotBuiltinBotAction( "-activate" );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -2093,9 +2088,9 @@ jump()
|
|||||||
wait 1;
|
wait 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
self botAction( "+gostand" );
|
self BotBuiltinBotAction( "+gostand" );
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
self botAction( "-gostand" );
|
self BotBuiltinBotAction( "-gostand" );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -2103,8 +2098,8 @@ jump()
|
|||||||
*/
|
*/
|
||||||
stand()
|
stand()
|
||||||
{
|
{
|
||||||
self botAction( "-gocrouch" );
|
self BotBuiltinBotAction( "-gocrouch" );
|
||||||
self botAction( "-goprone" );
|
self BotBuiltinBotAction( "-goprone" );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -2112,8 +2107,8 @@ stand()
|
|||||||
*/
|
*/
|
||||||
crouch()
|
crouch()
|
||||||
{
|
{
|
||||||
self botAction( "+gocrouch" );
|
self BotBuiltinBotAction( "+gocrouch" );
|
||||||
self botAction( "-goprone" );
|
self BotBuiltinBotAction( "-goprone" );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -2121,8 +2116,8 @@ crouch()
|
|||||||
*/
|
*/
|
||||||
prone()
|
prone()
|
||||||
{
|
{
|
||||||
self botAction( "-gocrouch" );
|
self BotBuiltinBotAction( "-gocrouch" );
|
||||||
self botAction( "+goprone" );
|
self BotBuiltinBotAction( "+goprone" );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -2135,7 +2130,7 @@ sprint()
|
|||||||
self notify( "bot_sprint" );
|
self notify( "bot_sprint" );
|
||||||
self endon( "bot_sprint" );
|
self endon( "bot_sprint" );
|
||||||
|
|
||||||
self botAction( "+sprint" );
|
self BotBuiltinBotAction( "+sprint" );
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
self botAction( "-sprint" );
|
self BotBuiltinBotAction( "-sprint" );
|
||||||
}
|
}
|
||||||
|
@ -104,7 +104,6 @@ difficulty()
|
|||||||
self.pers["bots"]["behavior"]["follow"] = 5;
|
self.pers["bots"]["behavior"]["follow"] = 5;
|
||||||
self.pers["bots"]["behavior"]["crouch"] = 20;
|
self.pers["bots"]["behavior"]["crouch"] = 20;
|
||||||
self.pers["bots"]["behavior"]["switch"] = 2;
|
self.pers["bots"]["behavior"]["switch"] = 2;
|
||||||
self.pers["bots"]["behavior"]["class"] = 2;
|
|
||||||
self.pers["bots"]["behavior"]["jump"] = 0;
|
self.pers["bots"]["behavior"]["jump"] = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -136,7 +135,6 @@ difficulty()
|
|||||||
self.pers["bots"]["behavior"]["follow"] = 5;
|
self.pers["bots"]["behavior"]["follow"] = 5;
|
||||||
self.pers["bots"]["behavior"]["crouch"] = 15;
|
self.pers["bots"]["behavior"]["crouch"] = 15;
|
||||||
self.pers["bots"]["behavior"]["switch"] = 2;
|
self.pers["bots"]["behavior"]["switch"] = 2;
|
||||||
self.pers["bots"]["behavior"]["class"] = 2;
|
|
||||||
self.pers["bots"]["behavior"]["jump"] = 10;
|
self.pers["bots"]["behavior"]["jump"] = 10;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -168,7 +166,6 @@ difficulty()
|
|||||||
self.pers["bots"]["behavior"]["follow"] = 5;
|
self.pers["bots"]["behavior"]["follow"] = 5;
|
||||||
self.pers["bots"]["behavior"]["crouch"] = 10;
|
self.pers["bots"]["behavior"]["crouch"] = 10;
|
||||||
self.pers["bots"]["behavior"]["switch"] = 2;
|
self.pers["bots"]["behavior"]["switch"] = 2;
|
||||||
self.pers["bots"]["behavior"]["class"] = 2;
|
|
||||||
self.pers["bots"]["behavior"]["jump"] = 25;
|
self.pers["bots"]["behavior"]["jump"] = 25;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -200,7 +197,6 @@ difficulty()
|
|||||||
self.pers["bots"]["behavior"]["follow"] = 5;
|
self.pers["bots"]["behavior"]["follow"] = 5;
|
||||||
self.pers["bots"]["behavior"]["crouch"] = 10;
|
self.pers["bots"]["behavior"]["crouch"] = 10;
|
||||||
self.pers["bots"]["behavior"]["switch"] = 2;
|
self.pers["bots"]["behavior"]["switch"] = 2;
|
||||||
self.pers["bots"]["behavior"]["class"] = 2;
|
|
||||||
self.pers["bots"]["behavior"]["jump"] = 35;
|
self.pers["bots"]["behavior"]["jump"] = 35;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -232,7 +228,6 @@ difficulty()
|
|||||||
self.pers["bots"]["behavior"]["follow"] = 5;
|
self.pers["bots"]["behavior"]["follow"] = 5;
|
||||||
self.pers["bots"]["behavior"]["crouch"] = 10;
|
self.pers["bots"]["behavior"]["crouch"] = 10;
|
||||||
self.pers["bots"]["behavior"]["switch"] = 2;
|
self.pers["bots"]["behavior"]["switch"] = 2;
|
||||||
self.pers["bots"]["behavior"]["class"] = 2;
|
|
||||||
self.pers["bots"]["behavior"]["jump"] = 50;
|
self.pers["bots"]["behavior"]["jump"] = 50;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -264,7 +259,6 @@ difficulty()
|
|||||||
self.pers["bots"]["behavior"]["follow"] = 5;
|
self.pers["bots"]["behavior"]["follow"] = 5;
|
||||||
self.pers["bots"]["behavior"]["crouch"] = 10;
|
self.pers["bots"]["behavior"]["crouch"] = 10;
|
||||||
self.pers["bots"]["behavior"]["switch"] = 2;
|
self.pers["bots"]["behavior"]["switch"] = 2;
|
||||||
self.pers["bots"]["behavior"]["class"] = 2;
|
|
||||||
self.pers["bots"]["behavior"]["jump"] = 75;
|
self.pers["bots"]["behavior"]["jump"] = 75;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -296,7 +290,6 @@ difficulty()
|
|||||||
self.pers["bots"]["behavior"]["follow"] = 5;
|
self.pers["bots"]["behavior"]["follow"] = 5;
|
||||||
self.pers["bots"]["behavior"]["crouch"] = 5;
|
self.pers["bots"]["behavior"]["crouch"] = 5;
|
||||||
self.pers["bots"]["behavior"]["switch"] = 2;
|
self.pers["bots"]["behavior"]["switch"] = 2;
|
||||||
self.pers["bots"]["behavior"]["class"] = 2;
|
|
||||||
self.pers["bots"]["behavior"]["jump"] = 90;
|
self.pers["bots"]["behavior"]["jump"] = 90;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -352,7 +345,6 @@ set_diff()
|
|||||||
self.pers["bots"]["behavior"]["follow"] = randomInt( 100 );
|
self.pers["bots"]["behavior"]["follow"] = randomInt( 100 );
|
||||||
self.pers["bots"]["behavior"]["crouch"] = randomInt( 100 );
|
self.pers["bots"]["behavior"]["crouch"] = randomInt( 100 );
|
||||||
self.pers["bots"]["behavior"]["switch"] = randomInt( 100 );
|
self.pers["bots"]["behavior"]["switch"] = randomInt( 100 );
|
||||||
self.pers["bots"]["behavior"]["class"] = randomInt( 100 );
|
|
||||||
self.pers["bots"]["behavior"]["jump"] = randomInt( 100 );
|
self.pers["bots"]["behavior"]["jump"] = randomInt( 100 );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -419,7 +411,7 @@ changeToWeapon( weap )
|
|||||||
if ( !self HasWeapon( weap ) )
|
if ( !self HasWeapon( weap ) )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
self BotChangeToWeapon( weap );
|
self switchToWeapon( weap );
|
||||||
|
|
||||||
if ( self GetCurrentWeapon() == weap )
|
if ( self GetCurrentWeapon() == weap )
|
||||||
return true;
|
return true;
|
||||||
|
@ -1,6 +1,227 @@
|
|||||||
#include common_scripts\utility;
|
#include common_scripts\utility;
|
||||||
#include maps\_utility;
|
#include maps\_utility;
|
||||||
|
|
||||||
|
/*
|
||||||
|
Waits for the built-ins to be defined
|
||||||
|
*/
|
||||||
|
wait_for_builtins()
|
||||||
|
{
|
||||||
|
for ( i = 0; i < 20; i++ )
|
||||||
|
{
|
||||||
|
if ( isDefined( level.bot_builtins ) )
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if ( i < 18 )
|
||||||
|
waittillframeend;
|
||||||
|
else
|
||||||
|
wait 0.05;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Prints to console without dev script on
|
||||||
|
*/
|
||||||
|
BotBuiltinPrintConsole( s )
|
||||||
|
{
|
||||||
|
if ( isDefined( level.bot_builtins ) && isDefined( level.bot_builtins["printconsole"] ) )
|
||||||
|
{
|
||||||
|
[[ level.bot_builtins["printconsole" ]]]( s );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Bot action, does a bot action
|
||||||
|
<client> botAction(<action string (+ or - then action like frag or smoke)>)
|
||||||
|
*/
|
||||||
|
BotBuiltinBotAction( action )
|
||||||
|
{
|
||||||
|
if ( isDefined( level.bot_builtins ) && isDefined( level.bot_builtins["botaction"] ) )
|
||||||
|
{
|
||||||
|
self [[ level.bot_builtins["botaction" ]]]( action );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Clears the bot from movement and actions
|
||||||
|
<client> botStop()
|
||||||
|
*/
|
||||||
|
BotBuiltinBotStop()
|
||||||
|
{
|
||||||
|
if ( isDefined( level.bot_builtins ) && isDefined( level.bot_builtins["botstop"] ) )
|
||||||
|
{
|
||||||
|
self [[ level.bot_builtins["botstop" ]]]();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Sets the bot's movement
|
||||||
|
<client> botMovement(<int left>, <int forward>)
|
||||||
|
*/
|
||||||
|
BotBuiltinBotMovement( left, forward )
|
||||||
|
{
|
||||||
|
if ( isDefined( level.bot_builtins ) && isDefined( level.bot_builtins["botmovement"] ) )
|
||||||
|
{
|
||||||
|
self [[ level.bot_builtins["botmovement" ]]]( left, forward );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Test if is a bot
|
||||||
|
|
||||||
|
*/
|
||||||
|
BotBuiltinIsBot()
|
||||||
|
{
|
||||||
|
if ( isDefined( level.bot_builtins ) && isDefined( level.bot_builtins["isbot"] ) )
|
||||||
|
{
|
||||||
|
return self [[ level.bot_builtins["isbot" ]]]();
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Generates a path
|
||||||
|
*/
|
||||||
|
BotBuiltinGeneratePath( from, to, team, best_effort )
|
||||||
|
{
|
||||||
|
if ( isDefined( level.bot_builtins ) && isDefined( level.bot_builtins["generatepath"] ) )
|
||||||
|
{
|
||||||
|
return [[ level.bot_builtins["generatepath" ]]]( from, to, team, best_effort );
|
||||||
|
}
|
||||||
|
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Returns function pointer
|
||||||
|
*/
|
||||||
|
BotBuiltinGetFunction( file, threadname )
|
||||||
|
{
|
||||||
|
if ( isDefined( level.bot_builtins ) && isDefined( level.bot_builtins["getfunction"] ) )
|
||||||
|
{
|
||||||
|
return [[ level.bot_builtins["getfunction" ]]]( file, threadname );
|
||||||
|
}
|
||||||
|
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
waw sp doesnt have
|
||||||
|
*/
|
||||||
|
BotBuiltinGetMins()
|
||||||
|
{
|
||||||
|
if ( isDefined( level.bot_builtins ) && isDefined( level.bot_builtins["getmins"] ) )
|
||||||
|
{
|
||||||
|
return self [[ level.bot_builtins["getmins" ]]]();
|
||||||
|
}
|
||||||
|
|
||||||
|
return ( 0, 0, 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
waw sp doesnt have
|
||||||
|
*/
|
||||||
|
BotBuiltinGetMaxs()
|
||||||
|
{
|
||||||
|
if ( isDefined( level.bot_builtins ) && isDefined( level.bot_builtins["getmaxs"] ) )
|
||||||
|
{
|
||||||
|
return self [[ level.bot_builtins["getmaxs" ]]]();
|
||||||
|
}
|
||||||
|
|
||||||
|
return ( 0, 0, 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
waw sp doesnt have
|
||||||
|
*/
|
||||||
|
BotBuiltinGetGuid()
|
||||||
|
{
|
||||||
|
if ( isDefined( level.bot_builtins ) && isDefined( level.bot_builtins["getguid"] ) )
|
||||||
|
{
|
||||||
|
return self [[ level.bot_builtins["getguid" ]]]();
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
*/
|
||||||
|
BotBuiltinsSetAllowedTraversals( bot_allowed_negotiation_links )
|
||||||
|
{
|
||||||
|
if ( isDefined( level.bot_builtins ) && isDefined( level.bot_builtins["setallowedtraversals"] ) )
|
||||||
|
{
|
||||||
|
[[ level.bot_builtins["setallowedtraversals" ]]]( bot_allowed_negotiation_links );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
*/
|
||||||
|
BotBuiltinsSetIgnoredLinks( bot_ignore_links )
|
||||||
|
{
|
||||||
|
if ( isDefined( level.bot_builtins ) && isDefined( level.bot_builtins["setignoredlinks"] ) )
|
||||||
|
{
|
||||||
|
[[ level.bot_builtins["setignoredlinks" ]]]( bot_ignore_links );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
*/
|
||||||
|
BotBuiltinGetNodeNumber()
|
||||||
|
{
|
||||||
|
if ( isDefined( level.bot_builtins ) && isDefined( level.bot_builtins["getnodenumber"] ) )
|
||||||
|
{
|
||||||
|
return self [[ level.bot_builtins["getnodenumber" ]]]();
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
*/
|
||||||
|
BotBuiltinGetLinkedNodes()
|
||||||
|
{
|
||||||
|
if ( isDefined( level.bot_builtins ) && isDefined( level.bot_builtins["getlinkednodes"] ) )
|
||||||
|
{
|
||||||
|
return self [[ level.bot_builtins["getlinkednodes" ]]]();
|
||||||
|
}
|
||||||
|
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
*/
|
||||||
|
BotBuiltinAddTestClient()
|
||||||
|
{
|
||||||
|
if ( isDefined( level.bot_builtins ) && isDefined( level.bot_builtins["addtestclient"] ) )
|
||||||
|
{
|
||||||
|
return [[ level.bot_builtins["addtestclient" ]]]();
|
||||||
|
}
|
||||||
|
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
*/
|
||||||
|
BotBuiltinCmdExec( what )
|
||||||
|
{
|
||||||
|
if ( isDefined( level.bot_builtins ) && isDefined( level.bot_builtins["cmdexec"] ) )
|
||||||
|
{
|
||||||
|
[[ level.bot_builtins["cmdexec" ]]]( what );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
*/
|
||||||
|
BotBuiltinNotifyOnPlayerCommand( cmd, notif )
|
||||||
|
{
|
||||||
|
if ( isDefined( level.bot_builtins ) && isDefined( level.bot_builtins["notifyonplayercommand"] ) )
|
||||||
|
{
|
||||||
|
self [[ level.bot_builtins["notifyonplayercommand" ]]]( cmd, notif );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Returns if player is the host
|
Returns if player is the host
|
||||||
*/
|
*/
|
||||||
@ -23,14 +244,14 @@ doHostCheck()
|
|||||||
|
|
||||||
if ( getDvar( "bots_main_firstIsHost" ) != "0" )
|
if ( getDvar( "bots_main_firstIsHost" ) != "0" )
|
||||||
{
|
{
|
||||||
PrintConsole( "WARNING: bots_main_firstIsHost is enabled\n" );
|
BotBuiltinPrintConsole( "WARNING: bots_main_firstIsHost is enabled" );
|
||||||
|
|
||||||
if ( getDvar( "bots_main_firstIsHost" ) == "1" )
|
if ( getDvar( "bots_main_firstIsHost" ) == "1" )
|
||||||
{
|
{
|
||||||
setDvar( "bots_main_firstIsHost", self getguid() );
|
setDvar( "bots_main_firstIsHost", self BotBuiltinGetGuid() );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_main_firstIsHost" ) == self getguid() + "" )
|
if ( getDvar( "bots_main_firstIsHost" ) == self BotBuiltinGetGuid() + "" )
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -42,7 +263,7 @@ doHostCheck()
|
|||||||
|
|
||||||
for ( i = 0; i < guids.size; i++ )
|
for ( i = 0; i < guids.size; i++ )
|
||||||
{
|
{
|
||||||
if ( self getguid() + "" == guids[i] )
|
if ( self BotBuiltinGetGuid() + "" == guids[i] )
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -58,7 +279,7 @@ doHostCheck()
|
|||||||
*/
|
*/
|
||||||
is_bot()
|
is_bot()
|
||||||
{
|
{
|
||||||
return self isBot();
|
return self BotBuiltinIsBot();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -82,14 +303,6 @@ BotSetStance( stance )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
Bot changes to the weap
|
|
||||||
*/
|
|
||||||
BotChangeToWeapon( weap )
|
|
||||||
{
|
|
||||||
self botWeapon( weap );
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Bot presses the button for time.
|
Bot presses the button for time.
|
||||||
*/
|
*/
|
||||||
@ -133,7 +346,6 @@ BotPressSmoke( time )
|
|||||||
/*
|
/*
|
||||||
Bot jumps
|
Bot jumps
|
||||||
*/
|
*/
|
||||||
|
|
||||||
BotJump()
|
BotJump()
|
||||||
{
|
{
|
||||||
self maps\bots\_bot_internal::jump();
|
self maps\bots\_bot_internal::jump();
|
||||||
@ -935,8 +1147,9 @@ load_waypoints()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
setAllowedTraversals( bot_allowed_negotiation_links );
|
// arrays are passed by value in gsc... hope this isnt gunna run out of vars
|
||||||
setIgnoredLinks( bot_ignore_links );
|
BotBuiltinsSetAllowedTraversals( bot_allowed_negotiation_links );
|
||||||
|
BotBuiltinsSetIgnoredLinks( bot_ignore_links );
|
||||||
level.bot_ignore_links = bot_ignore_links;
|
level.bot_ignore_links = bot_ignore_links;
|
||||||
|
|
||||||
level.waypoints = GetAllNodes();
|
level.waypoints = GetAllNodes();
|
||||||
@ -1219,7 +1432,7 @@ random_normal_distribution( mean, std_deviation, lower_bound, upper_bound )
|
|||||||
*/
|
*/
|
||||||
inLastStand()
|
inLastStand()
|
||||||
{
|
{
|
||||||
func = GetFunction( "maps/_laststand", "player_is_in_laststand" );
|
func = BotBuiltinGetFunction( "maps/_laststand", "player_is_in_laststand" );
|
||||||
|
|
||||||
return self [[func]]();
|
return self [[func]]();
|
||||||
}
|
}
|
||||||
@ -1229,7 +1442,7 @@ inLastStand()
|
|||||||
*/
|
*/
|
||||||
isReviving( revivee )
|
isReviving( revivee )
|
||||||
{
|
{
|
||||||
func = GetFunction( "maps/_laststand", "is_reviving" );
|
func = BotBuiltinGetFunction( "maps/_laststand", "is_reviving" );
|
||||||
|
|
||||||
return self [[func]]( revivee );
|
return self [[func]]( revivee );
|
||||||
}
|
}
|
||||||
@ -1279,20 +1492,12 @@ isWeaponPrimary( weap )
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
Generates the path
|
|
||||||
*/
|
|
||||||
GenerateThePath( from, to, team, best_effort )
|
|
||||||
{
|
|
||||||
return generatePath( from, to, team, best_effort );
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Checks whether the path generated by the ASTAR path finding is inaccessible
|
Checks whether the path generated by the ASTAR path finding is inaccessible
|
||||||
*/
|
*/
|
||||||
GetPathIsInaccessible( from, to, team, best_effort )
|
GetPathIsInaccessible( from, to, team, best_effort )
|
||||||
{
|
{
|
||||||
path = GenerateThePath( from, to, team, best_effort );
|
path = BotBuiltinGeneratePath( from, to, team, best_effort );
|
||||||
return ( !isDefined( path ) || ( path.size <= 0 ) );
|
return ( !isDefined( path ) || ( path.size <= 0 ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1301,7 +1506,7 @@ GetPathIsInaccessible( from, to, team, best_effort )
|
|||||||
*/
|
*/
|
||||||
get_path_dist( start, end, team )
|
get_path_dist( start, end, team )
|
||||||
{
|
{
|
||||||
path = GenerateThePath( start, end, team, 192.0 );
|
path = BotBuiltinGeneratePath( start, end, team, 192.0 );
|
||||||
|
|
||||||
if ( !isDefined( path ) || path.size <= 0 )
|
if ( !isDefined( path ) || path.size <= 0 )
|
||||||
{
|
{
|
||||||
@ -1409,8 +1614,8 @@ PointInsideUseTrigger( point )
|
|||||||
self thread debug_bounding_box_for_ent();
|
self thread debug_bounding_box_for_ent();
|
||||||
}
|
}
|
||||||
|
|
||||||
mins = self getmins();
|
mins = self BotBuiltinGetMins();
|
||||||
maxs = self getmaxs();
|
maxs = self BotBuiltinGetMaxs();
|
||||||
|
|
||||||
box = spawnstruct();
|
box = spawnstruct();
|
||||||
box.x0 = self.origin[0] + mins[0];
|
box.x0 = self.origin[0] + mins[0];
|
||||||
@ -1447,8 +1652,8 @@ debug_bounding_box_for_ent( color )
|
|||||||
|
|
||||||
while ( isDefined( self ) )
|
while ( isDefined( self ) )
|
||||||
{
|
{
|
||||||
mins = self getmins();
|
mins = self BotBuiltinGetMins();
|
||||||
maxs = self getmaxs();
|
maxs = self BotBuiltinGetMaxs();
|
||||||
|
|
||||||
line( self.origin + ( mins[0], mins[1], mins[2] ), self.origin + ( mins[0], mins[1], maxs[2] ), color );
|
line( self.origin + ( mins[0], mins[1], mins[2] ), self.origin + ( mins[0], mins[1], maxs[2] ), color );
|
||||||
line( self.origin + ( mins[0], mins[1], mins[2] ), self.origin + ( mins[0], maxs[1], mins[2] ), color );
|
line( self.origin + ( mins[0], mins[1], mins[2] ), self.origin + ( mins[0], maxs[1], mins[2] ), color );
|
||||||
|
@ -44,7 +44,7 @@ Finder( eObj )
|
|||||||
|
|
||||||
if ( !player_has_weapon || is_grenade )
|
if ( !player_has_weapon || is_grenade )
|
||||||
{
|
{
|
||||||
func = GetFunction( "maps/_zombiemode_weapons", "get_weapon_cost" );
|
func = BotBuiltinGetFunction( "maps/_zombiemode_weapons", "get_weapon_cost" );
|
||||||
|
|
||||||
if ( self.score < [[func]]( weapon_spawns[i].zombie_weapon_upgrade ) )
|
if ( self.score < [[func]]( weapon_spawns[i].zombie_weapon_upgrade ) )
|
||||||
{
|
{
|
||||||
@ -53,7 +53,7 @@ Finder( eObj )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
func = GetFunction( "maps/_zombiemode_weapons", "get_ammo_cost" );
|
func = BotBuiltinGetFunction( "maps/_zombiemode_weapons", "get_ammo_cost" );
|
||||||
|
|
||||||
if ( self.score < [[func]]( weapon_spawns[i].zombie_weapon_upgrade ) )
|
if ( self.score < [[func]]( weapon_spawns[i].zombie_weapon_upgrade ) )
|
||||||
{
|
{
|
||||||
|
@ -1,8 +1,3 @@
|
|||||||
main()
|
|
||||||
{
|
|
||||||
level thread maps\bots\_bot::main();
|
|
||||||
}
|
|
||||||
|
|
||||||
init()
|
init()
|
||||||
{
|
{
|
||||||
level thread maps\bots\_bot::init();
|
level thread maps\bots\_bot::init();
|
||||||
|
105
scripts/sp/bots_adapter.gsc
Normal file
105
scripts/sp/bots_adapter.gsc
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
init()
|
||||||
|
{
|
||||||
|
level.bot_builtins["printconsole"] = ::do_printconsole;
|
||||||
|
level.bot_builtins["botaction"] = ::do_botaction;
|
||||||
|
level.bot_builtins["botstop"] = ::do_botstop;
|
||||||
|
level.bot_builtins["botmovement"] = ::do_botmovement;
|
||||||
|
level.bot_builtins["isbot"] = ::do_isbot;
|
||||||
|
level.bot_builtins["generatepath"] = ::do_generatepath;
|
||||||
|
level.bot_builtins["getfunction"] = ::do_getfunction;
|
||||||
|
level.bot_builtins["getmins"] = ::do_getmins;
|
||||||
|
level.bot_builtins["getmaxs"] = ::do_getmaxs;
|
||||||
|
level.bot_builtins["getguid"] = ::do_getguid;
|
||||||
|
level.bot_builtins["setallowedtraversals"] = ::do_setallowedtraversals;
|
||||||
|
level.bot_builtins["setignoredlinks"] = ::do_setignoredlinks;
|
||||||
|
level.bot_builtins["getnodenumber"] = ::do_getnodenumber;
|
||||||
|
level.bot_builtins["getlinkednodes"] = ::do_getlinkednodes;
|
||||||
|
level.bot_builtins["addtestclient"] = ::do_addtestclient;
|
||||||
|
level.bot_builtins["notifyonplayercommand"] = ::do_notifyonplayercommand;
|
||||||
|
level.bot_builtins["cmdexec"] = ::do_cmdexec;
|
||||||
|
}
|
||||||
|
|
||||||
|
do_printconsole( s )
|
||||||
|
{
|
||||||
|
PrintConsole( s );
|
||||||
|
}
|
||||||
|
|
||||||
|
do_botaction( action )
|
||||||
|
{
|
||||||
|
self BotAction( action );
|
||||||
|
}
|
||||||
|
|
||||||
|
do_botstop()
|
||||||
|
{
|
||||||
|
self BotStop();
|
||||||
|
}
|
||||||
|
|
||||||
|
do_botmovement( left, forward )
|
||||||
|
{
|
||||||
|
self BotMovement( left, forward );
|
||||||
|
}
|
||||||
|
|
||||||
|
do_isbot()
|
||||||
|
{
|
||||||
|
return self isBot();
|
||||||
|
}
|
||||||
|
|
||||||
|
do_generatepath( from, to, team, best_effort )
|
||||||
|
{
|
||||||
|
return GeneratePath( from, to, team, best_effort );
|
||||||
|
}
|
||||||
|
|
||||||
|
do_getfunction( file, threadname )
|
||||||
|
{
|
||||||
|
return GetFunction( file, threadname );
|
||||||
|
}
|
||||||
|
|
||||||
|
do_getmins()
|
||||||
|
{
|
||||||
|
return self GetMins();
|
||||||
|
}
|
||||||
|
|
||||||
|
do_getmaxs()
|
||||||
|
{
|
||||||
|
return self GetMaxs();
|
||||||
|
}
|
||||||
|
|
||||||
|
do_getguid()
|
||||||
|
{
|
||||||
|
return self GetGuid();
|
||||||
|
}
|
||||||
|
|
||||||
|
do_setallowedtraversals( a )
|
||||||
|
{
|
||||||
|
setallowedtraversals( a );
|
||||||
|
}
|
||||||
|
|
||||||
|
do_setignoredlinks( a )
|
||||||
|
{
|
||||||
|
setignoredlinks( a );
|
||||||
|
}
|
||||||
|
|
||||||
|
do_getnodenumber()
|
||||||
|
{
|
||||||
|
return self GetNodeNumber();
|
||||||
|
}
|
||||||
|
|
||||||
|
do_getlinkednodes()
|
||||||
|
{
|
||||||
|
return self GetLinkedNodes();
|
||||||
|
}
|
||||||
|
|
||||||
|
do_addtestclient()
|
||||||
|
{
|
||||||
|
return addtestclient();
|
||||||
|
}
|
||||||
|
|
||||||
|
do_notifyonplayercommand( a, b )
|
||||||
|
{
|
||||||
|
self notifyonplayercommand( a, b );
|
||||||
|
}
|
||||||
|
|
||||||
|
do_cmdexec( a )
|
||||||
|
{
|
||||||
|
cmdexec( a );
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user