AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Code Snippets/Tutorials (https://forums.alliedmods.net/forumdisplay.php?f=83)
-   -   CS 1.6 Custom 3rd Person View (https://forums.alliedmods.net/showthread.php?t=65427)

niFe 04-17-2009 14:52

Re: CS 1.6 Custom 3rd Person View
 
Quote:

Originally Posted by ot_207 (Post 807584)
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;




yoh you are awesome thanks! karmaed

PvtSmithFSSF 04-17-2009 15:41

Re: CS 1.6 Custom 3rd Person View
 
Nice =O

ot_207 04-18-2009 03:52

Re: CS 1.6 Custom 3rd Person View
 
Quote:

Originally Posted by Emp` (Post 807749)
Is there a reason for changing MOVETYPE_FLY to MOVETYPE_FLYMISSILE?

The reason for setting it is because MOVETYPE_FLY doesn't allow the camera to move (set velocity)

ZoRaN 05-12-2009 07:35

Re: CS 1.6 Custom 3rd Person View
 
Can somebody make this to force the camera on player? and to don't write /cam! thx

ot_207 05-12-2009 17:33

Re: CS 1.6 Custom 3rd Person View
 
add this to your code
PHP Code:

// plugin init
RegisterHam(Ham_Spawn"player""fw_spawn_post"1)

public 
fw_spawn_post(id)
{
 if (!
is_user_alive)
  return 
HAM_IGNORED
 
 client_cmd
(id"say /cam")
 
 return 
HAM_IGNORED


Dont forget to remove the moment when the USE key is checked!
That's all!

Exolent[jNr] 05-12-2009 18:49

Re: CS 1.6 Custom 3rd Person View
 
Quote:

Originally Posted by ot_207 (Post 826447)
add this to your code
PHP Code:

// plugin init
RegisterHam(Ham_Spawn"player""fw_spawn_post"1)

public 
fw_spawn_post(id)
{
 if (!
is_user_alive)
  return 
HAM_IGNORED
 
 client_cmd
(id"say /cam")
 
 return 
HAM_IGNORED


Dont forget to remove the moment when the USE key is checked!
That's all!

Why not just modify your original code?

PHP Code:

#include <amxmodx>
#include <engine>
#include <hamsandwich>

new const pl_cm_class[] = "PlayerCamera"

new g_remove[33]

public 
plugin_init()
{
    
//register_clcmd( "say /cam", "cmdCam" )
    
RegisterHam(Ham_Spawn"player""FwdPlayerSpawn"1)
    
RegisterHam(Ham_Killed"player""FwdPlayerDeath"1)
    
register_think(pl_cm_class,"Think_PlayerCamera")
}

public 
client_disconnect(client)
{
    
g_remove[client] = 1
}

public 
FwdPlayerSpawn(id)
{
    if( 
is_user_alive(id) )
    {
        
Create_PlayerCamera(id)
    }
}

public 
FwdPlayerDeath(client)
{
    
g_remove[client] = 1
}

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)
    
    if( 
g_remove[owner] )
    {
        
g_remove[owner] = 0
        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;



ot_207 05-13-2009 00:50

Re: CS 1.6 Custom 3rd Person View
 
Because I wanted to make him think, not to give simply the code in his hands ;).

ZoRaN 05-13-2009 07:30

Re: CS 1.6 Custom 3rd Person View
 
its not working,when i enter in game and select ct or t its blocked.
[IMG]http://img9.**************/my.php?image=dontwork.jpg[/IMG][IMG]http://img9.**************/img9/4864/dontwork.th.jpg[/IMG]

[IMG]http://img9.**************/my.php?image=dontwork.jpg[/IMG]

ZoRaN 05-15-2009 08:47

Re: CS 1.6 Custom 3rd Person View
 
here is the error.i run the plugin in debug mode.
[ENGINE] Invalid player 1 (not in-game)
[AMXX] Run time error 10: native error (native "attach_view")
[AMXX] [0] cam.sma::Create_PlayerCamera (line 60)
[AMXX] [1] cam.sma::FwdPlayerSpawn (line 24)

Arkshine 05-15-2009 10:49

Re: CS 1.6 Custom 3rd Person View
 
Change

Code:
public FwdPlayerSpawn(id) {     Create_PlayerCamera(id) }

by

Code:
public FwdPlayerSpawn(id) {     if ( is_user_alive( id ) ) Create_PlayerCamera(id) }


All times are GMT -4. The time now is 16:08.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.