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> #include <socket>
//#pragma newdecls required //#pragma newdecls required
int target_human_afk_counter[MAXPLAYERS + 1];
int targethuman[MAXPLAYERS + 1]; int targethuman[MAXPLAYERS + 1];
int target_enemy[MAXPLAYERS + 1]; int target_enemy[MAXPLAYERS + 1];
int buttons_old[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); GetEntPropVector(target_enemy[client], Prop_Send, "m_vecOrigin", pos);
enemy_distance = get_power_distance(client, 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]; 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; return client_own_distance < min_distance_cap;
} }
int target_human_afk_counter = 0;
public int GetClosestClient_option1(int targeteam, int client) public int GetClosestClient_option1(int targeteam, int client)
{ {
float nearestdistance = -1.0; float nearestdistance = -1.0;
int nearest = -1; 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++) for (int i = 1; i <= MaxClients; i++)
if (IsValidClient(i) && IsPlayerAlive(i) && i != client && GetClientTeam(i) == targeteam) if (IsValidClient(i) && IsPlayerAlive(i) && i != client && GetClientTeam(i) == targeteam)
{ {
/*
if (!IsAbleToSee(client, i)) if (!IsAbleToSee(client, i))
continue; continue;
*/
if (is_client_stuck_or_afk(i)) if (is_client_stuck_or_afk(i))
{ {
if (i != targethuman[client]) if (i != targethuman[client])
continue; continue;
target_human_afk_counter++; target_human_afk_counter[client]++;
int afk_cap = 9; int afk_cap = 4;
if (target_human_afk_counter > afk_cap) if (target_human_afk_counter[client] > afk_cap)
{ {
target_human_afk_counter = 0; target_human_afk_counter[client] = 0;
continue; continue;
} }
} }
if (bot_alternative && is_bot_player(i)) if (i == targethuman[client] && !is_bot_player(i))
continue; return targethuman[client];
/*
if (i == targethuman[client])
return targethuman[client];*/
float pos[3]; float pos[3];
GetEntPropVector(i, Prop_Send, "m_vecOrigin", pos); GetEntPropVector(i, Prop_Send, "m_vecOrigin", pos);
float dist_target = get_power_distance(client, 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; 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) if (nearestdistance < 0 || dist_target < nearestdistance)
{ {
nearest = i; nearest = i;
@ -759,6 +731,7 @@ public void OnClientPostAdminCheck(int client)
//STEAM_0:1:60189040 //STEAM_0:1:60189040
//[U:1:120378081] //[U:1:120378081]
//[U:1:69566635] //[U:1:69566635]
target_human_afk_counter[client] = 0;
char auth[50]; char auth[50];
GetClientAuthId(client, AuthId_Engine, auth, sizeof(auth)); GetClientAuthId(client, AuthId_Engine, auth, sizeof(auth));
char msg[generic_length]; char msg[generic_length];
@ -806,6 +779,7 @@ public void OnClientDisconnect(int client)
client_old_coords[client][0] = 0.0; client_old_coords[client][0] = 0.0;
client_old_coords[client][1] = 0.0; client_old_coords[client][1] = 0.0;
client_old_coords[client][2] = 0.0; client_old_coords[client][2] = 0.0;
target_human_afk_counter[client] = 0;
} }
//Socket callback //Socket callback