Fixed. Here is a snippet.
PHP Code:
#include <amxmodx>
#include <engine>
// #define DEBUG_
// #define _THINK
#define _FASTVIS
const TASK_POINT = 1337;
#if defined DEBUG_
#if !defined _THINK
public plugin_init()
register_clcmd("radio2", "test");
public test(id)
#else
public client_PostThink(id)
#endif
{
static fOriginE[3], fOriginS[3];
get_user_origin(id, fOriginS); // Start point
get_user_origin(id, fOriginE, .mode = 3); // End point
test_vector(
.vStart = fOriginS,
.vEnd = fOriginE,
.time = 0.1,
.width = 10
);
// return PLUGIN_HANDLED;
}
#endif // DEBUG_
new g_pBeamSprite;
new const SPRITE_BEAM[] = "sprites/arrow1.spr";
new const SPRITE_POINT[] = "sprites/3dmflared.spr";
public plugin_precache()
{
g_pBeamSprite = precache_model(SPRITE_BEAM);
precache_model(SPRITE_POINT);
}
public test_vector(start[3], end[3], Float: time, width)
{
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(TE_BEAMPOINTS);
write_coord(end[0]);
write_coord(end[1]);
write_coord(end[2]);
write_coord(start[0]);
write_coord(start[1]);
write_coord(start[2]);
write_short(g_pBeamSprite);
write_byte(1); //Start Point
write_byte(1); //Anim speed
write_byte(floatround(time * 10)); //Time to show
write_byte(width); //Width
write_byte(0); //Distortion
write_byte(255); //Red
write_byte(0); //Green
write_byte(0); //Blue
write_byte(1000); //Brightness
write_byte(10);
message_end();
#if !defined _FASTVIS
CreatePoint(start, .time = time);
CreatePoint(end, .time = time);
#else
// Create_Sparks(start);
Create_Sparks(end);
#endif
}
stock CreatePoint(vecOrigin[3], Float: time)
{
static pEnt, Float: fOrigin[3];
pEnt = create_entity("info_target");
IVecFVec(vecOrigin, fOrigin);
if(is_valid_ent(pEnt))
{
// entity_set_string(pEnt, EV_SZ_classname, "points");
entity_set_model(pEnt, SPRITE_POINT);
entity_set_origin(pEnt, fOrigin);
entity_set_int(pEnt, EV_INT_solid, SOLID_NOT);
entity_set_int(pEnt, EV_INT_movetype, MOVETYPE_NONE);
entity_set_float(pEnt, EV_FL_scale, 0.1);
entity_set_float(pEnt, EV_FL_nextthink, get_gametime());
entity_set_int(pEnt, EV_INT_rendermode, kRenderTransAdd);
entity_set_float(pEnt, EV_FL_renderamt, 100.0);
set_task(time, "DeleteEnt", TASK_POINT + pEnt);
}
}
stock Create_Sparks(vecOrigin[3])
{
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(TE_SPARKS);
write_coord(vecOrigin[0]);
write_coord(vecOrigin[1]);
write_coord(vecOrigin[2]);
message_end();
}
public DeleteEnt(pEnt)
{
pEnt -= TASK_POINT;
if(is_valid_ent(pEnt))
remove_entity(pEnt);
}