Thread: [Solved] Directions to Entity
View Single Post
iNvectus
Member
Join Date: Sep 2014
Location: Bulgaria
Old 03-14-2019 , 03:43   Re: Directions to Entity
Reply With Quote #3

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(idfOriginS);            // Start point
        
get_user_origin(idfOriginE, .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], Floattimewidth)
{
    
message_begin(MSG_BROADCASTSVC_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], Floattime)
{
    static 
pEntFloatfOrigin[3];
    
pEnt create_entity("info_target");
    
IVecFVec(vecOriginfOrigin);

    if(
is_valid_ent(pEnt))
    {
        
// entity_set_string(pEnt, EV_SZ_classname, "points");
        
entity_set_model(pEntSPRITE_POINT);
        
entity_set_origin(pEntfOrigin);
        
entity_set_int(pEntEV_INT_solidSOLID_NOT);
        
entity_set_int(pEntEV_INT_movetypeMOVETYPE_NONE);
        
entity_set_float(pEntEV_FL_scale0.1);
        
entity_set_float(pEntEV_FL_nextthinkget_gametime());
        
entity_set_int(pEntEV_INT_rendermodekRenderTransAdd);
        
entity_set_float(pEntEV_FL_renderamt100.0);
    
        
set_task(time"DeleteEnt"TASK_POINT pEnt);
    }
}

stock Create_Sparks(vecOrigin[3])
{
    
message_begin(MSG_BROADCASTSVC_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);


Last edited by iNvectus; 03-14-2019 at 03:47.
iNvectus is offline