thanks for replying, actually i did add the sqroot to the equation infact here's the full code...
PHP Code:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#define PLUGIN "Health circle"
#define VERSION "1.0"
#define AUTHOR "Natsheh"
new g_sprite;
#define X 0
#define Y 1
#define Z 2
public plugin_precache() g_sprite = precache_model("sprites/laserbeam.spr");
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("amx_health_circle", "handler_command", ADMIN_KICK, "<rad> <width> <axis x> <axis y> <axis z>");
register_clcmd("amx_delete_health_circle", "handler_command2", ADMIN_KICK, "remove health circle nearby!");
register_think("health_circle", "brain_work");
}
public handler_command2(id, level, cid)
{
if(!cmd_access(id, level, cid, 1)) return 1;
new ent = -1, target_circle = 0, Float:wanted_distance = 250.0, Float:fOrigin[3], Float:fOrigin2[3], Float:z;
pev(id, pev_origin, fOrigin);
while( (ent = find_ent_by_class(ent, "health_circle")) > 0 )
{
pev(ent, pev_origin, fOrigin2);
if( (z=get_distance_f(fOrigin, fOrigin2)) <= wanted_distance )
{
target_circle = ent; wanted_distance = z;
}
}
if(target_circle > 0)
{
set_entity_flags(target_circle, FL_KILLME, true);
console_print(id, "The health circle nearby was removed!");
}
else
{
console_print(id, "No health circles were found!");
}
return 1;
}
public handler_command(id, level, cid)
{
if(!cmd_access(id, level, cid, 2)) return 1;
new szRadius[5], szWidth[5], szAngle_X[5], szAngle_Y[5], szAngle_Z[5];
read_argv(1, szRadius, charsmax(szRadius));
read_argv(2, szWidth, charsmax(szWidth));
read_argv(3, szAngle_X, charsmax(szAngle_X));
read_argv(4, szAngle_Y, charsmax(szAngle_Y));
read_argv(5, szAngle_Z, charsmax(szAngle_Z));
remove_quotes(szRadius);
remove_quotes(szWidth);
remove_quotes(szAngle_X);
remove_quotes(szAngle_Y);
remove_quotes(szAngle_Z);
new ent = create_entity("info_target");
if(ent > 0)
{
entity_set_string(ent, EV_SZ_classname, "health_circle");
new Float:fAngles[3];
entity_get_vector(id, EV_VEC_origin, fAngles);
entity_set_origin(ent, fAngles);
entity_set_int(ent, EV_INT_iuser4, str_to_num(szWidth));
entity_set_float(ent, EV_FL_fuser4, floatstr(szRadius));
fAngles[0] = floatstr(szAngle_X);
fAngles[1] = floatstr(szAngle_Y);
fAngles[2] = floatstr(szAngle_Z);
entity_set_vector(ent, EV_VEC_angles, fAngles);
entity_set_int(ent, EV_INT_solid, SOLID_TRIGGER);
entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.1);
console_print(id, "Health circle has been created!");
}
else
{
console_print(id, "Failed to create the health circle!");
}
return 1;
}
public brain_work(id)
{
static Float:fAngles[3], Float:fRadius[3], Float:fOrigin[3], Float:fWidth;
pev(id, pev_angles, fAngles);
pev(id, pev_origin, fOrigin)
fWidth = float(pev(id, pev_iuser4));
pev(id, pev_fuser4, fRadius[X]);
fRadius[Y] = 0.0;
fRadius[Z] = 0.0;
static g_aPlayers[32], Float:fPos[3], pnum, i, Float:z1, Float:x1, Float:c1; c1 = fRadius[X];
get_players(g_aPlayers, pnum, "ach");
for(i = 0; i < pnum; i++)
{
pev(g_aPlayers[i], pev_origin, fPos);
fPos[X] = fRadius[X] * floatcos(fAngles[Y],degrees) - floatsin(fAngles[Y],degrees) * fRadius[Y];
fPos[Y] = fRadius[X] * floatsin(fAngles[Y],degrees) + floatcos(fAngles[Y],degrees) * fRadius[Y];
fPos[Z] = 0.0
xs_vec_copy(fPos, fRadius);
fPos[X] = fRadius[X] * floatcos(fAngles[X],degrees) + fRadius[Y] * floatsin(fAngles[X],degrees);
fPos[Y] = fRadius[Y];
fPos[Z] = -fRadius[X] * floatsin(fAngles[X],degrees) + fRadius[Z] * floatcos(fAngles[X],degrees);
xs_vec_copy(fPos, fRadius);
/*x1=floatsqroot(floatpower((fPos[X] - fOrigin[X]),2.0) + floatpower((fPos[Y] - fOrigin[Y]),2.0));
z1=floatsqroot(floatpower((fPos[X] - fOrigin[X]),2.0) + floatpower((fPos[Z] - fOrigin[Z]),2.0));
c1=floatsqroot(floatpower((fPos[Y] - fOrigin[Y]),2.0) + floatpower((fPos[Z] - fOrigin[Z]),2.0));
if(x1 < fRadius[X] && floatabs(fPos[Z] - fOrigin[Z]) <= fRadius[X] ||
z1 < fRadius[Y] && floatabs(fPos[Y] - fOrigin[Y]) <= fRadius[Y] ||
c1 < fRadius[X] && floatabs(fPos[X] - fOrigin[X]) <= fRadius[Z] )
{
client_print(0, print_chat, "------> player in circle <---------- ");
}*/
client_print(0, print_chat, "--------------------- ");
client_print(0, print_chat, "Z1: %.1f X1: %.1f C1: %.1f ", floatsqroot(z1), floatsqroot(x1), floatsqroot(c1));
const iDivides = 32
static Float:AngleMulScalar; AngleMulScalar = (360.0 / iDivides);
static Float:fTemp[3], Float:fAngle[3], i,
Float:fVector1[3] = { 0.0, 0.0, 0.0 }, Float:fVector2[3] = { 0.0, 0.0, 0.0 }, Float:fStart1[3], Float:fStart2[3];
xs_vec_set(fAngle, 0.0, 0.0, 0.0);
xs_vec_normalize(fRadius, fAngle);
vector_to_angle(fAngle, fAngle);
for(i = 0; i <= iDivides; i++)
{
if(i > 0)
{
xs_vec_copy(fVector1, fStart1);
xs_vec_copy(fVector2, fStart2);
}
angle_vector(fAngle, ANGLEVECTOR_RIGHT, fTemp);
xs_vec_mul_scalar(fTemp, floatabs(c1), fVector1);
xs_vec_mul_scalar(fTemp, -floatabs(c1), fVector2);
xs_vec_add(fOrigin, fVector1, fVector1);
xs_vec_add(fOrigin, fVector2, fVector2);
xs_vec_mul_scalar(fTemp, AngleMulScalar, fTemp);
vector_to_angle(fTemp, fTemp);
fAngle[X] += fTemp[X];
fAngle[Y] += fTemp[Y];
fAngle[Z] += fTemp[Z];
if(i > 0)
{
createline(fStart1, fVector1)
createline(fStart2, fVector2)
}
}
client_print(0, print_chat, "Rad %.1f | %.1f | %.1f", fRadius[0], fRadius[1], fRadius[2]);
}
entity_set_float(id, EV_FL_nextthink, get_gametime() + 1.0);
}