#include <amxmodx>
#include <fakemeta>
#include <engine>
new const pl_cm_class[] = "PlayerCamera"
new g_iPlayerCamera[33]
public plugin_init()
{
register_think(pl_cm_class,"Think_PlayerCamera")
}
Create_PlayerCamera(id)
{
static iEnt; iEnt = g_iPlayerCamera[id];
if ( pev_valid(iEnt) )
{
engfunc(EngFunc_SetView, id, iEnt);
}
else
{
static ent ; ent = g_iPlayerCamera[id] = create_entity("info_target")
if( !ent )
return;
entity_set_string(ent, EV_SZ_classname, pl_cm_class)
entity_set_model(ent, "models/w_usp.mdl")
entity_set_byte(ent, EV_INT_solid, SOLID_TRIGGER)
entity_set_int(ent, EV_INT_movetype, MOVETYPE_FLYMISSILE)
entity_set_edict(ent, EV_ENT_owner, id)
entity_set_int(ent,EV_INT_rendermode, kRenderTransTexture)
entity_set_float(ent, EV_FL_renderamt, 0.0 )
attach_view(id,ent)
entity_set_float(ent, EV_FL_nextthink, get_gametime())
}
}
public Think_PlayerCamera(ent)
{
static owner
owner = entity_get_edict(ent,EV_ENT_owner)
static Float:origin[3], Float:fAngle[3],Float:origin2[3];
entity_get_vector(owner,EV_VEC_v_angle,fAngle);
entity_get_vector(owner,EV_VEC_origin,origin);
origin2[0] = origin[0];
origin2[1] = origin[1];
origin2[2] = origin[2];
static Float:fVBack[3];
angle_vector( fAngle, ANGLEVECTOR_FORWARD, fVBack );
origin[2] += 35.0;
origin[0] += ( -fVBack[0] * 150.0 );
origin[1] += ( -fVBack[1] * 150.0 );
origin[2] += ( -fVBack[2] * 150.0 );
trace_line(owner, origin2, origin, origin);
entity_set_vector(ent,EV_VEC_origin,origin)
entity_get_vector(owner,EV_VEC_velocity,origin2)
entity_set_vector(ent,EV_VEC_velocity,origin2)
entity_set_vector(ent,EV_VEC_angles,fAngle)
entity_set_float(ent, EV_FL_nextthink, get_gametime())
return PLUGIN_CONTINUE;
}