Raised This Month: $ Target: $400
 0% 

[ HELP ] Set user normal rendering?


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
nico_barrera
Junior Member
Join Date: Nov 2009
Location: PC
Old 10-15-2015 , 00:00   Re: [ HELP ] Set user normal rendering?
Reply With Quote #1

OR! use this camera instead...
Quote:
Originally Posted by ConnorMcLeod View Post
Code updated, no more specific cs code (maxspeed or camera wait offset)
Camera origin adjustements in case it would be in a solid place.
Real map cameras stay usabled.

PHP Code:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

#define VERSION "0.0.2"

#define MAX_PLAYERS    32

#define USE_TOGGLE 3

new g_iPlayerCamera[MAX_PLAYERS+1]

new 
g_bInCamera
//#define MarkUserInCamera(%0)        g_bInCamera |= 1<<(%0&31)
#define ClearUserInCamera(%0)        g_bInCamera &= ~(1<<(%0&31))
#define IsUserInCamera(%0)            ( g_bInCamera & 1<<(%0&31) )
#define ToggleUserCameraState(%0)    g_bInCamera ^= 1<<(%0&31)

new g_iMaxPlayers

public plugin_init()
{
    
register_plugin("Camera View"VERSION"ConnorMcLeod")

    
register_clcmd("say /cam""ClCmd_ToggleCamera")

    
g_iMaxPlayers get_maxplayers()
}

public 
ClCmd_ToggleCameraid )
{
    if( !
is_user_alive(id) )
    {
        return
    }

    new 
iEnt g_iPlayerCamera[id]
    if( !
pev_valid(iEnt) )
    {
        static 
iszTriggerCamera
        
if( !iszTriggerCamera )
        {
            
iszTriggerCamera engfunc(EngFunc_AllocString"trigger_camera")
        }
        
iEnt engfunc(EngFunc_CreateNamedEntityiszTriggerCamera)
        
set_kvd(0KV_ClassName"trigger_camera")
        
set_kvd(0KV_fHandled0)
        
set_kvd(0KV_KeyName"wait")
        
set_kvd(0KV_Value"999999")
        
dllfunc(DLLFunc_KeyValueiEnt0)

        
set_pev(iEntpev_spawnflagsSF_CAMERA_PLAYER_TARGET|SF_CAMERA_PLAYER_POSITION)
        
set_pev(iEntpev_flagspev(iEntpev_flags) | FL_ALWAYSTHINK)

        
dllfunc(DLLFunc_SpawniEnt)

        
g_iPlayerCamera[id] = iEnt
    
}

    
ToggleUserCameraStateid )
    
CheckForward()

    new 
Float:flMaxSpeediFlags pev(idpev_flags)
    
pev(idpev_maxspeedflMaxSpeed)

    
ExecuteHamHam_UseiEntididUSE_TOGGLE1.0)

    
set_pev(idpev_flagsiFlags)
    
// depending on mod, you may have to send SetClientMaxspeed here.
    // engfunc(EngFunc_SetClientMaxspeed, id, flMaxSpeed)
    
set_pev(idpev_maxspeedflMaxSpeed)
}

public 
SetView(idiEnt)
{
    if( 
IsUserInCamera(id) && is_user_alive(id) )
    {
        new 
iCamera g_iPlayerCamera[id]
        if( 
iCamera && iEnt != iCamera )
        {
            new 
szClassName[16]
            
pev(iEntpev_classnameszClassNamecharsmax(szClassName))
            if( !
equal(szClassName"trigger_camera") ) // should let real cams enabled
            
{
                
engfunc(EngFunc_SetViewidiCamera// shouldn't be always needed
                
return FMRES_SUPERCEDE
            
}
        }
    }
    return 
FMRES_IGNORED
}

public 
client_disconnect(id)
{
    new 
iEnt g_iPlayerCamera[id]
    if( 
pev_valid(iEnt) )
    {
        
engfunc(EngFunc_RemoveEntityiEnt)
    }
    
g_iPlayerCamera[id] = 0
    ClearUserInCamera
(id)
    
CheckForward()
}

public 
client_putinserver(id)
{
    
g_iPlayerCamera[id] = 0
    ClearUserInCamera
(id)
}

get_cam_owner(iEnt)
{
    static 
id
    
for(id 1id<=g_iMaxPlayersid++)
    {
        if( 
g_iPlayerCamera[id] == iEnt )
        {
            return 
id
        
}
    }
    return 
0
}

public 
Camera_ThinkiEnt )
{
    static 
id
    
if( !(id get_cam_owneriEnt )) )
    {
        return
    }

    static 
Float:fVecPlayerOrigin[3], Float:fVecCameraOrigin[3], Float:fVecAngles[3], Float:fVecBack[3]

    
pev(idpev_originfVecPlayerOrigin)
    
pev(idpev_view_ofsfVecAngles)
    
fVecPlayerOrigin[2] += fVecAngles[2]

    
pev(idpev_v_anglefVecAngles)

    
// See player from front ?
    //fVecAngles[0] = 15.0
    //fVecAngles[1] += fVecAngles[1] > 180.0 ? -180.0 : 180.0

    
angle_vector(fVecAnglesANGLEVECTOR_FORWARDfVecBack)

    
//Move back to see ourself (150 units)
    
fVecCameraOrigin[0] = fVecPlayerOrigin[0] + (-fVecBack[0] * 150.0)
    
fVecCameraOrigin[1] = fVecPlayerOrigin[1] + (-fVecBack[1] * 150.0)
    
fVecCameraOrigin[2] = fVecPlayerOrigin[2] + (-fVecBack[2] * 150.0)

    
engfunc(EngFunc_TraceLinefVecPlayerOriginfVecCameraOriginIGNORE_MONSTERSid0)
    static 
Float:flFraction
    get_tr2
(0TR_flFractionflFraction)
    if( 
flFraction != 1.0 // adjust camera place if close to a wall
    
{
        
flFraction *= 150.0
        fVecCameraOrigin
[0] = fVecPlayerOrigin[0] + (-fVecBack[0] * flFraction)
        
fVecCameraOrigin[1] = fVecPlayerOrigin[1] + (-fVecBack[1] * flFraction)
        
fVecCameraOrigin[2] = fVecPlayerOrigin[2] + (-fVecBack[2] * flFraction)
    }

    
set_pev(iEntpev_originfVecCameraOrigin)
    
set_pev(iEntpev_anglesfVecAngles)
}

CheckForward()
{
    static 
HamHook:iHhCameraThinkiFhSetView
    
if( g_bInCamera )
    {
        if( !
iFhSetView )
        {
            
iFhSetView register_forward(FM_SetView"SetView")
        }
        if( !
iHhCameraThink )
        {
            
iHhCameraThink RegisterHam(Ham_Think"trigger_camera""Camera_Think")
        }
        else
        {
            
EnableHamForwardiHhCameraThink )
        }
    }
    else
    {
        if( 
iFhSetView )
        {
            
unregister_forward(FM_SetViewiFhSetView)
            
iFhSetView 0
        
}
        if( 
iHhCameraThink )
        {
            
DisableHamForwardiHhCameraThink )
        }
    }

nico_barrera is offline
Send a message via MSN to nico_barrera
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


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


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