From 8154c97ea24740d611d430bcfc9c18e16477b28b Mon Sep 17 00:00:00 2001 From: Jackz Date: Mon, 28 Sep 2020 17:00:52 -0500 Subject: [PATCH] Cleanup and remove V1 logic --- plugins/200IQBots_FlyYouFools.smx | Bin 8636 -> 7688 bytes scripting/200IQBots_FlyYouFools.sp | 92 ++++++----------------------- 2 files changed, 17 insertions(+), 75 deletions(-) diff --git a/plugins/200IQBots_FlyYouFools.smx b/plugins/200IQBots_FlyYouFools.smx index f3a40461f79b0ffe89ce495f1d132b156a1a4e1e..4992f8155a6069f3454fd6ebc8b7c72de457dccc 100644 GIT binary patch delta 7623 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 RPL{AE1n0W}0N^=lild~8Vh9cZ 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 -1) { + bIsTank[targetPlayer] = false; + iAliveTanks = 0; PrintToChatAll("%N (%d) was hit by tank %s (%d)", targetPlayer, targetPlayer, attackerName, attacker); } } /* -Logic overview: -1. Check If there is a tank (will be last spawned tank) -2. Check that the tank has a target (not waiting) -3. Loop all valid players (bots, alive, survivors) -4. If they are being targetted by tank OR health < 40: - always run away -5. Else if less than 200 units away: - run away - else: - attack tank -*/ -public Action BotControlTimer(Handle timer) -{ - //remove timer once tank no longer exists, is dead, or finale escape vehicle arrived - //temp improvement: disable if more than one tank. - - if(bEscapeReady || iAliveTanks == 0) { - //Check if there is any existing bots, if escape NOT ready - if(!bEscapeReady) FindExistingTank(); - return Plugin_Stop; - } - //Once an AI tank is awakened, m_lookatPlayer is set to a player ID - //Possible props: m_lookatPlayer, m_zombieState (if 1), m_hasVisibleThreats - int tank_target = GetEntPropEnt(TankClient, Prop_Send, "m_lookatPlayer", 0); - if(tank_target > -1) { - ShowHintToAll("TankClient#: %d | AliveTanks: %d | TankTarget: %N", TankClient, iAliveTanks, tank_target); - }else{ - ShowHintToAll("TankClient#: %d | AliveTanks: %d | TankTarget: n/a", TankClient, iAliveTanks); - } - if(tank_target > -1) { - //grab tank position outside loop, only calculate bot - float TankPosition[3]; - GetClientAbsOrigin(TankClient, TankPosition); - for (int i = 1; i <= MaxClients; i++) - { - if (IsClientInGame(i) && IsPlayerAlive(i) && GetClientTeam(i) == 2 && IsFakeClient(i)) - { - //If distance between bot and tank is less than 200IQBots_TankDangerRange's float value - //if not tank target, and tank != visible threats, then attack. OR if health low, flee - int health = GetClientHealth(i); - if(tank_target == i || health <= 40) { - L4D2_RunScript("CommandABot({cmd=2,bot=GetPlayerFromUserID(%i),target=GetPlayerFromUserID(%i)})", GetClientUserId(i), GetClientUserId(TankClient)); - }else { - - float BotPosition[3]; - GetClientAbsOrigin(i, BotPosition); - //Compare the distance between tank and the survivor bot, attack if far, run if too close. - float distance = GetVectorDistance(BotPosition, TankPosition); - if(distance < 200) { - L4D2_RunScript("CommandABot({cmd=2,bot=GetPlayerFromUserID(%i),target=GetPlayerFromUserID(%i)})", GetClientUserId(i), GetClientUserId(TankClient)); - //do not attack if super close. - } else { - L4D2_RunScript("CommandABot({cmd=0,bot=GetPlayerFromUserID(%i),target=GetPlayerFromUserID(%i)})", GetClientUserId(i), GetClientUserId(TankClient)); - } - } - - } - } - } - return Plugin_Continue; -} -/* New logic overview: -Either: Loop all tanks, check for any survivors. -Or: Loop any survivors, check for a nearby tank? +1. Loop all valid survivors +2. Loop all tanks per survivor +3. Find the closest tank +4. Retreat if in close range (~300 units) +CommandABot: +0 -> ATTACK +1 -> MOVETO +2 -> RUN AWAY +3 -> RESET */ public Action BotControlTimerV2(Handle timer) { //remove timer once tank no longer exists, is dead, or finale escape vehicle arrived - if(bEscapeReady || TankClient == -1 || !IsClientInGame(TankClient) || !IsPlayerAlive(TankClient)) { + if(bEscapeReady || iAliveTanks == 0) { //Check if there is any existing bots, if escape NOT ready if(!bEscapeReady) FindExistingTank(); return Plugin_Stop; @@ -171,7 +117,6 @@ public Action BotControlTimerV2(Handle timer) GetClientAbsOrigin(tankID, TankPosition); //Get distance to survivor, and compare to get closest tank float distanceFromSurvivor = GetVectorDistance(BotPosition, TankPosition); - PrintHintTextToAll("[Survivor: %N (%d)] | Tank: %d | Distance: %f", i, i, tankID, distanceFromSurvivor); if(distanceFromSurvivor <= 1000 && smallestDistance > distanceFromSurvivor || smallestDistance == 0.0) { smallestDistance = distanceFromSurvivor; closestTank = tankID; @@ -180,10 +125,9 @@ public Action BotControlTimerV2(Handle timer) } } //If the closest tank exists (-1 means no tank.) and is close, avoid. - if(closestTank > -1 && smallestDistance <= 1000) { - if(smallestDistance <= 300) { - L4D2_RunScript("CommandABot({cmd=2,bot=GetPlayerFromUserID(%i),target=GetPlayerFromUserID(%i)})", GetClientUserId(i), GetClientUserId(closestTank)); - } + //TODO: Possibly only run if they have an item in the pill shot, or have medkit. + if(closestTank > -1 && smallestDistance <= 300 && botHealth >= 40) { + L4D2_RunScript("CommandABot({cmd=2,bot=GetPlayerFromUserID(%i),target=GetPlayerFromUserID(%i)})", GetClientUserId(i), GetClientUserId(closestTank)); }else{ L4D2_RunScript("CommandABot({cmd=3,bot=GetPlayerFromUserID(%i)", GetClientUserId(i)); } @@ -192,7 +136,6 @@ public Action BotControlTimerV2(Handle timer) return Plugin_Continue; } void resetPlugin() { - TankClient = -1; bEscapeReady = false; iAliveTanks = 0; for(int i = 0; i < sizeof(bIsTank); i++) { @@ -212,7 +155,6 @@ public void FindExistingTank() { bIsTank[i] = true; PrintToChatAll("Found existing tank: %N (%i)", i, i); if(iAliveTanks == 0) { - TankClient = i; CreateTimer(0.1, BotControlTimerV2, _, TIMER_REPEAT); } iAliveTanks++;