mirror of
https://github.com/ineedbots/iw3_bot_warfare.git
synced 2025-04-23 02:35:43 +00:00
Format scripts
This commit is contained in:
parent
6d9dbb262a
commit
ca0b0032eb
@ -10,93 +10,119 @@ init()
|
|||||||
{
|
{
|
||||||
level.bw_VERSION = "2.0.1";
|
level.bw_VERSION = "2.0.1";
|
||||||
|
|
||||||
if(getDvar("bots_main") == "")
|
if ( getDvar( "bots_main" ) == "" )
|
||||||
setDvar("bots_main", true);
|
setDvar( "bots_main", true );
|
||||||
|
|
||||||
if (!getDvarInt("bots_main"))
|
if ( !getDvarInt( "bots_main" ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
thread load_waypoints();
|
thread load_waypoints();
|
||||||
cac_init_patch();
|
cac_init_patch();
|
||||||
thread hook_callbacks();
|
thread hook_callbacks();
|
||||||
|
|
||||||
if(getDvar("bots_main_GUIDs") == "")
|
if ( getDvar( "bots_main_GUIDs" ) == "" )
|
||||||
setDvar("bots_main_GUIDs", "");//guids of players who will be given host powers, comma seperated
|
setDvar( "bots_main_GUIDs", "" ); //guids of players who will be given host powers, comma seperated
|
||||||
if(getDvar("bots_main_firstIsHost") == "")
|
|
||||||
setDvar("bots_main_firstIsHost", true);//first player to connect is a host
|
|
||||||
if(getDvar("bots_main_waitForHostTime") == "")
|
|
||||||
setDvar("bots_main_waitForHostTime", 10.0);//how long to wait to wait for the host player
|
|
||||||
|
|
||||||
if(getDvar("bots_manage_add") == "")
|
if ( getDvar( "bots_main_firstIsHost" ) == "" )
|
||||||
setDvar("bots_manage_add", 0);//amount of bots to add to the game
|
setDvar( "bots_main_firstIsHost", true ); //first player to connect is a host
|
||||||
if(getDvar("bots_manage_fill") == "")
|
|
||||||
setDvar("bots_manage_fill", 0);//amount of bots to maintain
|
|
||||||
if(getDvar("bots_manage_fill_spec") == "")
|
|
||||||
setDvar("bots_manage_fill_spec", true);//to count for fill if player is on spec team
|
|
||||||
if(getDvar("bots_manage_fill_mode") == "")
|
|
||||||
setDvar("bots_manage_fill_mode", 0);//fill mode, 0 adds everyone, 1 just bots, 2 maintains at maps, 3 is 2 with 1
|
|
||||||
if(getDvar("bots_manage_fill_kick") == "")
|
|
||||||
setDvar("bots_manage_fill_kick", false);//kick bots if too many
|
|
||||||
|
|
||||||
if(getDvar("bots_team") == "")
|
if ( getDvar( "bots_main_waitForHostTime" ) == "" )
|
||||||
setDvar("bots_team", "autoassign");//which team for bots to join
|
setDvar( "bots_main_waitForHostTime", 10.0 ); //how long to wait to wait for the host player
|
||||||
if(getDvar("bots_team_amount") == "")
|
|
||||||
setDvar("bots_team_amount", 0);//amount of bots on axis team
|
|
||||||
if(getDvar("bots_team_force") == "")
|
|
||||||
setDvar("bots_team_force", false);//force bots on team
|
|
||||||
if(getDvar("bots_team_mode") == "")
|
|
||||||
setDvar("bots_team_mode", 0);//counts just bots when 1
|
|
||||||
|
|
||||||
if(getDvar("bots_skill") == "")
|
if ( getDvar( "bots_manage_add" ) == "" )
|
||||||
setDvar("bots_skill", 0);//0 is random, 1 is easy 7 is hard, 8 is custom, 9 is completely random
|
setDvar( "bots_manage_add", 0 ); //amount of bots to add to the game
|
||||||
if(getDvar("bots_skill_axis_hard") == "")
|
|
||||||
setDvar("bots_skill_axis_hard", 0);//amount of hard bots on axis team
|
|
||||||
if(getDvar("bots_skill_axis_med") == "")
|
|
||||||
setDvar("bots_skill_axis_med", 0);
|
|
||||||
if(getDvar("bots_skill_allies_hard") == "")
|
|
||||||
setDvar("bots_skill_allies_hard", 0);
|
|
||||||
if(getDvar("bots_skill_allies_med") == "")
|
|
||||||
setDvar("bots_skill_allies_med", 0);
|
|
||||||
|
|
||||||
if(getDvar("bots_loadout_reasonable") == "")//filter out the bad 'guns' and perks
|
if ( getDvar( "bots_manage_fill" ) == "" )
|
||||||
setDvar("bots_loadout_reasonable", false);
|
setDvar( "bots_manage_fill", 0 ); //amount of bots to maintain
|
||||||
if(getDvar("bots_loadout_allow_op") == "")//allows jug, marty and laststand
|
|
||||||
setDvar("bots_loadout_allow_op", true);
|
|
||||||
if(getDvar("bots_loadout_rank") == "")// what rank the bots should be around, -1 is around the players, 0 is all random
|
|
||||||
setDvar("bots_loadout_rank", -1);
|
|
||||||
if(getDvar("bots_loadout_prestige") == "")// what pretige the bots will be, -1 is the players, -2 is random
|
|
||||||
setDvar("bots_loadout_prestige", -1);
|
|
||||||
|
|
||||||
if(getDvar("bots_play_move") == "")//bots move
|
if ( getDvar( "bots_manage_fill_spec" ) == "" )
|
||||||
setDvar("bots_play_move", true);
|
setDvar( "bots_manage_fill_spec", true ); //to count for fill if player is on spec team
|
||||||
if(getDvar("bots_play_knife") == "")//bots knife
|
|
||||||
setDvar("bots_play_knife", true);
|
|
||||||
if(getDvar("bots_play_fire") == "")//bots fire
|
|
||||||
setDvar("bots_play_fire", true);
|
|
||||||
if(getDvar("bots_play_nade") == "")//bots grenade
|
|
||||||
setDvar("bots_play_nade", true);
|
|
||||||
if(getDvar("bots_play_obj") == "")//bots play the obj
|
|
||||||
setDvar("bots_play_obj", true);
|
|
||||||
if(getDvar("bots_play_camp") == "")//bots camp and follow
|
|
||||||
setDvar("bots_play_camp", true);
|
|
||||||
if(getDvar("bots_play_jumpdrop") == "")//bots jump and dropshot
|
|
||||||
setDvar("bots_play_jumpdrop", true);
|
|
||||||
if(getDvar("bots_play_target_other") == "")//bot target non play ents (vehicles)
|
|
||||||
setDvar("bots_play_target_other", true);
|
|
||||||
if(getDvar("bots_play_killstreak") == "")//bot use killstreaks
|
|
||||||
setDvar("bots_play_killstreak", true);
|
|
||||||
if(getDvar("bots_play_ads") == "")//bot ads
|
|
||||||
setDvar("bots_play_ads", true);
|
|
||||||
|
|
||||||
if(!isDefined(game["botWarfare"]))
|
if ( getDvar( "bots_manage_fill_mode" ) == "" )
|
||||||
|
setDvar( "bots_manage_fill_mode", 0 ); //fill mode, 0 adds everyone, 1 just bots, 2 maintains at maps, 3 is 2 with 1
|
||||||
|
|
||||||
|
if ( getDvar( "bots_manage_fill_kick" ) == "" )
|
||||||
|
setDvar( "bots_manage_fill_kick", false ); //kick bots if too many
|
||||||
|
|
||||||
|
if ( getDvar( "bots_team" ) == "" )
|
||||||
|
setDvar( "bots_team", "autoassign" ); //which team for bots to join
|
||||||
|
|
||||||
|
if ( getDvar( "bots_team_amount" ) == "" )
|
||||||
|
setDvar( "bots_team_amount", 0 ); //amount of bots on axis team
|
||||||
|
|
||||||
|
if ( getDvar( "bots_team_force" ) == "" )
|
||||||
|
setDvar( "bots_team_force", false ); //force bots on team
|
||||||
|
|
||||||
|
if ( getDvar( "bots_team_mode" ) == "" )
|
||||||
|
setDvar( "bots_team_mode", 0 ); //counts just bots when 1
|
||||||
|
|
||||||
|
if ( getDvar( "bots_skill" ) == "" )
|
||||||
|
setDvar( "bots_skill", 0 ); //0 is random, 1 is easy 7 is hard, 8 is custom, 9 is completely random
|
||||||
|
|
||||||
|
if ( getDvar( "bots_skill_axis_hard" ) == "" )
|
||||||
|
setDvar( "bots_skill_axis_hard", 0 ); //amount of hard bots on axis team
|
||||||
|
|
||||||
|
if ( getDvar( "bots_skill_axis_med" ) == "" )
|
||||||
|
setDvar( "bots_skill_axis_med", 0 );
|
||||||
|
|
||||||
|
if ( getDvar( "bots_skill_allies_hard" ) == "" )
|
||||||
|
setDvar( "bots_skill_allies_hard", 0 );
|
||||||
|
|
||||||
|
if ( getDvar( "bots_skill_allies_med" ) == "" )
|
||||||
|
setDvar( "bots_skill_allies_med", 0 );
|
||||||
|
|
||||||
|
if ( getDvar( "bots_loadout_reasonable" ) == "" ) //filter out the bad 'guns' and perks
|
||||||
|
setDvar( "bots_loadout_reasonable", false );
|
||||||
|
|
||||||
|
if ( getDvar( "bots_loadout_allow_op" ) == "" ) //allows jug, marty and laststand
|
||||||
|
setDvar( "bots_loadout_allow_op", true );
|
||||||
|
|
||||||
|
if ( getDvar( "bots_loadout_rank" ) == "" ) // what rank the bots should be around, -1 is around the players, 0 is all random
|
||||||
|
setDvar( "bots_loadout_rank", -1 );
|
||||||
|
|
||||||
|
if ( getDvar( "bots_loadout_prestige" ) == "" ) // what pretige the bots will be, -1 is the players, -2 is random
|
||||||
|
setDvar( "bots_loadout_prestige", -1 );
|
||||||
|
|
||||||
|
if ( getDvar( "bots_play_move" ) == "" ) //bots move
|
||||||
|
setDvar( "bots_play_move", true );
|
||||||
|
|
||||||
|
if ( getDvar( "bots_play_knife" ) == "" ) //bots knife
|
||||||
|
setDvar( "bots_play_knife", true );
|
||||||
|
|
||||||
|
if ( getDvar( "bots_play_fire" ) == "" ) //bots fire
|
||||||
|
setDvar( "bots_play_fire", true );
|
||||||
|
|
||||||
|
if ( getDvar( "bots_play_nade" ) == "" ) //bots grenade
|
||||||
|
setDvar( "bots_play_nade", true );
|
||||||
|
|
||||||
|
if ( getDvar( "bots_play_obj" ) == "" ) //bots play the obj
|
||||||
|
setDvar( "bots_play_obj", true );
|
||||||
|
|
||||||
|
if ( getDvar( "bots_play_camp" ) == "" ) //bots camp and follow
|
||||||
|
setDvar( "bots_play_camp", true );
|
||||||
|
|
||||||
|
if ( getDvar( "bots_play_jumpdrop" ) == "" ) //bots jump and dropshot
|
||||||
|
setDvar( "bots_play_jumpdrop", true );
|
||||||
|
|
||||||
|
if ( getDvar( "bots_play_target_other" ) == "" ) //bot target non play ents (vehicles)
|
||||||
|
setDvar( "bots_play_target_other", true );
|
||||||
|
|
||||||
|
if ( getDvar( "bots_play_killstreak" ) == "" ) //bot use killstreaks
|
||||||
|
setDvar( "bots_play_killstreak", true );
|
||||||
|
|
||||||
|
if ( getDvar( "bots_play_ads" ) == "" ) //bot ads
|
||||||
|
setDvar( "bots_play_ads", true );
|
||||||
|
|
||||||
|
if ( !isDefined( game["botWarfare"] ) )
|
||||||
game["botWarfare"] = true;
|
game["botWarfare"] = true;
|
||||||
|
|
||||||
level.defuseObject = undefined;
|
level.defuseObject = undefined;
|
||||||
level.bots_smokeList = List();
|
level.bots_smokeList = List();
|
||||||
level.tbl_PerkData[0]["reference_full"] = true;
|
level.tbl_PerkData[0]["reference_full"] = true;
|
||||||
for(h = 1; h < 6; h++)
|
|
||||||
for(i = 0; i < 3; i++)
|
for ( h = 1; h < 6; h++ )
|
||||||
level.default_perk["CLASS_CUSTOM"+h][i] = "specialty_null";
|
for ( i = 0; i < 3; i++ )
|
||||||
|
level.default_perk["CLASS_CUSTOM" + h][i] = "specialty_null";
|
||||||
|
|
||||||
level.bots_minSprintDistance = 315;
|
level.bots_minSprintDistance = 315;
|
||||||
level.bots_minSprintDistance *= level.bots_minSprintDistance;
|
level.bots_minSprintDistance *= level.bots_minSprintDistance;
|
||||||
@ -152,38 +178,38 @@ handleBots()
|
|||||||
level thread diffBots();
|
level thread diffBots();
|
||||||
level addBots();
|
level addBots();
|
||||||
|
|
||||||
while(!level.intermission)
|
while ( !level.intermission )
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
|
||||||
setDvar("bots_manage_add", getBotArray().size);
|
setDvar( "bots_manage_add", getBotArray().size );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
The hook callback for when any player becomes damaged.
|
The hook callback for when any player becomes damaged.
|
||||||
*/
|
*/
|
||||||
onPlayerDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset)
|
onPlayerDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset )
|
||||||
{
|
{
|
||||||
if(self is_bot())
|
if ( self is_bot() )
|
||||||
{
|
{
|
||||||
self maps\mp\bots\_bot_internal::onDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset);
|
self maps\mp\bots\_bot_internal::onDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset );
|
||||||
self maps\mp\bots\_bot_script::onDamage(eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset);
|
self maps\mp\bots\_bot_script::onDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset );
|
||||||
}
|
}
|
||||||
|
|
||||||
self [[level.prevCallbackPlayerDamage]](eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset);
|
self [[level.prevCallbackPlayerDamage]]( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
The hook callback when any player gets killed.
|
The hook callback when any player gets killed.
|
||||||
*/
|
*/
|
||||||
onPlayerKilled(eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration)
|
onPlayerKilled( eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration )
|
||||||
{
|
{
|
||||||
if(self is_bot())
|
if ( self is_bot() )
|
||||||
{
|
{
|
||||||
self maps\mp\bots\_bot_internal::onKilled(eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration);
|
self maps\mp\bots\_bot_internal::onKilled( eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration );
|
||||||
self maps\mp\bots\_bot_script::onKilled(eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration);
|
self maps\mp\bots\_bot_script::onKilled( eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration );
|
||||||
}
|
}
|
||||||
|
|
||||||
self [[level.prevCallbackPlayerKilled]](eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration);
|
self [[level.prevCallbackPlayerKilled]]( eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -206,25 +232,25 @@ fixKoth()
|
|||||||
{
|
{
|
||||||
level.radio = undefined;
|
level.radio = undefined;
|
||||||
|
|
||||||
for(;;)
|
for ( ;; )
|
||||||
{
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
|
||||||
if(!isDefined(level.radioObject))
|
if ( !isDefined( level.radioObject ) )
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(i = level.radios.size - 1; i >= 0; i--)
|
for ( i = level.radios.size - 1; i >= 0; i-- )
|
||||||
{
|
{
|
||||||
if(level.radioObject != level.radios[i].gameobject)
|
if ( level.radioObject != level.radios[i].gameobject )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
level.radio = level.radios[i];
|
level.radio = level.radios[i];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
while(isDefined(level.radioObject) && level.radio.gameobject == level.radioObject)
|
while ( isDefined( level.radioObject ) && level.radio.gameobject == level.radioObject )
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -234,16 +260,17 @@ fixKoth()
|
|||||||
*/
|
*/
|
||||||
fixGamemodes()
|
fixGamemodes()
|
||||||
{
|
{
|
||||||
for(i=0;i<19;i++)
|
for ( i = 0; i < 19; i++ )
|
||||||
{
|
{
|
||||||
if(isDefined(level.bombZones) && level.gametype == "sd")
|
if ( isDefined( level.bombZones ) && level.gametype == "sd" )
|
||||||
{
|
{
|
||||||
for(i = 0; i < level.bombZones.size; i++)
|
for ( i = 0; i < level.bombZones.size; i++ )
|
||||||
level.bombZones[i].onUse = ::onUsePlantObjectFix;
|
level.bombZones[i].onUse = ::onUsePlantObjectFix;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(isDefined(level.radios) && level.gametype == "koth")
|
if ( isDefined( level.radios ) && level.gametype == "koth" )
|
||||||
{
|
{
|
||||||
level thread fixKoth();
|
level thread fixKoth();
|
||||||
|
|
||||||
@ -259,9 +286,9 @@ fixGamemodes()
|
|||||||
*/
|
*/
|
||||||
onPlayerConnect()
|
onPlayerConnect()
|
||||||
{
|
{
|
||||||
for(;;)
|
for ( ;; )
|
||||||
{
|
{
|
||||||
level waittill("connected", player);
|
level waittill( "connected", player );
|
||||||
|
|
||||||
player thread onGrenadeFire();
|
player thread onGrenadeFire();
|
||||||
player thread onWeaponFired();
|
player thread onWeaponFired();
|
||||||
@ -276,13 +303,13 @@ onPlayerConnect()
|
|||||||
*/
|
*/
|
||||||
fixPerksAndScriptKick()
|
fixPerksAndScriptKick()
|
||||||
{
|
{
|
||||||
self endon("disconnect");
|
self endon( "disconnect" );
|
||||||
|
|
||||||
self waittill("spawned");
|
self waittill( "spawned" );
|
||||||
|
|
||||||
self.pers["isBot"] = undefined;
|
self.pers["isBot"] = undefined;
|
||||||
|
|
||||||
if(!level.gameEnded)
|
if ( !level.gameEnded )
|
||||||
level waittill ( "game_ended" );
|
level waittill ( "game_ended" );
|
||||||
|
|
||||||
self.pers["isBot"] = true;
|
self.pers["isBot"] = true;
|
||||||
@ -293,9 +320,9 @@ fixPerksAndScriptKick()
|
|||||||
*/
|
*/
|
||||||
onDisconnect()
|
onDisconnect()
|
||||||
{
|
{
|
||||||
self waittill("disconnect");
|
self waittill( "disconnect" );
|
||||||
|
|
||||||
level.bots = array_remove(level.bots, self);
|
level.bots = array_remove( level.bots, self );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -303,21 +330,21 @@ onDisconnect()
|
|||||||
*/
|
*/
|
||||||
connected()
|
connected()
|
||||||
{
|
{
|
||||||
self endon("disconnect");
|
self endon( "disconnect" );
|
||||||
|
|
||||||
if (!isDefined(self.pers["bot_host"]))
|
if ( !isDefined( self.pers["bot_host"] ) )
|
||||||
self thread doHostCheck();
|
self thread doHostCheck();
|
||||||
|
|
||||||
if(!self is_bot())
|
if ( !self is_bot() )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!isDefined(self.pers["isBot"]))
|
if ( !isDefined( self.pers["isBot"] ) )
|
||||||
{
|
{
|
||||||
// fast restart...
|
// fast restart...
|
||||||
self.pers["isBot"] = true;
|
self.pers["isBot"] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isDefined(self.pers["isBotWarfare"]))
|
if ( !isDefined( self.pers["isBotWarfare"] ) )
|
||||||
{
|
{
|
||||||
self.pers["isBotWarfare"] = true;
|
self.pers["isBotWarfare"] = true;
|
||||||
self thread added();
|
self thread added();
|
||||||
@ -331,7 +358,7 @@ connected()
|
|||||||
level.bots[level.bots.size] = self;
|
level.bots[level.bots.size] = self;
|
||||||
self thread onDisconnect();
|
self thread onDisconnect();
|
||||||
|
|
||||||
level notify("bot_connected", self);
|
level notify( "bot_connected", self );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -339,7 +366,7 @@ connected()
|
|||||||
*/
|
*/
|
||||||
added()
|
added()
|
||||||
{
|
{
|
||||||
self endon("disconnect");
|
self endon( "disconnect" );
|
||||||
|
|
||||||
self thread maps\mp\bots\_bot_internal::added();
|
self thread maps\mp\bots\_bot_internal::added();
|
||||||
self thread maps\mp\bots\_bot_script::added();
|
self thread maps\mp\bots\_bot_script::added();
|
||||||
@ -354,12 +381,12 @@ add_bot()
|
|||||||
|
|
||||||
bot = undefined;
|
bot = undefined;
|
||||||
|
|
||||||
if (isDefined(name) && name.size >= 3)
|
if ( isDefined( name ) && name.size >= 3 )
|
||||||
bot = addtestclient(name);
|
bot = addtestclient( name );
|
||||||
else
|
else
|
||||||
bot = addtestclient();
|
bot = addtestclient();
|
||||||
|
|
||||||
if (isdefined(bot))
|
if ( isdefined( bot ) )
|
||||||
{
|
{
|
||||||
bot.pers["isBot"] = true;
|
bot.pers["isBot"] = true;
|
||||||
bot.pers["isBotWarfare"] = true;
|
bot.pers["isBotWarfare"] = true;
|
||||||
@ -372,38 +399,39 @@ add_bot()
|
|||||||
*/
|
*/
|
||||||
diffBots_loop()
|
diffBots_loop()
|
||||||
{
|
{
|
||||||
var_allies_hard = getDVarInt("bots_skill_allies_hard");
|
var_allies_hard = getDVarInt( "bots_skill_allies_hard" );
|
||||||
var_allies_med = getDVarInt("bots_skill_allies_med");
|
var_allies_med = getDVarInt( "bots_skill_allies_med" );
|
||||||
var_axis_hard = getDVarInt("bots_skill_axis_hard");
|
var_axis_hard = getDVarInt( "bots_skill_axis_hard" );
|
||||||
var_axis_med = getDVarInt("bots_skill_axis_med");
|
var_axis_med = getDVarInt( "bots_skill_axis_med" );
|
||||||
var_skill = getDvarInt("bots_skill");
|
var_skill = getDvarInt( "bots_skill" );
|
||||||
|
|
||||||
allies_hard = 0;
|
allies_hard = 0;
|
||||||
allies_med = 0;
|
allies_med = 0;
|
||||||
axis_hard = 0;
|
axis_hard = 0;
|
||||||
axis_med = 0;
|
axis_med = 0;
|
||||||
|
|
||||||
if(var_skill == 8)
|
if ( var_skill == 8 )
|
||||||
{
|
{
|
||||||
playercount = level.players.size;
|
playercount = level.players.size;
|
||||||
for(i = 0; i < playercount; i++)
|
|
||||||
|
for ( i = 0; i < playercount; i++ )
|
||||||
{
|
{
|
||||||
player = level.players[i];
|
player = level.players[i];
|
||||||
|
|
||||||
if(!isDefined(player.pers["team"]))
|
if ( !isDefined( player.pers["team"] ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if(!player is_bot())
|
if ( !player is_bot() )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if(player.pers["team"] == "axis")
|
if ( player.pers["team"] == "axis" )
|
||||||
{
|
{
|
||||||
if(axis_hard < var_axis_hard)
|
if ( axis_hard < var_axis_hard )
|
||||||
{
|
{
|
||||||
axis_hard++;
|
axis_hard++;
|
||||||
player.pers["bots"]["skill"]["base"] = 7;
|
player.pers["bots"]["skill"]["base"] = 7;
|
||||||
}
|
}
|
||||||
else if(axis_med < var_axis_med)
|
else if ( axis_med < var_axis_med )
|
||||||
{
|
{
|
||||||
axis_med++;
|
axis_med++;
|
||||||
player.pers["bots"]["skill"]["base"] = 4;
|
player.pers["bots"]["skill"]["base"] = 4;
|
||||||
@ -411,14 +439,14 @@ diffBots_loop()
|
|||||||
else
|
else
|
||||||
player.pers["bots"]["skill"]["base"] = 1;
|
player.pers["bots"]["skill"]["base"] = 1;
|
||||||
}
|
}
|
||||||
else if(player.pers["team"] == "allies")
|
else if ( player.pers["team"] == "allies" )
|
||||||
{
|
{
|
||||||
if(allies_hard < var_allies_hard)
|
if ( allies_hard < var_allies_hard )
|
||||||
{
|
{
|
||||||
allies_hard++;
|
allies_hard++;
|
||||||
player.pers["bots"]["skill"]["base"] = 7;
|
player.pers["bots"]["skill"]["base"] = 7;
|
||||||
}
|
}
|
||||||
else if(allies_med < var_allies_med)
|
else if ( allies_med < var_allies_med )
|
||||||
{
|
{
|
||||||
allies_med++;
|
allies_med++;
|
||||||
player.pers["bots"]["skill"]["base"] = 4;
|
player.pers["bots"]["skill"]["base"] = 4;
|
||||||
@ -428,14 +456,15 @@ diffBots_loop()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (var_skill != 0 && var_skill != 9)
|
else if ( var_skill != 0 && var_skill != 9 )
|
||||||
{
|
{
|
||||||
playercount = level.players.size;
|
playercount = level.players.size;
|
||||||
for(i = 0; i < playercount; i++)
|
|
||||||
|
for ( i = 0; i < playercount; i++ )
|
||||||
{
|
{
|
||||||
player = level.players[i];
|
player = level.players[i];
|
||||||
|
|
||||||
if(!player is_bot())
|
if ( !player is_bot() )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
player.pers["bots"]["skill"]["base"] = var_skill;
|
player.pers["bots"]["skill"]["base"] = var_skill;
|
||||||
@ -448,7 +477,7 @@ diffBots_loop()
|
|||||||
*/
|
*/
|
||||||
diffBots()
|
diffBots()
|
||||||
{
|
{
|
||||||
for(;;)
|
for ( ;; )
|
||||||
{
|
{
|
||||||
wait 1.5;
|
wait 1.5;
|
||||||
|
|
||||||
@ -461,8 +490,8 @@ diffBots()
|
|||||||
*/
|
*/
|
||||||
teamBots_loop()
|
teamBots_loop()
|
||||||
{
|
{
|
||||||
teamAmount = getDvarInt("bots_team_amount");
|
teamAmount = getDvarInt( "bots_team_amount" );
|
||||||
toTeam = getDvar("bots_team");
|
toTeam = getDvar( "bots_team" );
|
||||||
|
|
||||||
alliesbots = 0;
|
alliesbots = 0;
|
||||||
alliesplayers = 0;
|
alliesplayers = 0;
|
||||||
@ -470,25 +499,26 @@ teamBots_loop()
|
|||||||
axisplayers = 0;
|
axisplayers = 0;
|
||||||
|
|
||||||
playercount = level.players.size;
|
playercount = level.players.size;
|
||||||
for(i = 0; i < playercount; i++)
|
|
||||||
|
for ( i = 0; i < playercount; i++ )
|
||||||
{
|
{
|
||||||
player = level.players[i];
|
player = level.players[i];
|
||||||
|
|
||||||
if(!isDefined(player.pers["team"]))
|
if ( !isDefined( player.pers["team"] ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if(player is_bot())
|
if ( player is_bot() )
|
||||||
{
|
{
|
||||||
if(player.pers["team"] == "allies")
|
if ( player.pers["team"] == "allies" )
|
||||||
alliesbots++;
|
alliesbots++;
|
||||||
else if(player.pers["team"] == "axis")
|
else if ( player.pers["team"] == "axis" )
|
||||||
axisbots++;
|
axisbots++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(player.pers["team"] == "allies")
|
if ( player.pers["team"] == "allies" )
|
||||||
alliesplayers++;
|
alliesplayers++;
|
||||||
else if(player.pers["team"] == "axis")
|
else if ( player.pers["team"] == "axis" )
|
||||||
axisplayers++;
|
axisplayers++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -496,48 +526,51 @@ teamBots_loop()
|
|||||||
allies = alliesbots;
|
allies = alliesbots;
|
||||||
axis = axisbots;
|
axis = axisbots;
|
||||||
|
|
||||||
if(!getDvarInt("bots_team_mode"))
|
if ( !getDvarInt( "bots_team_mode" ) )
|
||||||
{
|
{
|
||||||
allies += alliesplayers;
|
allies += alliesplayers;
|
||||||
axis += axisplayers;
|
axis += axisplayers;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(toTeam != "custom")
|
if ( toTeam != "custom" )
|
||||||
{
|
{
|
||||||
if(getDvarInt("bots_team_force"))
|
if ( getDvarInt( "bots_team_force" ) )
|
||||||
{
|
{
|
||||||
if(toTeam == "autoassign")
|
if ( toTeam == "autoassign" )
|
||||||
{
|
{
|
||||||
if(abs(axis - allies) > 1)
|
if ( abs( axis - allies ) > 1 )
|
||||||
{
|
{
|
||||||
toTeam = "axis";
|
toTeam = "axis";
|
||||||
if(axis > allies)
|
|
||||||
|
if ( axis > allies )
|
||||||
toTeam = "allies";
|
toTeam = "allies";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(toTeam != "autoassign")
|
if ( toTeam != "autoassign" )
|
||||||
{
|
{
|
||||||
playercount = level.players.size;
|
playercount = level.players.size;
|
||||||
for(i = 0; i < playercount; i++)
|
|
||||||
|
for ( i = 0; i < playercount; i++ )
|
||||||
{
|
{
|
||||||
player = level.players[i];
|
player = level.players[i];
|
||||||
|
|
||||||
if(!isDefined(player.pers["team"]))
|
if ( !isDefined( player.pers["team"] ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if(!player is_bot())
|
if ( !player is_bot() )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if(player.pers["team"] == toTeam)
|
if ( player.pers["team"] == toTeam )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (toTeam == "allies")
|
if ( toTeam == "allies" )
|
||||||
player thread [[level.allies]]();
|
player thread [[level.allies]]();
|
||||||
else if (toTeam == "axis")
|
else if ( toTeam == "axis" )
|
||||||
player thread [[level.axis]]();
|
player thread [[level.axis]]();
|
||||||
else
|
else
|
||||||
player thread [[level.spectator]]();
|
player thread [[level.spectator]]();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -546,19 +579,20 @@ teamBots_loop()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
playercount = level.players.size;
|
playercount = level.players.size;
|
||||||
for(i = 0; i < playercount; i++)
|
|
||||||
|
for ( i = 0; i < playercount; i++ )
|
||||||
{
|
{
|
||||||
player = level.players[i];
|
player = level.players[i];
|
||||||
|
|
||||||
if(!isDefined(player.pers["team"]))
|
if ( !isDefined( player.pers["team"] ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if(!player is_bot())
|
if ( !player is_bot() )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if(player.pers["team"] == "axis")
|
if ( player.pers["team"] == "axis" )
|
||||||
{
|
{
|
||||||
if(axis > teamAmount)
|
if ( axis > teamAmount )
|
||||||
{
|
{
|
||||||
player thread [[level.allies]]();
|
player thread [[level.allies]]();
|
||||||
break;
|
break;
|
||||||
@ -566,12 +600,12 @@ teamBots_loop()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(axis < teamAmount)
|
if ( axis < teamAmount )
|
||||||
{
|
{
|
||||||
player thread [[level.axis]]();
|
player thread [[level.axis]]();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if(player.pers["team"] != "allies")
|
else if ( player.pers["team"] != "allies" )
|
||||||
{
|
{
|
||||||
player thread [[level.allies]]();
|
player thread [[level.allies]]();
|
||||||
break;
|
break;
|
||||||
@ -586,7 +620,7 @@ teamBots_loop()
|
|||||||
*/
|
*/
|
||||||
teamBots()
|
teamBots()
|
||||||
{
|
{
|
||||||
for(;;)
|
for ( ;; )
|
||||||
{
|
{
|
||||||
wait 1.5;
|
wait 1.5;
|
||||||
|
|
||||||
@ -599,84 +633,86 @@ teamBots()
|
|||||||
*/
|
*/
|
||||||
addBots_loop()
|
addBots_loop()
|
||||||
{
|
{
|
||||||
botsToAdd = GetDvarInt("bots_manage_add");
|
botsToAdd = GetDvarInt( "bots_manage_add" );
|
||||||
|
|
||||||
if(botsToAdd > 0)
|
if ( botsToAdd > 0 )
|
||||||
{
|
{
|
||||||
SetDvar("bots_manage_add", 0);
|
SetDvar( "bots_manage_add", 0 );
|
||||||
|
|
||||||
if(botsToAdd > 64)
|
if ( botsToAdd > 64 )
|
||||||
botsToAdd = 64;
|
botsToAdd = 64;
|
||||||
|
|
||||||
for(; botsToAdd > 0; botsToAdd--)
|
for ( ; botsToAdd > 0; botsToAdd-- )
|
||||||
{
|
{
|
||||||
level add_bot();
|
level add_bot();
|
||||||
wait 0.25;
|
wait 0.25;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fillMode = getDVarInt("bots_manage_fill_mode");
|
fillMode = getDVarInt( "bots_manage_fill_mode" );
|
||||||
|
|
||||||
if(fillMode == 2 || fillMode == 3)
|
if ( fillMode == 2 || fillMode == 3 )
|
||||||
setDvar("bots_manage_fill", getGoodMapAmount());
|
setDvar( "bots_manage_fill", getGoodMapAmount() );
|
||||||
|
|
||||||
fillAmount = getDvarInt("bots_manage_fill");
|
fillAmount = getDvarInt( "bots_manage_fill" );
|
||||||
|
|
||||||
players = 0;
|
players = 0;
|
||||||
bots = 0;
|
bots = 0;
|
||||||
spec = 0;
|
spec = 0;
|
||||||
|
|
||||||
playercount = level.players.size;
|
playercount = level.players.size;
|
||||||
for(i = 0; i < playercount; i++)
|
|
||||||
|
for ( i = 0; i < playercount; i++ )
|
||||||
{
|
{
|
||||||
player = level.players[i];
|
player = level.players[i];
|
||||||
|
|
||||||
if(player is_bot())
|
if ( player is_bot() )
|
||||||
bots++;
|
bots++;
|
||||||
else if(!isDefined(player.pers["team"]) || (player.pers["team"] != "axis" && player.pers["team"] != "allies"))
|
else if ( !isDefined( player.pers["team"] ) || ( player.pers["team"] != "axis" && player.pers["team"] != "allies" ) )
|
||||||
spec++;
|
spec++;
|
||||||
else
|
else
|
||||||
players++;
|
players++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!randomInt(999))
|
if ( !randomInt( 999 ) )
|
||||||
{
|
{
|
||||||
setDvar("testclients_doreload", true);
|
setDvar( "testclients_doreload", true );
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
setDvar("testclients_doreload", false);
|
setDvar( "testclients_doreload", false );
|
||||||
doExtraCheck();
|
doExtraCheck();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(fillMode == 4)
|
if ( fillMode == 4 )
|
||||||
{
|
{
|
||||||
axisplayers = 0;
|
axisplayers = 0;
|
||||||
alliesplayers = 0;
|
alliesplayers = 0;
|
||||||
|
|
||||||
playercount = level.players.size;
|
playercount = level.players.size;
|
||||||
for(i = 0; i < playercount; i++)
|
|
||||||
|
for ( i = 0; i < playercount; i++ )
|
||||||
{
|
{
|
||||||
player = level.players[i];
|
player = level.players[i];
|
||||||
|
|
||||||
if(player is_bot())
|
if ( player is_bot() )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if(!isDefined(player.pers["team"]))
|
if ( !isDefined( player.pers["team"] ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if(player.pers["team"] == "axis")
|
if ( player.pers["team"] == "axis" )
|
||||||
axisplayers++;
|
axisplayers++;
|
||||||
else if(player.pers["team"] == "allies")
|
else if ( player.pers["team"] == "allies" )
|
||||||
alliesplayers++;
|
alliesplayers++;
|
||||||
}
|
}
|
||||||
|
|
||||||
result = fillAmount - abs(axisplayers - alliesplayers) + bots;
|
result = fillAmount - abs( axisplayers - alliesplayers ) + bots;
|
||||||
|
|
||||||
if (players == 0)
|
if ( players == 0 )
|
||||||
{
|
{
|
||||||
if(bots < fillAmount)
|
if ( bots < fillAmount )
|
||||||
result = fillAmount-1;
|
result = fillAmount - 1;
|
||||||
else if (bots > fillAmount)
|
else if ( bots > fillAmount )
|
||||||
result = fillAmount+1;
|
result = fillAmount + 1;
|
||||||
else
|
else
|
||||||
result = fillAmount;
|
result = fillAmount;
|
||||||
}
|
}
|
||||||
@ -685,14 +721,16 @@ addBots_loop()
|
|||||||
}
|
}
|
||||||
|
|
||||||
amount = bots;
|
amount = bots;
|
||||||
if(fillMode == 0 || fillMode == 2)
|
|
||||||
|
if ( fillMode == 0 || fillMode == 2 )
|
||||||
amount += players;
|
amount += players;
|
||||||
if(getDVarInt("bots_manage_fill_spec"))
|
|
||||||
|
if ( getDVarInt( "bots_manage_fill_spec" ) )
|
||||||
amount += spec;
|
amount += spec;
|
||||||
|
|
||||||
if(amount < fillAmount)
|
if ( amount < fillAmount )
|
||||||
setDvar("bots_manage_add", 1);
|
setDvar( "bots_manage_add", 1 );
|
||||||
else if(amount > fillAmount && getDvarInt("bots_manage_fill_kick"))
|
else if ( amount > fillAmount && getDvarInt( "bots_manage_fill_kick" ) )
|
||||||
{
|
{
|
||||||
RemoveTestClient(); //cod4x
|
RemoveTestClient(); //cod4x
|
||||||
}
|
}
|
||||||
@ -703,11 +741,11 @@ addBots_loop()
|
|||||||
*/
|
*/
|
||||||
addBots()
|
addBots()
|
||||||
{
|
{
|
||||||
level endon("game_ended");
|
level endon( "game_ended" );
|
||||||
|
|
||||||
bot_wait_for_host();
|
bot_wait_for_host();
|
||||||
|
|
||||||
for(;;)
|
for ( ;; )
|
||||||
{
|
{
|
||||||
wait 1.5;
|
wait 1.5;
|
||||||
|
|
||||||
@ -720,16 +758,18 @@ addBots()
|
|||||||
*/
|
*/
|
||||||
onGrenadeFire()
|
onGrenadeFire()
|
||||||
{
|
{
|
||||||
self endon("disconnect");
|
self endon( "disconnect" );
|
||||||
for(;;)
|
|
||||||
|
for ( ;; )
|
||||||
{
|
{
|
||||||
self waittill ( "grenade_fire", grenade, weaponName );
|
self waittill ( "grenade_fire", grenade, weaponName );
|
||||||
|
|
||||||
if (!isDefined(grenade))
|
if ( !isDefined( grenade ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
grenade.name = weaponName;
|
grenade.name = weaponName;
|
||||||
if(weaponName == "smoke_grenade_mp")
|
|
||||||
|
if ( weaponName == "smoke_grenade_mp" )
|
||||||
grenade thread AddToSmokeList();
|
grenade thread AddToSmokeList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -746,7 +786,7 @@ AddToSmokeList()
|
|||||||
|
|
||||||
grenade thread thinkSmoke();
|
grenade thread thinkSmoke();
|
||||||
|
|
||||||
level.bots_smokeList ListAdd(grenade);
|
level.bots_smokeList ListAdd( grenade );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -754,16 +794,17 @@ AddToSmokeList()
|
|||||||
*/
|
*/
|
||||||
thinkSmoke()
|
thinkSmoke()
|
||||||
{
|
{
|
||||||
while(isDefined(self.grenade))
|
while ( isDefined( self.grenade ) )
|
||||||
{
|
{
|
||||||
self.origin = self.grenade getOrigin();
|
self.origin = self.grenade getOrigin();
|
||||||
self.state = "moving";
|
self.state = "moving";
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
}
|
}
|
||||||
|
|
||||||
self.state = "smoking";
|
self.state = "smoking";
|
||||||
wait 11.5;
|
wait 11.5;
|
||||||
|
|
||||||
level.bots_smokeList ListRemove(self);
|
level.bots_smokeList ListRemove( self );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -771,17 +812,18 @@ thinkSmoke()
|
|||||||
*/
|
*/
|
||||||
chopperWatch()
|
chopperWatch()
|
||||||
{
|
{
|
||||||
for(;;)
|
for ( ;; )
|
||||||
{
|
{
|
||||||
while(!isDefined(level.chopper))
|
while ( !isDefined( level.chopper ) )
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
|
||||||
chopper = level.chopper;
|
chopper = level.chopper;
|
||||||
|
|
||||||
if (level.teamBased && getDvarInt("doubleHeli"))
|
if ( level.teamBased && getDvarInt( "doubleHeli" ) )
|
||||||
{
|
{
|
||||||
chopper = level.chopper["allies"];
|
chopper = level.chopper["allies"];
|
||||||
if (!isDefined(chopper))
|
|
||||||
|
if ( !isDefined( chopper ) )
|
||||||
chopper = level.chopper["axis"];
|
chopper = level.chopper["axis"];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -789,7 +831,7 @@ chopperWatch()
|
|||||||
chopper watchChopper();
|
chopper watchChopper();
|
||||||
level.bot_chopper = false;
|
level.bot_chopper = false;
|
||||||
|
|
||||||
while(isDefined(level.chopper))
|
while ( isDefined( level.chopper ) )
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -799,11 +841,11 @@ chopperWatch()
|
|||||||
*/
|
*/
|
||||||
watchChopper()
|
watchChopper()
|
||||||
{
|
{
|
||||||
self endon("death");
|
self endon( "death" );
|
||||||
self endon("leaving");
|
self endon( "leaving" );
|
||||||
self endon("crashing");
|
self endon( "crashing" );
|
||||||
|
|
||||||
level waittill("helicopter gone");
|
level waittill( "helicopter gone" );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -811,10 +853,10 @@ watchChopper()
|
|||||||
*/
|
*/
|
||||||
onUAVAxisUpdate()
|
onUAVAxisUpdate()
|
||||||
{
|
{
|
||||||
for(;;)
|
for ( ;; )
|
||||||
{
|
{
|
||||||
level waittill( "radar_timer_kill_axis" );
|
level waittill( "radar_timer_kill_axis" );
|
||||||
level thread doUAVUpdate("axis");
|
level thread doUAVUpdate( "axis" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -823,30 +865,30 @@ onUAVAxisUpdate()
|
|||||||
*/
|
*/
|
||||||
onUAVAlliesUpdate()
|
onUAVAlliesUpdate()
|
||||||
{
|
{
|
||||||
for(;;)
|
for ( ;; )
|
||||||
{
|
{
|
||||||
level waittill( "radar_timer_kill_allies" );
|
level waittill( "radar_timer_kill_allies" );
|
||||||
level thread doUAVUpdate("allies");
|
level thread doUAVUpdate( "allies" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Updates the player's radar so bots can know when they have a uav up, because iw3 script is old.
|
Updates the player's radar so bots can know when they have a uav up, because iw3 script is old.
|
||||||
*/
|
*/
|
||||||
doUAVUpdate(team)
|
doUAVUpdate( team )
|
||||||
{
|
{
|
||||||
level endon("radar_timer_kill_" + team);
|
level endon( "radar_timer_kill_" + team );
|
||||||
|
|
||||||
playercount = level.players.size;
|
playercount = level.players.size;
|
||||||
|
|
||||||
for(i = 0; i < playercount; i++)
|
for ( i = 0; i < playercount; i++ )
|
||||||
{
|
{
|
||||||
player = level.players[i];
|
player = level.players[i];
|
||||||
|
|
||||||
if(!isDefined(player.team))
|
if ( !isDefined( player.team ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if(player.team == team)
|
if ( player.team == team )
|
||||||
{
|
{
|
||||||
player.bot_radar = true;
|
player.bot_radar = true;
|
||||||
}
|
}
|
||||||
@ -855,14 +897,15 @@ doUAVUpdate(team)
|
|||||||
wait level.radarViewTime;
|
wait level.radarViewTime;
|
||||||
|
|
||||||
playercount = level.players.size;
|
playercount = level.players.size;
|
||||||
for(i = 0; i < playercount; i++)
|
|
||||||
|
for ( i = 0; i < playercount; i++ )
|
||||||
{
|
{
|
||||||
player = level.players[i];
|
player = level.players[i];
|
||||||
|
|
||||||
if(!isDefined(player.team))
|
if ( !isDefined( player.team ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if(player.team == team)
|
if ( player.team == team )
|
||||||
{
|
{
|
||||||
player.bot_radar = false;
|
player.bot_radar = false;
|
||||||
}
|
}
|
||||||
@ -874,8 +917,8 @@ doUAVUpdate(team)
|
|||||||
*/
|
*/
|
||||||
doPlayerModelFix()
|
doPlayerModelFix()
|
||||||
{
|
{
|
||||||
self endon("disconnect");
|
self endon( "disconnect" );
|
||||||
self waittill("spawned_player");
|
self waittill( "spawned_player" );
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
self.bot_model_fix = true;
|
self.bot_model_fix = true;
|
||||||
}
|
}
|
||||||
@ -885,9 +928,10 @@ doPlayerModelFix()
|
|||||||
*/
|
*/
|
||||||
onWeaponFired()
|
onWeaponFired()
|
||||||
{
|
{
|
||||||
self endon("disconnect");
|
self endon( "disconnect" );
|
||||||
self.bots_firing = false;
|
self.bots_firing = false;
|
||||||
for(;;)
|
|
||||||
|
for ( ;; )
|
||||||
{
|
{
|
||||||
self waittill( "weapon_fired" );
|
self waittill( "weapon_fired" );
|
||||||
self thread doFiringThread();
|
self thread doFiringThread();
|
||||||
@ -899,8 +943,8 @@ onWeaponFired()
|
|||||||
*/
|
*/
|
||||||
doFiringThread()
|
doFiringThread()
|
||||||
{
|
{
|
||||||
self endon("disconnect");
|
self endon( "disconnect" );
|
||||||
self endon("weapon_fired");
|
self endon( "weapon_fired" );
|
||||||
self.bots_firing = true;
|
self.bots_firing = true;
|
||||||
wait 1;
|
wait 1;
|
||||||
self.bots_firing = false;
|
self.bots_firing = false;
|
||||||
|
@ -10,35 +10,35 @@
|
|||||||
/*
|
/*
|
||||||
Will attempt to retreive waypoints from the internet
|
Will attempt to retreive waypoints from the internet
|
||||||
*/
|
*/
|
||||||
getRemoteWaypoints(mapname)
|
getRemoteWaypoints( mapname )
|
||||||
{
|
{
|
||||||
url = "https://raw.githubusercontent.com/ineedbots/cod4x_waypoints/master/" + mapname + "_wp.csv";
|
url = "https://raw.githubusercontent.com/ineedbots/cod4x_waypoints/master/" + mapname + "_wp.csv";
|
||||||
filename = "waypoints/" + mapname + "_wp.csv";
|
filename = "waypoints/" + mapname + "_wp.csv";
|
||||||
|
|
||||||
printToConsole("Attempting to get remote waypoints from " + url);
|
printToConsole( "Attempting to get remote waypoints from " + url );
|
||||||
res = getLinesFromUrl(url, filename);
|
res = getLinesFromUrl( url, filename );
|
||||||
|
|
||||||
if (!res.lines.size)
|
if ( !res.lines.size )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
waypointCount = int(res.lines[0]);
|
waypointCount = int( res.lines[0] );
|
||||||
|
|
||||||
waypoints = [];
|
waypoints = [];
|
||||||
printToConsole("Loading remote waypoints...");
|
printToConsole( "Loading remote waypoints..." );
|
||||||
|
|
||||||
for (i = 1; i <= waypointCount; i++)
|
for ( i = 1; i <= waypointCount; i++ )
|
||||||
{
|
{
|
||||||
tokens = tokenizeLine(res.lines[i], ",");
|
tokens = tokenizeLine( res.lines[i], "," );
|
||||||
|
|
||||||
waypoint = parseTokensIntoWaypoint(tokens);
|
waypoint = parseTokensIntoWaypoint( tokens );
|
||||||
|
|
||||||
waypoints[i-1] = waypoint;
|
waypoints[i - 1] = waypoint;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (waypoints.size)
|
if ( waypoints.size )
|
||||||
{
|
{
|
||||||
level.waypoints = waypoints;
|
level.waypoints = waypoints;
|
||||||
printToConsole("Loaded " + waypoints.size + " waypoints from remote.");
|
printToConsole( "Loaded " + waypoints.size + " waypoints from remote." );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -49,20 +49,20 @@ doVersionCheck()
|
|||||||
{
|
{
|
||||||
remoteVersion = getRemoteVersion();
|
remoteVersion = getRemoteVersion();
|
||||||
|
|
||||||
if (!isDefined(remoteVersion))
|
if ( !isDefined( remoteVersion ) )
|
||||||
{
|
{
|
||||||
printToConsole("Error getting remote version of Bot Warfare.");
|
printToConsole( "Error getting remote version of Bot Warfare." );
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (level.bw_VERSION != remoteVersion)
|
if ( level.bw_VERSION != remoteVersion )
|
||||||
{
|
{
|
||||||
printToConsole("There is a new version of Bot Warfare!");
|
printToConsole( "There is a new version of Bot Warfare!" );
|
||||||
printToConsole("You are on version " + level.bw_VERSION + " but " + remoteVersion + " is available!");
|
printToConsole( "You are on version " + level.bw_VERSION + " but " + remoteVersion + " is available!" );
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
printToConsole("You are on the latest version of Bot Warfare!");
|
printToConsole( "You are on the latest version of Bot Warfare!" );
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -77,16 +77,16 @@ getRemoteVersion()
|
|||||||
data = undefined;
|
data = undefined;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!isDefined(data))
|
if ( !isDefined( data ) )
|
||||||
return undefined;
|
return undefined;
|
||||||
|
|
||||||
return strtok(data, "\n")[0];
|
return strtok( data, "\n" )[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Returns an array of each line from the response of the http url request
|
Returns an array of each line from the response of the http url request
|
||||||
*/
|
*/
|
||||||
getLinesFromUrl(url, filename)
|
getLinesFromUrl( url, filename )
|
||||||
{
|
{
|
||||||
result = spawnStruct();
|
result = spawnStruct();
|
||||||
result.lines = [];
|
result.lines = [];
|
||||||
@ -97,25 +97,26 @@ getLinesFromUrl(url, filename)
|
|||||||
data = undefined;
|
data = undefined;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!isDefined(data))
|
if ( !isDefined( data ) )
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
fd = FS_FOpen(filename, "write");
|
fd = FS_FOpen( filename, "write" );
|
||||||
|
|
||||||
line = "";
|
line = "";
|
||||||
for (i=0;i<data.size;i++)
|
|
||||||
|
for ( i = 0; i < data.size; i++ )
|
||||||
{
|
{
|
||||||
c = data[i];
|
c = data[i];
|
||||||
|
|
||||||
if (c == "\n")
|
if ( c == "\n" )
|
||||||
{
|
{
|
||||||
result.lines[result.lines.size] = line;
|
result.lines[result.lines.size] = line;
|
||||||
|
|
||||||
if (fd > 0)
|
if ( fd > 0 )
|
||||||
{
|
{
|
||||||
if (!FS_WriteLine(fd, line))
|
if ( !FS_WriteLine( fd, line ) )
|
||||||
{
|
{
|
||||||
FS_FClose(fd);
|
FS_FClose( fd );
|
||||||
fd = 0;
|
fd = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -126,10 +127,11 @@ getLinesFromUrl(url, filename)
|
|||||||
|
|
||||||
line += c;
|
line += c;
|
||||||
}
|
}
|
||||||
|
|
||||||
result.lines[result.lines.size] = line;
|
result.lines[result.lines.size] = line;
|
||||||
|
|
||||||
if (fd > 0)
|
if ( fd > 0 )
|
||||||
FS_FClose(fd);
|
FS_FClose( fd );
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -12,80 +12,81 @@
|
|||||||
|
|
||||||
init()
|
init()
|
||||||
{
|
{
|
||||||
if(getDvar("bots_main_debug") == "")
|
if ( getDvar( "bots_main_debug" ) == "" )
|
||||||
setDvar("bots_main_debug", 0);
|
setDvar( "bots_main_debug", 0 );
|
||||||
|
|
||||||
if(!getDVarint("bots_main_debug"))
|
if ( !getDVarint( "bots_main_debug" ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(!getDVarint("developer"))
|
if ( !getDVarint( "developer" ) )
|
||||||
{
|
{
|
||||||
setdvar("developer_script", 1);
|
setdvar( "developer_script", 1 );
|
||||||
setdvar("developer", 1);
|
setdvar( "developer", 1 );
|
||||||
|
|
||||||
setdvar("sv_mapRotation", "map "+getDvar("mapname"));
|
setdvar( "sv_mapRotation", "map " + getDvar( "mapname" ) );
|
||||||
exitLevel(false);
|
exitLevel( false );
|
||||||
}
|
}
|
||||||
|
|
||||||
setDvar("bots_main", 0);
|
setDvar( "bots_main", 0 );
|
||||||
setdvar("bots_main_menu", 0);
|
setdvar( "bots_main_menu", 0 );
|
||||||
setdvar("bots_manage_fill_mode", 0);
|
setdvar( "bots_manage_fill_mode", 0 );
|
||||||
setdvar("bots_manage_fill", 0);
|
setdvar( "bots_manage_fill", 0 );
|
||||||
setdvar("bots_manage_add", 0);
|
setdvar( "bots_manage_add", 0 );
|
||||||
setdvar("bots_manage_fill_kick", 1);
|
setdvar( "bots_manage_fill_kick", 1 );
|
||||||
setDvar("bots_manage_fill_spec", 1);
|
setDvar( "bots_manage_fill_spec", 1 );
|
||||||
|
|
||||||
if (getDvar("bots_main_debug_distance") == "")
|
if ( getDvar( "bots_main_debug_distance" ) == "" )
|
||||||
setDvar("bots_main_debug_distance", 512.0);
|
setDvar( "bots_main_debug_distance", 512.0 );
|
||||||
|
|
||||||
if (getDvar("bots_main_debug_cone") == "")
|
if ( getDvar( "bots_main_debug_cone" ) == "" )
|
||||||
setDvar("bots_main_debug_cone", 0.65);
|
setDvar( "bots_main_debug_cone", 0.65 );
|
||||||
|
|
||||||
if (getDvar("bots_main_debug_minDist") == "")
|
if ( getDvar( "bots_main_debug_minDist" ) == "" )
|
||||||
setDvar("bots_main_debug_minDist", 32.0);
|
setDvar( "bots_main_debug_minDist", 32.0 );
|
||||||
|
|
||||||
if (getDvar("bots_main_debug_drawThrough") == "")
|
if ( getDvar( "bots_main_debug_drawThrough" ) == "" )
|
||||||
setDvar("bots_main_debug_drawThrough", false);
|
setDvar( "bots_main_debug_drawThrough", false );
|
||||||
|
|
||||||
if(getDvar("bots_main_debug_commandWait") == "")
|
if ( getDvar( "bots_main_debug_commandWait" ) == "" )
|
||||||
setDvar("bots_main_debug_commandWait", 0.5);
|
setDvar( "bots_main_debug_commandWait", 0.5 );
|
||||||
|
|
||||||
if(getDvar("bots_main_debug_framerate") == "")
|
if ( getDvar( "bots_main_debug_framerate" ) == "" )
|
||||||
setDvar("bots_main_debug_framerate", 58);
|
setDvar( "bots_main_debug_framerate", 58 );
|
||||||
|
|
||||||
if(getDvar("bots_main_debug_lineDuration") == "")
|
if ( getDvar( "bots_main_debug_lineDuration" ) == "" )
|
||||||
setDvar("bots_main_debug_lineDuration", 3);
|
setDvar( "bots_main_debug_lineDuration", 3 );
|
||||||
|
|
||||||
if(getDvar("bots_main_debug_printDuration") == "")
|
if ( getDvar( "bots_main_debug_printDuration" ) == "" )
|
||||||
setDvar("bots_main_debug_printDuration", 3);
|
setDvar( "bots_main_debug_printDuration", 3 );
|
||||||
|
|
||||||
if(getDvar("bots_main_debug_debugRate") == "")
|
if ( getDvar( "bots_main_debug_debugRate" ) == "" )
|
||||||
setDvar("bots_main_debug_debugRate", 0.5);
|
setDvar( "bots_main_debug_debugRate", 0.5 );
|
||||||
|
|
||||||
setDvar("player_sustainAmmo", 1);
|
setDvar( "player_sustainAmmo", 1 );
|
||||||
|
|
||||||
level.waypoints = [];
|
level.waypoints = [];
|
||||||
level.waypointCount = 0;
|
level.waypointCount = 0;
|
||||||
|
|
||||||
level waittill( "connected", player);
|
level waittill( "connected", player );
|
||||||
|
|
||||||
player thread onPlayerSpawned();
|
player thread onPlayerSpawned();
|
||||||
}
|
}
|
||||||
|
|
||||||
onPlayerSpawned()
|
onPlayerSpawned()
|
||||||
{
|
{
|
||||||
self endon("disconnect");
|
self endon( "disconnect" );
|
||||||
for(;;)
|
|
||||||
|
for ( ;; )
|
||||||
{
|
{
|
||||||
self waittill("spawned_player");
|
self waittill( "spawned_player" );
|
||||||
self thread beginDebug();
|
self thread beginDebug();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
beginDebug()
|
beginDebug()
|
||||||
{
|
{
|
||||||
self endon("disconnect");
|
self endon( "disconnect" );
|
||||||
self endon("death");
|
self endon( "death" );
|
||||||
|
|
||||||
level.wpToLink = -1;
|
level.wpToLink = -1;
|
||||||
level.autoLink = false;
|
level.autoLink = false;
|
||||||
@ -95,10 +96,10 @@ beginDebug()
|
|||||||
self clearPerks();
|
self clearPerks();
|
||||||
self takeAllWeapons();
|
self takeAllWeapons();
|
||||||
self.specialty = [];
|
self.specialty = [];
|
||||||
self giveWeapon("m16_gl_mp");
|
self giveWeapon( "m16_gl_mp" );
|
||||||
self SetActionSlot( 3, "altMode" );
|
self SetActionSlot( 3, "altMode" );
|
||||||
self giveWeapon("frag_grenade_mp");
|
self giveWeapon( "frag_grenade_mp" );
|
||||||
self freezecontrols(false);
|
self freezecontrols( false );
|
||||||
|
|
||||||
self thread debug();
|
self thread debug();
|
||||||
self thread addWaypoints();
|
self thread addWaypoints();
|
||||||
@ -107,265 +108,277 @@ beginDebug()
|
|||||||
self thread watchSaveWaypointsCommand();
|
self thread watchSaveWaypointsCommand();
|
||||||
self thread sayExtras();
|
self thread sayExtras();
|
||||||
|
|
||||||
self thread textScroll("^1SecondaryOffhand - ^2Add Waypoint; ^3MeleeButton - ^4Link Waypoint; ^5FragButton - ^6Delete Waypoint; ^7UseButton + AttackButton - ^8Save");
|
self thread textScroll( "^1SecondaryOffhand - ^2Add Waypoint; ^3MeleeButton - ^4Link Waypoint; ^5FragButton - ^6Delete Waypoint; ^7UseButton + AttackButton - ^8Save" );
|
||||||
}
|
}
|
||||||
|
|
||||||
sayExtras()
|
sayExtras()
|
||||||
{
|
{
|
||||||
self endon("disconnect");
|
self endon( "disconnect" );
|
||||||
self endon("death");
|
self endon( "death" );
|
||||||
self iprintln("Making a crouch waypoint with only one link...");
|
self iprintln( "Making a crouch waypoint with only one link..." );
|
||||||
self iprintln("Makes a camping waypoint.");
|
self iprintln( "Makes a camping waypoint." );
|
||||||
}
|
}
|
||||||
|
|
||||||
debug()
|
debug()
|
||||||
{
|
{
|
||||||
self endon("disconnect");
|
self endon( "disconnect" );
|
||||||
self endon("death");
|
self endon( "death" );
|
||||||
|
|
||||||
self setClientDvar("com_maxfps", getDvarInt("bots_main_debug_framerate"));
|
self setClientDvar( "com_maxfps", getDvarInt( "bots_main_debug_framerate" ) );
|
||||||
|
|
||||||
for(;;)
|
for ( ;; )
|
||||||
{
|
{
|
||||||
wait getDvarFloat("bots_main_debug_debugRate");
|
wait getDvarFloat( "bots_main_debug_debugRate" );
|
||||||
|
|
||||||
if(isDefined(self.command))
|
if ( isDefined( self.command ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
closest = -1;
|
closest = -1;
|
||||||
myEye = self getTagOrigin( "j_head" );
|
myEye = self getTagOrigin( "j_head" );
|
||||||
myAngles = self GetPlayerAngles();
|
myAngles = self GetPlayerAngles();
|
||||||
|
|
||||||
for(i = 0; i < level.waypointCount; i++)
|
for ( i = 0; i < level.waypointCount; i++ )
|
||||||
{
|
{
|
||||||
if(closest == -1 || closer(self.origin, level.waypoints[i].origin, level.waypoints[closest].origin))
|
if ( closest == -1 || closer( self.origin, level.waypoints[i].origin, level.waypoints[closest].origin ) )
|
||||||
closest = i;
|
closest = i;
|
||||||
|
|
||||||
wpOrg = level.waypoints[i].origin + (0, 0, 25);
|
wpOrg = level.waypoints[i].origin + ( 0, 0, 25 );
|
||||||
|
|
||||||
if(distance(level.waypoints[i].origin, self.origin) < getDvarFloat("bots_main_debug_distance") && (bulletTracePassed(myEye, wpOrg, false, self) || getDVarint("bots_main_debug_drawThrough")))
|
if ( distance( level.waypoints[i].origin, self.origin ) < getDvarFloat( "bots_main_debug_distance" ) && ( bulletTracePassed( myEye, wpOrg, false, self ) || getDVarint( "bots_main_debug_drawThrough" ) ) )
|
||||||
{
|
{
|
||||||
for(h = level.waypoints[i].children.size - 1; h >= 0; h--)
|
for ( h = level.waypoints[i].children.size - 1; h >= 0; h-- )
|
||||||
line(wpOrg, level.waypoints[level.waypoints[i].children[h]].origin + (0, 0, 25), (1,0,1), 1, 1, getDvarInt("bots_main_debug_lineDuration"));
|
line( wpOrg, level.waypoints[level.waypoints[i].children[h]].origin + ( 0, 0, 25 ), ( 1, 0, 1 ), 1, 1, getDvarInt( "bots_main_debug_lineDuration" ) );
|
||||||
|
|
||||||
if(getConeDot(wpOrg, myEye, myAngles) > getDvarFloat("bots_main_debug_cone"))
|
if ( getConeDot( wpOrg, myEye, myAngles ) > getDvarFloat( "bots_main_debug_cone" ) )
|
||||||
print3d(wpOrg, i, (1,0,0), 2, 1, 6);
|
print3d( wpOrg, i, ( 1, 0, 0 ), 2, 1, 6 );
|
||||||
|
|
||||||
if (isDefined(level.waypoints[i].angles) && level.waypoints[i].type != "stand")
|
if ( isDefined( level.waypoints[i].angles ) && level.waypoints[i].type != "stand" )
|
||||||
line(wpOrg, wpOrg + AnglesToForward(level.waypoints[i].angles) * 64, (1,1,1), 1, 1, getDvarInt("bots_main_debug_lineDuration"));
|
line( wpOrg, wpOrg + AnglesToForward( level.waypoints[i].angles ) * 64, ( 1, 1, 1 ), 1, 1, getDvarInt( "bots_main_debug_lineDuration" ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self.closest = closest;
|
self.closest = closest;
|
||||||
|
|
||||||
if(closest != -1)
|
if ( closest != -1 )
|
||||||
{
|
{
|
||||||
stringChildren = "";
|
stringChildren = "";
|
||||||
for(i = 0; i < level.waypoints[closest].children.size; i++)
|
|
||||||
|
for ( i = 0; i < level.waypoints[closest].children.size; i++ )
|
||||||
{
|
{
|
||||||
if(i != 0)
|
if ( i != 0 )
|
||||||
stringChildren = stringChildren + "," + level.waypoints[closest].children[i];
|
stringChildren = stringChildren + "," + level.waypoints[closest].children[i];
|
||||||
else
|
else
|
||||||
stringChildren = stringChildren + level.waypoints[closest].children[i];
|
stringChildren = stringChildren + level.waypoints[closest].children[i];
|
||||||
}
|
}
|
||||||
print3d(level.waypoints[closest].origin + (0, 0, 35), stringChildren, (0,1,0), 2, 1, getDvarInt("bots_main_debug_printDuration"));
|
|
||||||
|
|
||||||
print3d(level.waypoints[closest].origin + (0, 0, 15), level.waypoints[closest].type, (0,1,0), 2, 1, getDvarInt("bots_main_debug_printDuration"));
|
print3d( level.waypoints[closest].origin + ( 0, 0, 35 ), stringChildren, ( 0, 1, 0 ), 2, 1, getDvarInt( "bots_main_debug_printDuration" ) );
|
||||||
|
|
||||||
|
print3d( level.waypoints[closest].origin + ( 0, 0, 15 ), level.waypoints[closest].type, ( 0, 1, 0 ), 2, 1, getDvarInt( "bots_main_debug_printDuration" ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
AddWaypoints()
|
AddWaypoints()
|
||||||
{
|
{
|
||||||
self endon("disconnect");
|
self endon( "disconnect" );
|
||||||
self endon("death");
|
self endon( "death" );
|
||||||
for(;;)
|
|
||||||
|
for ( ;; )
|
||||||
{
|
{
|
||||||
while(!self SecondaryOffhandButtonPressed() || isDefined(self.command))
|
while ( !self SecondaryOffhandButtonPressed() || isDefined( self.command ) )
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
|
||||||
pos = self getOrigin();
|
pos = self getOrigin();
|
||||||
self.command = true;
|
self.command = true;
|
||||||
|
|
||||||
self iprintln("Adding a waypoint...");
|
self iprintln( "Adding a waypoint..." );
|
||||||
self iprintln("ADS - climb; Attack + Use - tube");
|
self iprintln( "ADS - climb; Attack + Use - tube" );
|
||||||
self iprintln("Attack - grenade; Use - claymore");
|
self iprintln( "Attack - grenade; Use - claymore" );
|
||||||
self iprintln("Else(wait) - your stance");
|
self iprintln( "Else(wait) - your stance" );
|
||||||
|
|
||||||
wait getDvarFloat("bots_main_debug_commandWait");
|
wait getDvarFloat( "bots_main_debug_commandWait" );
|
||||||
|
|
||||||
self addWaypoint(pos);
|
self addWaypoint( pos );
|
||||||
|
|
||||||
self.command = undefined;
|
self.command = undefined;
|
||||||
|
|
||||||
while(self SecondaryOffhandButtonPressed())
|
while ( self SecondaryOffhandButtonPressed() )
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
linkWaypoints()
|
linkWaypoints()
|
||||||
{
|
{
|
||||||
self endon("disconnect");
|
self endon( "disconnect" );
|
||||||
self endon("death");
|
self endon( "death" );
|
||||||
for(;;)
|
|
||||||
|
for ( ;; )
|
||||||
{
|
{
|
||||||
while(!self MeleeButtonPressed() || isDefined(self.command))
|
while ( !self MeleeButtonPressed() || isDefined( self.command ) )
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
|
||||||
self.command = true;
|
self.command = true;
|
||||||
|
|
||||||
self iprintln("ADS - Unlink; Else(wait) - Link");
|
self iprintln( "ADS - Unlink; Else(wait) - Link" );
|
||||||
|
|
||||||
wait getDvarFloat("bots_main_debug_commandWait");
|
wait getDvarFloat( "bots_main_debug_commandWait" );
|
||||||
|
|
||||||
if(!self adsButtonPressed())
|
if ( !self adsButtonPressed() )
|
||||||
self LinkWaypoint(self.closest);
|
self LinkWaypoint( self.closest );
|
||||||
else
|
else
|
||||||
self UnLinkWaypoint(self.closest);
|
self UnLinkWaypoint( self.closest );
|
||||||
|
|
||||||
self.command = undefined;
|
self.command = undefined;
|
||||||
|
|
||||||
while(self MeleeButtonPressed())
|
while ( self MeleeButtonPressed() )
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteWaypoints()
|
deleteWaypoints()
|
||||||
{
|
{
|
||||||
self endon("disconnect");
|
self endon( "disconnect" );
|
||||||
self endon("death");
|
self endon( "death" );
|
||||||
for(;;)
|
|
||||||
|
for ( ;; )
|
||||||
{
|
{
|
||||||
while(!self fragButtonPressed() || isDefined(self.command))
|
while ( !self fragButtonPressed() || isDefined( self.command ) )
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
|
||||||
self.command = true;
|
self.command = true;
|
||||||
|
|
||||||
self iprintln("Attack - DeleteAll; ADS - Load");
|
self iprintln( "Attack - DeleteAll; ADS - Load" );
|
||||||
self iprintln("Else(wait) - Delete");
|
self iprintln( "Else(wait) - Delete" );
|
||||||
|
|
||||||
wait getDvarFloat("bots_main_debug_commandWait");
|
wait getDvarFloat( "bots_main_debug_commandWait" );
|
||||||
|
|
||||||
if(self attackButtonPressed())
|
if ( self attackButtonPressed() )
|
||||||
self deleteAllWaypoints();
|
self deleteAllWaypoints();
|
||||||
else if(self adsButtonPressed())
|
else if ( self adsButtonPressed() )
|
||||||
self LoadWaypoints();
|
self LoadWaypoints();
|
||||||
else
|
else
|
||||||
self DeleteWaypoint(self.closest);
|
self DeleteWaypoint( self.closest );
|
||||||
|
|
||||||
self.command = undefined;
|
self.command = undefined;
|
||||||
|
|
||||||
while(self fragButtonPressed())
|
while ( self fragButtonPressed() )
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
watchSaveWaypointsCommand()
|
watchSaveWaypointsCommand()
|
||||||
{
|
{
|
||||||
self endon("death");
|
self endon( "death" );
|
||||||
self endon("disconnect");
|
self endon( "disconnect" );
|
||||||
|
|
||||||
for(;;)
|
for ( ;; )
|
||||||
{
|
{
|
||||||
while(!self useButtonPressed() || !self attackButtonPressed() || isDefined(self.command))
|
while ( !self useButtonPressed() || !self attackButtonPressed() || isDefined( self.command ) )
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
|
||||||
self.command = true;
|
self.command = true;
|
||||||
|
|
||||||
self iprintln("ADS - Autolink; Else(wait) - Save");
|
self iprintln( "ADS - Autolink; Else(wait) - Save" );
|
||||||
|
|
||||||
wait getDvarFloat("bots_main_debug_commandWait");
|
wait getDvarFloat( "bots_main_debug_commandWait" );
|
||||||
|
|
||||||
if(!self adsButtonPressed())
|
if ( !self adsButtonPressed() )
|
||||||
{
|
{
|
||||||
self checkForWarnings();
|
self checkForWarnings();
|
||||||
wait 1;
|
wait 1;
|
||||||
|
|
||||||
logprint("***********ABiliTy's WPDump**************\n\n");
|
logprint( "***********ABiliTy's WPDump**************\n\n" );
|
||||||
logprint("\n\n\n\n");
|
logprint( "\n\n\n\n" );
|
||||||
mpnm=getMapName(getdvar("mapname"));
|
mpnm = getMapName( getdvar( "mapname" ) );
|
||||||
logprint("\n\n"+mpnm+"()\n{\n/*");
|
logprint( "\n\n" + mpnm + "()\n{\n/*" );
|
||||||
logprint("*/waypoints = [];\n/*");
|
logprint( "*/waypoints = [];\n/*" );
|
||||||
for(i = 0; i < level.waypointCount; i++)
|
|
||||||
|
for ( i = 0; i < level.waypointCount; i++ )
|
||||||
{
|
{
|
||||||
logprint("*/waypoints["+i+"] = spawnstruct();\n/*");
|
logprint( "*/waypoints[" + i + "] = spawnstruct();\n/*" );
|
||||||
logprint("*/waypoints["+i+"].origin = "+level.waypoints[i].origin+";\n/*");
|
logprint( "*/waypoints[" + i + "].origin = " + level.waypoints[i].origin + ";\n/*" );
|
||||||
logprint("*/waypoints["+i+"].type = \""+level.waypoints[i].type+"\";\n/*");
|
logprint( "*/waypoints[" + i + "].type = \"" + level.waypoints[i].type + "\";\n/*" );
|
||||||
for(c = 0; c < level.waypoints[i].children.size; c++)
|
|
||||||
|
for ( c = 0; c < level.waypoints[i].children.size; c++ )
|
||||||
{
|
{
|
||||||
logprint("*/waypoints["+i+"].children["+c+"] = "+level.waypoints[i].children[c]+";\n/*");
|
logprint( "*/waypoints[" + i + "].children[" + c + "] = " + level.waypoints[i].children[c] + ";\n/*" );
|
||||||
}
|
}
|
||||||
if(isDefined(level.waypoints[i].angles) && (level.waypoints[i].type == "claymore" || level.waypoints[i].type == "tube" || (level.waypoints[i].type == "crouch" && level.waypoints[i].children.size == 1) || level.waypoints[i].type == "climb" || level.waypoints[i].type == "grenade"))
|
|
||||||
logprint("*/waypoints["+i+"].angles = "+level.waypoints[i].angles+";\n/*");
|
if ( isDefined( level.waypoints[i].angles ) && ( level.waypoints[i].type == "claymore" || level.waypoints[i].type == "tube" || ( level.waypoints[i].type == "crouch" && level.waypoints[i].children.size == 1 ) || level.waypoints[i].type == "climb" || level.waypoints[i].type == "grenade" ) )
|
||||||
|
logprint( "*/waypoints[" + i + "].angles = " + level.waypoints[i].angles + ";\n/*" );
|
||||||
}
|
}
|
||||||
logprint("*/return waypoints;\n}\n\n\n\n");
|
|
||||||
|
|
||||||
filename = "waypoints/" + getdvar("mapname") + "_wp.csv";
|
logprint( "*/return waypoints;\n}\n\n\n\n" );
|
||||||
fd = FS_FOpen(filename, "write");
|
|
||||||
|
|
||||||
PrintLn("********* Start Bot Warfare WPDump *********");
|
filename = "waypoints/" + getdvar( "mapname" ) + "_wp.csv";
|
||||||
PrintLn(level.waypointCount);
|
fd = FS_FOpen( filename, "write" );
|
||||||
|
|
||||||
if (fd > 0)
|
PrintLn( "********* Start Bot Warfare WPDump *********" );
|
||||||
|
PrintLn( level.waypointCount );
|
||||||
|
|
||||||
|
if ( fd > 0 )
|
||||||
{
|
{
|
||||||
if (!FS_WriteLine(fd, level.waypointCount+""))
|
if ( !FS_WriteLine( fd, level.waypointCount + "" ) )
|
||||||
{
|
{
|
||||||
FS_FClose(fd);
|
FS_FClose( fd );
|
||||||
fd = 0;
|
fd = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for(i = 0; i < level.waypointCount; i++)
|
|
||||||
|
for ( i = 0; i < level.waypointCount; i++ )
|
||||||
{
|
{
|
||||||
str = "";
|
str = "";
|
||||||
wp = level.waypoints[i];
|
wp = level.waypoints[i];
|
||||||
|
|
||||||
str += wp.origin[0] + " " + wp.origin[1] + " " + wp.origin[2] + ",";
|
str += wp.origin[0] + " " + wp.origin[1] + " " + wp.origin[2] + ",";
|
||||||
|
|
||||||
for(h = 0; h < wp.children.size; h++)
|
for ( h = 0; h < wp.children.size; h++ )
|
||||||
{
|
{
|
||||||
str += wp.children[h];
|
str += wp.children[h];
|
||||||
|
|
||||||
if (h < wp.children.size - 1)
|
if ( h < wp.children.size - 1 )
|
||||||
str += " ";
|
str += " ";
|
||||||
}
|
}
|
||||||
|
|
||||||
str += "," + wp.type + ",";
|
str += "," + wp.type + ",";
|
||||||
|
|
||||||
if (isDefined(wp.angles))
|
if ( isDefined( wp.angles ) )
|
||||||
str += wp.angles[0] + " " + wp.angles[1] + " " + wp.angles[2] + ",";
|
str += wp.angles[0] + " " + wp.angles[1] + " " + wp.angles[2] + ",";
|
||||||
else
|
else
|
||||||
str += ",";
|
str += ",";
|
||||||
|
|
||||||
str += ",";
|
str += ",";
|
||||||
|
|
||||||
PrintLn(str);
|
PrintLn( str );
|
||||||
|
|
||||||
if (fd > 0)
|
if ( fd > 0 )
|
||||||
{
|
{
|
||||||
if (!FS_WriteLine(fd, str))
|
if ( !FS_WriteLine( fd, str ) )
|
||||||
{
|
{
|
||||||
FS_FClose(fd);
|
FS_FClose( fd );
|
||||||
fd = 0;
|
fd = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
PrintLn("\n\n\n\n\n\n");
|
|
||||||
|
|
||||||
self iprintln("Saved!!! to " + filename);
|
PrintLn( "\n\n\n\n\n\n" );
|
||||||
|
|
||||||
if (fd > 0)
|
self iprintln( "Saved!!! to " + filename );
|
||||||
FS_FClose(fd);
|
|
||||||
|
if ( fd > 0 )
|
||||||
|
FS_FClose( fd );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(level.autoLink)
|
if ( level.autoLink )
|
||||||
{
|
{
|
||||||
self iPrintlnBold("Auto link disabled");
|
self iPrintlnBold( "Auto link disabled" );
|
||||||
level.autoLink = false;
|
level.autoLink = false;
|
||||||
level.wpToLink = -1;
|
level.wpToLink = -1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
self iPrintlnBold("Auto link enabled");
|
self iPrintlnBold( "Auto link enabled" );
|
||||||
level.autoLink = true;
|
level.autoLink = true;
|
||||||
level.wpToLink = self.closest;
|
level.wpToLink = self.closest;
|
||||||
}
|
}
|
||||||
@ -373,7 +386,7 @@ watchSaveWaypointsCommand()
|
|||||||
|
|
||||||
self.command = undefined;
|
self.command = undefined;
|
||||||
|
|
||||||
while(self useButtonPressed() && self attackButtonPressed())
|
while ( self useButtonPressed() && self attackButtonPressed() )
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -381,7 +394,7 @@ watchSaveWaypointsCommand()
|
|||||||
LoadWaypoints()
|
LoadWaypoints()
|
||||||
{
|
{
|
||||||
self DeleteAllWaypoints();
|
self DeleteAllWaypoints();
|
||||||
self iPrintlnBold("Loading WPS...");
|
self iPrintlnBold( "Loading WPS..." );
|
||||||
load_waypoints();
|
load_waypoints();
|
||||||
|
|
||||||
wait 1;
|
wait 1;
|
||||||
@ -391,50 +404,50 @@ LoadWaypoints()
|
|||||||
|
|
||||||
checkForWarnings()
|
checkForWarnings()
|
||||||
{
|
{
|
||||||
if(level.waypointCount <= 0)
|
if ( level.waypointCount <= 0 )
|
||||||
self iprintln("WARNING: waypointCount is "+level.waypointCount);
|
self iprintln( "WARNING: waypointCount is " + level.waypointCount );
|
||||||
|
|
||||||
if(level.waypointCount != level.waypoints.size)
|
if ( level.waypointCount != level.waypoints.size )
|
||||||
self iprintln("WARNING: waypointCount is not "+level.waypoints.size);
|
self iprintln( "WARNING: waypointCount is not " + level.waypoints.size );
|
||||||
|
|
||||||
for(i = 0; i < level.waypointCount; i++)
|
for ( i = 0; i < level.waypointCount; i++ )
|
||||||
{
|
{
|
||||||
if(!isDefined(level.waypoints[i]))
|
if ( !isDefined( level.waypoints[i] ) )
|
||||||
{
|
{
|
||||||
self iprintln("WARNING: waypoint "+i+" is undefined");
|
self iprintln( "WARNING: waypoint " + i + " is undefined" );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(level.waypoints[i].children.size <= 0)
|
if ( level.waypoints[i].children.size <= 0 )
|
||||||
self iprintln("WARNING: waypoint "+i+" childCount is "+level.waypoints[i].children.size);
|
self iprintln( "WARNING: waypoint " + i + " childCount is " + level.waypoints[i].children.size );
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!isDefined(level.waypoints[i].children) || !isDefined(level.waypoints[i].children.size))
|
if ( !isDefined( level.waypoints[i].children ) || !isDefined( level.waypoints[i].children.size ) )
|
||||||
{
|
{
|
||||||
self iprintln("WARNING: waypoint "+i+" children is not defined");
|
self iprintln( "WARNING: waypoint " + i + " children is not defined" );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for(h = level.waypoints[i].children.size - 1; h >= 0; h--)
|
for ( h = level.waypoints[i].children.size - 1; h >= 0; h-- )
|
||||||
{
|
{
|
||||||
child = level.waypoints[i].children[h];
|
child = level.waypoints[i].children[h];
|
||||||
|
|
||||||
if(!isDefined(level.waypoints[child]))
|
if ( !isDefined( level.waypoints[child] ) )
|
||||||
self iprintln("WARNING: waypoint "+i+" child "+child+" is undefined");
|
self iprintln( "WARNING: waypoint " + i + " child " + child + " is undefined" );
|
||||||
else if(child == i)
|
else if ( child == i )
|
||||||
self iprintln("WARNING: waypoint "+i+" child "+child+" is itself");
|
self iprintln( "WARNING: waypoint " + i + " child " + child + " is itself" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!isDefined(level.waypoints[i].type))
|
if ( !isDefined( level.waypoints[i].type ) )
|
||||||
{
|
{
|
||||||
self iprintln("WARNING: waypoint "+i+" type is undefined");
|
self iprintln( "WARNING: waypoint " + i + " type is undefined" );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!isDefined(level.waypoints[i].angles) && (level.waypoints[i].type == "claymore" || level.waypoints[i].type == "tube" || (level.waypoints[i].type == "crouch" && level.waypoints[i].children.size == 1) || level.waypoints[i].type == "climb" || level.waypoints[i].type == "grenade"))
|
if ( !isDefined( level.waypoints[i].angles ) && ( level.waypoints[i].type == "claymore" || level.waypoints[i].type == "tube" || ( level.waypoints[i].type == "crouch" && level.waypoints[i].children.size == 1 ) || level.waypoints[i].type == "climb" || level.waypoints[i].type == "grenade" ) )
|
||||||
self iprintln("WARNING: waypoint "+i+" angles is undefined");
|
self iprintln( "WARNING: waypoint " + i + " angles is undefined" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -443,31 +456,31 @@ DeleteAllWaypoints()
|
|||||||
level.waypoints = [];
|
level.waypoints = [];
|
||||||
level.waypointCount = 0;
|
level.waypointCount = 0;
|
||||||
|
|
||||||
self iprintln("DelAllWps");
|
self iprintln( "DelAllWps" );
|
||||||
}
|
}
|
||||||
|
|
||||||
DeleteWaypoint(nwp)
|
DeleteWaypoint( nwp )
|
||||||
{
|
{
|
||||||
if(nwp == -1 || distance(self.origin, level.waypoints[nwp].origin) > getDvarFloat("bots_main_debug_minDist"))
|
if ( nwp == -1 || distance( self.origin, level.waypoints[nwp].origin ) > getDvarFloat( "bots_main_debug_minDist" ) )
|
||||||
{
|
{
|
||||||
self iprintln("No close enough waypoint to delete.");
|
self iprintln( "No close enough waypoint to delete." );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
level.wpToLink = -1;
|
level.wpToLink = -1;
|
||||||
|
|
||||||
for(i = level.waypoints[nwp].children.size - 1; i >= 0; i--)
|
for ( i = level.waypoints[nwp].children.size - 1; i >= 0; i-- )
|
||||||
{
|
{
|
||||||
child = level.waypoints[nwp].children[i];
|
child = level.waypoints[nwp].children[i];
|
||||||
|
|
||||||
level.waypoints[child].children = array_remove(level.waypoints[child].children, nwp);
|
level.waypoints[child].children = array_remove( level.waypoints[child].children, nwp );
|
||||||
}
|
}
|
||||||
|
|
||||||
for(i = 0; i < level.waypointCount; i++)
|
for ( i = 0; i < level.waypointCount; i++ )
|
||||||
{
|
{
|
||||||
for(h = level.waypoints[i].children.size - 1; h >= 0; h--)
|
for ( h = level.waypoints[i].children.size - 1; h >= 0; h-- )
|
||||||
{
|
{
|
||||||
if(level.waypoints[i].children[h] > nwp)
|
if ( level.waypoints[i].children[h] > nwp )
|
||||||
level.waypoints[i].children[h]--;
|
level.waypoints[i].children[h]--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -476,33 +489,35 @@ DeleteWaypoint(nwp)
|
|||||||
{
|
{
|
||||||
if ( entry == nwp )
|
if ( entry == nwp )
|
||||||
{
|
{
|
||||||
while ( entry < level.waypointCount-1 )
|
while ( entry < level.waypointCount - 1 )
|
||||||
{
|
{
|
||||||
level.waypoints[entry] = level.waypoints[entry+1];
|
level.waypoints[entry] = level.waypoints[entry + 1];
|
||||||
entry++;
|
entry++;
|
||||||
}
|
}
|
||||||
|
|
||||||
level.waypoints[entry] = undefined;
|
level.waypoints[entry] = undefined;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
level.waypointCount--;
|
level.waypointCount--;
|
||||||
|
|
||||||
self iprintln("DelWp "+nwp);
|
self iprintln( "DelWp " + nwp );
|
||||||
}
|
}
|
||||||
|
|
||||||
addWaypoint(pos)
|
addWaypoint( pos )
|
||||||
{
|
{
|
||||||
level.waypoints[level.waypointCount] = spawnstruct();
|
level.waypoints[level.waypointCount] = spawnstruct();
|
||||||
|
|
||||||
level.waypoints[level.waypointCount].origin = pos;
|
level.waypoints[level.waypointCount].origin = pos;
|
||||||
|
|
||||||
if(self AdsButtonPressed())
|
if ( self AdsButtonPressed() )
|
||||||
level.waypoints[level.waypointCount].type = "climb";
|
level.waypoints[level.waypointCount].type = "climb";
|
||||||
else if(self AttackButtonPressed() && self UseButtonPressed())
|
else if ( self AttackButtonPressed() && self UseButtonPressed() )
|
||||||
level.waypoints[level.waypointCount].type = "tube";
|
level.waypoints[level.waypointCount].type = "tube";
|
||||||
else if(self AttackButtonPressed())
|
else if ( self AttackButtonPressed() )
|
||||||
level.waypoints[level.waypointCount].type = "grenade";
|
level.waypoints[level.waypointCount].type = "grenade";
|
||||||
else if(self UseButtonPressed())
|
else if ( self UseButtonPressed() )
|
||||||
level.waypoints[level.waypointCount].type = "claymore";
|
level.waypoints[level.waypointCount].type = "claymore";
|
||||||
else
|
else
|
||||||
level.waypoints[level.waypointCount].type = self getStance();
|
level.waypoints[level.waypointCount].type = self getStance();
|
||||||
@ -511,15 +526,15 @@ addWaypoint(pos)
|
|||||||
|
|
||||||
level.waypoints[level.waypointCount].children = [];
|
level.waypoints[level.waypointCount].children = [];
|
||||||
|
|
||||||
self iprintln(level.waypoints[level.waypointCount].type + " Waypoint "+ level.waypointCount +" Added at "+pos);
|
self iprintln( level.waypoints[level.waypointCount].type + " Waypoint " + level.waypointCount + " Added at " + pos );
|
||||||
|
|
||||||
if(level.autoLink)
|
if ( level.autoLink )
|
||||||
{
|
{
|
||||||
if(level.wpToLink == -1)
|
if ( level.wpToLink == -1 )
|
||||||
level.wpToLink = level.waypointCount - 1;
|
level.wpToLink = level.waypointCount - 1;
|
||||||
|
|
||||||
level.waypointCount++;
|
level.waypointCount++;
|
||||||
self LinkWaypoint(level.waypointCount - 1);
|
self LinkWaypoint( level.waypointCount - 1 );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -527,59 +542,61 @@ addWaypoint(pos)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
UnLinkWaypoint(nwp)
|
UnLinkWaypoint( nwp )
|
||||||
{
|
{
|
||||||
if(nwp == -1 || distance(self.origin, level.waypoints[nwp].origin) > getDvarFloat("bots_main_debug_minDist"))
|
if ( nwp == -1 || distance( self.origin, level.waypoints[nwp].origin ) > getDvarFloat( "bots_main_debug_minDist" ) )
|
||||||
{
|
{
|
||||||
self iprintln("Waypoint Unlink Cancelled "+level.wpToLink);
|
self iprintln( "Waypoint Unlink Cancelled " + level.wpToLink );
|
||||||
level.wpToLink = -1;
|
level.wpToLink = -1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(level.wpToLink == -1 || nwp == level.wpToLink)
|
if ( level.wpToLink == -1 || nwp == level.wpToLink )
|
||||||
{
|
{
|
||||||
level.wpToLink = nwp;
|
level.wpToLink = nwp;
|
||||||
self iprintln("Waypoint Unlink Started "+nwp);
|
self iprintln( "Waypoint Unlink Started " + nwp );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
level.waypoints[nwp].children = array_remove(level.waypoints[nwp].children, level.wpToLink);
|
level.waypoints[nwp].children = array_remove( level.waypoints[nwp].children, level.wpToLink );
|
||||||
level.waypoints[level.wpToLink].children = array_remove(level.waypoints[level.wpToLink].children, nwp);
|
level.waypoints[level.wpToLink].children = array_remove( level.waypoints[level.wpToLink].children, nwp );
|
||||||
|
|
||||||
self iprintln("Waypoint " + nwp + " Broken to " + level.wpToLink);
|
self iprintln( "Waypoint " + nwp + " Broken to " + level.wpToLink );
|
||||||
level.wpToLink = -1;
|
level.wpToLink = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
LinkWaypoint(nwp)
|
LinkWaypoint( nwp )
|
||||||
{
|
{
|
||||||
if(nwp == -1 || distance(self.origin, level.waypoints[nwp].origin) > getDvarFloat("bots_main_debug_minDist"))
|
if ( nwp == -1 || distance( self.origin, level.waypoints[nwp].origin ) > getDvarFloat( "bots_main_debug_minDist" ) )
|
||||||
{
|
{
|
||||||
self iprintln("Waypoint Link Cancelled "+level.wpToLink);
|
self iprintln( "Waypoint Link Cancelled " + level.wpToLink );
|
||||||
level.wpToLink = -1;
|
level.wpToLink = -1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(level.wpToLink == -1 || nwp == level.wpToLink)
|
if ( level.wpToLink == -1 || nwp == level.wpToLink )
|
||||||
{
|
{
|
||||||
level.wpToLink = nwp;
|
level.wpToLink = nwp;
|
||||||
self iprintln("Waypoint Link Started "+nwp);
|
self iprintln( "Waypoint Link Started " + nwp );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
weGood = true;
|
weGood = true;
|
||||||
for(i = level.waypoints[level.wpToLink].children.size - 1; i >= 0; i--)
|
|
||||||
|
for ( i = level.waypoints[level.wpToLink].children.size - 1; i >= 0; i-- )
|
||||||
{
|
{
|
||||||
if(level.waypoints[level.wpToLink].children[i] == nwp)
|
if ( level.waypoints[level.wpToLink].children[i] == nwp )
|
||||||
{
|
{
|
||||||
weGood = false;
|
weGood = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(weGood)
|
|
||||||
|
if ( weGood )
|
||||||
{
|
{
|
||||||
for(i = level.waypoints[nwp].children.size - 1; i >= 0; i--)
|
for ( i = level.waypoints[nwp].children.size - 1; i >= 0; i-- )
|
||||||
{
|
{
|
||||||
if(level.waypoints[nwp].children[i] == level.wpToLink)
|
if ( level.waypoints[nwp].children[i] == level.wpToLink )
|
||||||
{
|
{
|
||||||
weGood = false;
|
weGood = false;
|
||||||
break;
|
break;
|
||||||
@ -587,9 +604,9 @@ LinkWaypoint(nwp)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!weGood )
|
if ( !weGood )
|
||||||
{
|
{
|
||||||
self iprintln("Waypoint Link Cancelled "+nwp+" and "+level.wpToLink+" already linked.");
|
self iprintln( "Waypoint Link Cancelled " + nwp + " and " + level.wpToLink + " already linked." );
|
||||||
level.wpToLink = -1;
|
level.wpToLink = -1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -597,35 +614,35 @@ LinkWaypoint(nwp)
|
|||||||
level.waypoints[level.wpToLink].children[level.waypoints[level.wpToLink].children.size] = nwp;
|
level.waypoints[level.wpToLink].children[level.waypoints[level.wpToLink].children.size] = nwp;
|
||||||
level.waypoints[nwp].children[level.waypoints[nwp].children.size] = level.wpToLink;
|
level.waypoints[nwp].children[level.waypoints[nwp].children.size] = level.wpToLink;
|
||||||
|
|
||||||
self iprintln("Waypoint " + nwp + " Linked to " + level.wpToLink);
|
self iprintln( "Waypoint " + nwp + " Linked to " + level.wpToLink );
|
||||||
level.wpToLink = -1;
|
level.wpToLink = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
destroyOnDeath(hud)
|
destroyOnDeath( hud )
|
||||||
{
|
{
|
||||||
hud endon("death");
|
hud endon( "death" );
|
||||||
self waittill_either("death","disconnect");
|
self waittill_either( "death", "disconnect" );
|
||||||
hud destroy();
|
hud destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
textScroll(string)
|
textScroll( string )
|
||||||
{
|
{
|
||||||
self endon("death");
|
self endon( "death" );
|
||||||
self endon("disconnect");
|
self endon( "disconnect" );
|
||||||
//thanks ActionScript
|
//thanks ActionScript
|
||||||
|
|
||||||
back = createBar((0,0,0), 1000, 30);
|
back = createBar( ( 0, 0, 0 ), 1000, 30 );
|
||||||
back setPoint("CENTER", undefined, 0, 220);
|
back setPoint( "CENTER", undefined, 0, 220 );
|
||||||
self thread destroyOnDeath(back);
|
self thread destroyOnDeath( back );
|
||||||
|
|
||||||
text = createFontString("default", 1.5);
|
text = createFontString( "default", 1.5 );
|
||||||
text setText(string);
|
text setText( string );
|
||||||
self thread destroyOnDeath(text);
|
self thread destroyOnDeath( text );
|
||||||
|
|
||||||
for (;;)
|
for ( ;; )
|
||||||
{
|
{
|
||||||
text setPoint("CENTER", undefined, 1200, 220);
|
text setPoint( "CENTER", undefined, 1200, 220 );
|
||||||
text setPoint("CENTER", undefined, -1200, 220, 20);
|
text setPoint( "CENTER", undefined, -1200, 220, 20 );
|
||||||
wait 20;
|
wait 20;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user