View Single Post
ot_207
Veteran Member
Join Date: Jan 2008
Location: Romania The Love Country
Old 04-17-2009 , 11:47   Re: CS 1.6 Custom 3rd Person View
Reply With Quote #9

Here is my method, improved some things , the model doesn't shake anymore.

PHP Code:
#include <amxmodx>
#include <engine>

new const pl_cm_class[] = "PlayerCamera"

public plugin_init()
{
    
register_clcmd"say /cam""cmdCam" )
    
register_think(pl_cm_class,"Think_PlayerCamera")
}

public 
cmdCam(id)
    
Create_PlayerCamera(id)

Create_PlayerCamera(id)
{
    new 
ent = -1
    
while ((ent find_ent_by_class(ent,pl_cm_class)) != 0)
    {
        if (
entity_get_edict(ent,EV_ENT_owner) == id)
        {
            
attach_view(id ent)
            return
        }
    }
    
ent create_entity("info_target")
    
    if( !
ent )
        return;
    
    
entity_set_string(entEV_SZ_classnamepl_cm_class)
    
    
entity_set_model(ent"models/w_usp.mdl")
    
    
entity_set_byte(entEV_INT_solidSOLID_TRIGGER)
    
entity_set_int(entEV_INT_movetypeMOVETYPE_FLYMISSILE)
    
    
entity_set_edict(entEV_ENT_ownerid)
    
    
entity_set_int(ent,EV_INT_rendermodekRenderTransTexture)
    
entity_set_float(entEV_FL_renderamt0.0 )
    
    
attach_view(id,ent)
    
entity_set_float(entEV_FL_nextthinkget_gametime())
}

public 
Think_PlayerCamera(ent)
{
    static 
owner
    owner 
entity_get_edict(ent,EV_ENT_owner)
    
    static 
iButtons;
    
iButtons entity_get_int(ownerEV_INT_button)
    
    if( 
iButtons IN_USE  || !is_user_alive(owner))
    {
        
attach_view(owner,owner)
        
remove_entity(ent)
        return 
PLUGIN_CONTINUE;
    }
    
    
    static 
Float:origin[3], Float:fAngle[3],Float:origin2[3];
    
entity_get_vector(owner,EV_VEC_origin,origin)
    
entity_get_vector(owner,EV_VEC_v_angle,fAngle)
    
    
origin2[0] = origin[0]
    
origin2[1] = origin[1]
    
origin2[2] = origin[2]
    
    static 
Float:fVBack[3];
    
angle_vectorfAngleANGLEVECTOR_FORWARDfVBack );
    
    
origin[2] += 20.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(entEV_FL_nextthinkget_gametime())
    
    return 
PLUGIN_CONTINUE;

__________________
My approved plug-ins | Good for newbies! | Problems?

Back, will come around when I have time.

Last edited by ot_207; 04-17-2009 at 11:55.
ot_207 is offline