should improve independent movement more

This commit is contained in:
christian 2021-04-20 17:08:38 +02:00
parent aaf43eca6f
commit 5ee4993df9

View File

@ -13,6 +13,7 @@
#include <socket>
//#pragma newdecls required
int target_human_afk_counter[MAXPLAYERS + 1];
int targethuman[MAXPLAYERS + 1];
int target_enemy[MAXPLAYERS + 1];
int buttons_old[MAXPLAYERS + 1];
@ -408,7 +409,7 @@ public Action recursive_pressing(Handle timer, any data)
GetEntPropVector(target_enemy[client], Prop_Send, "m_vecOrigin", pos);
enemy_distance = get_power_distance(client, pos);
}
if ((250 > enemy_distance && targeteam == 2) || dist_target < 0 < enemy_distance)
if ((250 > enemy_distance > 0 && targeteam == 2) || dist_target < 0 < enemy_distance)
{
/*
float feet_origin[3], enemy_feet_origin[3];
@ -678,65 +679,36 @@ stock bool is_client_stuck_or_afk(int client)
return client_own_distance < min_distance_cap;
}
int target_human_afk_counter = 0;
public int GetClosestClient_option1(int targeteam, int client)
{
float nearestdistance = -1.0;
int nearest = -1;
bool bot_alternative = false;
for (int i = 1; i <= MaxClients; i++)
if (IsValidClient(i) && IsPlayerAlive(i) && GetClientTeam(i) == targeteam && !is_bot_player(i))
{
/*if (!IsAbleToSee(client, i))
continue;*/
if (is_client_stuck_or_afk(i))
continue;
bot_alternative = true;
break;
}
for (int i = 1; i <= MaxClients; i++)
if (IsValidClient(i) && IsPlayerAlive(i) && i != client && GetClientTeam(i) == targeteam)
{
/*
if (!IsAbleToSee(client, i))
continue;
*/
if (is_client_stuck_or_afk(i))
{
if (i != targethuman[client])
continue;
target_human_afk_counter++;
int afk_cap = 9;
if (target_human_afk_counter > afk_cap)
target_human_afk_counter[client]++;
int afk_cap = 4;
if (target_human_afk_counter[client] > afk_cap)
{
target_human_afk_counter = 0;
target_human_afk_counter[client] = 0;
continue;
}
}
if (bot_alternative && is_bot_player(i))
continue;
/*
if (i == targethuman[client])
return targethuman[client];*/
if (i == targethuman[client] && !is_bot_player(i))
return targethuman[client];
float pos[3];
GetEntPropVector(i, Prop_Send, "m_vecOrigin", pos);
float dist_target = get_power_distance(client, pos);
if (admins[i] || vips[i] || i == target_enemy[client])
if (is_bot_player(i))
dist_target += 7500;
else if (admins[i] || vips[i] || i == target_enemy[client])
dist_target /= 5;
if (GetClientTeam(client) == 3 && targeteam == 3)
{
for (int j = 1; j <= MaxClients; j++)
if (IsValidClient(j) && IsPlayerAlive(j) && GetClientTeam(j) == 2)
{
/*
if (!IsAbleToSee(i, j))
continue;
*/
if (is_client_stuck_or_afk(j))
continue;
dist_target += 250.0;
}
}
if (nearestdistance < 0 || dist_target < nearestdistance)
{
nearest = i;
@ -759,6 +731,7 @@ public void OnClientPostAdminCheck(int client)
//STEAM_0:1:60189040
//[U:1:120378081]
//[U:1:69566635]
target_human_afk_counter[client] = 0;
char auth[50];
GetClientAuthId(client, AuthId_Engine, auth, sizeof(auth));
char msg[generic_length];
@ -806,6 +779,7 @@ public void OnClientDisconnect(int client)
client_old_coords[client][0] = 0.0;
client_old_coords[client][1] = 0.0;
client_old_coords[client][2] = 0.0;
target_human_afk_counter[client] = 0;
}
//Socket callback