diff --git a/.vscode/settings.json b/.vscode/settings.json index b51b8ea..5fae49b 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -12,7 +12,7 @@ "vscode-codscript.use_builtin_completionItems": false, "triggerTaskOnSave.tasks": { - "Compile current GSC File": ["*.gsc"] + "Compile current GSC File no": ["*.gsc"] }, "Lua.diagnostics.globals": [ "InheritFrom", diff --git a/raw/bots.txt b/raw/bots.txt new file mode 100644 index 0000000..bacce26 --- /dev/null +++ b/raw/bots.txt @@ -0,0 +1,26 @@ +bota +botb +botc +botd +bote +botf +botg +both +boti +botj +botk +botl +botm +botn +boto +botp +botq +botr +bots +bott +botu +botv +botw +botx +boty +botz \ No newline at end of file diff --git a/raw/bots/bots.json b/raw/bots/bots.json deleted file mode 100644 index 1ba2299..0000000 --- a/raw/bots/bots.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "names": { - "bota": "", - "botb": "", - "botc": "", - "botd": "", - "bote": "", - "botf": "", - "botg": "", - "both": "", - "boti": "", - "botj": "", - "botk": "", - "botl": "", - "botm": "", - "botn": "", - "boto": "", - "botp": "", - "botq": "", - "botr": "", - "bots": "", - "bott": "", - "botu": "", - "botv": "", - "botw": "", - "botx": "", - "boty": "", - "botz": "" - } -} diff --git a/raw/maps/mp/teams/_teams-src.gsc b/raw/maps/mp/teams/_teams-src.gsc deleted file mode 100644 index 143d7d7..0000000 --- a/raw/maps/mp/teams/_teams-src.gsc +++ /dev/null @@ -1,577 +0,0 @@ -#include maps\mp\gametypes\_spectating; -#include maps\mp\gametypes\_globallogic_ui; -#include maps\mp\gametypes\_persistence; -#include maps\mp\_utility; - -init() -{ - precacheshader( "mpflag_spectator" ); - game["strings"]["autobalance"] = &"MP_AUTOBALANCE_NOW"; - precachestring( &"MP_AUTOBALANCE_NOW" ); - - if ( GetDvar( "scr_teambalance" ) == "" ) - { - setdvar( "scr_teambalance", "0" ); - } - - level.teambalance = GetDvarInt( "scr_teambalance" ); - level.teambalancetimer = 0; - - if ( GetDvar( "scr_timeplayedcap" ) == "" ) - { - setdvar( "scr_timeplayedcap", "1800" ); - } - - level.timeplayedcap = int( GetDvarInt( "scr_timeplayedcap" ) ); - level.freeplayers = []; - - if ( level.teambased ) - { - level.alliesplayers = []; - level.axisplayers = []; - level thread onplayerconnect(); - level thread updateTeamBalance(); - wait( 0.15 ); - level thread updateplayertimes(); - } - else - { - level thread onfreeplayerconnect(); - wait( 0.15 ); - level thread updateplayertimes(); - } -} - - -onplayerconnect() -{ - for ( ;; ) - { - level waittill( "connecting", player ); - player thread onjoinedteam(); - player thread onjoinedspectators(); - player thread trackplayedtime(); - } -} - - -onfreeplayerconnect() -{ - for ( ;; ) - { - level waittill( "connecting", player ); - player thread trackfreeplayedtime(); - } -} - - -onjoinedteam() -{ - self endon( "disconnect" ); - - for ( ;; ) - { - self waittill( "joined_team" ); - self logstring( "joined team: " + self.pers["team"] ); - self updateteamtime(); - } -} - - -onjoinedspectators() -{ - self endon( "disconnect" ); - - for ( ;; ) - { - self waittill( "joined_spectators" ); - self.pers["teamTime"] = undefined; - } -} - -trackplayedtime() -{ - self endon( "disconnect" ); - - foreach ( team in level.teams ) - { - self.timePlayed[team] = 0; - } - - self.timePlayed["free"] = 0; - self.timePlayed["other"] = 0; - self.timePlayed["alive"] = 0; - - - if ( !isdefined( self.timePlayed["total"] ) ) - self.timePlayed["total"] = 0; - else if ( ( level.gameType == "twar" ) && ( 0 < game["roundsplayed"] ) && ( 0 < self.timeplayed["total"] ) ) - self.timePlayed["total"] = 0; - - while ( level.inprematchperiod ) - { - wait( 0.05 ); - } - - for ( ;; ) - { - if ( game["state"] == "playing" ) - { - if ( isdefined( level.teams[self.sessionteam] ) ) - { - self.timeplayed[self.sessionteam]++; - self.timeplayed["total"]++; - - if ( isalive( self ) ) - { - self.timeplayed["alive"]++; - } - } - else if ( self.sessionteam == "spectator" ) - { - self.timeplayed["other"]++; - } - } - - wait ( 1.0 ); - } - -} - -updateplayertimes() -{ - nexttoupdate = 0; - - for ( ;; ) - { - nexttoupdate++; - - if ( nexttoupdate >= level.players.size ) - { - nexttoupdate = 0; - } - - if ( isdefined( level.players[nexttoupdate] ) ) - { - level.players[nexttoupdate] updateplayedtime(); - level.players[nexttoupdate] maps\mp\gametypes\_persistence::checkcontractexpirations(); - } - - wait( 1 ); - } -} - -updateplayedtime() -{ - pixbeginevent( "updatePlayedTime" ); - - foreach ( team in level.teams ) - { - if ( self.timeplayed[team] ) - { - self addplayerstat( "time_played_" + team, int( min( self.timeplayed[team], level.timeplayedcap ) ) ); - self addplayerstatwithgametype( "time_played_total", int( min( self.timeplayed[team], level.timeplayedcap ) ) ); - } - } - - if ( self.timeplayed["other"] ) - { - self addplayerstat( "time_played_other", int( min( self.timeplayed["other"], level.timeplayedcap ) ) ); - self addplayerstatwithgametype( "time_played_total", int( min( self.timeplayed["other"], level.timeplayedcap ) ) ); - } - - if ( self.timeplayed["alive"] ) - { - timealive = int( min( self.timeplayed["alive"], level.timeplayedcap ) ); - self maps\mp\gametypes\_persistence::incrementcontracttimes( timealive ); - self addplayerstat( "time_played_alive", timealive ); - } - - pixendevent(); - - if ( game["state"] == "postgame" ) - { - return; - } - - foreach ( team in level.teams ) - { - self.timeplayed[team] = 0; - } - - self.timeplayed["other"] = 0; - self.timeplayed["alive"] = 0; -} - -updateteamtime() -{ - if ( game["state"] != "playing" ) - { - return; - } - - self.pers["teamTime"] = GetTime(); -} - -updateteambalancedvar() -{ - for ( ;; ) - { - teambalance = GetDvarInt( "scr_teambalance" ); - - if ( level.teambalance != teambalance ) - { - level.teambalance = GetDvarInt( "scr_teambalance" ); - } - - timeplayedcap = GetDvarInt( "scr_timeplayedcap" ); - - if ( level.timeplayedcap != timeplayedcap ) - { - level.timeplayedcap = int( GetDvarInt( "scr_timeplayedcap" ) ); - } - - wait( 1 ); - } -} - -updateTeamBalance() -{ - level thread updateTeamBalanceDvar(); - - wait .15; - - if ( level.teamBalance && isRoundBased() && level.numlives ) - { - if ( isDefined( game["BalanceTeamsNextRound"] ) ) - iPrintLnbold( &"MP_AUTOBALANCE_NEXT_ROUND" ); - - level waittill( "game_ended" ); - wait 1; - - if ( isDefined( game["BalanceTeamsNextRound"] ) ) - { - level balanceTeams(); - game["BalanceTeamsNextRound"] = undefined; - } - else if ( !getTeamBalance() ) - { - game["BalanceTeamsNextRound"] = true; - } - } - else - { - level endon ( "game_ended" ); - - for ( ;; ) - { - if ( level.teamBalance ) - { - if ( !getTeamBalance() ) - { - iPrintLnBold( &"MP_AUTOBALANCE_SECONDS", 15 ); - wait 15.0; - - if ( !getTeamBalance() ) - level balanceTeams(); - } - - wait 59.0; - } - - wait 1.0; - } - } - -} - -getTeamBalance() -{ - level.team["allies"] = 0; - level.team["axis"] = 0; - - players = level.players; - - for ( i = 0; i < players.size; i++ ) - { - if ( ( isdefined( players[i].pers["team"] ) ) && ( players[i].pers["team"] == "allies" ) ) - level.team["allies"]++; - else if ( ( isdefined( players[i].pers["team"] ) ) && ( players[i].pers["team"] == "axis" ) ) - level.team["axis"]++; - } - - if ( ( level.team["allies"] > ( level.team["axis"] + level.teamBalance ) ) || ( level.team["axis"] > ( level.team["allies"] + level.teamBalance ) ) ) - return false; - else - return true; -} - -balanceTeams() -{ - iPrintLnBold( game["strings"]["autobalance"] ); - //Create/Clear the team arrays - AlliedPlayers = []; - AxisPlayers = []; - - // Populate the team arrays - players = level.players; - - for ( i = 0; i < players.size; i++ ) - { - if ( !isdefined( players[i].pers["teamTime"] ) ) - continue; - - if ( ( isdefined( players[i].pers["team"] ) ) && ( players[i].pers["team"] == "allies" ) ) - AlliedPlayers[AlliedPlayers.size] = players[i]; - else if ( ( isdefined( players[i].pers["team"] ) ) && ( players[i].pers["team"] == "axis" ) ) - AxisPlayers[AxisPlayers.size] = players[i]; - } - - MostRecent = undefined; - - while ( ( AlliedPlayers.size > ( AxisPlayers.size + 1 ) ) || ( AxisPlayers.size > ( AlliedPlayers.size + 1 ) ) ) - { - if ( AlliedPlayers.size > ( AxisPlayers.size + 1 ) ) - { - // Move the player that's been on the team the shortest ammount of time (highest teamTime value) - // Ignore players capturing or carrying objects - for ( j = 0; j < AlliedPlayers.size; j++ ) - { - - if ( !isdefined( MostRecent ) ) - MostRecent = AlliedPlayers[j]; - else if ( AlliedPlayers[j].pers["teamTime"] > MostRecent.pers["teamTime"] ) - MostRecent = AlliedPlayers[j]; - } - - if ( isdefined( MostRecent ) ) - MostRecent changeTeam( "axis" ); - else - { - // Move the player that's been on the team the shortest ammount of time - for ( j = 0; j < AlliedPlayers.size; j++ ) - { - if ( !isdefined( MostRecent ) ) - MostRecent = AlliedPlayers[j]; - else if ( AlliedPlayers[j].pers["teamTime"] > MostRecent.pers["teamTime"] ) - MostRecent = AlliedPlayers[j]; - } - - MostRecent changeTeam( "axis" ); - } - } - else if ( AxisPlayers.size > ( AlliedPlayers.size + 1 ) ) - { - // Move the player that's been on the team the shortest ammount of time (highest teamTime value) - // Ignore players capturing or carrying objects - for ( j = 0; j < AxisPlayers.size; j++ ) - { - - if ( !isdefined( MostRecent ) ) - MostRecent = AxisPlayers[j]; - else if ( AxisPlayers[j].pers["teamTime"] > MostRecent.pers["teamTime"] ) - MostRecent = AxisPlayers[j]; - } - - if ( isdefined( MostRecent ) ) - MostRecent changeTeam( "allies" ); - else - { - // Move the player that's been on the team the shortest ammount of time - for ( j = 0; j < AxisPlayers.size; j++ ) - { - if ( !isdefined( MostRecent ) ) - MostRecent = AxisPlayers[j]; - else if ( AxisPlayers[j].pers["teamTime"] > MostRecent.pers["teamTime"] ) - MostRecent = AxisPlayers[j]; - } - - MostRecent changeTeam( "allies" ); - } - } - - MostRecent = undefined; - AlliedPlayers = []; - AxisPlayers = []; - - players = level.players; - - for ( i = 0; i < players.size; i++ ) - { - if ( ( isdefined( players[i].pers["team"] ) ) && ( players[i].pers["team"] == "allies" ) ) - AlliedPlayers[AlliedPlayers.size] = players[i]; - else if ( ( isdefined( players[i].pers["team"] ) ) && ( players[i].pers["team"] == "axis" ) ) - AxisPlayers[AxisPlayers.size] = players[i]; - } - } -} - -changeTeam( team ) -{ - teams[0] = "allies"; - teams[1] = "axis"; - assignment = team; - - if ( assignment != self.pers["team"] ) - { - if ( self.sessionstate == "playing" || self.sessionstate == "dead" ) - { - self.switching_teams = true; - self.joining_team = assignment; - self.leaving_team = self.pers["team"]; - self suicide(); - } - } - - self.pers["team"] = assignment; - self.team = assignment; - self.pers["class"] = undefined; - self.class = undefined; - self.pers["weapon"] = undefined; - self.pers["savedmodel"] = undefined; - - self maps\mp\gametypes\_globallogic_ui::updateObjectiveText(); - self maps\mp\gametypes\_spectating::setspectatepermissions(); - - if ( level.teamBased ) - self.sessionteam = assignment; - else - { - self.sessionteam = "none"; - self.ffateam = assignment; - } - - if ( !isAlive( self ) ) - self.statusicon = "hud_status_dead"; - - - self notify( "joined_team" ); - level notify( "joined_team" ); - self setclientscriptmainmenu( game["menu_class"] ); - self openmenu( game["menu_class"] ); - self notify( "end_respawn" ); -} - -countplayers() -{ - players = level.players; - playercounts = []; - - foreach ( team in level.teams ) - { - playercounts[team] = 0; - } - - foreach ( player in level.players ) - { - if ( player == self ) - { - continue; - } - - team = player.pers["team"]; - - if ( isdefined( team ) && isdefined( level.teams[team] ) ) - { - playercounts[team]++; - } - } - - return playercounts; -} - -trackfreeplayedtime() -{ - self endon( "disconnect" ); - - foreach ( team in level.teams ) - { - self.timeplayed[team] = 0; - } - - self.timeplayed["other"] = 0; - self.timeplayed["total"] = 0; - self.timeplayed["alive"] = 0; - - while ( game["state"] == "playing" ) - { - team = self.pers["team"]; - - if ( isdefined( team ) && isdefined( level.teams[team] ) && self.sessionteam != "spectator" ) - { - self.timeplayed[team]++; - self.timeplayed["total"]++; - - if ( isalive( self ) ) - { - self.timeplayed["alive"]++; - } - } - else - { - self.timeplayed["other"]++; - } - - wait( 1 ); - } -} - -set_player_model( team, weapon ) -{ - weaponclass = getweaponclass( weapon ); - bodytype = "default"; - - switch ( weaponclass ) - { - case "weapon_sniper": - bodytype = "rifle"; - break; - - case "weapon_cqb": - bodytype = "spread"; - break; - - case "weapon_lmg": - bodytype = "mg"; - break; - - case "weapon_smg": - bodytype = "smg"; - break; - } - - self detachall(); - self setmovespeedscale( 1 ); - self setsprintduration( 4 ); - self setsprintcooldown( 0 ); - - if ( level.multiteam ) - { - bodytype = "default"; - - switch ( team ) - { - case "team7": - case "team8": - team = "allies"; - break; - } - } - - self [[ game[ "set_player_model" ][ team ][ bodytype ] ]](); -} - -getteamflagmodel( teamref ) -{ - return game["flagmodels"][teamref]; -} - -getteamflagcarrymodel( teamref ) -{ - return game["carry_flagmodels"][teamref]; -} - -getteamflagicon( teamref ) -{ - return game["carry_icon"][teamref]; -} diff --git a/raw/maps/mp/teams/_teams.gsc b/raw/maps/mp/teams/_teams.gsc index 23f7566..143d7d7 100644 Binary files a/raw/maps/mp/teams/_teams.gsc and b/raw/maps/mp/teams/_teams.gsc differ diff --git a/raw/scripts/mp/botwarfare-compiled.gsc b/raw/scripts/mp/botwarfare-compiled.gsc deleted file mode 100644 index 244aca2..0000000 Binary files a/raw/scripts/mp/botwarfare-compiled.gsc and /dev/null differ diff --git a/raw/scripts/mp/botwarfare.gsc b/raw/scripts/mp/botwarfare.gsc index 5657bf5..d0b0c3f 100644 --- a/raw/scripts/mp/botwarfare.gsc +++ b/raw/scripts/mp/botwarfare.gsc @@ -602,6 +602,50 @@ connected() self thread onBotSpawned(); self thread setRanks(); + + self thread watchBotDebugEvent(); +} + +/* + DEBUG +*/ +watchBotDebugEvent() +{ + self endon( "disconnect" ); + + for ( ;; ) + { + self waittill( "bot_event", msg, str, b, c, d, e, f, g ); + + if ( GetDvarInt( "bots_main_debug" ) >= 2 ) + { + big_str = "Bot Warfare debug: " + self.name + ": " + msg + ": " + str; + + if ( isDefined( b ) && isString( b ) ) + big_str += ": " + b; + + if ( isDefined( c ) && isString( c ) ) + big_str += ": " + c; + + if ( isDefined( d ) && isString( d ) ) + big_str += ": " + d; + + if ( isDefined( e ) && isString( e ) ) + big_str += ": " + e; + + if ( isDefined( f ) && isString( f ) ) + big_str += ": " + f; + + if ( isDefined( g ) && isString( g ) ) + big_str += ": " + g; + + Print( big_str ); + } + else if ( msg == "debug" && GetDvarInt( "bots_main_debug" ) ) + { + Print( "Bot Warfare debug: " + self.name + ": " + str ); + } + } } /* @@ -616,6 +660,7 @@ onBotSpawned() self waittill( "spawned_player" ); self thread watch_for_override_stuff(); + self BotNotifyBotEvent( "debug", "we spawned!" ); waittillframeend; @@ -640,7 +685,7 @@ botMovementOverride( a, b ) {} botClearMovementOverride() {} botClearButtonOverride( a ) {} botButtonOverride( a, b ) {} -botClearOverrides() {} +botClearOverrides( a ) {} /* custom movement stuff @@ -650,7 +695,7 @@ watch_for_override_stuff() self endon( "disconnect" ); self endon( "death" ); - self botClearOverrides(); + self botClearOverrides( true ); NEAR_DIST = 80; LONG_DIST = 1000; @@ -690,12 +735,12 @@ watch_for_override_stuff() // drop shot self botMovementOverride( 0, 0 ); - self botButtonOverride( "stance", "prone" ); + self botButtonOverride( "prone", "enable" ); wait 1.5; self botClearMovementOverride(); - self botClearButtonOverride( "stance" ); + self botClearButtonOverride( "prone" ); } } else @@ -703,9 +748,9 @@ watch_for_override_stuff() last_jump_time = time; // jump shot - self botButtonOverride( "jump", true ); + self botButtonOverride( "gostand", "enable" ); wait 0.1; - self botClearButtonOverride( "jump" ); + self botClearButtonOverride( "gostand" ); } } @@ -920,6 +965,14 @@ allowTeamChoice() return true; } +/* + Notify the bot chat message +*/ +BotNotifyBotEvent( msg, a, b, c, d, e, f, g ) +{ + self notify( "bot_event", msg, a, b, c, d, e, f, g ); +} + /* Returns if player is the host */ diff --git a/raw/scripts/mp/max_allocation_fix_source-compiled.gsc b/raw/scripts/mp/max_allocation_fix_source-compiled.gsc deleted file mode 100644 index 834441b..0000000 Binary files a/raw/scripts/mp/max_allocation_fix_source-compiled.gsc and /dev/null differ diff --git a/raw/scripts/mp/spectatorKick-compiled.gsc b/raw/scripts/mp/spectatorKick-compiled.gsc deleted file mode 100644 index 2c1968c..0000000 Binary files a/raw/scripts/mp/spectatorKick-compiled.gsc and /dev/null differ