#define DISTANCE 500.0 // радиус
public Action OnClientSayCommand(int client, const char[] command, const char[] sArgs)
{
bool b_one = false;
if (strcmp(command, "say_team", false))b_one = true;
char s_chats[PLATFORM_MAX_PATH];
strcopy(s_chats, sizeof(s_chats), sArgs);
CheckDist(client, sArgs, b_one);
return Plugin_Stop;
}
void CheckDist(int client, const char[] sChats, bool b_team)
{
float f_vector_one[3];
GetEntPropVector(client, Prop_Send, "m_vecOrigin", f_vector_one);
int i_team = GetClientTeam(client);
for (int i = 1; i <= MaxClients; ++i)
{
if (IsClientInGame(i) && !IsFakeClient(i) && IsPlayerAlive(i))
{
if (!b_team || (b_team && i_team == GetClientTeam(i)))
{
if (FDistance(i, f_vector_one) < DISTANCE)PrintToChat(i, sChats); // Игрок(i) в радиусе
}
}
}
}
float FDistance(int two, float fOne[3])
{
float f_vector_two[3];
GetEntPropVector(two, Prop_Send, "m_vecOrigin", f_vector_two);
return GetVectorDistance(fOne, f_vector_two); // squared & DISTANCE
}