Raised This Month: $ Target: $400
 0% 

Cam SetView Problem


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
J4CK
Member
Join Date: Dec 2008
Location: India
Old 04-08-2011 , 12:23   Cam SetView Problem
Reply With Quote #1

Hello.
I want when player write /cam - camera set only for 5 sec, i know how do that, but it works only 1 time, and where i can set admin-access only, i mean (get_user_flags(id) & ADMIN...)
PHP Code:
set_task(5.0"ClCmd_ToggleCamera"id
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"
            
set_task(5.0"ClCmd_ToggleCamera"id
        } 
        
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] = 
    ClearUserInCamera
(id
    
CheckForward() 


public 
client_putinserver(id

    
g_iPlayerCamera[id] = 
    ClearUserInCamera
(id


get_cam_owner(iEnt

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

    } 
    return 



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 
        

        if( 
iHhCameraThink 
        { 
            
DisableHamForwardiHhCameraThink 
        } 
    } 

J4CK is offline
Old 04-09-2011, 10:16
J4CK
This message has been deleted by Exolent[jNr]. Reason: Don't bump until 2 weeks have passed since last post.
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 19:57.


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